);\n}\n\nNanoscriptEditor.propTypes = {\n theme: PropTypes.instanceOf(Theme),\n vm: PropTypes.instanceOf(VM).isRequired\n};\n\nexport default NanoscriptEditor;\n","usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/components/ob-nanoscript-editor/ob-codemirror-imports.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"output":"export {EditorView} from '@codemirror/view';\nexport {basicSetup} from 'codemirror';\nexport {LRLanguage, LanguageSupport, syntaxHighlighting, HighlightStyle} from '@codemirror/language';\nexport {styleTags, tags} from '@lezer/highlight';\nexport {autocompletion, completeFromList} from '@codemirror/autocomplete';\n","usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/components/toggle-buttons/toggle-buttons.jsx","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/containers/blocks.jsx","messages":[],"suppressedMessages":[{"ruleId":"max-len","severity":2,"message":"This line has a length of 138. Maximum allowed is 120.","line":53,"column":1,"nodeType":"Program","messageId":"max","endLine":53,"endColumn":139,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"max-len","severity":2,"message":"This line has a length of 138. Maximum allowed is 120.","line":59,"column":1,"nodeType":"Program","messageId":"max","endLine":59,"endColumn":139,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"max-len","severity":2,"message":"This line has a length of 148. Maximum allowed is 120.","line":65,"column":1,"nodeType":"Program","messageId":"max","endLine":65,"endColumn":149,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"max-len","severity":2,"message":"This line has a length of 124. Maximum allowed is 120.","line":71,"column":1,"nodeType":"Program","messageId":"max","endLine":71,"endColumn":125,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'anyModalVisible' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":669,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":669,"endColumn":28,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'canUseCloud' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":670,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":670,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'customStageSize' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":671,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":671,"endColumn":28,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'stageSize' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":675,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":675,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'isRtl' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":677,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":677,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'isVisible' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":678,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":678,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onActivateColorPicker' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":679,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":679,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onOpenConnectionModal' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":680,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":680,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onOpenSoundRecorder' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":681,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":681,"endColumn":32,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'updateToolboxState' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":684,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":684,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onActivateCustomProcedures' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":685,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":685,"endColumn":39,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onRequestCloseCustomProcedures' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":687,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":687,"endColumn":43,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'toolboxXML' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":688,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":688,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'updateMetricsProp' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":689,"column":28,"nodeType":"Identifier","messageId":"unusedVar","endLine":689,"endColumn":45,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'useCatBlocks' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":690,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":690,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'workspaceMetrics' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":691,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":691,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/containers/extension-library.jsx","messages":[{"ruleId":"react/no-unused-prop-types","severity":2,"message":"'onEnableProcedureReturns' PropType is defined but prop is never used","line":192,"column":5,"nodeType":"Identifier","messageId":"unusedPropType","endLine":192,"endColumn":29}],"suppressedMessages":[{"ruleId":"no-alert","severity":2,"message":"Unexpected alert.","line":148,"column":25,"nodeType":"CallExpression","messageId":"unexpected","endLine":148,"endColumn":35,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport VM from 'scratch-vm';\nimport {defineMessages, injectIntl, intlShape} from 'react-intl';\nimport log from '../lib/log';\n\nimport extensionLibraryContent, {\n galleryError,\n galleryLoading,\n galleryMore\n} from '../lib/libraries/extensions/index.jsx';\nimport extensionTags from '../lib/libraries/tw-extension-tags';\n\nimport LibraryComponent from '../components/library/library.jsx';\nimport extensionIcon from '../components/action-menu/icon--sprite.svg';\n\nconst messages = defineMessages({\n extensionTitle: {\n defaultMessage: 'Choose an Extension',\n description: 'Heading for the extension library',\n id: 'gui.extensionLibrary.chooseAnExtension'\n }\n});\n\nconst toLibraryItem = extension => {\n if (typeof extension === 'object') {\n return ({\n rawURL: extension.iconURL || extensionIcon,\n ...extension\n });\n }\n return extension;\n};\n\nconst translateGalleryItem = (extension, locale) => ({\n ...extension,\n name: extension.nameTranslations[locale] || extension.name,\n description: extension.descriptionTranslations[locale] || extension.description\n});\n\nlet cachedGallery = null;\n\nconst fetchLibrary = async () => {\n const res = await fetch('https://omniblocks.github.io/extensions/generated-metadata/extensions-v0.json');\n if (!res.ok) {\n throw new Error(`HTTP status ${res.status}`);\n }\n const data = await res.json();\n return data.extensions.map(extension => ({\n name: extension.name,\n nameTranslations: extension.nameTranslations || {},\n description: extension.description,\n descriptionTranslations: extension.descriptionTranslations || {},\n extensionId: extension.id,\n extensionURL: `https://omniblocks.github.io/extensions/${extension.slug}.js`,\n iconURL: `https://omniblocks.github.io/extensions/${extension.image || 'images/unknown.svg'}`,\n tags: ['tw'],\n credits: [\n ...(extension.original || []),\n ...(extension.by || [])\n ].map(credit => {\n if (credit.link) {\n return (\n \n {credit.name}\n \n );\n }\n return credit.name;\n }),\n docsURI: extension.docs ? `https://omniblocks.github.io/extensions/${extension.slug}` : null,\n samples: extension.samples ? extension.samples.map(sample => ({\n href: `${process.env.ROOT}editor?project_url=https://omniblocks.github.io/extensions/samples/${encodeURIComponent(sample)}.sb3`,\n text: sample\n })) : null,\n incompatibleWithScratch: !extension.scratchCompatible,\n featured: true\n }));\n};\n\nclass ExtensionLibrary extends React.PureComponent {\n constructor (props) {\n super(props);\n bindAll(this, [\n 'handleItemSelect'\n ]);\n this.state = {\n gallery: cachedGallery,\n galleryError: null,\n galleryTimedOut: false\n };\n }\n componentDidMount () {\n if (!this.state.gallery) {\n const timeout = setTimeout(() => {\n this.setState({\n galleryTimedOut: true\n });\n }, 750);\n\n fetchLibrary()\n .then(gallery => {\n cachedGallery = gallery;\n this.setState({\n gallery\n });\n clearTimeout(timeout);\n })\n .catch(error => {\n log.error(error);\n this.setState({\n galleryError: error\n });\n clearTimeout(timeout);\n });\n }\n }\n handleItemSelect (item) {\n if (item.href) {\n return;\n }\n\n const extensionId = item.extensionId;\n\n if (extensionId === 'custom_extension') {\n this.props.onOpenCustomExtensionModal();\n return;\n }\n\n const url = item.extensionURL ? item.extensionURL : extensionId;\n if (!item.disabled) {\n if (this.props.vm.extensionManager.isExtensionLoaded(extensionId)) {\n this.props.onCategorySelected(extensionId);\n } else {\n this.props.vm.extensionManager.loadExtensionURL(url)\n .then(() => {\n this.props.onCategorySelected(extensionId);\n })\n .catch(err => {\n log.error(err);\n // eslint-disable-next-line no-alert\n alert(err);\n });\n }\n }\n }\n render () {\n let library = null;\n if (this.state.gallery || this.state.galleryError || this.state.galleryTimedOut) {\n library = extensionLibraryContent.map(toLibraryItem);\n library.push('---');\n if (this.state.gallery) {\n library.push(toLibraryItem(galleryMore));\n const locale = this.props.intl.locale;\n library.push(\n ...this.state.gallery\n .map(i => translateGalleryItem(i, locale))\n .map(toLibraryItem)\n );\n } else if (this.state.galleryError) {\n library.push(toLibraryItem(galleryError));\n } else {\n library.push(toLibraryItem(galleryLoading));\n }\n }\n\n return (\n \n );\n }\n}\n\nExtensionLibrary.propTypes = {\n intl: intlShape.isRequired,\n onCategorySelected: PropTypes.func,\n onEnableProcedureReturns: PropTypes.func,\n onOpenCustomExtensionModal: PropTypes.func,\n onRequestClose: PropTypes.func,\n visible: PropTypes.bool,\n vm: PropTypes.instanceOf(VM).isRequired // eslint-disable-line react/no-unused-prop-types\n};\n\nexport default injectIntl(ExtensionLibrary);\n","usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/containers/gui.jsx","messages":[],"suppressedMessages":[{"ruleId":"no-unused-vars","severity":2,"message":"'assetHost' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":84,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":84,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'cloudHost' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":85,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":85,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'error' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":86,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":86,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'isError' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":87,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":87,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'isScratchDesktop' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":88,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":88,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'isShowingProject' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":89,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":89,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onProjectLoaded' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":90,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":90,"endColumn":28,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onStorageInit' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":91,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":91,"endColumn":26,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onUpdateProjectId' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":92,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":92,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onVmInit' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":93,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":93,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'projectHost' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":94,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":94,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'projectId' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":95,"column":13,"nodeType":"Identifier","messageId":"unusedVar","endLine":95,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/lib/brand.js","messages":[],"suppressedMessages":[{"ruleId":"import/no-commonjs","severity":2,"message":"Expected \"export\" or \"export default\"","line":3,"column":1,"nodeType":"MemberExpression","endLine":3,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"output":"// Legacy export format because this is used by some build-time scripts stuck in the past.\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = {\n APP_NAME: 'Visual IDE', // the name of the Scratch mod\n APP_NAMES: {\n PROJECT: 'OmniBlocks'\n },\n APP_VERSION: process.env.APP_VERSION || 'v0.5.8-alpha' // Dynamically injected at build time from git tags\n};\n","usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/lib/libraries/extensions/index.jsx","messages":[{"ruleId":"no-unused-vars","severity":2,"message":"'returnIcon' is defined but never used. Allowed unused vars must match /^_/u.","line":51,"column":8,"nodeType":"Identifier","messageId":"unusedVar","endLine":51,"endColumn":18}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import React from 'react';\nimport {FormattedMessage} from 'react-intl';\n\nimport musicIconURL from './music/music.png';\nimport musicInsetIconURL from './music/music-small.svg';\n\nimport penIconURL from './pen/pen.png';\nimport penInsetIconURL from './pen/pen-small.svg';\n\nimport videoSensingIconURL from './videoSensing/video-sensing.png';\nimport videoSensingInsetIconURL from './videoSensing/video-sensing-small.svg';\n\nimport text2speechIconURL from './text2speech/text2speech.png';\nimport text2speechInsetIconURL from './text2speech/text2speech-small.svg';\n\nimport translateIconURL from './translate/translate.png';\nimport translateInsetIconURL from './translate/translate-small.png';\n\nimport makeymakeyIconURL from './makeymakey/makeymakey.png';\nimport makeymakeyInsetIconURL from './makeymakey/makeymakey-small.svg';\n\nimport microbitIconURL from './microbit/microbit.png';\nimport microbitInsetIconURL from './microbit/microbit-small.svg';\nimport microbitConnectionIconURL from './microbit/microbit-illustration.svg';\nimport microbitConnectionSmallIconURL from './microbit/microbit-small.svg';\n\nimport ev3IconURL from './ev3/ev3.png';\nimport ev3InsetIconURL from './ev3/ev3-small.svg';\nimport ev3ConnectionIconURL from './ev3/ev3-hub-illustration.svg';\nimport ev3ConnectionSmallIconURL from './ev3/ev3-small.svg';\n\nimport wedo2IconURL from './wedo2/wedo.png'; // TODO: Rename file names to match variable/prop names?\nimport wedo2InsetIconURL from './wedo2/wedo-small.svg';\nimport wedo2ConnectionIconURL from './wedo2/wedo-illustration.svg';\nimport wedo2ConnectionSmallIconURL from './wedo2/wedo-small.svg';\nimport wedo2ConnectionTipIconURL from './wedo2/wedo-button-illustration.svg';\n\nimport boostIconURL from './boost/boost.png';\nimport boostInsetIconURL from './boost/boost-small.svg';\nimport boostConnectionIconURL from './boost/boost-illustration.svg';\nimport boostConnectionSmallIconURL from './boost/boost-small.svg';\nimport boostConnectionTipIconURL from './boost/boost-button-illustration.svg';\n\nimport gdxforIconURL from './gdxfor/gdxfor.png';\nimport gdxforInsetIconURL from './gdxfor/gdxfor-small.svg';\nimport gdxforConnectionIconURL from './gdxfor/gdxfor-illustration.svg';\nimport gdxforConnectionSmallIconURL from './gdxfor/gdxfor-small.svg';\n\nimport twIcon from './tw/tw.svg';\nimport customExtensionIcon from './custom/custom.svg';\nimport returnIcon from './custom/return.svg';\nimport galleryIcon from './gallery/gallery.svg';\nimport {APP_NAME} from '../../brand';\n\nexport default [\n {\n name: (\n \n ),\n extensionId: 'music',\n iconURL: musicIconURL,\n insetIconURL: musicInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true\n },\n {\n name: (\n \n ),\n extensionId: 'pen',\n iconURL: penIconURL,\n insetIconURL: penInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true\n },\n {\n name: (\n \n ),\n extensionId: 'videoSensing',\n iconURL: videoSensingIconURL,\n insetIconURL: videoSensingInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true\n },\n {\n name: (\n \n ),\n extensionId: 'text2speech',\n collaborator: 'Amazon Web Services',\n iconURL: text2speechIconURL,\n insetIconURL: text2speechInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true,\n internetConnectionRequired: true\n },\n {\n name: (\n \n ),\n extensionId: 'translate',\n collaborator: 'Google',\n iconURL: translateIconURL,\n insetIconURL: translateInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true,\n internetConnectionRequired: true\n },\n {\n name: 'Makey Makey',\n extensionId: 'makeymakey',\n collaborator: 'JoyLabz',\n iconURL: makeymakeyIconURL,\n insetIconURL: makeymakeyInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true\n },\n {\n name: 'micro:bit',\n extensionId: 'microbit',\n collaborator: 'micro:bit',\n iconURL: microbitIconURL,\n insetIconURL: microbitInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true,\n disabled: false,\n bluetoothRequired: true,\n internetConnectionRequired: true,\n launchPeripheralConnectionFlow: true,\n useAutoScan: false,\n connectionIconURL: microbitConnectionIconURL,\n connectionSmallIconURL: microbitConnectionSmallIconURL,\n connectingMessage: (\n \n ),\n helpLink: 'https://scratch.mit.edu/microbit'\n },\n {\n name: 'LEGO MINDSTORMS EV3',\n extensionId: 'ev3',\n collaborator: 'LEGO',\n iconURL: ev3IconURL,\n insetIconURL: ev3InsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true,\n disabled: false,\n bluetoothRequired: true,\n internetConnectionRequired: true,\n launchPeripheralConnectionFlow: true,\n useAutoScan: false,\n connectionIconURL: ev3ConnectionIconURL,\n connectionSmallIconURL: ev3ConnectionSmallIconURL,\n connectingMessage: (\n \n ),\n helpLink: 'https://scratch.mit.edu/ev3'\n },\n {\n name: 'LEGO BOOST',\n extensionId: 'boost',\n collaborator: 'LEGO',\n iconURL: boostIconURL,\n insetIconURL: boostInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true,\n disabled: false,\n bluetoothRequired: true,\n internetConnectionRequired: true,\n launchPeripheralConnectionFlow: true,\n useAutoScan: true,\n connectionIconURL: boostConnectionIconURL,\n connectionSmallIconURL: boostConnectionSmallIconURL,\n connectionTipIconURL: boostConnectionTipIconURL,\n connectingMessage: (\n \n ),\n helpLink: 'https://scratch.mit.edu/boost'\n },\n {\n name: 'LEGO Education WeDo 2.0',\n extensionId: 'wedo2',\n collaborator: 'LEGO',\n iconURL: wedo2IconURL,\n insetIconURL: wedo2InsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true,\n disabled: false,\n bluetoothRequired: true,\n internetConnectionRequired: true,\n launchPeripheralConnectionFlow: true,\n useAutoScan: true,\n connectionIconURL: wedo2ConnectionIconURL,\n connectionSmallIconURL: wedo2ConnectionSmallIconURL,\n connectionTipIconURL: wedo2ConnectionTipIconURL,\n connectingMessage: (\n \n ),\n helpLink: 'https://scratch.mit.edu/wedo'\n },\n {\n name: 'Go Direct Force & Acceleration',\n extensionId: 'gdxfor',\n collaborator: 'Vernier',\n iconURL: gdxforIconURL,\n insetIconURL: gdxforInsetIconURL,\n description: (\n \n ),\n tags: ['scratch'],\n featured: true,\n disabled: false,\n bluetoothRequired: true,\n internetConnectionRequired: true,\n launchPeripheralConnectionFlow: true,\n useAutoScan: false,\n connectionIconURL: gdxforConnectionIconURL,\n connectionSmallIconURL: gdxforConnectionSmallIconURL,\n connectingMessage: (\n \n ),\n helpLink: 'https://scratch.mit.edu/vernier'\n },\n {\n name: (\n \n ),\n extensionId: 'tw',\n iconURL: twIcon,\n description: (\n \n ),\n incompatibleWithScratch: true,\n tags: ['tw'],\n featured: true\n },\n {\n name: (\n \n ),\n extensionId: 'custom_extension',\n iconURL: customExtensionIcon,\n description: (\n \n ),\n tags: ['tw'],\n featured: true\n // Not marked as incompatible with Scratch so that clicking on it doesn't show a prompt\n }\n];\n\nexport const galleryLoading = {\n name: (\n \n ),\n href: 'https://extensions.turbowarp.org/',\n extensionId: 'gallery',\n iconURL: galleryIcon,\n description: (\n \n ),\n tags: ['tw'],\n featured: true\n};\n\nexport const galleryMore = {\n name: (\n \n ),\n href: 'https://extensions.turbowarp.org/',\n extensionId: 'gallery',\n iconURL: galleryIcon,\n description: (\n \n ),\n tags: ['tw'],\n featured: true\n};\n\nexport const galleryError = {\n name: (\n \n ),\n href: 'https://extensions.turbowarp.org/',\n extensionId: 'gallery',\n iconURL: galleryIcon,\n description: (\n \n ),\n tags: ['tw'],\n featured: true\n};\n","usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/lib/libraries/tw-extension-tags.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"output":"import {APP_NAME} from '../brand';\n\n// Because these are all brand names, it is unnecessary for them to be translatable.\nexport default [\n {tag: 'scratch', intlLabel: 'Scratch'},\n {tag: 'tw', intlLabel: 'TurboWarp'},\n {tag: 'ob', intlLabel: APP_NAME}\n];\n","usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/lib/tw-state-manager-hoc.jsx","messages":[],"suppressedMessages":[{"ruleId":"no-alert","severity":2,"message":"Unexpected alert.","line":292,"column":21,"nodeType":"CallExpression","messageId":"unexpected","endLine":292,"endColumn":78,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-alert","severity":2,"message":"Unexpected alert.","line":345,"column":21,"nodeType":"CallExpression","messageId":"unexpected","endLine":345,"endColumn":81,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-alert","severity":2,"message":"Unexpected confirm.","line":499,"column":22,"nodeType":"CallExpression","messageId":"unexpected","endLine":499,"endColumn":73,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'intl' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":515,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":515,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'customStageSize' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":516,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":516,"endColumn":32,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'isFullScreen' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":517,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":517,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'isPlayerOnly' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":518,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":518,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'isEmbedded' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":519,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":519,"endColumn":27,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'projectChanged' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":520,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":520,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'compilerOptions' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":521,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":521,"endColumn":32,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'runtimeOptions' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":522,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":522,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'highQualityPen' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":523,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":523,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'framerate' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":524,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":524,"endColumn":26,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'interpolation' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":525,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":525,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'turbo' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":526,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":526,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onSetIsFullScreen' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":527,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":527,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onSetIsPlayerOnly' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":528,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":528,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onSetProjectId' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":529,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":529,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'onSetUsername' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":530,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":530,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'reduxProjectId' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":531,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":531,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'routingStyle' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":532,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":532,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'username' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":533,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":533,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'vm' is assigned a value but never used. Allowed unused vars must match /^_/u.","line":534,"column":17,"nodeType":"Identifier","messageId":"unusedVar","endLine":534,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/playground/credits/credits.jsx","messages":[],"suppressedMessages":[{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Credits\"","line":62,"column":27,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":63,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"The\"","line":66,"column":16,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":67,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"project is made possible by the work of many volunteers.\"","line":67,"column":31,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":68,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"TurboWarp\"","line":73,"column":21,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":73,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"is based on\"","line":75,"column":31,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":75,"endColumn":44,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"TurboWarp\"","line":75,"column":77,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":75,"endColumn":86,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \".\"","line":75,"column":90,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":76,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Scratch\"","line":80,"column":17,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":80,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"is based on the work of the\"","line":82,"column":27,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":82,"endColumn":56,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Scratch contributors\"","line":82,"column":98,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":82,"endColumn":118,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"but is not endorsed by Scratch in any way.\"","line":82,"column":122,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":83,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Donate to support Scratch.\"","line":85,"column":58,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":87,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Contributors\"","line":91,"column":17,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":91,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Addons\"","line":95,"column":17,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":95,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"TurboWarp Extension Gallery\"","line":99,"column":17,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":99,"endColumn":44,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Documentation\"","line":103,"column":17,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":103,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Translators\"","line":107,"column":17,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":107,"endColumn":28,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"More than 100 people have helped translate\"","line":108,"column":16,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":109,"endColumn":60,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"and its addons into many languages\n — far more than we could hope to list here.\"","line":109,"column":70,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":111,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Individual contributors are listed in no particular order.\n The order is randomized each visit.\"","line":115,"column":20,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":118,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"output":"import React from 'react';\nimport PropTypes from 'prop-types';\nimport render from '../app-target';\nimport styles from '../info.css';\nimport Header from '../ws-components/header/header.jsx';\n\nimport {APP_NAMES} from '../../lib/brand';\n\nconst APP_NAME = APP_NAMES.PROJECT;\nimport {applyGuiColors} from '../../lib/themes/guiHelpers';\nimport {detectTheme} from '../../lib/themes/themePersistance';\nimport UserData from './users';\n\n/* eslint-disable react/jsx-no-literals */\n\napplyGuiColors(detectTheme());\ndocument.documentElement.lang = 'en';\n\nconst User = ({image, text, href}) => (\n \n \n
\n More than 100 people have helped translate {APP_NAME} and its addons into many languages\n — far more than we could hope to list here.\n
\n \n \n
\n \n Individual contributors are listed in no particular order.\n The order is randomized each visit.\n \n
\n \n >\n);\n\nrender();\n","usedDeprecatedRules":[{"ruleId":"no-confusing-arrow","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]},{"ruleId":"rest-spread-spacing","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"valid-jsdoc","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-catch-shadow","replacedBy":["no-shadow"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"jsx-quotes","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"newline-per-chained-call","replacedBy":[]},{"ruleId":"no-mixed-operators","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"object-property-newline","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"require-jsdoc","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/home/runner/work/scratch-gui/scratch-gui/src/playground/home/home.jsx","messages":[{"ruleId":"no-unused-vars","severity":2,"message":"'PropTypes' is defined but never used. Allowed unused vars must match /^_/u.","line":2,"column":8,"nodeType":"Identifier","messageId":"unusedVar","endLine":2,"endColumn":17},{"ruleId":"max-len","severity":2,"message":"This line has a length of 131. Maximum allowed is 120.","line":50,"column":1,"nodeType":"Program","messageId":"max","endLine":50,"endColumn":132}],"suppressedMessages":[{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"is a project to develop simple IDEs for programming in the browser.\"","line":50,"column":60,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":50,"endColumn":128,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Current IDEs\"","line":54,"column":21,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":54,"endColumn":33,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"— Coming soon\"","line":64,"column":84,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":64,"endColumn":98,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"Open\"","line":71,"column":34,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":71,"endColumn":38,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"is free software under the AGPL 3.0 license\"","line":79,"column":31,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":79,"endColumn":75,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"You can view the source code on\"","line":80,"column":20,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":81,"endColumn":53,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \"GitHub\"","line":81,"column":105,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":81,"endColumn":111,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"react/jsx-no-literals","severity":2,"message":"Missing JSX expression container around literal string: \".\"","line":81,"column":115,"nodeType":"JSXText","messageId":"literalNotInJSXExpression","endLine":82,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"output":"import React from 'react';\nimport PropTypes from 'prop-types';\nimport render from '../app-target.js';\n\nimport {APP_NAMES} from '../../lib/brand';\n\nconst APP_NAME = APP_NAMES.PROJECT;\nimport {applyGuiColors} from '../../lib/themes/guiHelpers.js';\nimport {detectTheme} from '../../lib/themes/themePersistance.js';\nimport styles from '../info.css';\nimport localStyles from './home.css';\nimport Header from '../ws-components/header/header.jsx';\n/* eslint-disable react/jsx-no-literals */\n\napplyGuiColors(detectTheme());\ndocument.documentElement.lang = 'en';\n\nconst IDE_CARDS = [\n {\n title: 'Visual IDE',\n href: 'editor.html',\n desc: 'A Scratch mod with text-based programming support!'\n },\n {\n title: 'PyVisual',\n href: null,\n desc: 'Write Python code in blocks!',\n coming: true\n },\n {\n title: 'OmniPython',\n href: null,\n desc: 'An advanced Python IDE right in your browser.',\n coming: true\n },\n {\n title: 'And more...',\n href: null,\n desc: 'IDEs for C and more!',\n coming: true\n }\n];\n\nconst Credits = () => (\n <>\n \n \n \n
{APP_NAME}
\n
{APP_NAME} is a project to develop simple IDEs for programming in the browser.