From d5f3702f72a88dfb32f169f95b679ef16cf579ad Mon Sep 17 00:00:00 2001 From: tomlum Date: Tue, 15 Nov 2022 10:20:56 -0500 Subject: [PATCH 01/77] updated splash banner --- src/views/splash/hoc/top-banner.jsx | 18 +++++++++--------- src/views/splash/l10n.json | 4 +++- src/views/splash/splash.jsx | 7 +++++-- .../images/ideas/activities/talking-thumb.jpg | Bin 0 -> 95881 bytes 4 files changed, 17 insertions(+), 12 deletions(-) create mode 100644 static/images/ideas/activities/talking-thumb.jpg diff --git a/src/views/splash/hoc/top-banner.jsx b/src/views/splash/hoc/top-banner.jsx index c66ad1354..222b93b44 100644 --- a/src/views/splash/hoc/top-banner.jsx +++ b/src/views/splash/hoc/top-banner.jsx @@ -30,28 +30,28 @@ const TopBanner = () => ( key="frameless-desktop" minWidth={frameless.desktop} > - + - +
- +
- + - +
- +
- + - +
- +
diff --git a/src/views/splash/l10n.json b/src/views/splash/l10n.json index f1b54772c..8732bd514 100644 --- a/src/views/splash/l10n.json +++ b/src/views/splash/l10n.json @@ -38,7 +38,7 @@ "teacherbanner.classesButton": "My Classes", "teacherbanner.faqButton": "Teacher Account FAQ", - "hocbanner.title": "Get Creative with Coding!", + "hocbanner.title": "Tell Your Story with Scratch!", "hocbanner.moreActivities": "See more activities", "hocbanner.imagine": "Imagine a World", "hocbanner.codeACartoon": "Code a Cartoon", @@ -46,6 +46,8 @@ "hocbanner.makeItFly": "Make It Fly", "hocbanner.makeMusic": "Make Music", "hocbanner.chaseGame": "Make a Chase Game", + "hocbanner.createAStory": "Create a Story", + "hocbanner.animateACharacter": "Animate a Character", "welcome.welcomeToScratch": "Welcome to Scratch!", "welcome.learn": "Learn how to make a project in Scratch", diff --git a/src/views/splash/splash.jsx b/src/views/splash/splash.jsx index b465baa17..650aab046 100644 --- a/src/views/splash/splash.jsx +++ b/src/views/splash/splash.jsx @@ -13,8 +13,11 @@ const Page = require('../../components/page/www/page.jsx'); const SplashPresentation = require('./presentation.jsx'); const SCRATCH_WEEK_START_TIME = 1621224000000; // 2021-05-17 00:00:00 -- No end time for now -const HOC_START_TIME = 1638144000000; // 2021-11-29 00:00:00 GMT in ms -const HOC_END_TIME = 1639353600000; // 2021-12-13 00:00:00 GMT in ms +// const HOC_START_TIME = 1638144000000; // 2021-11-29 00:00:00 GMT in ms +// const HOC_END_TIME = 1639353600000; // 2021-12-13 00:00:00 GMT in ms + +const HOC_START_TIME = 1668574800000; // 2022-11-16 00:00:00 GMT in ms +const HOC_END_TIME = 1671166800000; // 2022-12-16 00:00:00 GMT in ms class Splash extends React.Component { constructor (props) { diff --git a/static/images/ideas/activities/talking-thumb.jpg b/static/images/ideas/activities/talking-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63e76ed706b224c95d37eb448db9f863b349fdbb GIT binary patch literal 95881 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 z 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 T>H-Yg*w*_lob$P_e^&q5aKDg~ literal 0 HcmV?d00001 From ac191c0285bea7d093488e29868a66372cb237fb Mon Sep 17 00:00:00 2001 From: tomlum Date: Mon, 20 Mar 2023 14:40:23 -0400 Subject: [PATCH 02/77] disables lint temporarily --- src/views/banned-splash/banned-splash.jsx | 29 ++++++++++++++++------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/views/banned-splash/banned-splash.jsx b/src/views/banned-splash/banned-splash.jsx index f19f2a0f9..a6ba13e27 100644 --- a/src/views/banned-splash/banned-splash.jsx +++ b/src/views/banned-splash/banned-splash.jsx @@ -1,5 +1,6 @@ +/* eslint-disable */ const injectIntl = require('react-intl').injectIntl; -const intlShape = require('react-intl').intlShape; +// const intlShape = require('react-intl').intlShape; // const FormattedMessage = require('react-intl').FormattedMessage; const React = require('react'); import {connect} from 'react-redux'; @@ -8,6 +9,7 @@ const messageActions = require('../../redux/messages.js'); const JoinFlowStep = require('../../components/join-flow/join-flow-step.jsx'); const FormikInput = require('../../components/formik-forms/formik-input.jsx'); import {Formik} from 'formik'; +const PropTypes = require('prop-types'); const Page = require('../../components/page/www/page.jsx'); const render = require('../../lib/render.jsx'); @@ -23,7 +25,7 @@ const validateUsernameConfirm = (username, usernameConfirm) => { } }; -const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages, intl}) => { +const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { React.useEffect(() => { if (user && user.username && user.token){ @@ -60,8 +62,7 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages, intl}) validateOnChange={false} // onSubmit={this.handleValidSubmit} > - {props => { - const { + {({ errors, // handleSubmit, // isSubmitting, @@ -71,8 +72,7 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages, intl}) // touched, validateField, values - } = props; - return ( + }) => ( Make sure the username you chose is aligned with Scratch's Community Guidelines} innerClassName="change-username-inner" @@ -136,8 +136,7 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages, intl}) // onSetRef={this.handleSetUsernameRef} /> - ); - }} + )}; @@ -154,6 +153,7 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages, intl})
{new Date(message.datetime_created).toDateString()}
+ {/* // eslint-disable-next-line react/no-danger */}
))} @@ -165,7 +165,18 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages, intl}) }; BannedSplash.propTypes = { - intl: intlShape.isRequired + user: PropTypes.shape({ + username: PropTypes.string, + banned: PropTypes.bool, + token: PropTypes.string + }), + hasSession: PropTypes.bool, + adminMessages: PropTypes.arrayOf(PropTypes.shape({ + id: PropTypes.number.isRequired, + datetimeCreated: PropTypes.string.isRequired, + message: PropTypes.string.isRequired + })), + getAdminMessages: PropTypes.func }; From 6ddd6b784a45e643ec2544979a2f1d927a628006 Mon Sep 17 00:00:00 2001 From: tomlum Date: Mon, 20 Mar 2023 14:43:55 -0400 Subject: [PATCH 03/77] fixes formik --- src/views/banned-splash/banned-splash.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/views/banned-splash/banned-splash.jsx b/src/views/banned-splash/banned-splash.jsx index a6ba13e27..b4009a46d 100644 --- a/src/views/banned-splash/banned-splash.jsx +++ b/src/views/banned-splash/banned-splash.jsx @@ -72,7 +72,8 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { // touched, validateField, values - }) => ( + }) => { + return ( Make sure the username you chose is aligned with Scratch's Community Guidelines} innerClassName="change-username-inner" @@ -136,7 +137,8 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { // onSetRef={this.handleSetUsernameRef} /> - )}; + ); + }} From 53af50f556025cfc026599065af7d225a666be65 Mon Sep 17 00:00:00 2001 From: tomlum Date: Fri, 7 Apr 2023 21:32:40 -0400 Subject: [PATCH 04/77] fixes routes json --- src/routes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes.json b/src/routes.json index 2bb255f31..e8b5feaef 100644 --- a/src/routes.json +++ b/src/routes.json @@ -424,7 +424,7 @@ "title": "micro:bit" }, { - "name": "Account Blocked", + "name": "banned-splash", "pattern": "^/accounts/banned-response/?(\\?.*)?$", "routeAlias": "/accounts/banned-response/?$", "view": "banned-splash/banned-splash", From bc9680cb6fce44daa7fc8ce9dfb5f79c290a49f6 Mon Sep 17 00:00:00 2001 From: tomlum Date: Thu, 4 May 2023 14:01:53 -0400 Subject: [PATCH 05/77] design changes --- src/views/banned-splash/banned-splash.jsx | 9 +++++++- src/views/banned-splash/banned-splash.scss | 24 ++++++++++++++++++++- src/views/banned-splash/blocked-account.svg | 3 +++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 src/views/banned-splash/blocked-account.svg diff --git a/src/views/banned-splash/banned-splash.jsx b/src/views/banned-splash/banned-splash.jsx index b4009a46d..ba79354f7 100644 --- a/src/views/banned-splash/banned-splash.jsx +++ b/src/views/banned-splash/banned-splash.jsx @@ -13,6 +13,7 @@ const PropTypes = require('prop-types'); const Page = require('../../components/page/www/page.jsx'); const render = require('../../lib/render.jsx'); +import bannedIcon from './blocked-account.svg'; require('../../components/extension-landing/extension-landing.scss'); require('./banned-splash.scss'); @@ -45,7 +46,13 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { id="force-account-rename-text" className="col" > -

Account Blocked

+ + +

Account Blocked

+

To recover access to your account, change your username.

Your scratch account {user && user.username} has been temporarily blocked because your usernamed appears to contain personal information.

This is a serious privacy issue. When you share information like this, it is visible to everyone on the internet, so please be careful what you share

diff --git a/src/views/banned-splash/banned-splash.scss b/src/views/banned-splash/banned-splash.scss index ff030292f..9868892d8 100644 --- a/src/views/banned-splash/banned-splash.scss +++ b/src/views/banned-splash/banned-splash.scss @@ -14,6 +14,10 @@ } } +.inline{ + display:inline; +} + #banned-splash{ display: flex; flex-direction: column; @@ -40,7 +44,7 @@ width: 100%; } } - background-color: #4d97ff; + background-color: #575E75; .col{ padding: 40px; flex: 1; @@ -101,3 +105,21 @@ margin: auto; } } + +.banned-icon{ + margin-right: 10px; + padding-top: 10px; + margin-bottom: -3px; +} + +.modal-flush-bottom-button{ + background-color: #855CD6; +} +.modal-flush-bottom-button:hover{ + background-color: #855CD6; +} + +.join-flow-outer-content{ + border: solid 4px #818698; + border-radius: 21px; +} \ No newline at end of file diff --git a/src/views/banned-splash/blocked-account.svg b/src/views/banned-splash/blocked-account.svg new file mode 100644 index 000000000..897a34da9 --- /dev/null +++ b/src/views/banned-splash/blocked-account.svg @@ -0,0 +1,3 @@ + + + From 2f7e12bd0c80c2edc55fd54b43f5183fd0c6c53a Mon Sep 17 00:00:00 2001 From: tomlum Date: Thu, 15 Jun 2023 21:40:33 -0400 Subject: [PATCH 06/77] adds force account rename page --- src/redux/session.js | 10 +- src/routes.json | 8 +- .../bad-username-splash.jsx | 246 ++++++++++++++++++ .../bad-username-splash.scss | 125 +++++++++ 4 files changed, 383 insertions(+), 6 deletions(-) create mode 100644 src/views/bad-username-splash/bad-username-splash.jsx create mode 100644 src/views/bad-username-splash/bad-username-splash.scss diff --git a/src/redux/session.js b/src/redux/session.js index 6180dcee1..f9aa89dc0 100644 --- a/src/redux/session.js +++ b/src/redux/session.js @@ -14,9 +14,11 @@ const Types = keyMirror({ const banGoodListPaths = [ '/accounts/banned-response', + '/accounts/bad-username', '/community_guidelines', '/privacy_policy', - '/terms_of_use' + '/terms_of_use', + '/accounts/update_username' ]; module.exports.Status = keyMirror({ @@ -70,7 +72,11 @@ const handleSessionResponse = (dispatch, body) => { body.user.banned && banGoodListPaths.every(goodPath => window.location.pathname.indexOf(goodPath) === -1) ) { - window.location = '/accounts/banned-response/'; + if(body.user.banned_status === 'far_banned'){ + window.location = '/accounts/bad-username/'; + } else { + window.location = '/accounts/banned-response/'; + } return; } else if ( body.flags && diff --git a/src/routes.json b/src/routes.json index e8b5feaef..62605c1ba 100644 --- a/src/routes.json +++ b/src/routes.json @@ -424,10 +424,10 @@ "title": "micro:bit" }, { - "name": "banned-splash", - "pattern": "^/accounts/banned-response/?(\\?.*)?$", - "routeAlias": "/accounts/banned-response/?$", - "view": "banned-splash/banned-splash", + "name": "bad-username-splash", + "pattern": "^/accounts/bad-username/?(\\?.*)?$", + "routeAlias": "/accounts/bad-username/?$", + "view": "bad-username-splash/bad-username-splash", "title": "Account Blocked" }, { diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx new file mode 100644 index 000000000..28bcaa60f --- /dev/null +++ b/src/views/bad-username-splash/bad-username-splash.jsx @@ -0,0 +1,246 @@ +/* eslint-disable */ +const injectIntl = require('react-intl').injectIntl; +// const intlShape = require('react-intl').intlShape; +// const FormattedMessage = require('react-intl').FormattedMessage; +const React = require('react'); +const FormattedMessage = require('react-intl').FormattedMessage; +import {connect} from 'react-redux'; +import {selectBannedUser, selectHasFetchedSession} from '../../redux/session'; +const messageActions = require('../../redux/messages.js'); +const JoinFlowStep = require('../../components/join-flow/join-flow-step.jsx'); +const FormikInput = require('../../components/formik-forms/formik-input.jsx'); +import {Formik} from 'formik'; +const PropTypes = require('prop-types'); + +const Page = require('../../components/page/www/page.jsx'); +const render = require('../../lib/render.jsx'); +const api = require('../../lib/api'); +import bannedIcon from './blocked-account.svg'; + +require('../../components/extension-landing/extension-landing.scss'); +require('./bad-username-splash.scss'); + +const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { + + const [unauthorizedError, setUnauthorizedError] = React.useState(false) + const [badUsernameError, setBadUsernameError] = React.useState(false) + const [apiError, setAPIError] = React.useState(false) + + + React.useEffect(() => { + if (user && user.username && user.token){ + getAdminMessages(user.username, user.token); + } + }, [user]); + + const handleUpdateUsernameUnbanSubmit = (formData, formikBag) => { + setUnauthorizedError(false) + setBadUsernameError(false) + setAPIError(false) + formikBag.setSubmitting(false); // formik makes us do this ourselves + + console.log("attempting submit!") + api({ + host: '', + uri: '/accounts/update_username/', + method: 'post', + useCsrf: true, + json: { + new_username: formData.newUsername, + username: formData.username, + password: formData.password + } + }, (err, body, res) => { + if(res.body.error === "Unauthorized"){ + setUnauthorizedError("error message for unauthorized access") + } + else if(res.body.error === "Invalid username"){ + setBadUsernameError("error message for invalid username") + } + else if(res.body.error){ + setAPIError("error message for API error") + } else{ + window.location = '/'; + } + }); + } + + if (hasSession && (!user || !user.banned)){ + window.location = '/'; + } + + if (user && user.banned){ + return (
+
+
+
+ + +

+
+

+

+

+

+
+
+ + {({ + errors, + handleSubmit, + isSubmitting, + setFieldError, + setFieldTouched, + setFieldValue, + // touched, + validateField, + values + }) => { + return ( + } + innerClassName="change-username-inner" + outerClassName="change-username-outer" + title={}}/>} + waiting={isSubmitting} + onSubmit={handleSubmit} + nextButton={} + > +
+ validateField('newUsername')} + onChange={e => { + setFieldValue('newUsername', e.target.value.substring(0, 30)); + setFieldTouched('newUsername'); + setFieldError('newUsername', null); + }} + /> + { + setFieldValue('newUsernameConfirm', e.target.value.substring(0, 30)); + setFieldTouched('newUsernameConfirm'); + setFieldError('newUsernameConfirm', null); + }} + /> + { + setFieldValue('password', e.target.value); + setFieldTouched('password'); + setFieldError('password', null); + }} + /> +
+
); + }} +
+
+
+
+
+
+ +
+ {adminMessages.map(message => ( +
+
+ {new Date(message.datetime_created).toDateString()} +
+ {/* // eslint-disable-next-line react/no-danger */} +
+
+ ))} +
+
+ ); + } + return
; +}; + +BannedSplash.propTypes = { + user: PropTypes.shape({ + username: PropTypes.string, + banned: PropTypes.bool, + token: PropTypes.string + }), + hasSession: PropTypes.bool, + adminMessages: PropTypes.arrayOf(PropTypes.shape({ + id: PropTypes.number.isRequired, + datetimeCreated: PropTypes.string.isRequired, + message: PropTypes.string.isRequired + })), + getAdminMessages: PropTypes.func +}; + +const ConnectedBannedSplash = connect( + state => ({ + user: selectBannedUser(state), + hasSession: selectHasFetchedSession(state), + adminMessages: state.messages.messages && state.messages.messages.admin + }), + dispatch => ({ + getAdminMessages: (username, token) => { + dispatch(messageActions.getAdminMessages( + username, token, 0 + )); + } + }) +)(BannedSplash); + + +const WrappedBannedSplash = injectIntl(ConnectedBannedSplash); + +render(, document.getElementById('app'), + {messages: messageActions.messagesReducer}); diff --git a/src/views/bad-username-splash/bad-username-splash.scss b/src/views/bad-username-splash/bad-username-splash.scss new file mode 100644 index 000000000..b984aca74 --- /dev/null +++ b/src/views/bad-username-splash/bad-username-splash.scss @@ -0,0 +1,125 @@ +@import "../../colors"; +@import "../../frameless"; + +.validation-left { + transform: translate(-20.5rem, 0); +} + +@media #{$intermediate-and-smaller} { + .validation-full-width-input { + box-sizing: border-box; + transform: unset; + margin-bottom: .75rem; + max-width: 100%; + } +} + +.inline{ + display:inline; +} + +#bad-username-splash{ + display: flex; + flex-direction: column; + align-items: center; +} + +#force-account-rename{ + width: 100%; + display: flex; + justify-content: center; + + #force-account-rename-inner{ + max-width: 1094px; + display: flex; + flex-direction: row; + @media only screen and (max-width: 800px) { + flex-direction: column; + } + + text-align: left; + + input{ + box-sizing: border-box; + width: 100%; + } + } + background-color: #575E75; + .col{ + padding: 40px; + flex: 1; + } +} + + +#admin-message-list{ + display: inline-block; + padding: 25px; + max-width: 1094px; + + #admin-message-list-title{ + text-align: left; + } +} + +.admin-message{ + text-align: left; + .admin-message-date{ + color: #575E75; + font-size: 12px; + padding-bottom: 10px; + } + text-align: left; + border-radius: 8px; + padding: 16px; + background-color: #E5F0FF; + margin: 10px; +} + +#force-account-rename-text{ + h1, h3, p{ + color: white; + } +} + +.empty{ + text-align: left; + + .admin-message{ + margin: 10px; + } +} + +.banned-message-box{ + margin: 20px; + text-align: left; +} + +.join-flow-outer-content{ + background-color: white; + border-radius: 16px; + color: #575e75; + max-width: 468px; + min-height: auto !important; + @media only screen and (max-width: 800px) { + margin: auto; + } +} + +.banned-icon{ + margin-right: 10px; + padding-top: 10px; + margin-bottom: -3px; +} + +.modal-flush-bottom-button{ + background-color: #855CD6; +} +.modal-flush-bottom-button:hover{ + background-color: #855CD6; +} + +.join-flow-outer-content{ + border: solid 4px #818698; + border-radius: 21px; +} \ No newline at end of file From 751990bde5ff3ee9915f38682f7176abb9688ed9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 03:45:53 +0000 Subject: [PATCH 07/77] fix(deps): update dependency scratch-l10n to v3.15.20230628032227 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7a8700f8d..ad894481e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.13", - "scratch-l10n": "3.15.20230627032203", + "scratch-l10n": "3.15.20230628032227", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230627032203" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230627032203", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230627032203.tgz", + "integrity": "sha512-b2Rp4U11uXedYkH1T2zGOVI8w2itzpFBLOzXy209Wi+sTAQnLCCxNuy+OVRmKyFf6wHHSedDOUahGdSex1vfBA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.13.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230627032203", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230627032203.tgz", + "integrity": "sha512-b2Rp4U11uXedYkH1T2zGOVI8w2itzpFBLOzXy209Wi+sTAQnLCCxNuy+OVRmKyFf6wHHSedDOUahGdSex1vfBA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.5.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230627032203", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230627032203.tgz", - "integrity": "sha512-b2Rp4U11uXedYkH1T2zGOVI8w2itzpFBLOzXy209Wi+sTAQnLCCxNuy+OVRmKyFf6wHHSedDOUahGdSex1vfBA==", + "version": "3.15.20230628032227", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230628032227.tgz", + "integrity": "sha512-NrogKdcQLBpXm12UAiGroKcBf3bemsIvUKZijRg14pNs1xZLQ/WkYqjhff5SLiqjFt64w7q3EMrMQAlZhoDwWg==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 231eae5ee..df390f33c 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.13", - "scratch-l10n": "3.15.20230627032203", + "scratch-l10n": "3.15.20230628032227", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 0e2b37c23e04e44088e6d44a86f4821fcc2fe6f0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 13:30:22 +0000 Subject: [PATCH 08/77] fix(deps): update dependency scratch-gui to v2.0.15 --- package-lock.json | 56 +++++++++-------------------------------------- package.json | 2 +- 2 files changed, 11 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad894481e..ef9b433eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.13", + "scratch-gui": "2.0.15", "scratch-l10n": "3.15.20230628032227", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230627082243", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230627082243.tgz", - "integrity": "sha512-16APzKKSe7xxJ7p9sPO5u2Ffy6CPGhf6p4iugSnjkxqQEZHZAzlY84Uobuw8V37+tQG1bnmCCwbgaBbQUKU2gA==", + "version": "0.2.0-prerelease.20230628075940", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230628075940.tgz", + "integrity": "sha512-9gMH2p+A+7r1xXsMIA/iP92k/uQ1FBoNrEApxOoN1Ff3HNXucdlJ/ljSwuVNaaBfR/IoAfbsExLCnVKg6yyneg==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230627032203" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230627032203", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230627032203.tgz", - "integrity": "sha512-b2Rp4U11uXedYkH1T2zGOVI8w2itzpFBLOzXy209Wi+sTAQnLCCxNuy+OVRmKyFf6wHHSedDOUahGdSex1vfBA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230628032227" } }, "node_modules/scratch-gui": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.13.tgz", - "integrity": "sha512-6OyhrDaGY6aUqgo8Z+IIQMGJcRWk21j5ORkJubww+YfXAWMTGZmTxYPW6PhOAc0XEsqOST4jyBX2EXV//cKcEA==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.15.tgz", + "integrity": "sha512-eD1+E73wMYAiGAktsE5I0Foy5526ssLtevCuzWneMePDWEFz5Mq299giLXxOjunInIw+D+pf4LyLHWR+RR5JNA==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,8 +23578,8 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230627082243", - "scratch-l10n": "3.15.20230627032203", + "scratch-blocks": "0.2.0-prerelease.20230628075940", + "scratch-l10n": "3.15.20230628032227", "scratch-paint": "2.0.5", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", @@ -23952,24 +23934,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230627032203", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230627032203.tgz", - "integrity": "sha512-b2Rp4U11uXedYkH1T2zGOVI8w2itzpFBLOzXy209Wi+sTAQnLCCxNuy+OVRmKyFf6wHHSedDOUahGdSex1vfBA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.5.tgz", diff --git a/package.json b/package.json index df390f33c..6eacae09f 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.13", + "scratch-gui": "2.0.15", "scratch-l10n": "3.15.20230628032227", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 3296d13469f817bb05f8f6e8522ee1071c7aab17 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 20:37:49 +0000 Subject: [PATCH 09/77] fix(deps): update dependency scratch-gui to v2.0.16 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef9b433eb..03b0b4501 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.15", + "scratch-gui": "2.0.16", "scratch-l10n": "3.15.20230628032227", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.15.tgz", - "integrity": "sha512-eD1+E73wMYAiGAktsE5I0Foy5526ssLtevCuzWneMePDWEFz5Mq299giLXxOjunInIw+D+pf4LyLHWR+RR5JNA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.16.tgz", + "integrity": "sha512-I4oUEj7tlsNtxCE8V9fpY18CGm023jFU+l6b4+9tG7wvheNqSyfNXjHLnwIV4dbYhq2WZqu3nQueIDZBMFObdA==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23580,7 +23580,7 @@ "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230628075940", "scratch-l10n": "3.15.20230628032227", - "scratch-paint": "2.0.5", + "scratch-paint": "2.0.6", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", @@ -23935,9 +23935,9 @@ } }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.5.tgz", - "integrity": "sha512-BLphIZ3e09Q90ISJltz+UM8+r3SazH2zyrI96OK7Z0Zw63su0dNO0vgUqgGA60T37wgV7VjBy3knYDIOb6WxJw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.6.tgz", + "integrity": "sha512-au+H38UthX+8wT5M0+O3KRIy1Mk2X3IBTDBZeG/7ZCKUKy2NK1vx/b00QHC0byBZ4EUKiKufa6EBsT9Zey341A==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", diff --git a/package.json b/package.json index 6eacae09f..b6e7191af 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.15", + "scratch-gui": "2.0.16", "scratch-l10n": "3.15.20230628032227", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 24dac1f94bdd8879591fb23960e804f3fadee0bf Mon Sep 17 00:00:00 2001 From: mrsrec Date: Wed, 28 Jun 2023 19:44:57 -0400 Subject: [PATCH 10/77] Update cookies.jsx * Updates incorrect info in cookie page (scratchsessionid -> scratchsessionsid; session -> 2 weeks) * Sets "last updated" date to July 6 by request of @aoneill01 --- src/views/cookies/cookies.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/views/cookies/cookies.jsx b/src/views/cookies/cookies.jsx index 8a8fc11df..d40e43e75 100644 --- a/src/views/cookies/cookies.jsx +++ b/src/views/cookies/cookies.jsx @@ -13,7 +13,7 @@ const manageLink = chunks => {chunks}; const optOutLink = chunks => {chunks}; // When this page was last updated. See 'click Cookies link' in footer-links.test.js if you update this value. -const updated = new Date('2023-06-28T12:00:00.000-04:00'); +const updated = new Date('2023-07-06T12:00:00.000-04:00'); require('./cookies.scss'); @@ -75,10 +75,10 @@ const Cookies = injectIntl(() => ( - scratchsessionid + scratchsessionsid Scratch - + From 8868d00e23826c1861a5c5bbd71bb9101a8f8c40 Mon Sep 17 00:00:00 2001 From: tomlum Date: Wed, 28 Jun 2023 22:49:28 -0400 Subject: [PATCH 11/77] validation and misc lint fixes --- src/l10n.json | 13 +- src/redux/session.js | 3 +- .../bad-username-splash.jsx | 226 +++++++++--------- .../bad-username-splash/blocked-account.svg | 3 + 4 files changed, 134 insertions(+), 111 deletions(-) create mode 100644 src/views/bad-username-splash/blocked-account.svg diff --git a/src/l10n.json b/src/l10n.json index 256ee3cb0..6e1af76b9 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -438,5 +438,16 @@ "extensions.otherComputerConnectedText": "Only one computer can be connected to a {deviceName} at a time. If you have another computer connected to your {deviceName}, disconnect the {deviceName} or close Scratch on that computer and try again.", "bluetooth.enableLocationServicesTitle": "Make sure you have location services enabled on Chromebooks or Android tablets", - "bluetooth.enableLocationServicesText": "Bluetooth can be used to provide location data to the app. In addition to granting the Scratch App permission to access location, location must be enabled in your general device settings. Search for 'Location' in your settings, and make sure it is on. On Chromebooks search for 'Location' in the Google Play Store Android preferences." + "bluetooth.enableLocationServicesText": "Bluetooth can be used to provide location data to the app. In addition to granting the Scratch App permission to access location, location must be enabled in your general device settings. Search for 'Location' in your settings, and make sure it is on. On Chromebooks search for 'Location' in the Google Play Store Android preferences.", + + "renameAccount.accountBlocked": "Account Blocked", + "renameAccount.toRecover": "To recover a access to your account, change your username.", + "renameAccount.yourScratchAccount": "Your scratch account has been temporarily blocked because your usernamed appears to contain personal information.", + "renameAccount.privacyIssue": "This is a serious privacy issue. When you share information like this, it is visible to everyone on the internet, so please be careful what you share", + "renameAccount.thingsToAvoid": "When creating an username, please remember to avoid using last names, school names, or other private information in your username.", + "renameAccount.changeYourUsername": "Change your Username", + "renameAccount.makeSure": "Make sure the username you chose is aligned with {communityGuidelinesLink}", + "renameAccount.communityGuidelines": "Scratch's Community Guidelines", + "renameAccount.change": "Change", + "renameAccount.pastNotifications": "Here are your past admin notifications" } diff --git a/src/redux/session.js b/src/redux/session.js index f9aa89dc0..761deb4fc 100644 --- a/src/redux/session.js +++ b/src/redux/session.js @@ -17,8 +17,7 @@ const banGoodListPaths = [ '/accounts/bad-username', '/community_guidelines', '/privacy_policy', - '/terms_of_use', - '/accounts/update_username' + '/terms_of_use' ]; module.exports.Status = keyMirror({ diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx index 28bcaa60f..6a68251d7 100644 --- a/src/views/bad-username-splash/bad-username-splash.jsx +++ b/src/views/bad-username-splash/bad-username-splash.jsx @@ -1,4 +1,3 @@ -/* eslint-disable */ const injectIntl = require('react-intl').injectIntl; // const intlShape = require('react-intl').intlShape; // const FormattedMessage = require('react-intl').FormattedMessage; @@ -20,12 +19,19 @@ import bannedIcon from './blocked-account.svg'; require('../../components/extension-landing/extension-landing.scss'); require('./bad-username-splash.scss'); +const validateNewUsernameForm = values => { + const errors = {}; + if (values.canValidate && (values.newUsername !== values.newUsernameConfirm && values.newUsernameConfirm !== '')){ + errors.newUsernameConfirm = "usernames don't match"; + } + return errors; +}; + const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { - const [unauthorizedError, setUnauthorizedError] = React.useState(false) - const [badUsernameError, setBadUsernameError] = React.useState(false) - const [apiError, setAPIError] = React.useState(false) - + const [unauthorizedError, setUnauthorizedError] = React.useState(false); + const [badUsernameError, setBadUsernameError] = React.useState(false); + const [apiError, setAPIError] = React.useState(false); React.useEffect(() => { if (user && user.username && user.token){ @@ -34,12 +40,11 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { }, [user]); const handleUpdateUsernameUnbanSubmit = (formData, formikBag) => { - setUnauthorizedError(false) - setBadUsernameError(false) - setAPIError(false) + setUnauthorizedError(false); + setBadUsernameError(false); + setAPIError(false); formikBag.setSubmitting(false); // formik makes us do this ourselves - console.log("attempting submit!") api({ host: '', uri: '/accounts/update_username/', @@ -51,19 +56,17 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { password: formData.password } }, (err, body, res) => { - if(res.body.error === "Unauthorized"){ - setUnauthorizedError("error message for unauthorized access") - } - else if(res.body.error === "Invalid username"){ - setBadUsernameError("error message for invalid username") - } - else if(res.body.error){ - setAPIError("error message for API error") - } else{ + if (res.body.error === 'Unauthorized'){ + setUnauthorizedError('error message for unauthorized access'); + } else if (res.body.error === 'Invalid username'){ + setBadUsernameError('error message for invalid username'); + } else if (res.body.error){ + setAPIError('error message for API error'); + } else { window.location = '/'; } }); - } + }; if (hasSession && (!user || !user.banned)){ window.location = '/'; @@ -82,12 +85,12 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { className="banned-icon" src={bannedIcon} /> -

+

-

-

-

-

+

+

+

+

{ newUsername: '', newUsernameConfirm: '', username: user.username, - password: '' + password: '', + canValidate: false }} - validateOnBlur={true} + validate={validateNewUsernameForm} + validateOnBlur validateOnChange={false} + /* eslint-disable react/jsx-no-bind */ onSubmit={handleUpdateUsernameUnbanSubmit} > {({ - errors, - handleSubmit, - isSubmitting, - setFieldError, - setFieldTouched, - setFieldValue, - // touched, - validateField, - values - }) => { - return ( - } - innerClassName="change-username-inner" - outerClassName="change-username-outer" - title={}}/>} - waiting={isSubmitting} - onSubmit={handleSubmit} - nextButton={} - > -
- validateField('newUsername')} - onChange={e => { - setFieldValue('newUsername', e.target.value.substring(0, 30)); - setFieldTouched('newUsername'); - setFieldError('newUsername', null); - }} - /> - { - setFieldValue('newUsernameConfirm', e.target.value.substring(0, 30)); - setFieldTouched('newUsernameConfirm'); - setFieldError('newUsernameConfirm', null); - }} - /> - { - setFieldValue('password', e.target.value); - setFieldTouched('password'); - setFieldError('password', null); - }} - /> -
-
); - }} + errors, + handleSubmit, + isSubmitting, + setFieldError, + setFieldTouched, + setFieldValue, + validateForm + }) => ( + } + innerClassName="change-username-inner" + outerClassName="change-username-outer" + title={)}} + />} + waiting={isSubmitting} + onSubmit={handleSubmit} + nextButton={} + > +
+ { + setFieldValue('newUsername', e.target.value.substring(0, 30)); + setFieldValue('canValidate', false); + setFieldTouched('newUsername'); + setFieldError('newUsername', null); + }} + /> + { + setFieldValue('newUsernameConfirm', e.target.value.substring(0, 30)); + setFieldTouched('newUsernameConfirm'); + setFieldError('newUsernameConfirm', null); + setFieldValue('canValidate', false); + }} + onBlur={() => { + setFieldValue('canValidate', true).then(validateForm()); + }} + /> + { + setFieldValue('password', e.target.value); + setFieldTouched('password'); + setFieldError('password', null); + }} + /> +
+
)}
- +
+ {console.log(adminMessages)} {adminMessages.map(message => (
{
{new Date(message.datetime_created).toDateString()}
- {/* // eslint-disable-next-line react/no-danger */} + {/* eslint-disable-next-line react/no-danger */}
))} diff --git a/src/views/bad-username-splash/blocked-account.svg b/src/views/bad-username-splash/blocked-account.svg new file mode 100644 index 000000000..897a34da9 --- /dev/null +++ b/src/views/bad-username-splash/blocked-account.svg @@ -0,0 +1,3 @@ + + + From 3bf0385cbc4c9c85aaaf85a6f7fbf6febee876d1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 07:16:36 +0000 Subject: [PATCH 12/77] fix(deps): update dependency scratch-l10n to v3.15.20230629032156 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03b0b4501..7cc0533bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.16", - "scratch-l10n": "3.15.20230628032227", + "scratch-l10n": "3.15.20230629032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230628032227" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230628032227", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230628032227.tgz", + "integrity": "sha512-NrogKdcQLBpXm12UAiGroKcBf3bemsIvUKZijRg14pNs1xZLQ/WkYqjhff5SLiqjFt64w7q3EMrMQAlZhoDwWg==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.16.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230628032227", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230628032227.tgz", + "integrity": "sha512-NrogKdcQLBpXm12UAiGroKcBf3bemsIvUKZijRg14pNs1xZLQ/WkYqjhff5SLiqjFt64w7q3EMrMQAlZhoDwWg==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.6.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230628032227", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230628032227.tgz", - "integrity": "sha512-NrogKdcQLBpXm12UAiGroKcBf3bemsIvUKZijRg14pNs1xZLQ/WkYqjhff5SLiqjFt64w7q3EMrMQAlZhoDwWg==", + "version": "3.15.20230629032156", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230629032156.tgz", + "integrity": "sha512-qFcN0gynIr/5tvzvkT1GnBoim6s/6QkN0uqfNaJZFz6Zbd17zd3FgwVjzdQNCLIpprosZoRK9E6J8TFHuumsMw==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index b6e7191af..a532522ba 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.16", - "scratch-l10n": "3.15.20230628032227", + "scratch-l10n": "3.15.20230629032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From edc8e5663607e1ae60104d322ce49c70a630e706 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:58:42 +0000 Subject: [PATCH 13/77] fix(deps): update dependency scratch-gui to v2.0.17 --- package-lock.json | 28 +++++----------------------- package.json | 2 +- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cc0533bf..ac6b83dca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.16", + "scratch-gui": "2.0.17", "scratch-l10n": "3.15.20230629032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23539,9 +23539,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.16.tgz", - "integrity": "sha512-I4oUEj7tlsNtxCE8V9fpY18CGm023jFU+l6b4+9tG7wvheNqSyfNXjHLnwIV4dbYhq2WZqu3nQueIDZBMFObdA==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.17.tgz", + "integrity": "sha512-MQe5wmR9/NwTVrbueRoo5LccslWRqoCMJTw8sTIWKWP4QmEMBDVtANfQuQlyvtxDp1YjIvPebENdQDYKlJUi/Q==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23597,7 +23597,7 @@ "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230628075940", - "scratch-l10n": "3.15.20230628032227", + "scratch-l10n": "3.15.20230629032156", "scratch-paint": "2.0.6", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", @@ -23952,24 +23952,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230628032227", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230628032227.tgz", - "integrity": "sha512-NrogKdcQLBpXm12UAiGroKcBf3bemsIvUKZijRg14pNs1xZLQ/WkYqjhff5SLiqjFt64w7q3EMrMQAlZhoDwWg==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.6.tgz", diff --git a/package.json b/package.json index a532522ba..a72829795 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.16", + "scratch-gui": "2.0.17", "scratch-l10n": "3.15.20230629032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From e3b6cf4df1ec5cd1b7c37bcda3dedb818715dcd9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 14:26:02 +0000 Subject: [PATCH 14/77] fix(deps): update dependency scratch-gui to v2.0.18 --- package-lock.json | 36 +++++++++--------------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac6b83dca..520a4cb1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.17", + "scratch-gui": "2.0.18", "scratch-l10n": "3.15.20230629032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230628075940", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230628075940.tgz", - "integrity": "sha512-9gMH2p+A+7r1xXsMIA/iP92k/uQ1FBoNrEApxOoN1Ff3HNXucdlJ/ljSwuVNaaBfR/IoAfbsExLCnVKg6yyneg==", + "version": "0.2.0-prerelease.20230629085902", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230629085902.tgz", + "integrity": "sha512-fn1DgSCPmab1PIYKIKkOCWrUWaxniZWDQYoN07Q3uIDIIqj9TxFnNAsIQ/R7ryNY1QCnSeyZzOl1oE+UoBn76Q==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230628032227" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230628032227", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230628032227.tgz", - "integrity": "sha512-NrogKdcQLBpXm12UAiGroKcBf3bemsIvUKZijRg14pNs1xZLQ/WkYqjhff5SLiqjFt64w7q3EMrMQAlZhoDwWg==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230629032156" } }, "node_modules/scratch-gui": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.17.tgz", - "integrity": "sha512-MQe5wmR9/NwTVrbueRoo5LccslWRqoCMJTw8sTIWKWP4QmEMBDVtANfQuQlyvtxDp1YjIvPebENdQDYKlJUi/Q==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.18.tgz", + "integrity": "sha512-znwFQKvULISGlBHgHCWUo0lslZ8+NOXyLbHRWEG5Y+dC6cvkMv0i74vOnVqlCHlhQdWjXeraC6p1ocT0IhsOpQ==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,7 +23578,7 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230628075940", + "scratch-blocks": "0.2.0-prerelease.20230629085902", "scratch-l10n": "3.15.20230629032156", "scratch-paint": "2.0.6", "scratch-render": "0.1.0-prerelease.20230318150639", diff --git a/package.json b/package.json index a72829795..84e46b142 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.17", + "scratch-gui": "2.0.18", "scratch-l10n": "3.15.20230629032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 678f0015bdecc22e8e48652b65fca5fbcd2edecd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 19:59:06 +0000 Subject: [PATCH 15/77] fix(deps): update dependency scratch-gui to v2.0.19 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 520a4cb1d..b631d0955 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.18", + "scratch-gui": "2.0.19", "scratch-l10n": "3.15.20230629032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.18.tgz", - "integrity": "sha512-znwFQKvULISGlBHgHCWUo0lslZ8+NOXyLbHRWEG5Y+dC6cvkMv0i74vOnVqlCHlhQdWjXeraC6p1ocT0IhsOpQ==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.19.tgz", + "integrity": "sha512-pqDzrelG27+aZcWk25JlY2krMuoLzuHyUG9Fc1KSmlYe+EQEfJjUJIABYwk2pgyps0RPnqMbBssyFFa3ZYyJ5Q==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23580,7 +23580,7 @@ "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230629085902", "scratch-l10n": "3.15.20230629032156", - "scratch-paint": "2.0.6", + "scratch-paint": "2.0.7", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", @@ -23935,9 +23935,9 @@ } }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.6.tgz", - "integrity": "sha512-au+H38UthX+8wT5M0+O3KRIy1Mk2X3IBTDBZeG/7ZCKUKy2NK1vx/b00QHC0byBZ4EUKiKufa6EBsT9Zey341A==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.7.tgz", + "integrity": "sha512-5TUkOiaZHyVgUaiWF0WIEr8n5fbyBVZYUXpeK6GxeCsH/Wbb7tk4WtcBrgtf7wcDLroDn+qiGptlj0cZLxWQ1g==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", diff --git a/package.json b/package.json index 84e46b142..f4a6b0f2f 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.18", + "scratch-gui": "2.0.19", "scratch-l10n": "3.15.20230629032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 92b6e6240a722365a3a6fbca571acaeb70f13565 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 05:00:46 +0000 Subject: [PATCH 16/77] fix(deps): update dependency scratch-l10n to v3.15.20230630032209 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index b631d0955..76d2d1c8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.19", - "scratch-l10n": "3.15.20230629032156", + "scratch-l10n": "3.15.20230630032209", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230629032156" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230629032156", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230629032156.tgz", + "integrity": "sha512-qFcN0gynIr/5tvzvkT1GnBoim6s/6QkN0uqfNaJZFz6Zbd17zd3FgwVjzdQNCLIpprosZoRK9E6J8TFHuumsMw==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.19.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230629032156", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230629032156.tgz", + "integrity": "sha512-qFcN0gynIr/5tvzvkT1GnBoim6s/6QkN0uqfNaJZFz6Zbd17zd3FgwVjzdQNCLIpprosZoRK9E6J8TFHuumsMw==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.7.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230629032156", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230629032156.tgz", - "integrity": "sha512-qFcN0gynIr/5tvzvkT1GnBoim6s/6QkN0uqfNaJZFz6Zbd17zd3FgwVjzdQNCLIpprosZoRK9E6J8TFHuumsMw==", + "version": "3.15.20230630032209", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz", + "integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index f4a6b0f2f..d6d8ba97d 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.19", - "scratch-l10n": "3.15.20230629032156", + "scratch-l10n": "3.15.20230630032209", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 3f4277d7cdf4b9d24343b38c3a161ded738d70b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 07:08:33 +0000 Subject: [PATCH 17/77] fix(deps): update dependency scratch-gui to v2.0.20 --- package-lock.json | 28 +++++----------------------- package.json | 2 +- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76d2d1c8e..2f56ad25d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.19", + "scratch-gui": "2.0.20", "scratch-l10n": "3.15.20230630032209", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23539,9 +23539,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.19.tgz", - "integrity": "sha512-pqDzrelG27+aZcWk25JlY2krMuoLzuHyUG9Fc1KSmlYe+EQEfJjUJIABYwk2pgyps0RPnqMbBssyFFa3ZYyJ5Q==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.20.tgz", + "integrity": "sha512-TpP1sVjcCJ31XSF4WasKncYNAg3Sf+3zhWeaFWlOj+qSif+XtqDWbiBAKl1lLRuVN0eu6symd2ZtjJUit1aSJw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23597,7 +23597,7 @@ "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230629085902", - "scratch-l10n": "3.15.20230629032156", + "scratch-l10n": "3.15.20230630032209", "scratch-paint": "2.0.7", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", @@ -23952,24 +23952,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230629032156", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230629032156.tgz", - "integrity": "sha512-qFcN0gynIr/5tvzvkT1GnBoim6s/6QkN0uqfNaJZFz6Zbd17zd3FgwVjzdQNCLIpprosZoRK9E6J8TFHuumsMw==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.7.tgz", diff --git a/package.json b/package.json index d6d8ba97d..6f3cece38 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.19", + "scratch-gui": "2.0.20", "scratch-l10n": "3.15.20230630032209", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 84fab4856087fc75b625b74ce974c8204d3cb543 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <7019101+cwillisf@users.noreply.github.com> Date: Fri, 30 Jun 2023 00:25:49 -0700 Subject: [PATCH 18/77] chore: replace UA with GA4 through GTM --- README.md | 3 ++- src/components/join-flow/join-flow.jsx | 14 +++++--------- src/template-config.js | 8 -------- src/template.ejs | 16 ---------------- src/views/splash/donate/donate-banner.jsx | 14 +++++--------- 5 files changed, 12 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 5c71ca0ea..8eb1e148b 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,8 @@ the beginning of the command, before `npm start`: | `BACKPACK_HOST` | `https://backpack.scratch.mit.edu` | Hostname for backpack requests | | `PROJECT_HOST` | `https://projects.scratch.mit.edu` | Hostname for project requests | | `FALLBACK` | `''` | Pass-through location for old site | -| `GA_TRACKER` | `''` | Where to log Google Analytics data | +| `GTM_ID` | `''` | Google Tag Manager ID | +| `GTM_ENV_AUTH` | `''` | Google Tag Manager env and auth info | | `NODE_ENV` | `null` | If not `production`, app acts like development | | `PORT` | `8333` | Port for devserver (http://localhost:XXXX) | diff --git a/src/components/join-flow/join-flow.jsx b/src/components/join-flow/join-flow.jsx index 0acf3984e..dfc5bbdef 100644 --- a/src/components/join-flow/join-flow.jsx +++ b/src/components/join-flow/join-flow.jsx @@ -221,15 +221,11 @@ class JoinFlow extends React.Component { resetState () { this.setState(this.initialState); } - sendAnalytics (path) { - const gaID = window.GA_ID; - if (!window.ga) { - return; - } - window.ga('send', { - hitType: 'pageview', - page: path, - tid: gaID + sendAnalytics (joinFlowStep) { + window.dataLayer = window.dataLayer || []; + window.dataLayer.push({ + event: 'join_flow', + joinFlowStep }); } diff --git a/src/template-config.js b/src/template-config.js index c74763530..757fe160a 100644 --- a/src/template-config.js +++ b/src/template-config.js @@ -30,14 +30,6 @@ module.exports = { // Analytics & Monitoring // ---------------------- - // GA4 Measurement ID - // Looks like 'G-XXXXXXXX' - ga4_id: process.env.GA4_ID || '', - - // Universal Analytics Property ID - // Looks like 'UA-99999999-9' - ga_tracker: process.env.GA_TRACKER || '', - // Google Tag Manager ID // Looks like 'GTM-XXXXXXX' gtm_id: process.env.GTM_ID || '', diff --git a/src/template.ejs b/src/template.ejs index 5c4e2d411..6da84e3a3 100644 --- a/src/template.ejs +++ b/src/template.ejs @@ -47,22 +47,6 @@ - - - diff --git a/src/views/splash/donate/donate-banner.jsx b/src/views/splash/donate/donate-banner.jsx index 4f43b9ecc..f659a9420 100644 --- a/src/views/splash/donate/donate-banner.jsx +++ b/src/views/splash/donate/donate-banner.jsx @@ -16,17 +16,13 @@ const navigateToDonatePage = () => { const SCRATCH_CELBRATION_BANNER_END_TIME = new Date(2022, 4, 21).getTime(); // May 21 2022 (months are zero indexed) -// Following the example in the Google Analytics doc here to track -// clicks going out to the donate page from this banner: -// https://support.google.com/analytics/answer/1136920?hl=en +// track clicks going out to the donate page from this banner const captureOutboundLinkToDonate = () => { - // `ga` is a global we have thanks to src/template.ejs - // use this to send a tracking event for this outbound link - // eslint-disable-next-line no-undef - ga('send', 'event', 'outbound', 'click', donateURL, { - transport: 'beacon', - hitCallback: navigateToDonatePage + window.dataLayer = window.dataLayer || []; + window.dataLayer.push({ + event: 'donate_banner_click' }); + setTimeout(navigateToDonatePage, 0); }; const DonateTopBanner = ({ From 233049d0a3f5ca7026469d739a98f58f8e87cb2e Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <7019101+cwillisf@users.noreply.github.com> Date: Fri, 30 Jun 2023 01:41:57 -0700 Subject: [PATCH 19/77] test: fix join flow analytics test for GTM/GA4 --- test/unit/components/join-flow.test.jsx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/test/unit/components/join-flow.test.jsx b/test/unit/components/join-flow.test.jsx index 8093c8108..5b8ebcd17 100644 --- a/test/unit/components/join-flow.test.jsx +++ b/test/unit/components/join-flow.test.jsx @@ -67,17 +67,15 @@ describe('JoinFlow', () => { }); }); - test('sendAnalytics calls google analytics with correct params', () => { + test('sendAnalytics calls GTM with correct params', () => { const joinFlowInstance = getJoinFlowWrapper().instance(); - global.window.ga = jest.fn(); + global.window.dataLayer = {push: jest.fn()}; global.window.GA_ID = '1234'; joinFlowInstance.sendAnalytics('page-path'); - const obj = { - hitType: 'pageview', - page: 'page-path', - tid: '1234' - }; - expect(global.window.ga).toHaveBeenCalledWith('send', obj); + expect(global.window.dataLayer.push).toHaveBeenCalledWith({ + event: 'join_flow', + joinFlowStep: 'page-path' + }); }); test('handleAdvanceStep', () => { From f06b86e3d552b972a64eef24e1ba01d8c243382b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 16:53:29 +0000 Subject: [PATCH 20/77] fix(deps): update dependency scratch-gui to v2.0.22 --- package-lock.json | 36 +++++++++--------------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2f56ad25d..11983c8f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.20", + "scratch-gui": "2.0.22", "scratch-l10n": "3.15.20230630032209", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230629085902", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230629085902.tgz", - "integrity": "sha512-fn1DgSCPmab1PIYKIKkOCWrUWaxniZWDQYoN07Q3uIDIIqj9TxFnNAsIQ/R7ryNY1QCnSeyZzOl1oE+UoBn76Q==", + "version": "0.2.0-prerelease.20230630075614", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230630075614.tgz", + "integrity": "sha512-1+d9wzGyGmlaftI3B23iRYMY+9Pj2IBCcDK7ZR1Ez7n13DQyK1PtWIWT75K+2qtj3RZTSt7oBH1iQvAWuAHnzw==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230629032156" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230629032156", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230629032156.tgz", - "integrity": "sha512-qFcN0gynIr/5tvzvkT1GnBoim6s/6QkN0uqfNaJZFz6Zbd17zd3FgwVjzdQNCLIpprosZoRK9E6J8TFHuumsMw==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230630032209" } }, "node_modules/scratch-gui": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.20.tgz", - "integrity": "sha512-TpP1sVjcCJ31XSF4WasKncYNAg3Sf+3zhWeaFWlOj+qSif+XtqDWbiBAKl1lLRuVN0eu6symd2ZtjJUit1aSJw==", + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.22.tgz", + "integrity": "sha512-4xIypVGC3gSxwccBVFEcgGsZuxiB7OPC3oxQflEjnh1MCkZef5ZuKIwFP5F6Ap151S1N8if4tsWVEyBpnas2nw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,7 +23578,7 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230629085902", + "scratch-blocks": "0.2.0-prerelease.20230630075614", "scratch-l10n": "3.15.20230630032209", "scratch-paint": "2.0.7", "scratch-render": "0.1.0-prerelease.20230318150639", diff --git a/package.json b/package.json index 6f3cece38..37fd41913 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.20", + "scratch-gui": "2.0.22", "scratch-l10n": "3.15.20230630032209", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From b64cdbac1f56a4fc0f948d0954a74fb7e1d32a71 Mon Sep 17 00:00:00 2001 From: tomlum Date: Fri, 30 Jun 2023 15:04:53 -0400 Subject: [PATCH 21/77] refactors and adds different messages for vad username vs pii username --- src/l10n.json | 10 ++-- .../bad-username-splash.jsx | 46 ++++++++++++++----- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/l10n.json b/src/l10n.json index 6e1af76b9..8ca87ecf6 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -442,12 +442,16 @@ "renameAccount.accountBlocked": "Account Blocked", "renameAccount.toRecover": "To recover a access to your account, change your username.", - "renameAccount.yourScratchAccount": "Your scratch account has been temporarily blocked because your usernamed appears to contain personal information.", + "renameAccount.yourScratchAccount": "Your scratch account has been temporarily blocked because your username appears to contain personal information.", "renameAccount.privacyIssue": "This is a serious privacy issue. When you share information like this, it is visible to everyone on the internet, so please be careful what you share", - "renameAccount.thingsToAvoid": "When creating an username, please remember to avoid using last names, school names, or other private information in your username.", + "renameAccount.thingsToAvoid": "When creating a username, please remember to avoid using last names, school names, or other private information in your username.", + "renameAccount.yourScratchAccountInappropriate": "Your scratch account has been temporarily blocked because your username is not appropriate for Scratch.", + "renameAccount.scratchIsForKids": "Scratch is for kids ages 8 and up, and it's important to us that the Scratch website is a safe and friendly educational resource for everyone, but that's hard to achieve if users are choosing disrespectful or inappropriate usernames.", + "renameAccount.rememberToFollow": "When creating a username, please remember to follow the {communityGuidelinesLink}", + "renameAccount.CommunityGuidelines": "Community Guidelines", "renameAccount.changeYourUsername": "Change your Username", "renameAccount.makeSure": "Make sure the username you chose is aligned with {communityGuidelinesLink}", - "renameAccount.communityGuidelines": "Scratch's Community Guidelines", + "renameAccount.scratchsCommunityGuidelines": "Scratch's Community Guidelines", "renameAccount.change": "Change", "renameAccount.pastNotifications": "Here are your past admin notifications" } diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx index 6a68251d7..8b9d99adb 100644 --- a/src/views/bad-username-splash/bad-username-splash.jsx +++ b/src/views/bad-username-splash/bad-username-splash.jsx @@ -27,12 +27,17 @@ const validateNewUsernameForm = values => { return errors; }; +const PIIUsernameMessage = 'username appears to contain personal information'; +const BadUsernameMessage = 'an inappropriate username'; + const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { const [unauthorizedError, setUnauthorizedError] = React.useState(false); const [badUsernameError, setBadUsernameError] = React.useState(false); const [apiError, setAPIError] = React.useState(false); + const latestAdminMessage = adminMessages && adminMessages[0] && adminMessages[0].message; + React.useEffect(() => { if (user && user.username && user.token){ getAdminMessages(user.username, user.token); @@ -88,10 +93,26 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => {

-

-

-

+ + {latestAdminMessage && latestAdminMessage.includes(PIIUsernameMessage) && + (
+

+

+

+
) + } + {latestAdminMessage && latestAdminMessage.includes(BadUsernameMessage) && + (
+

+

+

)}} + />

+
) + }
+
{ validateForm }) => ( } + description={)}} + />} innerClassName="change-username-inner" outerClassName="change-username-outer" - title={)}} - />} + title={} waiting={isSubmitting} onSubmit={handleSubmit} nextButton={} @@ -142,7 +163,6 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { // this.props.intl.formatMessage({id: 'registration.usernameAdviceShort'})} validationClassName="validation-left validation-full-width-input" /* eslint-disable react/jsx-no-bind */ - validateOnChange={false} onChange={e => { setFieldValue('newUsername', e.target.value.substring(0, 30)); setFieldValue('canValidate', false); @@ -157,7 +177,6 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { className={'join-flow-input'} error={errors.newUsernameConfirm || badUsernameError} id="newUsernameConfirm" - validateOnChange={false} name="newUsernameConfirm" placeholder={'Type your new username again'} spellCheck={false} @@ -199,7 +218,6 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => {
- {console.log(adminMessages)} {adminMessages.map(message => (
({ user: selectBannedUser(state), hasSession: selectHasFetchedSession(state), - adminMessages: state.messages.messages && state.messages.messages.admin + adminMessages: state.messages.messages && + state.messages.messages.admin && + state.messages.messages.admin.sort((a, b) => + (b.id - a.id) + ) }), dispatch => ({ getAdminMessages: (username, token) => { From dee35cfc485cf22080ce7f1da455ed3020391339 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 19:31:16 +0000 Subject: [PATCH 22/77] fix(deps): update dependency scratch-gui to v2.0.23 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 11983c8f3..12b1daa9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.22", + "scratch-gui": "2.0.23", "scratch-l10n": "3.15.20230630032209", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.22.tgz", - "integrity": "sha512-4xIypVGC3gSxwccBVFEcgGsZuxiB7OPC3oxQflEjnh1MCkZef5ZuKIwFP5F6Ap151S1N8if4tsWVEyBpnas2nw==", + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.23.tgz", + "integrity": "sha512-bYhzTRx0Kal9A8aHdG8MIvPHKooyFCaqovsKpP7gkT+vKbVyRREigTUDYzl9NBEenZrYecPaelZCaIlj/Yrygw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23580,7 +23580,7 @@ "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230630075614", "scratch-l10n": "3.15.20230630032209", - "scratch-paint": "2.0.7", + "scratch-paint": "2.0.8", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", @@ -23935,9 +23935,9 @@ } }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.7.tgz", - "integrity": "sha512-5TUkOiaZHyVgUaiWF0WIEr8n5fbyBVZYUXpeK6GxeCsH/Wbb7tk4WtcBrgtf7wcDLroDn+qiGptlj0cZLxWQ1g==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.8.tgz", + "integrity": "sha512-c7lUqvxjQITC+0ajUWhdZdi6PIVmJlkq3oxYnlOgz4wPg7DuzAclYH4zumW6pnV2M/GpWHr+NKR2zLzF2N+tsQ==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", diff --git a/package.json b/package.json index 37fd41913..a2f7787f4 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.22", + "scratch-gui": "2.0.23", "scratch-l10n": "3.15.20230630032209", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 95d4dbbe5e8933ad0aa30473ac1eb7ea12f98277 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 11:45:15 +0000 Subject: [PATCH 23/77] fix(deps): update dependency scratch-l10n to v3.15.20230701032155 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12b1daa9b..366cb6d07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.23", - "scratch-l10n": "3.15.20230630032209", + "scratch-l10n": "3.15.20230701032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230630032209" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230630032209", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz", + "integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.23", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.23.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230630032209", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz", + "integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.8.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230630032209", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz", - "integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==", + "version": "3.15.20230701032155", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230701032155.tgz", + "integrity": "sha512-BgXX77mYxUn+MnHuUtveDGyONs4ECzKz+9axQ/QrBA+s630QQTyLPCwaujT58ZYm63mCHFN8cjjf6adiWTYJSA==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index a2f7787f4..d467eb090 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.23", - "scratch-l10n": "3.15.20230630032209", + "scratch-l10n": "3.15.20230701032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From fad9d3aec3074919b8914fa319992942547d2d07 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 21:53:15 +0000 Subject: [PATCH 24/77] fix(deps): update dependency scratch-gui to v2.0.27 --- package-lock.json | 64 +++++++++++------------------------------------ package.json | 2 +- 2 files changed, 15 insertions(+), 51 deletions(-) diff --git a/package-lock.json b/package-lock.json index 366cb6d07..6b4723e68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.23", + "scratch-gui": "2.0.27", "scratch-l10n": "3.15.20230701032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230630075614", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230630075614.tgz", - "integrity": "sha512-1+d9wzGyGmlaftI3B23iRYMY+9Pj2IBCcDK7ZR1Ez7n13DQyK1PtWIWT75K+2qtj3RZTSt7oBH1iQvAWuAHnzw==", + "version": "0.2.0-prerelease.20230701102434", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230701102434.tgz", + "integrity": "sha512-6pT56Y0GIqWWsv35jx31fxLHgVlKoAYcDPFu1jpWKCqeEPhkJRbFXxNmIJ09gNyGO8hT5c1SEOZCMsawg7acGw==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230630032209" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230630032209", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz", - "integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230701032155" } }, "node_modules/scratch-gui": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.23.tgz", - "integrity": "sha512-bYhzTRx0Kal9A8aHdG8MIvPHKooyFCaqovsKpP7gkT+vKbVyRREigTUDYzl9NBEenZrYecPaelZCaIlj/Yrygw==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.27.tgz", + "integrity": "sha512-yOca4OI+0xYTpOStcAMdc9gPScICxhxAqbmxpMPCjVriZc21Er6wyMQrX88Cl26lonkdBHQEivYvNf0dMdAS/A==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,9 +23578,9 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230630075614", - "scratch-l10n": "3.15.20230630032209", - "scratch-paint": "2.0.8", + "scratch-blocks": "0.2.0-prerelease.20230701102434", + "scratch-l10n": "3.15.20230701032155", + "scratch-paint": "2.0.10", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", @@ -23952,28 +23934,10 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230630032209", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz", - "integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.8.tgz", - "integrity": "sha512-c7lUqvxjQITC+0ajUWhdZdi6PIVmJlkq3oxYnlOgz4wPg7DuzAclYH4zumW6pnV2M/GpWHr+NKR2zLzF2N+tsQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.10.tgz", + "integrity": "sha512-7LeRNR1BDVFIXjlV7rlcazId++zhvZ1JxWQSiGb0Z3dDBzWeOHIMNNkcM+E2HbsYuZUaBKHStgdAcE5Jjppy0g==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", diff --git a/package.json b/package.json index d467eb090..4c9889f7a 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.23", + "scratch-gui": "2.0.27", "scratch-l10n": "3.15.20230701032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From ab5fdbe6899d324877debe337a1afe65a7ea5969 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 04:10:45 +0000 Subject: [PATCH 25/77] fix(deps): update dependency scratch-gui to v2.0.28 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6b4723e68..b59ac8d17 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.27", + "scratch-gui": "2.0.28", "scratch-l10n": "3.15.20230701032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.27.tgz", - "integrity": "sha512-yOca4OI+0xYTpOStcAMdc9gPScICxhxAqbmxpMPCjVriZc21Er6wyMQrX88Cl26lonkdBHQEivYvNf0dMdAS/A==", + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.28.tgz", + "integrity": "sha512-OeCEK8et8w4OvV1LwJi7/Bec/4FAC4jiHjU5lo8H9JkQFi21QcvPCfTuM2lHivSTYVE/mEysjETqaquybmr5PA==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23585,7 +23585,7 @@ "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", - "scratch-vm": "1.5.76", + "scratch-vm": "1.5.78", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -24225,9 +24225,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.76.tgz", - "integrity": "sha512-GawQ+5eddw9YtOgxlIjlIPmD/NVmiCRmHJy9EJIXwZdK5oedbFaZQKxKUigmmreG4XPd5twXVFtPykYZGhemWw==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.78.tgz", + "integrity": "sha512-DXab9FTyxFoHMMLvSpIwk8q4W7pnAp8/ljmjOA1/LGedDcimWISDlpbenohwK9ntDR2gapdGUesozxP4rWcn8Q==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 4c9889f7a..5e0362228 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.27", + "scratch-gui": "2.0.28", "scratch-l10n": "3.15.20230701032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From b4b52c29da90502db7f6257c78597aa5a507cc7b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 07:08:16 +0000 Subject: [PATCH 26/77] fix(deps): update dependency scratch-l10n to v3.15.20230702032144 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index b59ac8d17..99317fee6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.28", - "scratch-l10n": "3.15.20230701032155", + "scratch-l10n": "3.15.20230702032144", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230701032155" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230701032155", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230701032155.tgz", + "integrity": "sha512-BgXX77mYxUn+MnHuUtveDGyONs4ECzKz+9axQ/QrBA+s630QQTyLPCwaujT58ZYm63mCHFN8cjjf6adiWTYJSA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.28", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.28.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230701032155", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230701032155.tgz", + "integrity": "sha512-BgXX77mYxUn+MnHuUtveDGyONs4ECzKz+9axQ/QrBA+s630QQTyLPCwaujT58ZYm63mCHFN8cjjf6adiWTYJSA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.10.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230701032155", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230701032155.tgz", - "integrity": "sha512-BgXX77mYxUn+MnHuUtveDGyONs4ECzKz+9axQ/QrBA+s630QQTyLPCwaujT58ZYm63mCHFN8cjjf6adiWTYJSA==", + "version": "3.15.20230702032144", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230702032144.tgz", + "integrity": "sha512-zWFm0Cj46SUzyRWNdiklksudWv5cJdTHtSUVEddbKbwNvhGn6ljuU+7VWasHwOOYm6D1oEY2JpLrsDnzRuVuMg==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 5e0362228..6ed4613a6 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.28", - "scratch-l10n": "3.15.20230701032155", + "scratch-l10n": "3.15.20230702032144", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From cae2df0d997cbe5d8ae332415c022104f91962b6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 19:03:41 +0000 Subject: [PATCH 27/77] fix(deps): update dependency scratch-gui to v2.0.32 --- package-lock.json | 72 ++++++++++++----------------------------------- package.json | 2 +- 2 files changed, 19 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index 99317fee6..8cc7da8dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.28", + "scratch-gui": "2.0.32", "scratch-l10n": "3.15.20230702032144", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230701102434", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230701102434.tgz", - "integrity": "sha512-6pT56Y0GIqWWsv35jx31fxLHgVlKoAYcDPFu1jpWKCqeEPhkJRbFXxNmIJ09gNyGO8hT5c1SEOZCMsawg7acGw==", + "version": "0.2.0-prerelease.20230702074136", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230702074136.tgz", + "integrity": "sha512-ql/4Ey1PigDEIPP5aeXKim5wP3Zj5egmTJHGsPFHYquvEVDKZMI7Mj804tdq9ig6CwJfVtPOK2ty+4dy1EGkeQ==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230701032155" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230701032155", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230701032155.tgz", - "integrity": "sha512-BgXX77mYxUn+MnHuUtveDGyONs4ECzKz+9axQ/QrBA+s630QQTyLPCwaujT58ZYm63mCHFN8cjjf6adiWTYJSA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230702032144" } }, "node_modules/scratch-gui": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.28.tgz", - "integrity": "sha512-OeCEK8et8w4OvV1LwJi7/Bec/4FAC4jiHjU5lo8H9JkQFi21QcvPCfTuM2lHivSTYVE/mEysjETqaquybmr5PA==", + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.32.tgz", + "integrity": "sha512-EAxjQX6Vvu70x+SM8BR1KnHn1N50mtWIjbKnms5bWWuy0sGV48aVHMAtbQ5lEd1zxSwGwNzSVfMnzBUVxVhd0Q==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,14 +23578,14 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230701102434", - "scratch-l10n": "3.15.20230701032155", - "scratch-paint": "2.0.10", + "scratch-blocks": "0.2.0-prerelease.20230702074136", + "scratch-l10n": "3.15.20230702032144", + "scratch-paint": "2.0.11", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", - "scratch-vm": "1.5.78", + "scratch-vm": "1.5.79", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23952,28 +23934,10 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230701032155", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230701032155.tgz", - "integrity": "sha512-BgXX77mYxUn+MnHuUtveDGyONs4ECzKz+9axQ/QrBA+s630QQTyLPCwaujT58ZYm63mCHFN8cjjf6adiWTYJSA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.10.tgz", - "integrity": "sha512-7LeRNR1BDVFIXjlV7rlcazId++zhvZ1JxWQSiGb0Z3dDBzWeOHIMNNkcM+E2HbsYuZUaBKHStgdAcE5Jjppy0g==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.11.tgz", + "integrity": "sha512-I/XyfR1V6qmjhrvSP4NbmXej1fq3IqF4/O2jc+sqtXbBCv+Y4KoeVF/rqmSz7h7yw0RPy0bH3WHSEtOU/kBSOg==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24261,9 +24225,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.78", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.78.tgz", - "integrity": "sha512-DXab9FTyxFoHMMLvSpIwk8q4W7pnAp8/ljmjOA1/LGedDcimWISDlpbenohwK9ntDR2gapdGUesozxP4rWcn8Q==", + "version": "1.5.79", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.79.tgz", + "integrity": "sha512-hftN4Eub0wHVcNQn9T5VSyKmuDL90XbYxgFsNWEEL0xyTwhLJOVcB8WVeTBJU2F969iZGPgNCm2IqC+oo+TTWQ==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 6ed4613a6..b845c7b4b 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.28", + "scratch-gui": "2.0.32", "scratch-l10n": "3.15.20230702032144", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 4e9ab487fe69d7f604cb7897489896e2d0b79c35 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 04:18:32 +0000 Subject: [PATCH 28/77] fix(deps): update dependency scratch-l10n to v3.15.20230703032155 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8cc7da8dc..9a47ef98c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.32", - "scratch-l10n": "3.15.20230702032144", + "scratch-l10n": "3.15.20230703032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230702032144" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230702032144", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230702032144.tgz", + "integrity": "sha512-zWFm0Cj46SUzyRWNdiklksudWv5cJdTHtSUVEddbKbwNvhGn6ljuU+7VWasHwOOYm6D1oEY2JpLrsDnzRuVuMg==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.32", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.32.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230702032144", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230702032144.tgz", + "integrity": "sha512-zWFm0Cj46SUzyRWNdiklksudWv5cJdTHtSUVEddbKbwNvhGn6ljuU+7VWasHwOOYm6D1oEY2JpLrsDnzRuVuMg==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.11.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230702032144", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230702032144.tgz", - "integrity": "sha512-zWFm0Cj46SUzyRWNdiklksudWv5cJdTHtSUVEddbKbwNvhGn6ljuU+7VWasHwOOYm6D1oEY2JpLrsDnzRuVuMg==", + "version": "3.15.20230703032155", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230703032155.tgz", + "integrity": "sha512-oARHBS+dmmBgLxsn6/vwH4uDCSe9BdMU3vokxMcQ7szhq9SbBsNPMK8oHjmNvb3j8etbRsOXNngjsRHG5Mtu1Q==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index b845c7b4b..b7a9a8288 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.32", - "scratch-l10n": "3.15.20230702032144", + "scratch-l10n": "3.15.20230703032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 31cd02ce33781ae5d0e113c702bae18f02ba7b4c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 13:02:04 +0000 Subject: [PATCH 29/77] fix(deps): update dependency scratch-gui to v2.0.35 --- package-lock.json | 64 +++++++++++------------------------------------ package.json | 2 +- 2 files changed, 15 insertions(+), 51 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a47ef98c..38602a29b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.32", + "scratch-gui": "2.0.35", "scratch-l10n": "3.15.20230703032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230702074136", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230702074136.tgz", - "integrity": "sha512-ql/4Ey1PigDEIPP5aeXKim5wP3Zj5egmTJHGsPFHYquvEVDKZMI7Mj804tdq9ig6CwJfVtPOK2ty+4dy1EGkeQ==", + "version": "0.2.0-prerelease.20230703063654", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230703063654.tgz", + "integrity": "sha512-NpcWWqxVy0jOIZzf5GUQ3xt4I3SWh4vDGRZ2L2Q6g8Ui5MusOV7sVJtU3qALvm45ptOMphJJ8lyOQVyBmmlGBw==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230702032144" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230702032144", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230702032144.tgz", - "integrity": "sha512-zWFm0Cj46SUzyRWNdiklksudWv5cJdTHtSUVEddbKbwNvhGn6ljuU+7VWasHwOOYm6D1oEY2JpLrsDnzRuVuMg==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230703032155" } }, "node_modules/scratch-gui": { - "version": "2.0.32", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.32.tgz", - "integrity": "sha512-EAxjQX6Vvu70x+SM8BR1KnHn1N50mtWIjbKnms5bWWuy0sGV48aVHMAtbQ5lEd1zxSwGwNzSVfMnzBUVxVhd0Q==", + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.35.tgz", + "integrity": "sha512-hXP9j9AcWlLyIfDIj6IqWWHP2Hgbzh0DziCp9nS5lHi0DhymhbowV3wglDNT3QJPGXfZ+QxAFaWmMrLLJ3SUSw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,14 +23578,14 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230702074136", - "scratch-l10n": "3.15.20230702032144", + "scratch-blocks": "0.2.0-prerelease.20230703063654", + "scratch-l10n": "3.15.20230703032155", "scratch-paint": "2.0.11", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", - "scratch-vm": "1.5.79", + "scratch-vm": "1.5.80", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23952,24 +23934,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230702032144", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230702032144.tgz", - "integrity": "sha512-zWFm0Cj46SUzyRWNdiklksudWv5cJdTHtSUVEddbKbwNvhGn6ljuU+7VWasHwOOYm6D1oEY2JpLrsDnzRuVuMg==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.11.tgz", @@ -24261,9 +24225,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.79", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.79.tgz", - "integrity": "sha512-hftN4Eub0wHVcNQn9T5VSyKmuDL90XbYxgFsNWEEL0xyTwhLJOVcB8WVeTBJU2F969iZGPgNCm2IqC+oo+TTWQ==", + "version": "1.5.80", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.80.tgz", + "integrity": "sha512-KgVtCJm3IZrcmgN5Eo+IASBArmEOU9cJO2XN4+u82tc2FDIglb4750PYzU9V16VCg36sYi+nJXKUeUps68obGA==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index b7a9a8288..3d435c69f 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.32", + "scratch-gui": "2.0.35", "scratch-l10n": "3.15.20230703032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From ef694293f88967c951a082a026f7ac238c485860 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 20:24:27 +0000 Subject: [PATCH 30/77] fix(deps): update dependency scratch-gui to v2.0.36 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 38602a29b..772e34fa5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.35", + "scratch-gui": "2.0.36", "scratch-l10n": "3.15.20230703032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.35", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.35.tgz", - "integrity": "sha512-hXP9j9AcWlLyIfDIj6IqWWHP2Hgbzh0DziCp9nS5lHi0DhymhbowV3wglDNT3QJPGXfZ+QxAFaWmMrLLJ3SUSw==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.36.tgz", + "integrity": "sha512-BMG5KtRYfxLaauhIRyxHnTcwQuJF0qlTuDTJ0gSVGqyFZG8x7Uof1/4zd87+ehU7sWYyi8kVl4kEOiaUR4aFPA==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23580,7 +23580,7 @@ "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230703063654", "scratch-l10n": "3.15.20230703032155", - "scratch-paint": "2.0.11", + "scratch-paint": "2.0.12", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", @@ -23935,9 +23935,9 @@ } }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.11.tgz", - "integrity": "sha512-I/XyfR1V6qmjhrvSP4NbmXej1fq3IqF4/O2jc+sqtXbBCv+Y4KoeVF/rqmSz7h7yw0RPy0bH3WHSEtOU/kBSOg==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.12.tgz", + "integrity": "sha512-lE2F8TRHHUsdgm6s8oUQgacoMh4XlgpbvIsus6ZtS1Ep7MGhm96ZWgdlS9JAFNH4x07HZlfiKu5Wy7dRdtghqg==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", diff --git a/package.json b/package.json index 3d435c69f..5712d2fa5 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.35", + "scratch-gui": "2.0.36", "scratch-l10n": "3.15.20230703032155", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 7bab2480e3099221f86bffc7a724cd2fcd5e4289 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 03:49:53 +0000 Subject: [PATCH 31/77] fix(deps): update dependency scratch-l10n to v3.15.20230704032156 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 772e34fa5..6a3369d4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.36", - "scratch-l10n": "3.15.20230703032155", + "scratch-l10n": "3.15.20230704032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230703032155" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230703032155", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230703032155.tgz", + "integrity": "sha512-oARHBS+dmmBgLxsn6/vwH4uDCSe9BdMU3vokxMcQ7szhq9SbBsNPMK8oHjmNvb3j8etbRsOXNngjsRHG5Mtu1Q==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.36", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.36.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230703032155", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230703032155.tgz", + "integrity": "sha512-oARHBS+dmmBgLxsn6/vwH4uDCSe9BdMU3vokxMcQ7szhq9SbBsNPMK8oHjmNvb3j8etbRsOXNngjsRHG5Mtu1Q==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.12.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230703032155", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230703032155.tgz", - "integrity": "sha512-oARHBS+dmmBgLxsn6/vwH4uDCSe9BdMU3vokxMcQ7szhq9SbBsNPMK8oHjmNvb3j8etbRsOXNngjsRHG5Mtu1Q==", + "version": "3.15.20230704032156", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230704032156.tgz", + "integrity": "sha512-yejrhSvreW1cvr37R2VSCKHFy9JUgOgKY/k6dl/4Ia8civUL25AYE1wsAukNzOlpk6XjNscldKcNMtLailqImw==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 5712d2fa5..bd58f5b73 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.36", - "scratch-l10n": "3.15.20230703032155", + "scratch-l10n": "3.15.20230704032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From b7fb82cbe376b6b11c9035136345f815bc26af58 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 11:57:27 +0000 Subject: [PATCH 32/77] fix(deps): update dependency scratch-gui to v2.0.37 --- package-lock.json | 28 +++++----------------------- package.json | 2 +- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6a3369d4f..30510ac66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.36", + "scratch-gui": "2.0.37", "scratch-l10n": "3.15.20230704032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23539,9 +23539,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.36.tgz", - "integrity": "sha512-BMG5KtRYfxLaauhIRyxHnTcwQuJF0qlTuDTJ0gSVGqyFZG8x7Uof1/4zd87+ehU7sWYyi8kVl4kEOiaUR4aFPA==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.37.tgz", + "integrity": "sha512-/IkzyV7SGlKRiPbvxl0rvTYn9bJPCVjbGkaxqkgLyE8l7tKU0YDxB72XACAUMlA1nKdMeCtN48gaWa3B+it42A==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23597,7 +23597,7 @@ "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230703063654", - "scratch-l10n": "3.15.20230703032155", + "scratch-l10n": "3.15.20230704032156", "scratch-paint": "2.0.12", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", @@ -23952,24 +23952,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230703032155", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230703032155.tgz", - "integrity": "sha512-oARHBS+dmmBgLxsn6/vwH4uDCSe9BdMU3vokxMcQ7szhq9SbBsNPMK8oHjmNvb3j8etbRsOXNngjsRHG5Mtu1Q==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.12.tgz", diff --git a/package.json b/package.json index bd58f5b73..011f85a10 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.36", + "scratch-gui": "2.0.37", "scratch-l10n": "3.15.20230704032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 4b8507ea549cd135b459ddc246b1e191670505df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 22:01:00 +0000 Subject: [PATCH 33/77] fix(deps): update dependency scratch-gui to v2.0.40 --- package-lock.json | 52 ++++++++++++++++------------------------------- package.json | 2 +- 2 files changed, 18 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 30510ac66..cdab8fe65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.37", + "scratch-gui": "2.0.40", "scratch-l10n": "3.15.20230704032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230703063654", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230703063654.tgz", - "integrity": "sha512-NpcWWqxVy0jOIZzf5GUQ3xt4I3SWh4vDGRZ2L2Q6g8Ui5MusOV7sVJtU3qALvm45ptOMphJJ8lyOQVyBmmlGBw==", + "version": "0.2.0-prerelease.20230704074535", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230704074535.tgz", + "integrity": "sha512-g4pnLriMWs5T7BkGFxs9Wseus1LGCfDLwCRHi5dNtm6a73QnyoQ600tIjfpLKiJ2NmhDv2oqTTowlAz9KthLNQ==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230703032155" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230703032155", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230703032155.tgz", - "integrity": "sha512-oARHBS+dmmBgLxsn6/vwH4uDCSe9BdMU3vokxMcQ7szhq9SbBsNPMK8oHjmNvb3j8etbRsOXNngjsRHG5Mtu1Q==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230704032156" } }, "node_modules/scratch-gui": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.37.tgz", - "integrity": "sha512-/IkzyV7SGlKRiPbvxl0rvTYn9bJPCVjbGkaxqkgLyE8l7tKU0YDxB72XACAUMlA1nKdMeCtN48gaWa3B+it42A==", + "version": "2.0.40", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.40.tgz", + "integrity": "sha512-m4uUY11X4wSUbZDyNGpNuaN5Lo/artP2UlaiUd7jHhM6oqlxoZQ3xh1ToXkNL/g44jA2hGvMI/pgHMhEmS8xbw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,14 +23578,14 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230703063654", + "scratch-blocks": "0.2.0-prerelease.20230704074535", "scratch-l10n": "3.15.20230704032156", - "scratch-paint": "2.0.12", + "scratch-paint": "2.0.13", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", - "scratch-vm": "1.5.80", + "scratch-vm": "1.5.81", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23953,9 +23935,9 @@ } }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.12.tgz", - "integrity": "sha512-lE2F8TRHHUsdgm6s8oUQgacoMh4XlgpbvIsus6ZtS1Ep7MGhm96ZWgdlS9JAFNH4x07HZlfiKu5Wy7dRdtghqg==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.13.tgz", + "integrity": "sha512-pLBa2MzPp1no848v9H7BfrrxQoldDNftpAtmkA6zcOQojtU1wgYVHE76SvxqMysKnYE5jrAXZu/lzf5O8RWD9A==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24243,9 +24225,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.80", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.80.tgz", - "integrity": "sha512-KgVtCJm3IZrcmgN5Eo+IASBArmEOU9cJO2XN4+u82tc2FDIglb4750PYzU9V16VCg36sYi+nJXKUeUps68obGA==", + "version": "1.5.81", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.81.tgz", + "integrity": "sha512-1fcnKdiTkJ49kcSgzvnXcxvv1FbxVCnXk+ok9ncs2ahRRU0VBBLz4GYdmgDP3Bzi7l0a7PieXyzaq0cq6fEzqg==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 011f85a10..e742acc98 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.37", + "scratch-gui": "2.0.40", "scratch-l10n": "3.15.20230704032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 19d4c03c751ac8727b607d128a1b86bb69f6bb6f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 16:12:18 +0000 Subject: [PATCH 34/77] fix(deps): update dependency scratch-gui to v2.0.41 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index cdab8fe65..3e87ab771 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.40", + "scratch-gui": "2.0.41", "scratch-l10n": "3.15.20230704032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.40", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.40.tgz", - "integrity": "sha512-m4uUY11X4wSUbZDyNGpNuaN5Lo/artP2UlaiUd7jHhM6oqlxoZQ3xh1ToXkNL/g44jA2hGvMI/pgHMhEmS8xbw==", + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.41.tgz", + "integrity": "sha512-64KN9quEIDpKlwh1x8o56E7d3XUYsqpYPA7wL3Oza/g1A1aMkArrvCzbp7CqfsRUBizFYWqxbuOYXyGfW4XWyA==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", diff --git a/package.json b/package.json index e742acc98..fe0b5954f 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.40", + "scratch-gui": "2.0.41", "scratch-l10n": "3.15.20230704032156", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 06e2556a1a5e2b901e3394b3d481811e6cede3e3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 03:52:00 +0000 Subject: [PATCH 35/77] fix(deps): update dependency scratch-l10n to v3.15.20230706032213 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e87ab771..b9651ed37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.41", - "scratch-l10n": "3.15.20230704032156", + "scratch-l10n": "3.15.20230706032213", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230704032156" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230704032156", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230704032156.tgz", + "integrity": "sha512-yejrhSvreW1cvr37R2VSCKHFy9JUgOgKY/k6dl/4Ia8civUL25AYE1wsAukNzOlpk6XjNscldKcNMtLailqImw==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.41", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.41.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230704032156", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230704032156.tgz", + "integrity": "sha512-yejrhSvreW1cvr37R2VSCKHFy9JUgOgKY/k6dl/4Ia8civUL25AYE1wsAukNzOlpk6XjNscldKcNMtLailqImw==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.13.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230704032156", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230704032156.tgz", - "integrity": "sha512-yejrhSvreW1cvr37R2VSCKHFy9JUgOgKY/k6dl/4Ia8civUL25AYE1wsAukNzOlpk6XjNscldKcNMtLailqImw==", + "version": "3.15.20230706032213", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230706032213.tgz", + "integrity": "sha512-8ABCAOBrAMiRtjpYWznAmxxdWDPtokpxoCfRSLTXVXdeZX5qGlzsUGRXxgDORt89sQoy+dUYR/oB5hl2AbuumA==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index fe0b5954f..266a85ab1 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.41", - "scratch-l10n": "3.15.20230704032156", + "scratch-l10n": "3.15.20230706032213", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 9662559fcef6866729680d8fb7f71f9ab949953b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 11:34:35 +0000 Subject: [PATCH 36/77] fix(deps): update dependency scratch-gui to v2.0.43 --- package-lock.json | 56 +++++++++-------------------------------------- package.json | 2 +- 2 files changed, 11 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index b9651ed37..1d2c7c6f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.41", + "scratch-gui": "2.0.43", "scratch-l10n": "3.15.20230706032213", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230704074535", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230704074535.tgz", - "integrity": "sha512-g4pnLriMWs5T7BkGFxs9Wseus1LGCfDLwCRHi5dNtm6a73QnyoQ600tIjfpLKiJ2NmhDv2oqTTowlAz9KthLNQ==", + "version": "0.2.0-prerelease.20230706063438", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230706063438.tgz", + "integrity": "sha512-l1J2yZ7chQOzFJ5UY4jcbjvVqN5QCQkwGvBGvnDfjDirDCnfh7sFZzdIcZznDvD4WnxZ9JvH8iswEUrzFzh2JQ==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230704032156" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230704032156", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230704032156.tgz", - "integrity": "sha512-yejrhSvreW1cvr37R2VSCKHFy9JUgOgKY/k6dl/4Ia8civUL25AYE1wsAukNzOlpk6XjNscldKcNMtLailqImw==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230706032213" } }, "node_modules/scratch-gui": { - "version": "2.0.41", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.41.tgz", - "integrity": "sha512-64KN9quEIDpKlwh1x8o56E7d3XUYsqpYPA7wL3Oza/g1A1aMkArrvCzbp7CqfsRUBizFYWqxbuOYXyGfW4XWyA==", + "version": "2.0.43", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.43.tgz", + "integrity": "sha512-2BzCoVCz0q/x4hrXqvWY9B4eTadtZi3OBiqIZW2/vh8oXYdEmB+uDDs8U9rei8OX9yUE/Nzdi5dcFV8z74f7rQ==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,8 +23578,8 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230704074535", - "scratch-l10n": "3.15.20230704032156", + "scratch-blocks": "0.2.0-prerelease.20230706063438", + "scratch-l10n": "3.15.20230706032213", "scratch-paint": "2.0.13", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", @@ -23952,24 +23934,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230704032156", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230704032156.tgz", - "integrity": "sha512-yejrhSvreW1cvr37R2VSCKHFy9JUgOgKY/k6dl/4Ia8civUL25AYE1wsAukNzOlpk6XjNscldKcNMtLailqImw==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.13.tgz", diff --git a/package.json b/package.json index 266a85ab1..7550ebc3f 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.41", + "scratch-gui": "2.0.43", "scratch-l10n": "3.15.20230706032213", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 4d9f80afebaf97d09888093f975c1d657bdf4b79 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 18:14:00 +0000 Subject: [PATCH 37/77] fix(deps): update dependency scratch-gui to v2.0.45 --- package-lock.json | 24 ++++++++++++------------ package.json | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d2c7c6f7..794b6ffd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.43", + "scratch-gui": "2.0.45", "scratch-l10n": "3.15.20230706032213", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.43", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.43.tgz", - "integrity": "sha512-2BzCoVCz0q/x4hrXqvWY9B4eTadtZi3OBiqIZW2/vh8oXYdEmB+uDDs8U9rei8OX9yUE/Nzdi5dcFV8z74f7rQ==", + "version": "2.0.45", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.45.tgz", + "integrity": "sha512-U8wWLS8LZ7yGgHcmTRBWBDLmhCOFti9cS3QEpKYWHaZ3PhMVvP6uHg29uJzOGcXsDUN0TyiqY14gutUk4VyibQ==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23580,12 +23580,12 @@ "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230706063438", "scratch-l10n": "3.15.20230706032213", - "scratch-paint": "2.0.13", + "scratch-paint": "2.0.14", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", - "scratch-vm": "1.5.81", + "scratch-vm": "1.5.82", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23935,9 +23935,9 @@ } }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.13.tgz", - "integrity": "sha512-pLBa2MzPp1no848v9H7BfrrxQoldDNftpAtmkA6zcOQojtU1wgYVHE76SvxqMysKnYE5jrAXZu/lzf5O8RWD9A==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.14.tgz", + "integrity": "sha512-EBmvfxQ002LCGlZgCZFOMmo7TNFujWJzVoKOuJ3mA2QFD6rt3j5p8iXbaoqoRkKQI6h8o9aLxURS0h4eEzyjkQ==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24225,9 +24225,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.81", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.81.tgz", - "integrity": "sha512-1fcnKdiTkJ49kcSgzvnXcxvv1FbxVCnXk+ok9ncs2ahRRU0VBBLz4GYdmgDP3Bzi7l0a7PieXyzaq0cq6fEzqg==", + "version": "1.5.82", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.82.tgz", + "integrity": "sha512-G1eRxVKiqcXG64x2d9TH1j0WZLUc5rm4FM7F0pZPe6DOzKAKJiNlQt8d/IoLzoP+JkPhxIXz5QiOGD6F8WKUTQ==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 7550ebc3f..f5bd7bed1 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.43", + "scratch-gui": "2.0.45", "scratch-l10n": "3.15.20230706032213", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 0d4abb172508c8d9d459adb6d7fa1e82d025bce4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 04:20:21 +0000 Subject: [PATCH 38/77] fix(deps): update dependency scratch-l10n to v3.15.20230707032150 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 794b6ffd3..faf042b1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.45", - "scratch-l10n": "3.15.20230706032213", + "scratch-l10n": "3.15.20230707032150", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230706032213" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230706032213", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230706032213.tgz", + "integrity": "sha512-8ABCAOBrAMiRtjpYWznAmxxdWDPtokpxoCfRSLTXVXdeZX5qGlzsUGRXxgDORt89sQoy+dUYR/oB5hl2AbuumA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.45", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.45.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230706032213", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230706032213.tgz", + "integrity": "sha512-8ABCAOBrAMiRtjpYWznAmxxdWDPtokpxoCfRSLTXVXdeZX5qGlzsUGRXxgDORt89sQoy+dUYR/oB5hl2AbuumA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.14.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230706032213", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230706032213.tgz", - "integrity": "sha512-8ABCAOBrAMiRtjpYWznAmxxdWDPtokpxoCfRSLTXVXdeZX5qGlzsUGRXxgDORt89sQoy+dUYR/oB5hl2AbuumA==", + "version": "3.15.20230707032150", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230707032150.tgz", + "integrity": "sha512-+CO4ZUmH//mg3Xft9P+VSJKcAgml5/Oofcgt1GqgY3EZKGMU9smAoHc/ReU/aI4eUYmaOkTxIyq3nZE5PhIG4g==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index f5bd7bed1..777579643 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.45", - "scratch-l10n": "3.15.20230706032213", + "scratch-l10n": "3.15.20230707032150", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 257232320c9c9c1e0fb4935ece0ee7daad4e87a8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 17:39:59 +0000 Subject: [PATCH 39/77] fix(deps): update dependency scratch-gui to v2.0.49 --- package-lock.json | 72 ++++++++++++----------------------------------- package.json | 2 +- 2 files changed, 19 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index faf042b1d..d815c4ad0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.45", + "scratch-gui": "2.0.49", "scratch-l10n": "3.15.20230707032150", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230706063438", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230706063438.tgz", - "integrity": "sha512-l1J2yZ7chQOzFJ5UY4jcbjvVqN5QCQkwGvBGvnDfjDirDCnfh7sFZzdIcZznDvD4WnxZ9JvH8iswEUrzFzh2JQ==", + "version": "0.2.0-prerelease.20230707073425", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230707073425.tgz", + "integrity": "sha512-81ITUuv887b99gHqcosuPuDr2TdJoJa0KW5VaV3rMYo6D6IRlZpUFsowp1nvQCVJr65WGpAEG0Fy+bSKopM2mw==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230706032213" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230706032213", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230706032213.tgz", - "integrity": "sha512-8ABCAOBrAMiRtjpYWznAmxxdWDPtokpxoCfRSLTXVXdeZX5qGlzsUGRXxgDORt89sQoy+dUYR/oB5hl2AbuumA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230707032150" } }, "node_modules/scratch-gui": { - "version": "2.0.45", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.45.tgz", - "integrity": "sha512-U8wWLS8LZ7yGgHcmTRBWBDLmhCOFti9cS3QEpKYWHaZ3PhMVvP6uHg29uJzOGcXsDUN0TyiqY14gutUk4VyibQ==", + "version": "2.0.49", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.49.tgz", + "integrity": "sha512-toQrqiZfkkprymd4qxC+jOStN2jhhcyi9/UrgN7bYulOA4J7+vPYN+L3tnCN1VEr9yHnS7etodUG7oPv+ZGH7w==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,14 +23578,14 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230706063438", - "scratch-l10n": "3.15.20230706032213", - "scratch-paint": "2.0.14", + "scratch-blocks": "0.2.0-prerelease.20230707073425", + "scratch-l10n": "3.15.20230707032150", + "scratch-paint": "2.0.15", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", - "scratch-vm": "1.5.82", + "scratch-vm": "1.5.83", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23952,28 +23934,10 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230706032213", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230706032213.tgz", - "integrity": "sha512-8ABCAOBrAMiRtjpYWznAmxxdWDPtokpxoCfRSLTXVXdeZX5qGlzsUGRXxgDORt89sQoy+dUYR/oB5hl2AbuumA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.14.tgz", - "integrity": "sha512-EBmvfxQ002LCGlZgCZFOMmo7TNFujWJzVoKOuJ3mA2QFD6rt3j5p8iXbaoqoRkKQI6h8o9aLxURS0h4eEzyjkQ==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.15.tgz", + "integrity": "sha512-e/t+TaMWp58hOLwC+FrNZ2bDVkqhDejFv4GOShUlGKB8RbnFmmJRGWg4dzftRhzrrGIewLU+LkAeZWwr3J1ryw==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24261,9 +24225,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.82", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.82.tgz", - "integrity": "sha512-G1eRxVKiqcXG64x2d9TH1j0WZLUc5rm4FM7F0pZPe6DOzKAKJiNlQt8d/IoLzoP+JkPhxIXz5QiOGD6F8WKUTQ==", + "version": "1.5.83", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.83.tgz", + "integrity": "sha512-9cECSaFL6HShP3O34rniNCOXwVpBkk5wl2hiSrKNgutnS8S14mceiJQjDH3wJzkeU+ZRw3otY1RtjQIm8FKEOQ==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 777579643..165c2b9f2 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.45", + "scratch-gui": "2.0.49", "scratch-l10n": "3.15.20230707032150", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 96718ffb5f9bb9569a4d16f5c7bb4f53b8e11200 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jul 2023 07:05:16 +0000 Subject: [PATCH 40/77] fix(deps): update dependency scratch-l10n to v3.15.20230709032152 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index d815c4ad0..00911249e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.49", - "scratch-l10n": "3.15.20230707032150", + "scratch-l10n": "3.15.20230709032152", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230707032150" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230707032150", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230707032150.tgz", + "integrity": "sha512-+CO4ZUmH//mg3Xft9P+VSJKcAgml5/Oofcgt1GqgY3EZKGMU9smAoHc/ReU/aI4eUYmaOkTxIyq3nZE5PhIG4g==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.49", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.49.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230707032150", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230707032150.tgz", + "integrity": "sha512-+CO4ZUmH//mg3Xft9P+VSJKcAgml5/Oofcgt1GqgY3EZKGMU9smAoHc/ReU/aI4eUYmaOkTxIyq3nZE5PhIG4g==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.15", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.15.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230707032150", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230707032150.tgz", - "integrity": "sha512-+CO4ZUmH//mg3Xft9P+VSJKcAgml5/Oofcgt1GqgY3EZKGMU9smAoHc/ReU/aI4eUYmaOkTxIyq3nZE5PhIG4g==", + "version": "3.15.20230709032152", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230709032152.tgz", + "integrity": "sha512-+KWu93IfSSc2m1TS+fiLD8V7juTDnJUQ/mWd6JYJ+RkvqhQpxlmX3md+8lh8oA3QDox8Cm4P1PueAjLBGEGlaA==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 165c2b9f2..7343d07d7 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.49", - "scratch-l10n": "3.15.20230707032150", + "scratch-l10n": "3.15.20230709032152", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From c2723d730bdb2654226c2ea3251f40580f223e7a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jul 2023 19:08:54 +0000 Subject: [PATCH 41/77] fix(deps): update dependency scratch-gui to v2.0.53 --- package-lock.json | 72 ++++++++++++----------------------------------- package.json | 2 +- 2 files changed, 19 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00911249e..5d1bb35bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.49", + "scratch-gui": "2.0.53", "scratch-l10n": "3.15.20230709032152", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230707073425", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230707073425.tgz", - "integrity": "sha512-81ITUuv887b99gHqcosuPuDr2TdJoJa0KW5VaV3rMYo6D6IRlZpUFsowp1nvQCVJr65WGpAEG0Fy+bSKopM2mw==", + "version": "0.2.0-prerelease.20230709073927", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230709073927.tgz", + "integrity": "sha512-ilxnYwwsm1qSQJVyKT6OXkVrz/YE+Yt0l+8gQdFJzHeCGTiccng7aenFDRzMQqPP1G1bokxUz24f+rmOa+Rgqg==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230707032150" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230707032150", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230707032150.tgz", - "integrity": "sha512-+CO4ZUmH//mg3Xft9P+VSJKcAgml5/Oofcgt1GqgY3EZKGMU9smAoHc/ReU/aI4eUYmaOkTxIyq3nZE5PhIG4g==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230709032152" } }, "node_modules/scratch-gui": { - "version": "2.0.49", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.49.tgz", - "integrity": "sha512-toQrqiZfkkprymd4qxC+jOStN2jhhcyi9/UrgN7bYulOA4J7+vPYN+L3tnCN1VEr9yHnS7etodUG7oPv+ZGH7w==", + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.53.tgz", + "integrity": "sha512-RLOFLgN05M2/f/twUk24BX5tDsPY3F7SOMmomcCkpMI82ye0e8Q7l0LpJVBQUdcjxxjj1CZfKjRjptfOaahRLQ==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,14 +23578,14 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230707073425", - "scratch-l10n": "3.15.20230707032150", - "scratch-paint": "2.0.15", + "scratch-blocks": "0.2.0-prerelease.20230709073927", + "scratch-l10n": "3.15.20230709032152", + "scratch-paint": "2.0.16", "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", - "scratch-vm": "1.5.83", + "scratch-vm": "1.5.84", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23952,28 +23934,10 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230707032150", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230707032150.tgz", - "integrity": "sha512-+CO4ZUmH//mg3Xft9P+VSJKcAgml5/Oofcgt1GqgY3EZKGMU9smAoHc/ReU/aI4eUYmaOkTxIyq3nZE5PhIG4g==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.15.tgz", - "integrity": "sha512-e/t+TaMWp58hOLwC+FrNZ2bDVkqhDejFv4GOShUlGKB8RbnFmmJRGWg4dzftRhzrrGIewLU+LkAeZWwr3J1ryw==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.16.tgz", + "integrity": "sha512-Z1qsFFLgoAqre54PQqP9bLM13/FgYg7kf5AUCKZyYT4g1adRJK5mEbUkpKvGwG/4LDiGxSUPDEc19IZIKr0BKA==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24261,9 +24225,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.83", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.83.tgz", - "integrity": "sha512-9cECSaFL6HShP3O34rniNCOXwVpBkk5wl2hiSrKNgutnS8S14mceiJQjDH3wJzkeU+ZRw3otY1RtjQIm8FKEOQ==", + "version": "1.5.84", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.84.tgz", + "integrity": "sha512-bxXUV89oHi511UYgaZM7/iwqoBfWIRmmebbeRgkiNwX6aEzrQU7eO7zZF73OZCshgVU9IqcdYrUzOrS2Wwi+8g==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 7343d07d7..01378cf07 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.49", + "scratch-gui": "2.0.53", "scratch-l10n": "3.15.20230709032152", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 3268232a2b301587d653116aa854c748981e1cbe Mon Sep 17 00:00:00 2001 From: tomlum Date: Mon, 10 Jul 2023 16:08:16 -0400 Subject: [PATCH 42/77] deletes comments and old files --- .../bad-username-splash.jsx | 4 - src/views/banned-splash/banned-splash.jsx | 213 ------------------ src/views/banned-splash/banned-splash.scss | 125 ---------- src/views/banned-splash/blocked-account.svg | 3 - 4 files changed, 345 deletions(-) delete mode 100644 src/views/banned-splash/banned-splash.jsx delete mode 100644 src/views/banned-splash/banned-splash.scss delete mode 100644 src/views/banned-splash/blocked-account.svg diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx index 8b9d99adb..170c9a499 100644 --- a/src/views/bad-username-splash/bad-username-splash.jsx +++ b/src/views/bad-username-splash/bad-username-splash.jsx @@ -1,6 +1,4 @@ const injectIntl = require('react-intl').injectIntl; -// const intlShape = require('react-intl').intlShape; -// const FormattedMessage = require('react-intl').FormattedMessage; const React = require('react'); const FormattedMessage = require('react-intl').FormattedMessage; import {connect} from 'react-redux'; @@ -159,8 +157,6 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { name="newUsername" placeholder={'Type your new username'} spellCheck={false} - // toolTip={this.state.focused === 'username' && !touched.username && - // this.props.intl.formatMessage({id: 'registration.usernameAdviceShort'})} validationClassName="validation-left validation-full-width-input" /* eslint-disable react/jsx-no-bind */ onChange={e => { diff --git a/src/views/banned-splash/banned-splash.jsx b/src/views/banned-splash/banned-splash.jsx deleted file mode 100644 index ba79354f7..000000000 --- a/src/views/banned-splash/banned-splash.jsx +++ /dev/null @@ -1,213 +0,0 @@ -/* eslint-disable */ -const injectIntl = require('react-intl').injectIntl; -// const intlShape = require('react-intl').intlShape; -// const FormattedMessage = require('react-intl').FormattedMessage; -const React = require('react'); -import {connect} from 'react-redux'; -import {selectBannedUser, selectHasFetchedSession} from '../../redux/session'; -const messageActions = require('../../redux/messages.js'); -const JoinFlowStep = require('../../components/join-flow/join-flow-step.jsx'); -const FormikInput = require('../../components/formik-forms/formik-input.jsx'); -import {Formik} from 'formik'; -const PropTypes = require('prop-types'); - -const Page = require('../../components/page/www/page.jsx'); -const render = require('../../lib/render.jsx'); -import bannedIcon from './blocked-account.svg'; - -require('../../components/extension-landing/extension-landing.scss'); -require('./banned-splash.scss'); - -const validateUsernameConfirm = (username, usernameConfirm) => { - if (!usernameConfirm) { - // return 'Username is required'; - } else if (username !== usernameConfirm) { - return "Usernames don't match"; - } -}; - -const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { - - React.useEffect(() => { - if (user && user.username && user.token){ - getAdminMessages(user.username, user.token); - } - }, [user]); - - if (hasSession && (!user || !user.banned)){ - window.location = '/'; - } - - if (user && user.banned){ - return (
-
-
-
- - -

Account Blocked

-
-

To recover access to your account, change your username.

-

Your scratch account {user && user.username} has been temporarily blocked because your usernamed appears to contain personal information.

-

This is a serious privacy issue. When you share information like this, it is visible to everyone on the internet, so please be careful what you share

-

When creating an username, please remember to avoid using last names, school names, or other private information in your username.

-
-
- - {({ - errors, - // handleSubmit, - // isSubmitting, - setFieldError, - setFieldTouched, - setFieldValue, - // touched, - validateField, - values - }) => { - return ( - Make sure the username you chose is aligned with Scratch's Community Guidelines} - innerClassName="change-username-inner" - outerClassName="change-username-outer" - title={'Change your Username'} - // waiting={isSubmitting} - // onSubmit={handleSubmit} - nextButton={'Change'} - > -
- validateUsername(newUsername)} - validationClassName="validation-left validation-full-width-input" - /* eslint-disable react/jsx-no-bind */ - onBlur={() => validateField('newUsername')} - onChange={e => { - setFieldValue('newUsername', e.target.value.substring(0, 30)); - setFieldTouched('newUsername'); - setFieldError('newUsername', null); - }} - // onFocus={() => this.handleFocused('username')} - /* eslint-enable react/jsx-no-bind */ - // onSetRef={this.handleSetUsernameRef} - /> - validateUsernameConfirm(values.newUsername, newUsernameConfirm)} - validationClassName="validation-left validation-full-width-input" - onBlur={() => { - validateField('newUsernameConfirm'); - }} - onChange={e => { - setFieldValue('newUsernameConfirm', e.target.value.substring(0, 30)); - setFieldTouched('newUsernameConfirm'); - setFieldError('newUsernameConfirm', null); - }} - /* eslint-enable react/jsx-no-bind */ - // onSetRef={this.handleSetUsernameRef} - /> -
-
); - }} -
-
-
-
-
-
- Here are your past admin notifications -
- {adminMessages.map(message => ( -
-
- {new Date(message.datetime_created).toDateString()} -
- {/* // eslint-disable-next-line react/no-danger */} -
-
- ))} -
-
- ); - } - return
; -}; - -BannedSplash.propTypes = { - user: PropTypes.shape({ - username: PropTypes.string, - banned: PropTypes.bool, - token: PropTypes.string - }), - hasSession: PropTypes.bool, - adminMessages: PropTypes.arrayOf(PropTypes.shape({ - id: PropTypes.number.isRequired, - datetimeCreated: PropTypes.string.isRequired, - message: PropTypes.string.isRequired - })), - getAdminMessages: PropTypes.func -}; - - -// LET SESSION MAKE BANNED BE A STRING THAT SAYS THE KIND OF BANNED -// THIS IS AN API CHANGE ON THE SESSION -const ConnectedBannedSplash = connect( - state => ({ - user: selectBannedUser(state), - hasSession: selectHasFetchedSession(state), - adminMessages: state.messages.messages && state.messages.messages.admin - }), - dispatch => ({ - getAdminMessages: (username, token) => { - dispatch(messageActions.getAdminMessages( - username, token, 0 - )); - } - }) -)(BannedSplash); - - -const WrappedBannedSplash = injectIntl(ConnectedBannedSplash); - -render(, document.getElementById('app'), - {messages: messageActions.messagesReducer}); diff --git a/src/views/banned-splash/banned-splash.scss b/src/views/banned-splash/banned-splash.scss deleted file mode 100644 index 9868892d8..000000000 --- a/src/views/banned-splash/banned-splash.scss +++ /dev/null @@ -1,125 +0,0 @@ -@import "../../colors"; -@import "../../frameless"; - -.validation-left { - transform: translate(-20.5rem, 0); -} - -@media #{$intermediate-and-smaller} { - .validation-full-width-input { - box-sizing: border-box; - transform: unset; - margin-bottom: .75rem; - max-width: 100%; - } -} - -.inline{ - display:inline; -} - -#banned-splash{ - display: flex; - flex-direction: column; - align-items: center; -} - -#force-account-rename{ - width: 100%; - display: flex; - justify-content: center; - - #force-account-rename-inner{ - max-width: 1094px; - display: flex; - flex-direction: row; - @media only screen and (max-width: 800px) { - flex-direction: column; - } - - text-align: left; - - input{ - box-sizing: border-box; - width: 100%; - } - } - background-color: #575E75; - .col{ - padding: 40px; - flex: 1; - } -} - - -#admin-message-list{ - display: inline-block; - padding: 25px; - max-width: 1094px; - - #admin-message-list-title{ - text-align: left; - } -} - -.admin-message{ - text-align: left; - .admin-message-date{ - color: #575E75; - font-size: 12px; - padding-bottom: 10px; - } - text-align: left; - border-radius: 8px; - padding: 16px; - background-color: #E5F0FF; - margin: 10px; -} - -#force-account-rename-text{ - h1, h3, p{ - color: white; - } -} - -.empty{ - text-align: left; - - .admin-message{ - margin: 10px; - } -} - -.banned-message-box{ - margin: 20px; - text-align: left; -} - -.join-flow-outer-content{ - background-color: white; - border-radius: 16px; - color: #575e75; - max-width: 468px; - min-height: auto !important; - @media only screen and (max-width: 800px) { - margin: auto; - } -} - -.banned-icon{ - margin-right: 10px; - padding-top: 10px; - margin-bottom: -3px; -} - -.modal-flush-bottom-button{ - background-color: #855CD6; -} -.modal-flush-bottom-button:hover{ - background-color: #855CD6; -} - -.join-flow-outer-content{ - border: solid 4px #818698; - border-radius: 21px; -} \ No newline at end of file diff --git a/src/views/banned-splash/blocked-account.svg b/src/views/banned-splash/blocked-account.svg deleted file mode 100644 index 897a34da9..000000000 --- a/src/views/banned-splash/blocked-account.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - From e47e80ee04398430f16c2735af4cf57774dca77b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 20:39:25 +0000 Subject: [PATCH 43/77] fix(deps): update dependency scratch-gui to v2.0.54 --- package-lock.json | 28 +++++++++++++++++++++++----- package.json | 2 +- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d1bb35bd..8bf6b6de7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.53", + "scratch-gui": "2.0.54", "scratch-l10n": "3.15.20230709032152", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.53", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.53.tgz", - "integrity": "sha512-RLOFLgN05M2/f/twUk24BX5tDsPY3F7SOMmomcCkpMI82ye0e8Q7l0LpJVBQUdcjxxjj1CZfKjRjptfOaahRLQ==", + "version": "2.0.54", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.54.tgz", + "integrity": "sha512-xoCGX36In36+y808x0oeLnH76JRwCO22ZaEZyt7jmW+V6OTW1cZMUl9m6kO3OEfjVu68PVBfBXzUGFl93i0fCg==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23584,7 +23584,7 @@ "scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", - "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", + "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", "scratch-vm": "1.5.84", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", @@ -23969,6 +23969,24 @@ "integrity": "sha512-DTt3GhOUDKhh4ONwIJW4lmhyotQmV2LjNlGK/J2hkwUcqcbKkCLAdJPtxQnxnlc7SR3f1CEXCyMmc7WLUsWbNA==", "dev": true }, + "node_modules/scratch-gui/node_modules/scratch-svg-renderer": { + "version": "0.2.0-prerelease.20230710144521", + "resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20230710144521.tgz", + "integrity": "sha512-T+jmJGZWeBEAtIsV+6WpAzglANRaUJVxQLIKoD68VhD142l6XBf5WwHJiJkK9vysp6H24zchwTZwq3R34NF14Q==", + "dev": true, + "dependencies": { + "base64-js": "1.2.1", + "base64-loader": "1.0.0", + "css-tree": "1.1.3", + "dompurify": "2.2.7", + "fastestsmallesttextencoderdecoder": "^1.0.22", + "minilog": "3.1.0", + "transformation-matrix": "1.15.0" + }, + "peerDependencies": { + "scratch-render-fonts": "^1.0.0-prerelease" + } + }, "node_modules/scratch-gui/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", diff --git a/package.json b/package.json index 01378cf07..c14cc4a84 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.53", + "scratch-gui": "2.0.54", "scratch-l10n": "3.15.20230709032152", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 352a5047923b617407f7f16d364cfb563eb39647 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 02:00:51 +0000 Subject: [PATCH 44/77] fix(deps): update dependency scratch-gui to v2.0.55 --- package-lock.json | 43 +++++++++++++------------------------------ package.json | 2 +- 2 files changed, 14 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8bf6b6de7..31d6504e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.54", + "scratch-gui": "2.0.55", "scratch-l10n": "3.15.20230709032152", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.54", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.54.tgz", - "integrity": "sha512-xoCGX36In36+y808x0oeLnH76JRwCO22ZaEZyt7jmW+V6OTW1cZMUl9m6kO3OEfjVu68PVBfBXzUGFl93i0fCg==", + "version": "2.0.55", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.55.tgz", + "integrity": "sha512-Jcb9CPckJCqbkmWR78rGUQRdfCqp1BRdnoBffsqL10sUyhRthbpo/9zeTZEfsR1t51XvofynWZ8J7qJeFeAqkA==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23581,7 +23581,7 @@ "scratch-blocks": "0.2.0-prerelease.20230709073927", "scratch-l10n": "3.15.20230709032152", "scratch-paint": "2.0.16", - "scratch-render": "0.1.0-prerelease.20230318150639", + "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", @@ -23969,24 +23969,6 @@ "integrity": "sha512-DTt3GhOUDKhh4ONwIJW4lmhyotQmV2LjNlGK/J2hkwUcqcbKkCLAdJPtxQnxnlc7SR3f1CEXCyMmc7WLUsWbNA==", "dev": true }, - "node_modules/scratch-gui/node_modules/scratch-svg-renderer": { - "version": "0.2.0-prerelease.20230710144521", - "resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20230710144521.tgz", - "integrity": "sha512-T+jmJGZWeBEAtIsV+6WpAzglANRaUJVxQLIKoD68VhD142l6XBf5WwHJiJkK9vysp6H24zchwTZwq3R34NF14Q==", - "dev": true, - "dependencies": { - "base64-js": "1.2.1", - "base64-loader": "1.0.0", - "css-tree": "1.1.3", - "dompurify": "2.2.7", - "fastestsmallesttextencoderdecoder": "^1.0.22", - "minilog": "3.1.0", - "transformation-matrix": "1.15.0" - }, - "peerDependencies": { - "scratch-render-fonts": "^1.0.0-prerelease" - } - }, "node_modules/scratch-gui/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -24082,9 +24064,9 @@ } }, "node_modules/scratch-render": { - "version": "0.1.0-prerelease.20230318150639", - "resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20230318150639.tgz", - "integrity": "sha512-NmetrU5Ubyik9T3g4L4pbyYYjTERQ2QxxtevgBmCGxIJgMQskmtImAsISC6Qko21YQWPQNG9X/BEJluhJG6CZA==", + "version": "0.1.0-prerelease.20230710194419", + "resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20230710194419.tgz", + "integrity": "sha512-dIJ2U8hWTdWs8QPUZnzZugChwJIS3KJnGBb+SA49/XswFb5RbGayegr8L67HDjOdkcFH1npI1tXiNcLFyHZY8A==", "dev": true, "dependencies": { "grapheme-breaker": "0.3.2", @@ -24094,7 +24076,7 @@ "minilog": "3.1.0", "raw-loader": "^0.5.1", "scratch-storage": "^1.0.0", - "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", + "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", "twgl.js": "4.4.0" }, "peerDependencies": { @@ -24205,13 +24187,14 @@ } }, "node_modules/scratch-svg-renderer": { - "version": "0.2.0-prerelease.20230224194137", - "resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20230224194137.tgz", - "integrity": "sha512-NhsWkc0ci5R7ZH9Z7j6crI69Oe9XtNlp4u+Q6bOoLicGHJBnNeDeD2/w2ySxiYnnhJI9KioByvAoOwxZnEA+0Q==", + "version": "0.2.0-prerelease.20230710144521", + "resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20230710144521.tgz", + "integrity": "sha512-T+jmJGZWeBEAtIsV+6WpAzglANRaUJVxQLIKoD68VhD142l6XBf5WwHJiJkK9vysp6H24zchwTZwq3R34NF14Q==", "dev": true, "dependencies": { "base64-js": "1.2.1", "base64-loader": "1.0.0", + "css-tree": "1.1.3", "dompurify": "2.2.7", "fastestsmallesttextencoderdecoder": "^1.0.22", "minilog": "3.1.0", diff --git a/package.json b/package.json index c14cc4a84..46c21bb4f 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.54", + "scratch-gui": "2.0.55", "scratch-l10n": "3.15.20230709032152", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From cd9938df6fb03346f0bb444a6d1116e808288c0c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 04:55:01 +0000 Subject: [PATCH 45/77] fix(deps): update dependency scratch-l10n to v3.15.20230711032212 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31d6504e0..72d8228e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.55", - "scratch-l10n": "3.15.20230709032152", + "scratch-l10n": "3.15.20230711032212", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230709032152" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230709032152", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230709032152.tgz", + "integrity": "sha512-+KWu93IfSSc2m1TS+fiLD8V7juTDnJUQ/mWd6JYJ+RkvqhQpxlmX3md+8lh8oA3QDox8Cm4P1PueAjLBGEGlaA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.55", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.55.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230709032152", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230709032152.tgz", + "integrity": "sha512-+KWu93IfSSc2m1TS+fiLD8V7juTDnJUQ/mWd6JYJ+RkvqhQpxlmX3md+8lh8oA3QDox8Cm4P1PueAjLBGEGlaA==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.16.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230709032152", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230709032152.tgz", - "integrity": "sha512-+KWu93IfSSc2m1TS+fiLD8V7juTDnJUQ/mWd6JYJ+RkvqhQpxlmX3md+8lh8oA3QDox8Cm4P1PueAjLBGEGlaA==", + "version": "3.15.20230711032212", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230711032212.tgz", + "integrity": "sha512-rPrIbsibmKWhtlDGNlocRW626ZDGfla1N09V6Uz0INRx7d7UmQ9MsHesqrEmebzo/BFZWkUdolxxJUl3mABi1g==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 46c21bb4f..1c62b55e6 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.55", - "scratch-l10n": "3.15.20230709032152", + "scratch-l10n": "3.15.20230711032212", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 144501fd9833fdb00e2750a2ac244976c7709eac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 16:50:06 +0000 Subject: [PATCH 46/77] fix(deps): update dependency scratch-gui to v2.0.59 --- package-lock.json | 72 ++++++++++++----------------------------------- package.json | 2 +- 2 files changed, 19 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index 72d8228e3..ab46ae4e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.55", + "scratch-gui": "2.0.59", "scratch-l10n": "3.15.20230711032212", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230709073927", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230709073927.tgz", - "integrity": "sha512-ilxnYwwsm1qSQJVyKT6OXkVrz/YE+Yt0l+8gQdFJzHeCGTiccng7aenFDRzMQqPP1G1bokxUz24f+rmOa+Rgqg==", + "version": "0.2.0-prerelease.20230711063109", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230711063109.tgz", + "integrity": "sha512-y6F31mf/nhl5cOJjofGVHx7auJMP95+AD374pCOkMoU3oIQaUZnOuvxOaNgokEM8lc/miAvtF2dzPLCvSd+v+g==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230709032152" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230709032152", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230709032152.tgz", - "integrity": "sha512-+KWu93IfSSc2m1TS+fiLD8V7juTDnJUQ/mWd6JYJ+RkvqhQpxlmX3md+8lh8oA3QDox8Cm4P1PueAjLBGEGlaA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230711032212" } }, "node_modules/scratch-gui": { - "version": "2.0.55", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.55.tgz", - "integrity": "sha512-Jcb9CPckJCqbkmWR78rGUQRdfCqp1BRdnoBffsqL10sUyhRthbpo/9zeTZEfsR1t51XvofynWZ8J7qJeFeAqkA==", + "version": "2.0.59", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.59.tgz", + "integrity": "sha512-U9Wm8YZMK5hdR5+++/a4/rXYESi/xcYxj0IOgQL/HcnDgDf7bVwqcJLatUD08gGcb91hjfvVcBkYFgykPwRmyA==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,14 +23578,14 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230709073927", - "scratch-l10n": "3.15.20230709032152", - "scratch-paint": "2.0.16", + "scratch-blocks": "0.2.0-prerelease.20230711063109", + "scratch-l10n": "3.15.20230711032212", + "scratch-paint": "2.0.17", "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", - "scratch-vm": "1.5.84", + "scratch-vm": "1.5.85", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23952,28 +23934,10 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230709032152", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230709032152.tgz", - "integrity": "sha512-+KWu93IfSSc2m1TS+fiLD8V7juTDnJUQ/mWd6JYJ+RkvqhQpxlmX3md+8lh8oA3QDox8Cm4P1PueAjLBGEGlaA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.16.tgz", - "integrity": "sha512-Z1qsFFLgoAqre54PQqP9bLM13/FgYg7kf5AUCKZyYT4g1adRJK5mEbUkpKvGwG/4LDiGxSUPDEc19IZIKr0BKA==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.17.tgz", + "integrity": "sha512-dDaOV6SwgUZb6lSpKHI+qpZcolwg0hPAPxsK1jqc5wcMF6XAOphCKaxTj/z79pZEz1sq0KkI+W1gANAUMTKmxA==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24262,9 +24226,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.84", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.84.tgz", - "integrity": "sha512-bxXUV89oHi511UYgaZM7/iwqoBfWIRmmebbeRgkiNwX6aEzrQU7eO7zZF73OZCshgVU9IqcdYrUzOrS2Wwi+8g==", + "version": "1.5.85", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.85.tgz", + "integrity": "sha512-mbRk05YtIn3gM/BWYwpy/q3eL/Se8rpYuG5ryhdikRfvxuLy8/iR/ltoI7jifsqDUgFaSKnNKVU65zLxn0yUEw==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 1c62b55e6..f50271d66 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.55", + "scratch-gui": "2.0.59", "scratch-l10n": "3.15.20230711032212", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 73da26aa5df81c8cc6c14768cdcea7155d981ee2 Mon Sep 17 00:00:00 2001 From: tomlum Date: Tue, 11 Jul 2023 12:52:03 -0400 Subject: [PATCH 47/77] fixes time comment --- src/views/splash/splash.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/splash/splash.jsx b/src/views/splash/splash.jsx index fcfbfa1ef..68a408b5b 100644 --- a/src/views/splash/splash.jsx +++ b/src/views/splash/splash.jsx @@ -17,7 +17,7 @@ const SCRATCH_WEEK_START_TIME = 1621224000000; // 2021-05-17 00:00:00 -- No end // const HOC_END_TIME = 1639353600000; // 2021-12-13 00:00:00 GMT in ms const HOC_START_TIME = 1668574800000; // 2022-11-16 00:00:00 GMT in ms -const HOC_END_TIME = 1670821200000; // 2022-12-16 00:00:00 GMT in ms +const HOC_END_TIME = 1670821200000; // 2022-12-12 00:00:00 GMT in ms const FEATURES_START_TIME = 1687305600000; // 2023-06-21 00:00:00 GMT in ms const FEATURES_END_TIME = 1688083200000; // 2023-06-30 00:00:00 GMT in ms From 2c7afbce084acd96896e7d8324654bd48d914cdb Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <7019101+cwillisf@users.noreply.github.com> Date: Fri, 16 Sep 2022 14:49:58 -0700 Subject: [PATCH 48/77] refactor: mark OS_ENUM as @enum{string} to reduce TS warnings --- src/lib/os-enum.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lib/os-enum.js b/src/lib/os-enum.js index 24d41c018..85037880d 100644 --- a/src/lib/os-enum.js +++ b/src/lib/os-enum.js @@ -1,3 +1,6 @@ +/** + * @enum {string} + */ const OS_ENUM = { WINDOWS: 'Windows', MACOS: 'macOS', From 48e62c4caffd263408d97074df48238733c4d9c5 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <7019101+cwillisf@users.noreply.github.com> Date: Mon, 10 Jul 2023 12:10:13 -0700 Subject: [PATCH 49/77] feat: link Scratch Link landing page from extension pages --- .../install-scratch-link.jsx | 109 +++++++++++------- src/l10n.json | 7 +- 2 files changed, 75 insertions(+), 41 deletions(-) diff --git a/src/components/extension-landing/install-scratch-link.jsx b/src/components/extension-landing/install-scratch-link.jsx index 507cdbeb7..71a9b2a51 100644 --- a/src/components/extension-landing/install-scratch-link.jsx +++ b/src/components/extension-landing/install-scratch-link.jsx @@ -17,52 +17,53 @@ const InstallScratchLink = ({

-
- - - - - + }-store-badge.svg`} + /> + + + + + + + +
+ - +
+

+ +

+
+ + + + + + ) + }} + /> +
diff --git a/src/l10n.json b/src/l10n.json index 4b6c25e6c..4778e4511 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -167,7 +167,12 @@ "installScratchLink.installHeaderTitle": "Install Scratch Link", "installScratchLink.downloadAndInstall": "Download and install Scratch Link.", - "installScratchLink.startScratchLink": "Start Scratch Link and make sure it is running. It should appear in your toolbar.", + "installScratchLink.startScratchLink.macOS": "Start Scratch Link and make sure it is running. It should appear in your menu bar.", + "installScratchLink.startScratchLink.Windows": "Start Scratch Link and make sure it is running. It should appear in your notification area (system tray).", + "installScratchLink.startScratchLink2.macOS": "If it does not appear, run Scratch Link from your Applications folder.", + "installScratchLink.startScratchLink2.Windows": "If it does not appear, run Scratch Link from your Start menu.", + "installScratchLink.learnMore.bodyText": "To learn more about Scratch Link, click {linkText}.", + "installScratchLink.learnMore.linkText": "here", "parents.FaqAgeRangeA": "While Scratch is primarily designed for 8 to 16 year olds, it is also used by people of all ages, including younger children with their parents.", "parents.FaqAgeRangeQ": "What is the age range for Scratch?", From beb810933adc6ad08de8932f6a1ec8240ea33cd1 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <7019101+cwillisf@users.noreply.github.com> Date: Tue, 11 Jul 2023 11:33:12 -0700 Subject: [PATCH 50/77] feat: add Scratch Link 1.4 link for EV3 troubleshooting Plus lots of minor style changes to make it fit well. --- .../install-scratch-link.jsx | 40 ++++++++++++------- src/components/steps/steps.scss | 7 ++-- src/l10n.json | 2 + src/views/download/scratch-link/download.jsx | 1 + src/views/ev3/ev3.jsx | 1 + 5 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/components/extension-landing/install-scratch-link.jsx b/src/components/extension-landing/install-scratch-link.jsx index 71a9b2a51..6f7f3a03f 100644 --- a/src/components/extension-landing/install-scratch-link.jsx +++ b/src/components/extension-landing/install-scratch-link.jsx @@ -11,7 +11,9 @@ require('./extension-landing.scss'); // Assumes this will only be called with an OS that needs Scratch Link const InstallScratchLink = ({ - currentOS + currentOS, + hideScratchLink, + showEv3 }) => (
@@ -65,7 +67,7 @@ const InstallScratchLink = ({ }`} /> -
+ -
-

- -

+ +

- - + {!hideScratchLink && - - + } + {showEv3 && + +
+
} + }
); InstallScratchLink.propTypes = { - currentOS: PropTypes.string + currentOS: PropTypes.string.isRequired, + hideScratchLink: PropTypes.bool, + showEv3: PropTypes.bool }; module.exports = InstallScratchLink; diff --git a/src/components/steps/steps.scss b/src/components/steps/steps.scss index 0fdecd159..e6d34807f 100644 --- a/src/components/steps/steps.scss +++ b/src/components/steps/steps.scss @@ -48,11 +48,12 @@ box-sizing: border-box; .step-image { - height: 10rem; + max-height: 10rem; img { - width: auto; - height: 100%; + max-height: 10rem; + width: 100%; + height: auto; } } } diff --git a/src/l10n.json b/src/l10n.json index 4778e4511..004511f85 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -173,6 +173,8 @@ "installScratchLink.startScratchLink2.Windows": "If it does not appear, run Scratch Link from your Start menu.", "installScratchLink.learnMore.bodyText": "To learn more about Scratch Link, click {linkText}.", "installScratchLink.learnMore.linkText": "here", + "installScratchLink.ev3Workaround": "If you have issues connecting EV3 with Scratch Link 2.0, please try Scratch Link 1.4.", + "installScratchLink.downloadScratchLink1.4": "Direct download Scratch Link 1.4", "parents.FaqAgeRangeA": "While Scratch is primarily designed for 8 to 16 year olds, it is also used by people of all ages, including younger children with their parents.", "parents.FaqAgeRangeQ": "What is the age range for Scratch?", diff --git a/src/views/download/scratch-link/download.jsx b/src/views/download/scratch-link/download.jsx index ac0a88402..94e7e4c0e 100644 --- a/src/views/download/scratch-link/download.jsx +++ b/src/views/download/scratch-link/download.jsx @@ -57,6 +57,7 @@ const ScratchLink = ({intl}) => { /> {(isDownloaded(os)) && ( )} diff --git a/src/views/ev3/ev3.jsx b/src/views/ev3/ev3.jsx index 562715e28..480a69316 100644 --- a/src/views/ev3/ev3.jsx +++ b/src/views/ev3/ev3.jsx @@ -73,6 +73,7 @@ class EV3 extends ExtensionLanding { /> {(isDownloaded(this.state.OS)) && ( )} From 9f8de39bb0c33ae2102ec58f406ad3e833820e55 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 22:56:37 +0000 Subject: [PATCH 51/77] fix(deps): update dependency scratch-gui to v2.0.60 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index ab46ae4e0..f958ab82a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.59", + "scratch-gui": "2.0.60", "scratch-l10n": "3.15.20230711032212", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.59", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.59.tgz", - "integrity": "sha512-U9Wm8YZMK5hdR5+++/a4/rXYESi/xcYxj0IOgQL/HcnDgDf7bVwqcJLatUD08gGcb91hjfvVcBkYFgykPwRmyA==", + "version": "2.0.60", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.60.tgz", + "integrity": "sha512-52Iwqo+9mHAFhMVvBCGbKn5DF4rIKFq/ouTM7EE+R2fAu2gR0BN+lShCdTucOkKQ1WdpVSmVk1lF01xR36eyRQ==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23585,7 +23585,7 @@ "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", - "scratch-vm": "1.5.85", + "scratch-vm": "1.5.86", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -24226,9 +24226,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.85", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.85.tgz", - "integrity": "sha512-mbRk05YtIn3gM/BWYwpy/q3eL/Se8rpYuG5ryhdikRfvxuLy8/iR/ltoI7jifsqDUgFaSKnNKVU65zLxn0yUEw==", + "version": "1.5.86", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.86.tgz", + "integrity": "sha512-/hct5z04r79mpGm8grSNxqoS/j+9m1d6Cb6bbAekg3xjmsr1eocaLawzLGU/p3hyUtm2fs3NOt8zxNoQvRqCBg==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index f50271d66..44e1899af 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.59", + "scratch-gui": "2.0.60", "scratch-l10n": "3.15.20230711032212", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From dae1956b20f727c48093a7f86b5e6aad8c113e1c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 04:38:03 +0000 Subject: [PATCH 52/77] fix(deps): update dependency scratch-l10n to v3.15.20230712032154 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f958ab82a..8b552cb1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.60", - "scratch-l10n": "3.15.20230711032212", + "scratch-l10n": "3.15.20230712032154", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230711032212" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230711032212", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230711032212.tgz", + "integrity": "sha512-rPrIbsibmKWhtlDGNlocRW626ZDGfla1N09V6Uz0INRx7d7UmQ9MsHesqrEmebzo/BFZWkUdolxxJUl3mABi1g==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.60", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.60.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230711032212", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230711032212.tgz", + "integrity": "sha512-rPrIbsibmKWhtlDGNlocRW626ZDGfla1N09V6Uz0INRx7d7UmQ9MsHesqrEmebzo/BFZWkUdolxxJUl3mABi1g==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.17.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230711032212", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230711032212.tgz", - "integrity": "sha512-rPrIbsibmKWhtlDGNlocRW626ZDGfla1N09V6Uz0INRx7d7UmQ9MsHesqrEmebzo/BFZWkUdolxxJUl3mABi1g==", + "version": "3.15.20230712032154", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230712032154.tgz", + "integrity": "sha512-uvI56Byt+RRWLlCGNtBnuNfKCeuspqRFbk8JOVED1Sd3ANAdcSbtXPHG5M4BchZQERutisl2KDSfZMQnaSLHzA==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 44e1899af..563a7447e 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.60", - "scratch-l10n": "3.15.20230711032212", + "scratch-l10n": "3.15.20230712032154", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 56177ab7a2bc4081a32aa624d3a0ba5d74b47cac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:00:08 +0000 Subject: [PATCH 53/77] fix(deps): update dependency scratch-gui to v2.0.63 --- package-lock.json | 64 +++++++++++------------------------------------ package.json | 2 +- 2 files changed, 15 insertions(+), 51 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8b552cb1d..fa0aa6ae6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.60", + "scratch-gui": "2.0.63", "scratch-l10n": "3.15.20230712032154", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230711063109", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230711063109.tgz", - "integrity": "sha512-y6F31mf/nhl5cOJjofGVHx7auJMP95+AD374pCOkMoU3oIQaUZnOuvxOaNgokEM8lc/miAvtF2dzPLCvSd+v+g==", + "version": "0.2.0-prerelease.20230712084522", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230712084522.tgz", + "integrity": "sha512-4HN+a5gMt2hkF1edFbSAj8ryjJlgv4XqV+vY4jc8IUlLzueazUkniVaUNp6kzon2dmzoXfclpVMHdJGHxr+lZA==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230711032212" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230711032212", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230711032212.tgz", - "integrity": "sha512-rPrIbsibmKWhtlDGNlocRW626ZDGfla1N09V6Uz0INRx7d7UmQ9MsHesqrEmebzo/BFZWkUdolxxJUl3mABi1g==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230712032154" } }, "node_modules/scratch-gui": { - "version": "2.0.60", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.60.tgz", - "integrity": "sha512-52Iwqo+9mHAFhMVvBCGbKn5DF4rIKFq/ouTM7EE+R2fAu2gR0BN+lShCdTucOkKQ1WdpVSmVk1lF01xR36eyRQ==", + "version": "2.0.63", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.63.tgz", + "integrity": "sha512-hcI9Ia0q6kPDg8x+qjjiGo0bSR4DPUMaA65T9sLu/fOe8E7HtDBsp6epPLAp7ZAs9YR6F4YCSkWyzFJe/zv1/Q==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,9 +23578,9 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230711063109", - "scratch-l10n": "3.15.20230711032212", - "scratch-paint": "2.0.17", + "scratch-blocks": "0.2.0-prerelease.20230712084522", + "scratch-l10n": "3.15.20230712032154", + "scratch-paint": "2.0.18", "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", @@ -23952,28 +23934,10 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230711032212", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230711032212.tgz", - "integrity": "sha512-rPrIbsibmKWhtlDGNlocRW626ZDGfla1N09V6Uz0INRx7d7UmQ9MsHesqrEmebzo/BFZWkUdolxxJUl3mABi1g==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.17.tgz", - "integrity": "sha512-dDaOV6SwgUZb6lSpKHI+qpZcolwg0hPAPxsK1jqc5wcMF6XAOphCKaxTj/z79pZEz1sq0KkI+W1gANAUMTKmxA==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.18.tgz", + "integrity": "sha512-EGG/xW6/H+CX/MGevm+R0j0kZUe5IRcL1HbjvMhzbelnwm2Re30ThT2yQBrI/SCyraUhpr297Jn33npzejN6cw==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", diff --git a/package.json b/package.json index 563a7447e..5471cd968 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.60", + "scratch-gui": "2.0.63", "scratch-l10n": "3.15.20230712032154", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From bb9d1bf73ab126a819ec49d6659cdbfb5e3d7691 Mon Sep 17 00:00:00 2001 From: mrsrec Date: Wed, 12 Jul 2023 12:08:19 -0400 Subject: [PATCH 54/77] Update developers.jsx --- src/views/developers/developers.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/developers/developers.jsx b/src/views/developers/developers.jsx index 6e753931e..ef20d9c7d 100644 --- a/src/views/developers/developers.jsx +++ b/src/views/developers/developers.jsx @@ -88,7 +88,7 @@ const Developers = () => ( ), githubLink: ( - + @@ -115,7 +115,7 @@ const Developers = () => ( id="developers.wwwIntro" values={{ wwwIntroLink: ( - + GitHub ) @@ -143,7 +143,7 @@ const Developers = () => ( ), githubLink: ( - + GitHub ) @@ -361,7 +361,7 @@ const Developers = () => ( id="developers.faqCollabBody" values={{ githubLink: ( - GitHub + GitHub ), contactUsLink: ( From d8251cf60685bfe1993a209d26a6e9298e24f008 Mon Sep 17 00:00:00 2001 From: mrsrec Date: Wed, 12 Jul 2023 12:11:36 -0400 Subject: [PATCH 55/77] Update l10n.json --- src/views/download/scratch2/l10n.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/download/scratch2/l10n.json b/src/views/download/scratch2/l10n.json index e51b42bb5..6ac5925d6 100644 --- a/src/views/download/scratch2/l10n.json +++ b/src/views/download/scratch2/l10n.json @@ -22,7 +22,7 @@ "download.otherVersionsTitle": "Other Versions of Scratch", "download.otherVersionsOlder": "If you have an older computer, or cannot install the Scratch 2.0 offline editor, you can try installing Scratch 1.4.", "download.otherVersionsOlderHTML": "If you have an older computer, or cannot install the Scratch 2.0 offline editor, you can try installing Scratch 1.4.", - "download.otherVersionsAdmin": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download here.", + "download.otherVersionsAdmin": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download here.", "download.otherVersionsAdminHTML": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download here.", "download.knownIssuesTitle": "Known issues", "download.knownIssuesOne": "If your offline editor is crashing directly after Scratch is opened, install the Scratch 2 offline editor again (see step 2 above). This issue is due to a bug introduced in Adobe AIR version 14 (released April 2014).", From 48a504631068abc9f2e5bc0767c43bc6143a8247 Mon Sep 17 00:00:00 2001 From: mrsrec Date: Wed, 12 Jul 2023 12:12:18 -0400 Subject: [PATCH 56/77] Update about.jsx --- src/views/about/about.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/about/about.jsx b/src/views/about/about.jsx index 459d50651..fa8b7719d 100644 --- a/src/views/about/about.jsx +++ b/src/views/about/about.jsx @@ -89,7 +89,7 @@ const About = injectIntl(({intl}) => ( languageCount: 70, translationLink: ( From 9e2c5b27c25d1d2e4844a646dcde028bd581e8c7 Mon Sep 17 00:00:00 2001 From: mrsrec Date: Wed, 12 Jul 2023 12:12:55 -0400 Subject: [PATCH 57/77] Update download.jsx --- src/views/download/scratch2/download.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/download/scratch2/download.jsx b/src/views/download/scratch2/download.jsx index e4b633d26..c7a60cda7 100644 --- a/src/views/download/scratch2/download.jsx +++ b/src/views/download/scratch2/download.jsx @@ -216,7 +216,7 @@ class Download extends React.Component { />

{chunks}}} + values={{a: chunks => {chunks}}} />

From c276e006ff3c3a7b767b02dbbdf170147ad843bd Mon Sep 17 00:00:00 2001 From: tomlum Date: Wed, 12 Jul 2023 17:01:45 -0400 Subject: [PATCH 58/77] updates design and fixes redux issues --- src/redux/session.js | 1 + src/views/bad-username-splash/bad-username-splash.jsx | 5 ++++- src/views/bad-username-splash/bad-username-splash.scss | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/redux/session.js b/src/redux/session.js index f7193d808..2986d19cc 100644 --- a/src/redux/session.js +++ b/src/redux/session.js @@ -158,6 +158,7 @@ module.exports.selectIsLoggedIn = state => !!get(state, ['session', 'session', ' module.exports.selectUsername = state => get(state, ['session', 'session', 'user', 'username'], null); module.exports.selectToken = state => get(state, ['session', 'session', 'user', 'token'], null); module.exports.selectIsAdmin = state => get(state, ['session', 'session', 'permissions', 'admin'], false); +module.exports.selectBannedUser = state => get(state, ['session', 'session', 'user'], false); module.exports.selectIsSocial = state => get(state, ['session', 'session', 'permissions', 'social'], false); module.exports.selectIsEducator = state => get(state, ['session', 'session', 'permissions', 'educator'], false); module.exports.selectProjectCommentsGloballyEnabled = state => diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx index 170c9a499..98c568e2b 100644 --- a/src/views/bad-username-splash/bad-username-splash.jsx +++ b/src/views/bad-username-splash/bad-username-splash.jsx @@ -148,10 +148,12 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { nextButton={} >
+ Create a new username { setFieldValue('canValidate', true).then(validateForm()); }} /> + Password Date: Wed, 12 Jul 2023 15:16:18 -0700 Subject: [PATCH 59/77] fix: move EV3 troubleshooting into troubleshooting section --- .../extension-landing/extension-landing.scss | 5 ++++ .../extension-troubleshooting.jsx | 2 +- .../install-scratch-link.jsx | 30 ++++++++++--------- src/l10n.json | 6 ++-- src/views/download/scratch-link/download.jsx | 7 +++++ src/views/ev3/ev3.jsx | 6 ++++ 6 files changed, 39 insertions(+), 17 deletions(-) diff --git a/src/components/extension-landing/extension-landing.scss b/src/components/extension-landing/extension-landing.scss index 6d569f0d5..7d2f45d4f 100644 --- a/src/components/extension-landing/extension-landing.scss +++ b/src/components/extension-landing/extension-landing.scss @@ -7,6 +7,11 @@ padding: 0; } +html { + // Adjust target position to compensate for the floating top content + scroll-padding-top: calc(50px + 5rem); // nav bar + OS chooser +} + .extension-landing { &>div { padding: 4rem 0; diff --git a/src/components/extension-landing/extension-troubleshooting.jsx b/src/components/extension-landing/extension-troubleshooting.jsx index 7ca3df87c..7e168f1fa 100644 --- a/src/components/extension-landing/extension-troubleshooting.jsx +++ b/src/components/extension-landing/extension-troubleshooting.jsx @@ -13,7 +13,7 @@ const ExtensionTroubleshooting = props => { }; return ( -

diff --git a/src/components/extension-landing/install-scratch-link.jsx b/src/components/extension-landing/install-scratch-link.jsx index 6f7f3a03f..9c6418b6a 100644 --- a/src/components/extension-landing/install-scratch-link.jsx +++ b/src/components/extension-landing/install-scratch-link.jsx @@ -12,8 +12,7 @@ require('./extension-landing.scss'); // Assumes this will only be called with an OS that needs Scratch Link const InstallScratchLink = ({ currentOS, - hideScratchLink, - showEv3 + hideScratchLink }) => (
@@ -82,7 +81,7 @@ const InstallScratchLink = ({ }`} />

- {(showEv3 || !hideScratchLink) && @@ -102,15 +101,19 @@ const InstallScratchLink = ({ }} /> } - {showEv3 && - -
-
} -
} + + + ) + }} + /> + +
@@ -118,8 +121,7 @@ const InstallScratchLink = ({ InstallScratchLink.propTypes = { currentOS: PropTypes.string.isRequired, - hideScratchLink: PropTypes.bool, - showEv3: PropTypes.bool + hideScratchLink: PropTypes.bool }; module.exports = InstallScratchLink; diff --git a/src/l10n.json b/src/l10n.json index 004511f85..fb7ea7fb2 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -173,8 +173,8 @@ "installScratchLink.startScratchLink2.Windows": "If it does not appear, run Scratch Link from your Start menu.", "installScratchLink.learnMore.bodyText": "To learn more about Scratch Link, click {linkText}.", "installScratchLink.learnMore.linkText": "here", - "installScratchLink.ev3Workaround": "If you have issues connecting EV3 with Scratch Link 2.0, please try Scratch Link 1.4.", - "installScratchLink.downloadScratchLink1.4": "Direct download Scratch Link 1.4", + "installScratchLink.ifYouHaveTrouble.bodyText": "If you have trouble, see the {linkText} for tips.", + "installScratchLink.ifYouHaveTrouble.linkText": "Troubleshooting section", "parents.FaqAgeRangeA": "While Scratch is primarily designed for 8 to 16 year olds, it is also used by people of all ages, including younger children with their parents.", "parents.FaqAgeRangeQ": "What is the age range for Scratch?", @@ -451,6 +451,8 @@ "extensions.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link", "extensions.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.", "extensions.checkOsVersionText2": "If you are using macOS 12, please update to macOS 12.3 or newer. Earlier versions of macOS 12 do not work correctly with Scratch Link.", + "extensions.ev3TryScratchLink1.4": "If you have issues connecting EV3 with Scratch Link 2.0, please try Scratch Link 1.4.", + "extensions.downloadScratchLink1.4": "Download Scratch Link 1.4", "extensions.winOSVersionLinkText": "Windows", "extensions.macOSVersionLinkText": "macOS", "extensions.closeScratchCopiesTitle": "Close other copies of Scratch", diff --git a/src/views/download/scratch-link/download.jsx b/src/views/download/scratch-link/download.jsx index 94e7e4c0e..e85de5593 100644 --- a/src/views/download/scratch-link/download.jsx +++ b/src/views/download/scratch-link/download.jsx @@ -16,6 +16,7 @@ import ExtensionSection from '../../../components/extension-landing/extension-se import ExtensionTroubleshooting from '../../../components/extension-landing/extension-troubleshooting.jsx'; import InstallScratchLink from '../../../components/extension-landing/install-scratch-link.jsx'; +import OS_ENUM from '../../../lib/os-enum.js'; import {isDownloaded} from '../../../components/install-scratch/install-util.js'; import '../../../components/extension-landing/extension-landing.scss'; @@ -135,6 +136,12 @@ const ScratchLink = ({intl}) => { />

+

+

)}

diff --git a/src/views/ev3/ev3.jsx b/src/views/ev3/ev3.jsx index 480a69316..dc44c1084 100644 --- a/src/views/ev3/ev3.jsx +++ b/src/views/ev3/ev3.jsx @@ -288,6 +288,12 @@ class EV3 extends ExtensionLanding { > {isDownloaded(this.state.OS) && ( +

+

Date: Wed, 12 Jul 2023 15:16:18 -0700 Subject: [PATCH 60/77] fix: update browser compatibility text for Scratch Link 2.0 --- src/components/extension-landing/extension-troubleshooting.jsx | 2 +- src/l10n.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/extension-landing/extension-troubleshooting.jsx b/src/components/extension-landing/extension-troubleshooting.jsx index 7e168f1fa..c06ee17c2 100644 --- a/src/components/extension-landing/extension-troubleshooting.jsx +++ b/src/components/extension-landing/extension-troubleshooting.jsx @@ -22,7 +22,7 @@ const ExtensionTroubleshooting = props => { values={sharedValues} />

{props.children} diff --git a/src/l10n.json b/src/l10n.json index fb7ea7fb2..b37f402cf 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -447,7 +447,7 @@ "extensions.troubleshootingTitle": "Troubleshooting", "extensions.browserCompatibilityTitle": "Make sure your browser is compatible with Scratch Link", - "extensions.browserCompatibilityText": "Scratch Link 1.4 is not compatible with Safari. If you use macOS, please use another supported browser, such as Chrome or Firefox.", + "extensions.browserCompatibilityText2": "Scratch Link 1.4 is not compatible with Safari. If you use Safari, please upgrade to Scratch Link 2.0.", "extensions.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link", "extensions.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.", "extensions.checkOsVersionText2": "If you are using macOS 12, please update to macOS 12.3 or newer. Earlier versions of macOS 12 do not work correctly with Scratch Link.", From 4d73900c779930f98f8bf032dd8ff27404e67fd7 Mon Sep 17 00:00:00 2001 From: tomlum Date: Thu, 13 Jul 2023 10:11:55 -0400 Subject: [PATCH 61/77] far lint fixes --- src/redux/session.js | 4 ++-- .../bad-username-splash.jsx | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/redux/session.js b/src/redux/session.js index 2986d19cc..48c85acb3 100644 --- a/src/redux/session.js +++ b/src/redux/session.js @@ -86,7 +86,7 @@ const handleSessionResponse = (dispatch, body) => { body.user.banned && banGoodListPaths.every(goodPath => window.location.pathname.indexOf(goodPath) === -1) ) { - if(body.user.banned_status === 'far_banned'){ + if (body.user.banned_status === 'far_banned'){ window.location = '/accounts/bad-username/'; } else { window.location = '/accounts/banned-response/'; @@ -158,7 +158,7 @@ module.exports.selectIsLoggedIn = state => !!get(state, ['session', 'session', ' module.exports.selectUsername = state => get(state, ['session', 'session', 'user', 'username'], null); module.exports.selectToken = state => get(state, ['session', 'session', 'user', 'token'], null); module.exports.selectIsAdmin = state => get(state, ['session', 'session', 'permissions', 'admin'], false); -module.exports.selectBannedUser = state => get(state, ['session', 'session', 'user'], false); +module.exports.selectUser = state => get(state, ['session', 'session', 'user'], false); module.exports.selectIsSocial = state => get(state, ['session', 'session', 'permissions', 'social'], false); module.exports.selectIsEducator = state => get(state, ['session', 'session', 'permissions', 'educator'], false); module.exports.selectProjectCommentsGloballyEnabled = state => diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx index 98c568e2b..f490d56c4 100644 --- a/src/views/bad-username-splash/bad-username-splash.jsx +++ b/src/views/bad-username-splash/bad-username-splash.jsx @@ -2,7 +2,7 @@ const injectIntl = require('react-intl').injectIntl; const React = require('react'); const FormattedMessage = require('react-intl').FormattedMessage; import {connect} from 'react-redux'; -import {selectBannedUser, selectHasFetchedSession} from '../../redux/session'; +import {selectUser, selectHasFetchedSession} from '../../redux/session'; const messageActions = require('../../redux/messages.js'); const JoinFlowStep = require('../../components/join-flow/join-flow-step.jsx'); const FormikInput = require('../../components/formik-forms/formik-input.jsx'); @@ -105,7 +105,12 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => {

)}} + values={{ + communityGuidelinesLink: ( + + + ) + }} />

) } @@ -138,7 +143,13 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { )}} + values={{ + communityGuidelinesLink: ( + + + + ) + }} />} innerClassName="change-username-inner" outerClassName="change-username-outer" @@ -253,7 +264,7 @@ BannedSplash.propTypes = { const ConnectedBannedSplash = connect( state => ({ - user: selectBannedUser(state), + user: selectUser(state), hasSession: selectHasFetchedSession(state), adminMessages: state.messages.messages && state.messages.messages.admin && From d21ebc5c5697e141aef3a0bf4ea21b66885bd25a Mon Sep 17 00:00:00 2001 From: tomlum Date: Thu, 13 Jul 2023 10:34:42 -0400 Subject: [PATCH 62/77] indent fix --- src/views/bad-username-splash/bad-username-splash.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx index f490d56c4..37c89b9a2 100644 --- a/src/views/bad-username-splash/bad-username-splash.jsx +++ b/src/views/bad-username-splash/bad-username-splash.jsx @@ -107,9 +107,10 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { id="renameAccount.rememberToFollow" values={{ communityGuidelinesLink: ( - - - ) + + + + ) }} />

) From dc96eb1c60746b8cf117d74ec5d95b6c956bd615 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 14:40:19 +0000 Subject: [PATCH 63/77] fix(deps): update dependency scratch-gui to v2.0.65 --- package-lock.json | 56 ++++++++++++++++++++++++++++++++++++++--------- package.json | 2 +- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index fa0aa6ae6..bbbd35116 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.63", + "scratch-gui": "2.0.65", "scratch-l10n": "3.15.20230712032154", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,21 +23509,39 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230712084522", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230712084522.tgz", - "integrity": "sha512-4HN+a5gMt2hkF1edFbSAj8ryjJlgv4XqV+vY4jc8IUlLzueazUkniVaUNp6kzon2dmzoXfclpVMHdJGHxr+lZA==", + "version": "0.2.0-prerelease.20230713071047", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230713071047.tgz", + "integrity": "sha512-sr6xJkayY7TseM5pQtuPdnGuRKqeuwetYo1xFUB+iZGBKH1MRd5PQb6xbiTzKU1PvgUh7KfrJEtSnlvqm3niLA==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230712032154" + "scratch-l10n": "3.15.20230713032224" + } + }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230713032224", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", + "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" } }, "node_modules/scratch-gui": { - "version": "2.0.63", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.63.tgz", - "integrity": "sha512-hcI9Ia0q6kPDg8x+qjjiGo0bSR4DPUMaA65T9sLu/fOe8E7HtDBsp6epPLAp7ZAs9YR6F4YCSkWyzFJe/zv1/Q==", + "version": "2.0.65", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.65.tgz", + "integrity": "sha512-JViNeQBBwZEre3lSCedleTIvGcIanUnIdl5DkNp7BXeMf5Dvp/tkrW6uxYkjZwGc8FB3RntT+e4eOIbVSUNgLw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23578,8 +23596,8 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230712084522", - "scratch-l10n": "3.15.20230712032154", + "scratch-blocks": "0.2.0-prerelease.20230713071047", + "scratch-l10n": "3.15.20230713032224", "scratch-paint": "2.0.18", "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230713032224", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", + "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.18.tgz", diff --git a/package.json b/package.json index 5471cd968..3c239ae53 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.63", + "scratch-gui": "2.0.65", "scratch-l10n": "3.15.20230712032154", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 0749e0a096cf06846cc0878fcd977a00bae4ebb4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 16:37:39 +0000 Subject: [PATCH 64/77] fix(deps): update dependency scratch-l10n to v3.15.20230713032224 --- package-lock.json | 44 ++++---------------------------------------- package.json | 2 +- 2 files changed, 5 insertions(+), 41 deletions(-) diff --git a/package-lock.json b/package-lock.json index bbbd35116..ca48d7dfc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.65", - "scratch-l10n": "3.15.20230712032154", + "scratch-l10n": "3.15.20230713032224", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,24 +23520,6 @@ "scratch-l10n": "3.15.20230713032224" } }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230713032224", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", - "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui": { "version": "2.0.65", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.65.tgz", @@ -23952,24 +23934,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230713032224", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", - "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.18.tgz", @@ -24059,9 +24023,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230712032154", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230712032154.tgz", - "integrity": "sha512-uvI56Byt+RRWLlCGNtBnuNfKCeuspqRFbk8JOVED1Sd3ANAdcSbtXPHG5M4BchZQERutisl2KDSfZMQnaSLHzA==", + "version": "3.15.20230713032224", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", + "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 3c239ae53..3b55b0e82 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.65", - "scratch-l10n": "3.15.20230712032154", + "scratch-l10n": "3.15.20230713032224", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 9f679cf124bc1a20981bc4cdf36438f641c4a89d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 22:53:23 +0000 Subject: [PATCH 65/77] fix(deps): update dependency scratch-gui to v2.0.67 --- package-lock.json | 24 ++++++++++++------------ package.json | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca48d7dfc..e9c8f541c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.65", + "scratch-gui": "2.0.67", "scratch-l10n": "3.15.20230713032224", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.65", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.65.tgz", - "integrity": "sha512-JViNeQBBwZEre3lSCedleTIvGcIanUnIdl5DkNp7BXeMf5Dvp/tkrW6uxYkjZwGc8FB3RntT+e4eOIbVSUNgLw==", + "version": "2.0.67", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.67.tgz", + "integrity": "sha512-TCOOHzVpQM2hJdHq2EIqNZuECpi8Y7pnXlaHQ4rfTTOoxxvkfKrdRVBnlNHpR0bJP2w1/SFMoYR59NJVo1TC2g==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23580,12 +23580,12 @@ "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230713071047", "scratch-l10n": "3.15.20230713032224", - "scratch-paint": "2.0.18", + "scratch-paint": "2.0.19", "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", - "scratch-vm": "1.5.86", + "scratch-vm": "1.5.88", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23935,9 +23935,9 @@ } }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.18.tgz", - "integrity": "sha512-EGG/xW6/H+CX/MGevm+R0j0kZUe5IRcL1HbjvMhzbelnwm2Re30ThT2yQBrI/SCyraUhpr297Jn33npzejN6cw==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.19.tgz", + "integrity": "sha512-96lTqJYZqqaT2mx7/HP+PzJefR5z/Ons6LDL2YYSeO4/icPHasiFxmkudbdyg2vmccuyI/kePUCsaxM9GhbkCw==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24226,9 +24226,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.86", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.86.tgz", - "integrity": "sha512-/hct5z04r79mpGm8grSNxqoS/j+9m1d6Cb6bbAekg3xjmsr1eocaLawzLGU/p3hyUtm2fs3NOt8zxNoQvRqCBg==", + "version": "1.5.88", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.88.tgz", + "integrity": "sha512-N5bicniNlyyNlySq8MHakWpKPW8r+nciNZJg0ZQMS2jRYzNuaT0rJT6smmU8Rfvm+3z1jF7B3Tdx92pNVMu45g==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 3b55b0e82..0914be10a 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.65", + "scratch-gui": "2.0.67", "scratch-l10n": "3.15.20230713032224", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From b80cdf25183a6999152302c557c0891ac3bca7c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Jul 2023 04:30:37 +0000 Subject: [PATCH 66/77] fix(deps): update dependency scratch-l10n to v3.15.20230714032252 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index e9c8f541c..7174254ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.67", - "scratch-l10n": "3.15.20230713032224", + "scratch-l10n": "3.15.20230714032252", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230713032224" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230713032224", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", + "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.67", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.67.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230713032224", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", + "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.19.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230713032224", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", - "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", + "version": "3.15.20230714032252", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230714032252.tgz", + "integrity": "sha512-JRgJc0yXhjugqIeqzXwZv/Sf8EKPwbvZHtPH1s0puZu+9X5B1DXwTio7c1f8JHia9aT6cQb87CtgB9irCYrl/g==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 0914be10a..026f50feb 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.67", - "scratch-l10n": "3.15.20230713032224", + "scratch-l10n": "3.15.20230714032252", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From c45233cdd9e6eb429c7b42216193b81c9323f542 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Jul 2023 06:59:49 +0000 Subject: [PATCH 67/77] fix(deps): update dependency scratch-gui to v2.0.68 --- package-lock.json | 28 +++++----------------------- package.json | 2 +- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7174254ff..88a0ba16d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.67", + "scratch-gui": "2.0.68", "scratch-l10n": "3.15.20230714032252", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23539,9 +23539,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.67", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.67.tgz", - "integrity": "sha512-TCOOHzVpQM2hJdHq2EIqNZuECpi8Y7pnXlaHQ4rfTTOoxxvkfKrdRVBnlNHpR0bJP2w1/SFMoYR59NJVo1TC2g==", + "version": "2.0.68", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.68.tgz", + "integrity": "sha512-Og0591zeYuG883iVEZEuHQu4jKJFRri7gQ99pU+ECKXlgo/ddflGWBQ3GJDDkMgs1DjKhcqKiO3CdOuDaVzznw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23597,7 +23597,7 @@ "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230713071047", - "scratch-l10n": "3.15.20230713032224", + "scratch-l10n": "3.15.20230714032252", "scratch-paint": "2.0.19", "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", @@ -23952,24 +23952,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230713032224", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", - "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.19.tgz", diff --git a/package.json b/package.json index 026f50feb..9c38d7d9e 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.67", + "scratch-gui": "2.0.68", "scratch-l10n": "3.15.20230714032252", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From bda6ee93df950458523fbd0c661d8332be723d7d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Jul 2023 14:13:04 +0000 Subject: [PATCH 68/77] fix(deps): update dependency scratch-gui to v2.0.69 --- package-lock.json | 36 +++++++++--------------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88a0ba16d..a1086372a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.68", + "scratch-gui": "2.0.69", "scratch-l10n": "3.15.20230714032252", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230713071047", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230713071047.tgz", - "integrity": "sha512-sr6xJkayY7TseM5pQtuPdnGuRKqeuwetYo1xFUB+iZGBKH1MRd5PQb6xbiTzKU1PvgUh7KfrJEtSnlvqm3niLA==", + "version": "0.2.0-prerelease.20230714070613", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230714070613.tgz", + "integrity": "sha512-yPcb8fpuB/v+OsKf0c+jOKFXMjVy/ao3KOQv73vhkWmkpYTNURFkscdHJgQhRtLOUfO91LHxn6/AYneEM7Fowg==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230713032224" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230713032224", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230713032224.tgz", - "integrity": "sha512-m5AbcLo8j46Aps+gty6ElDfmieyc3sRQBJUAMAkYcfniw7Dnelx5LdjKI0XSbbCMlSzhKyuYOObpkyUdfBoCnQ==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230714032252" } }, "node_modules/scratch-gui": { - "version": "2.0.68", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.68.tgz", - "integrity": "sha512-Og0591zeYuG883iVEZEuHQu4jKJFRri7gQ99pU+ECKXlgo/ddflGWBQ3GJDDkMgs1DjKhcqKiO3CdOuDaVzznw==", + "version": "2.0.69", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.69.tgz", + "integrity": "sha512-8bGuwEpo52dAEeoNow2oi9OxBsdCVFfTX/N/PA3D0uz+Crk4bErvOB5YV7nbuo80+vRUb7ZzmyhLaPa4NkGvgw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,7 +23578,7 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230713071047", + "scratch-blocks": "0.2.0-prerelease.20230714070613", "scratch-l10n": "3.15.20230714032252", "scratch-paint": "2.0.19", "scratch-render": "0.1.0-prerelease.20230710194419", diff --git a/package.json b/package.json index 9c38d7d9e..91b1433ee 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.68", + "scratch-gui": "2.0.69", "scratch-l10n": "3.15.20230714032252", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 35bc1a4d436d12cef6e76133c178ca987415e8fb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Jul 2023 21:41:54 +0000 Subject: [PATCH 69/77] fix(deps): update dependency scratch-gui to v2.0.71 --- package-lock.json | 24 ++++++++++++------------ package.json | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index a1086372a..a37ece000 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.69", + "scratch-gui": "2.0.71", "scratch-l10n": "3.15.20230714032252", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23521,9 +23521,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.69", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.69.tgz", - "integrity": "sha512-8bGuwEpo52dAEeoNow2oi9OxBsdCVFfTX/N/PA3D0uz+Crk4bErvOB5YV7nbuo80+vRUb7ZzmyhLaPa4NkGvgw==", + "version": "2.0.71", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.71.tgz", + "integrity": "sha512-6UG2q74p0W4D4GaYpqP57lpzu9VrQFD9sFCf5UMACd4BqjKoOlZAVT20hkeKFGnxGnJNxT+Q9V9MzZUMVF3Nnw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23580,12 +23580,12 @@ "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230714070613", "scratch-l10n": "3.15.20230714032252", - "scratch-paint": "2.0.19", + "scratch-paint": "2.0.20", "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", - "scratch-vm": "1.5.88", + "scratch-vm": "1.5.89", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23935,9 +23935,9 @@ } }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.19.tgz", - "integrity": "sha512-96lTqJYZqqaT2mx7/HP+PzJefR5z/Ons6LDL2YYSeO4/icPHasiFxmkudbdyg2vmccuyI/kePUCsaxM9GhbkCw==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.20.tgz", + "integrity": "sha512-YXZHRbDFmm1iELLJuUulF+V1zxJb/T3AdnC5NHW1jOCXfMfznUlpbXsAj0GRd5fhidggHAji42a4ymSjXNIJqQ==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24226,9 +24226,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.88", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.88.tgz", - "integrity": "sha512-N5bicniNlyyNlySq8MHakWpKPW8r+nciNZJg0ZQMS2jRYzNuaT0rJT6smmU8Rfvm+3z1jF7B3Tdx92pNVMu45g==", + "version": "1.5.89", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.89.tgz", + "integrity": "sha512-Cq2DVyy69WeiZMX4OPpdFbNNnGv2zsJtSo3pr+3t76hrHF4/pSLFaeOOpcPj7uoDPfTFRYD73q2gSVLNuyBFhQ==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 91b1433ee..0be781e85 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.69", + "scratch-gui": "2.0.71", "scratch-l10n": "3.15.20230714032252", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 3b7e9c3a60a3201b0791bf5b482b2708bdd05a76 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 08:08:24 +0000 Subject: [PATCH 70/77] fix(deps): update dependency scratch-l10n to v3.15.20230717032228 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a37ece000..8936fe23c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.71", - "scratch-l10n": "3.15.20230714032252", + "scratch-l10n": "3.15.20230717032228", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230714032252" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230714032252", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230714032252.tgz", + "integrity": "sha512-JRgJc0yXhjugqIeqzXwZv/Sf8EKPwbvZHtPH1s0puZu+9X5B1DXwTio7c1f8JHia9aT6cQb87CtgB9irCYrl/g==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.71", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.71.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230714032252", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230714032252.tgz", + "integrity": "sha512-JRgJc0yXhjugqIeqzXwZv/Sf8EKPwbvZHtPH1s0puZu+9X5B1DXwTio7c1f8JHia9aT6cQb87CtgB9irCYrl/g==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.20.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230714032252", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230714032252.tgz", - "integrity": "sha512-JRgJc0yXhjugqIeqzXwZv/Sf8EKPwbvZHtPH1s0puZu+9X5B1DXwTio7c1f8JHia9aT6cQb87CtgB9irCYrl/g==", + "version": "3.15.20230717032228", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230717032228.tgz", + "integrity": "sha512-kVmE3CIlx+VGGFOT2wNer4CMrKe7KM2Ey31cRjzfl7a99j7vjbtT+uIYjcjRJDiGs+h+X1FAhKU2nQlPR4qisQ==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index 0be781e85..67548cfc6 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.71", - "scratch-l10n": "3.15.20230714032252", + "scratch-l10n": "3.15.20230717032228", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From d5ce8aa5420a114d817927d358018efcde2eca17 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <7019101+cwillisf@users.noreply.github.com> Date: Fri, 14 Jul 2023 14:16:23 -0700 Subject: [PATCH 71/77] fix: remove EV3 info from Scratch Link page Based on feedback from Kevin B --- src/l10n.json | 2 -- src/views/download/scratch-link/download.jsx | 7 ------- src/views/ev3/ev3.jsx | 12 ++++++------ src/views/ev3/l10n.json | 2 ++ 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/l10n.json b/src/l10n.json index b37f402cf..225ee8f58 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -451,8 +451,6 @@ "extensions.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link", "extensions.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.", "extensions.checkOsVersionText2": "If you are using macOS 12, please update to macOS 12.3 or newer. Earlier versions of macOS 12 do not work correctly with Scratch Link.", - "extensions.ev3TryScratchLink1.4": "If you have issues connecting EV3 with Scratch Link 2.0, please try Scratch Link 1.4.", - "extensions.downloadScratchLink1.4": "Download Scratch Link 1.4", "extensions.winOSVersionLinkText": "Windows", "extensions.macOSVersionLinkText": "macOS", "extensions.closeScratchCopiesTitle": "Close other copies of Scratch", diff --git a/src/views/download/scratch-link/download.jsx b/src/views/download/scratch-link/download.jsx index e85de5593..94e7e4c0e 100644 --- a/src/views/download/scratch-link/download.jsx +++ b/src/views/download/scratch-link/download.jsx @@ -16,7 +16,6 @@ import ExtensionSection from '../../../components/extension-landing/extension-se import ExtensionTroubleshooting from '../../../components/extension-landing/extension-troubleshooting.jsx'; import InstallScratchLink from '../../../components/extension-landing/install-scratch-link.jsx'; -import OS_ENUM from '../../../lib/os-enum.js'; import {isDownloaded} from '../../../components/install-scratch/install-util.js'; import '../../../components/extension-landing/extension-landing.scss'; @@ -136,12 +135,6 @@ const ScratchLink = ({intl}) => { />

-

-

)}

diff --git a/src/views/ev3/ev3.jsx b/src/views/ev3/ev3.jsx index dc44c1084..cb9eb76e8 100644 --- a/src/views/ev3/ev3.jsx +++ b/src/views/ev3/ev3.jsx @@ -288,12 +288,6 @@ class EV3 extends ExtensionLanding { > {isDownloaded(this.state.OS) && ( -

-

+

+

)}

diff --git a/src/views/ev3/l10n.json b/src/views/ev3/l10n.json index 40e7c258c..f96468748 100644 --- a/src/views/ev3/l10n.json +++ b/src/views/ev3/l10n.json @@ -28,6 +28,8 @@ "ev3.troubleshootingTitle": "Troubleshooting", "ev3.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link", "ev3.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.", + "ev3.tryScratchLink1.4": "If you have issues connecting EV3 with Scratch Link 2.0, please try Scratch Link 1.4", + "ev3.downloadScratchLink1.4": "Download Scratch Link 1.4", "ev3.winOSVersionLinkText": "Windows", "ev3.macOSVersionLinkText": "macOS", "ev3.makeSurePairedTitle": "Make sure your computer is paired with your EV3", From 4a7d052194353f688e4049b13301d1a152462501 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:14:27 +0000 Subject: [PATCH 72/77] fix(deps): update dependency scratch-gui to v2.0.75 --- package-lock.json | 72 ++++++++++++----------------------------------- package.json | 2 +- 2 files changed, 19 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8936fe23c..f6232ad66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.71", + "scratch-gui": "2.0.75", "scratch-l10n": "3.15.20230717032228", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230714070613", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230714070613.tgz", - "integrity": "sha512-yPcb8fpuB/v+OsKf0c+jOKFXMjVy/ao3KOQv73vhkWmkpYTNURFkscdHJgQhRtLOUfO91LHxn6/AYneEM7Fowg==", + "version": "0.2.0-prerelease.20230717081644", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230717081644.tgz", + "integrity": "sha512-z5LR0oeZoUp2f5CrV//7wfM91K8E92FO1GYTr+N0rsEZyTSJPcLri3GpZVcOZ9E4R/XlLvuw1Rn0+cXeNYyiCQ==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230714032252" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230714032252", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230714032252.tgz", - "integrity": "sha512-JRgJc0yXhjugqIeqzXwZv/Sf8EKPwbvZHtPH1s0puZu+9X5B1DXwTio7c1f8JHia9aT6cQb87CtgB9irCYrl/g==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230717032228" } }, "node_modules/scratch-gui": { - "version": "2.0.71", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.71.tgz", - "integrity": "sha512-6UG2q74p0W4D4GaYpqP57lpzu9VrQFD9sFCf5UMACd4BqjKoOlZAVT20hkeKFGnxGnJNxT+Q9V9MzZUMVF3Nnw==", + "version": "2.0.75", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.75.tgz", + "integrity": "sha512-SXOIZDUnNBb2JtOfGxvaH/rJsncFvN+WKmMweD7/HOV3okmW2crbdOWL1Pe0iS9l6NwS4BNLdSIIa9Kb3vasEw==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,14 +23578,14 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230714070613", - "scratch-l10n": "3.15.20230714032252", - "scratch-paint": "2.0.20", + "scratch-blocks": "0.2.0-prerelease.20230717081644", + "scratch-l10n": "3.15.20230717032228", + "scratch-paint": "2.0.21", "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", - "scratch-vm": "1.5.89", + "scratch-vm": "1.5.90", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23952,28 +23934,10 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230714032252", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230714032252.tgz", - "integrity": "sha512-JRgJc0yXhjugqIeqzXwZv/Sf8EKPwbvZHtPH1s0puZu+9X5B1DXwTio7c1f8JHia9aT6cQb87CtgB9irCYrl/g==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.20.tgz", - "integrity": "sha512-YXZHRbDFmm1iELLJuUulF+V1zxJb/T3AdnC5NHW1jOCXfMfznUlpbXsAj0GRd5fhidggHAji42a4ymSjXNIJqQ==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.21.tgz", + "integrity": "sha512-LoEUU53rO5zJSp4dGOvAg0jFXkd/jiloETr2yz2AcNizCbPhWnQ0fz7bRR+pOEHzkMOsJk4rapfeSSyI1ed1VA==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24262,9 +24226,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.89", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.89.tgz", - "integrity": "sha512-Cq2DVyy69WeiZMX4OPpdFbNNnGv2zsJtSo3pr+3t76hrHF4/pSLFaeOOpcPj7uoDPfTFRYD73q2gSVLNuyBFhQ==", + "version": "1.5.90", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.90.tgz", + "integrity": "sha512-YfxsYhF8pS9VJMJVGQdE17QU0B76Zm+HDeI+7bxqqrSSNbxylRPr4wJS8juTY2RJgiYQZ0ajAHBGB8cNk7+vIA==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index 67548cfc6..c550df7be 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.71", + "scratch-gui": "2.0.75", "scratch-l10n": "3.15.20230717032228", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 2bcd34918e64ab53750021aa2e600a058e1a6e91 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 05:09:17 +0000 Subject: [PATCH 73/77] fix(deps): update dependency scratch-l10n to v3.15.20230718032211 --- package-lock.json | 44 ++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f6232ad66..76a56fadb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.75", - "scratch-l10n": "3.15.20230717032228", + "scratch-l10n": "3.15.20230718032211", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23520,6 +23520,24 @@ "scratch-l10n": "3.15.20230717032228" } }, + "node_modules/scratch-blocks/node_modules/scratch-l10n": { + "version": "3.15.20230717032228", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230717032228.tgz", + "integrity": "sha512-kVmE3CIlx+VGGFOT2wNer4CMrKe7KM2Ey31cRjzfl7a99j7vjbtT+uIYjcjRJDiGs+h+X1FAhKU2nQlPR4qisQ==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui": { "version": "2.0.75", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.75.tgz", @@ -23934,6 +23952,24 @@ "symbol-observable": "^1.0.3" } }, + "node_modules/scratch-gui/node_modules/scratch-l10n": { + "version": "3.15.20230717032228", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230717032228.tgz", + "integrity": "sha512-kVmE3CIlx+VGGFOT2wNer4CMrKe7KM2Ey31cRjzfl7a99j7vjbtT+uIYjcjRJDiGs+h+X1FAhKU2nQlPR4qisQ==", + "dev": true, + "dependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@transifex/api": "4.2.5", + "babel-plugin-react-intl": "^3.0.1", + "download": "^8.0.0", + "transifex": "1.6.6" + }, + "bin": { + "build-i18n-src": "scripts/build-i18n-src.js", + "tx-push-src": "scripts/tx-push-src.js" + } + }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.21", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.21.tgz", @@ -24023,9 +24059,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230717032228", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230717032228.tgz", - "integrity": "sha512-kVmE3CIlx+VGGFOT2wNer4CMrKe7KM2Ey31cRjzfl7a99j7vjbtT+uIYjcjRJDiGs+h+X1FAhKU2nQlPR4qisQ==", + "version": "3.15.20230718032211", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230718032211.tgz", + "integrity": "sha512-USFDniZJP3QpTnBKKXBNw7w0jjvx6qCP5bWkNEF/xRIypSywJ1O2Os9CSSzm3tq7lHqXJRD5XVfxgvC+H0Xp2A==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", diff --git a/package.json b/package.json index c550df7be..142719dcb 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "sass": "1.49.7", "sass-loader": "10.2.1", "scratch-gui": "2.0.75", - "scratch-l10n": "3.15.20230717032228", + "scratch-l10n": "3.15.20230718032211", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", From 69b2d8092511c8885001f193a6990362b16dce18 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 13:35:49 +0000 Subject: [PATCH 74/77] fix(deps): update dependency scratch-gui to v2.0.76 --- package-lock.json | 28 +++++----------------------- package.json | 2 +- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76a56fadb..29fb9df10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.75", + "scratch-gui": "2.0.76", "scratch-l10n": "3.15.20230718032211", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23539,9 +23539,9 @@ } }, "node_modules/scratch-gui": { - "version": "2.0.75", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.75.tgz", - "integrity": "sha512-SXOIZDUnNBb2JtOfGxvaH/rJsncFvN+WKmMweD7/HOV3okmW2crbdOWL1Pe0iS9l6NwS4BNLdSIIa9Kb3vasEw==", + "version": "2.0.76", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.76.tgz", + "integrity": "sha512-70dwOB/ib3BDiXVvKv/RU4dDPlyUrlwxSnviWqeHqzkC1PDyDOxUX3O4z/l8YQrwBI6D7m0B1vterBxQ7gEGww==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23597,7 +23597,7 @@ "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-blocks": "0.2.0-prerelease.20230717081644", - "scratch-l10n": "3.15.20230717032228", + "scratch-l10n": "3.15.20230718032211", "scratch-paint": "2.0.21", "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", @@ -23952,24 +23952,6 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230717032228", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230717032228.tgz", - "integrity": "sha512-kVmE3CIlx+VGGFOT2wNer4CMrKe7KM2Ey31cRjzfl7a99j7vjbtT+uIYjcjRJDiGs+h+X1FAhKU2nQlPR4qisQ==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { "version": "2.0.21", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.21.tgz", diff --git a/package.json b/package.json index 142719dcb..2dcf0097f 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.75", + "scratch-gui": "2.0.76", "scratch-l10n": "3.15.20230718032211", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From 8f72fcd332ee384a4f4ca361ab1847c8360f7d9d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 14:44:47 +0000 Subject: [PATCH 75/77] fix(deps): update dependency scratch-gui to v2.0.77 --- package-lock.json | 36 +++++++++--------------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29fb9df10..7f5fd339b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.76", + "scratch-gui": "2.0.77", "scratch-l10n": "3.15.20230718032211", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230717081644", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230717081644.tgz", - "integrity": "sha512-z5LR0oeZoUp2f5CrV//7wfM91K8E92FO1GYTr+N0rsEZyTSJPcLri3GpZVcOZ9E4R/XlLvuw1Rn0+cXeNYyiCQ==", + "version": "0.2.0-prerelease.20230718081157", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230718081157.tgz", + "integrity": "sha512-3ZO5cHKTTUFUoQ0kIFVNaywCoA/T2QLw21JldnVtdeUbBfmGDPKHNoFfv1QLVZHw3deOB/0feSC6szNfu/Q6fA==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230717032228" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230717032228", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230717032228.tgz", - "integrity": "sha512-kVmE3CIlx+VGGFOT2wNer4CMrKe7KM2Ey31cRjzfl7a99j7vjbtT+uIYjcjRJDiGs+h+X1FAhKU2nQlPR4qisQ==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230718032211" } }, "node_modules/scratch-gui": { - "version": "2.0.76", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.76.tgz", - "integrity": "sha512-70dwOB/ib3BDiXVvKv/RU4dDPlyUrlwxSnviWqeHqzkC1PDyDOxUX3O4z/l8YQrwBI6D7m0B1vterBxQ7gEGww==", + "version": "2.0.77", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.77.tgz", + "integrity": "sha512-saaYzmcM0aeD3busS8xt91s4vdtLhom30FYxIVu8+YIbvoPeFChwE3c5b/PqeUgiprpubHs8K4UhDnzTfTYe0A==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,7 +23578,7 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230717081644", + "scratch-blocks": "0.2.0-prerelease.20230718081157", "scratch-l10n": "3.15.20230718032211", "scratch-paint": "2.0.21", "scratch-render": "0.1.0-prerelease.20230710194419", diff --git a/package.json b/package.json index 2dcf0097f..451dc08d5 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.76", + "scratch-gui": "2.0.77", "scratch-l10n": "3.15.20230718032211", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", From bfb7c0e06ce84795a54f7a4337de74bf1022fa15 Mon Sep 17 00:00:00 2001 From: tomlum Date: Tue, 18 Jul 2023 16:05:42 -0400 Subject: [PATCH 76/77] far style fixes --- src/l10n.json | 2 +- src/views/bad-username-splash/bad-username-splash.jsx | 3 ++- src/views/bad-username-splash/bad-username-splash.scss | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/l10n.json b/src/l10n.json index 387bdfcee..8e0ed3fe1 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -456,7 +456,7 @@ "privacyBanner.update": "The Scratch privacy policy has been updated, effective May 25, 2023. You can see the new policy here.", "renameAccount.accountBlocked": "Account Blocked", - "renameAccount.toRecover": "To recover a access to your account, change your username.", + "renameAccount.toRecover": "To recover access to your account, change your username.", "renameAccount.yourScratchAccount": "Your scratch account has been temporarily blocked because your username appears to contain personal information.", "renameAccount.privacyIssue": "This is a serious privacy issue. When you share information like this, it is visible to everyone on the internet, so please be careful what you share", "renameAccount.thingsToAvoid": "When creating a username, please remember to avoid using last names, school names, or other private information in your username.", diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx index 37c89b9a2..dbd317ee8 100644 --- a/src/views/bad-username-splash/bad-username-splash.jsx +++ b/src/views/bad-username-splash/bad-username-splash.jsx @@ -107,7 +107,7 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { id="renameAccount.rememberToFollow" values={{ communityGuidelinesLink: ( - + ) @@ -203,6 +203,7 @@ const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { /> Password Date: Tue, 25 Jul 2023 11:11:09 -0400 Subject: [PATCH 77/77] revert FAR --- src/redux/session.js | 7 +- src/routes.json | 7 - .../bad-username-splash.jsx | 290 ------------------ .../bad-username-splash.scss | 134 -------- .../bad-username-splash/blocked-account.svg | 3 - 5 files changed, 1 insertion(+), 440 deletions(-) delete mode 100644 src/views/bad-username-splash/bad-username-splash.jsx delete mode 100644 src/views/bad-username-splash/bad-username-splash.scss delete mode 100644 src/views/bad-username-splash/blocked-account.svg diff --git a/src/redux/session.js b/src/redux/session.js index 48c85acb3..6343f5aef 100644 --- a/src/redux/session.js +++ b/src/redux/session.js @@ -16,7 +16,6 @@ const banGoodListPaths = [ '/ip_ban_appeal', '/vpn_required', '/accounts/banned-response', - '/accounts/bad-username', '/community_guidelines', '/privacy_policy', '/terms_of_use' @@ -86,11 +85,7 @@ const handleSessionResponse = (dispatch, body) => { body.user.banned && banGoodListPaths.every(goodPath => window.location.pathname.indexOf(goodPath) === -1) ) { - if (body.user.banned_status === 'far_banned'){ - window.location = '/accounts/bad-username/'; - } else { - window.location = '/accounts/banned-response/'; - } + window.location = '/accounts/banned-response/'; return; } else if ( body.flags && diff --git a/src/routes.json b/src/routes.json index e7a033616..06e47904d 100644 --- a/src/routes.json +++ b/src/routes.json @@ -430,13 +430,6 @@ "view": "microbit/microbit", "title": "micro:bit" }, - { - "name": "bad-username-splash", - "pattern": "^/accounts/bad-username/?(\\?.*)?$", - "routeAlias": "/accounts/bad-username/?$", - "view": "bad-username-splash/bad-username-splash", - "title": "Account Blocked" - }, { "name": "vernier", "pattern": "^/vernier/?(\\?.*)?$", diff --git a/src/views/bad-username-splash/bad-username-splash.jsx b/src/views/bad-username-splash/bad-username-splash.jsx deleted file mode 100644 index dbd317ee8..000000000 --- a/src/views/bad-username-splash/bad-username-splash.jsx +++ /dev/null @@ -1,290 +0,0 @@ -const injectIntl = require('react-intl').injectIntl; -const React = require('react'); -const FormattedMessage = require('react-intl').FormattedMessage; -import {connect} from 'react-redux'; -import {selectUser, selectHasFetchedSession} from '../../redux/session'; -const messageActions = require('../../redux/messages.js'); -const JoinFlowStep = require('../../components/join-flow/join-flow-step.jsx'); -const FormikInput = require('../../components/formik-forms/formik-input.jsx'); -import {Formik} from 'formik'; -const PropTypes = require('prop-types'); - -const Page = require('../../components/page/www/page.jsx'); -const render = require('../../lib/render.jsx'); -const api = require('../../lib/api'); -import bannedIcon from './blocked-account.svg'; - -require('../../components/extension-landing/extension-landing.scss'); -require('./bad-username-splash.scss'); - -const validateNewUsernameForm = values => { - const errors = {}; - if (values.canValidate && (values.newUsername !== values.newUsernameConfirm && values.newUsernameConfirm !== '')){ - errors.newUsernameConfirm = "usernames don't match"; - } - return errors; -}; - -const PIIUsernameMessage = 'username appears to contain personal information'; -const BadUsernameMessage = 'an inappropriate username'; - -const BannedSplash = ({hasSession, user, adminMessages, getAdminMessages}) => { - - const [unauthorizedError, setUnauthorizedError] = React.useState(false); - const [badUsernameError, setBadUsernameError] = React.useState(false); - const [apiError, setAPIError] = React.useState(false); - - const latestAdminMessage = adminMessages && adminMessages[0] && adminMessages[0].message; - - React.useEffect(() => { - if (user && user.username && user.token){ - getAdminMessages(user.username, user.token); - } - }, [user]); - - const handleUpdateUsernameUnbanSubmit = (formData, formikBag) => { - setUnauthorizedError(false); - setBadUsernameError(false); - setAPIError(false); - formikBag.setSubmitting(false); // formik makes us do this ourselves - - api({ - host: '', - uri: '/accounts/update_username/', - method: 'post', - useCsrf: true, - json: { - new_username: formData.newUsername, - username: formData.username, - password: formData.password - } - }, (err, body, res) => { - if (res.body.error === 'Unauthorized'){ - setUnauthorizedError('error message for unauthorized access'); - } else if (res.body.error === 'Invalid username'){ - setBadUsernameError('error message for invalid username'); - } else if (res.body.error){ - setAPIError('error message for API error'); - } else { - window.location = '/'; - } - }); - }; - - if (hasSession && (!user || !user.banned)){ - window.location = '/'; - } - - if (user && user.banned){ - return (
-
-
-
- - -

-
-

- - {latestAdminMessage && latestAdminMessage.includes(PIIUsernameMessage) && - (
-

-

-

-
) - } - {latestAdminMessage && latestAdminMessage.includes(BadUsernameMessage) && - (
-

-

-

- - - ) - }} - />

-
) - } -
- -
- - {({ - errors, - handleSubmit, - isSubmitting, - setFieldError, - setFieldTouched, - setFieldValue, - validateForm - }) => ( - - - - ) - }} - />} - innerClassName="change-username-inner" - outerClassName="change-username-outer" - title={} - waiting={isSubmitting} - onSubmit={handleSubmit} - nextButton={} - > -
- Create a new username - { - setFieldValue('newUsername', e.target.value.substring(0, 30)); - setFieldValue('canValidate', false); - setFieldTouched('newUsername'); - setFieldError('newUsername', null); - }} - /> - { - setFieldValue('newUsernameConfirm', e.target.value.substring(0, 30)); - setFieldTouched('newUsernameConfirm'); - setFieldError('newUsernameConfirm', null); - setFieldValue('canValidate', false); - }} - onBlur={() => { - setFieldValue('canValidate', true).then(validateForm()); - }} - /> - Password - { - setFieldValue('password', e.target.value); - setFieldTouched('password'); - setFieldError('password', null); - }} - /> -
-
)} -
-
-
-
-
-
- -
- {adminMessages.map(message => ( -
-
- {new Date(message.datetime_created).toDateString()} -
- {/* eslint-disable-next-line react/no-danger */} -
-
- ))} -
-
- ); - } - return
; -}; - -BannedSplash.propTypes = { - user: PropTypes.shape({ - username: PropTypes.string, - banned: PropTypes.bool, - token: PropTypes.string - }), - hasSession: PropTypes.bool, - adminMessages: PropTypes.arrayOf(PropTypes.shape({ - id: PropTypes.number.isRequired, - datetimeCreated: PropTypes.string.isRequired, - message: PropTypes.string.isRequired - })), - getAdminMessages: PropTypes.func -}; - -const ConnectedBannedSplash = connect( - state => ({ - user: selectUser(state), - hasSession: selectHasFetchedSession(state), - adminMessages: state.messages.messages && - state.messages.messages.admin && - state.messages.messages.admin.sort((a, b) => - (b.id - a.id) - ) - }), - dispatch => ({ - getAdminMessages: (username, token) => { - dispatch(messageActions.getAdminMessages( - username, token, 0 - )); - } - }) -)(BannedSplash); - - -const WrappedBannedSplash = injectIntl(ConnectedBannedSplash); - -render(, document.getElementById('app'), - {messages: messageActions.messagesReducer}); diff --git a/src/views/bad-username-splash/bad-username-splash.scss b/src/views/bad-username-splash/bad-username-splash.scss deleted file mode 100644 index 8a858aa58..000000000 --- a/src/views/bad-username-splash/bad-username-splash.scss +++ /dev/null @@ -1,134 +0,0 @@ -@import "../../colors"; -@import "../../frameless"; - -.validation-left { - transform: translate(-20.5rem, 0); -} - -@media #{$intermediate-and-smaller} { - .validation-full-width-input { - box-sizing: border-box; - transform: unset; - margin-bottom: .75rem; - max-width: 100%; - } -} - -.inline{ - display:inline; -} - -#bad-username-splash{ - display: flex; - flex-direction: column; - align-items: center; -} - -#force-account-rename{ - width: 100%; - display: flex; - justify-content: center; - - #force-account-rename-inner{ - max-width: 1094px; - display: flex; - flex-direction: row; - @media only screen and (max-width: 800px) { - flex-direction: column; - } - - text-align: left; - - input{ - box-sizing: border-box; - width: 100%; - } - } - background-color: #575E75; - .col{ - padding: 40px; - flex: 1; - } -} - - -#admin-message-list{ - display: inline-block; - padding: 25px; - max-width: 1094px; - - #admin-message-list-title{ - text-align: left; - } -} - -.admin-message{ - text-align: left; - .admin-message-date{ - color: #575E75; - font-size: 12px; - padding-bottom: 10px; - } - text-align: left; - border-radius: 8px; - padding: 16px; - background-color: #E5F0FF; - margin: 10px; -} - -#force-account-rename-text{ - h1, h3, p{ - color: white; - } -} - -.empty{ - text-align: left; - - .admin-message{ - margin: 10px; - } -} - -.banned-message-box{ - margin: 20px; - text-align: left; -} - -.join-flow-outer-content{ - background-color: white; - border-radius: 16px; - color: #575e75; - max-width: 468px; - min-height: auto !important; - @media only screen and (max-width: 800px) { - margin: auto; - } -} - -.banned-icon{ - margin-right: 10px; - padding-top: 10px; - margin-bottom: -3px; -} - -.modal-flush-bottom-button{ - background-color: #855CD6; -} -.modal-flush-bottom-button:hover{ - background-color: #855CD6; -} - -.join-flow-outer-content{ - border: solid 4px #818698; - border-radius: 21px; -} - -.mt5{ - margin-top: 5px; -} - -.white-underline-link{ - color: white !important; - text-decoration: underline !important; -} \ No newline at end of file diff --git a/src/views/bad-username-splash/blocked-account.svg b/src/views/bad-username-splash/blocked-account.svg deleted file mode 100644 index 897a34da9..000000000 --- a/src/views/bad-username-splash/blocked-account.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -