diff --git a/cypress/e2e/500_control.cy.js b/cypress/e2e/500_control.cy.js index c79b705..ed03e85 100644 --- a/cypress/e2e/500_control.cy.js +++ b/cypress/e2e/500_control.cy.js @@ -35,9 +35,10 @@ describe('load control page, verify stream is there', () => { cy.get('a.v-list-item[href*="control"]').click() cy.get('#app').click() cy.get('button.video').click() + cy.wait(5000) cy.get('button.video').click() }) - + /* it('say a phrase', () => { cy.visit('http://localhost:8080') cy.get('.v-carousel').should('exist') @@ -58,4 +59,5 @@ describe('load control page, verify stream is there', () => { cy.get('a.gallery').click() cy.url().should('include', '/gallery') }) -}) \ No newline at end of file + */ +}) diff --git a/cypress/e2e/700_settings.cy.js b/cypress/e2e/700_settings.cy.js index aa0bd87..5e2837f 100644 --- a/cypress/e2e/700_settings.cy.js +++ b/cypress/e2e/700_settings.cy.js @@ -36,9 +36,12 @@ describe('load homepage', () => { cy.get('#app').click() cy.get('button#0').should('exist') cy.get('button#0').click() + cy.wait(500) + cy.get('#settings_password').should('exist') cy.get('#settings_password').type('secret') cy.get('#save').should('exist') cy.get('#save').click() + cy.get('.v-snackbar__content').should('exist') cy.visit('http://localhost:8080') cy.get('.v-carousel').should('exist') cy.get('button.v-app-bar-nav-icon').should('exist').click() @@ -47,8 +50,12 @@ describe('load homepage', () => { cy.get('#settings_password_verify').type('secret') cy.get('#settings_password_verify_ok').click() cy.get('#app').click() + cy.get('button#0').should('exist') + cy.get('button#0').click() + cy.wait(500) cy.get('#settings_password').clear() cy.get('#save').click() + cy.get('.v-snackbar__content').should('exist') }) it('modifies most settings, valid values, save', () => { diff --git a/package-lock.json b/package-lock.json index baab7f3..8eee540 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@vuelidate/core": "2.0.0-alpha.42", "@vuelidate/validators": "2.0.0-alpha.30", "axios": "^1.1.3", - "blockly": "^9.0.1", + "blockly": "^9.2.0", "core-js": "^3.23.3", "material-design-icons-iconfont": "^6.7.0", "open-dyslexic": "^1.0.3", @@ -39,7 +39,7 @@ "devDependencies": { "@cypress/code-coverage": "^3.10.0", "@vitejs/plugin-vue": "^3.1.2", - "cypress": "^10.11.0", + "cypress": "^12.3.0", "eslint": "^8.21.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.25.4", @@ -2445,6 +2445,14 @@ "node": ">= 8" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "engines": { + "node": ">= 10" + } + }, "node_modules/@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -2873,9 +2881,9 @@ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "bin": { "acorn": "bin/acorn" }, @@ -2884,23 +2892,12 @@ } }, "node_modules/acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, "node_modules/acorn-import-assertions": { @@ -2922,13 +2919,24 @@ } }, "node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "engines": { "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -3082,11 +3090,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==" - }, "node_modules/array-includes": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", @@ -3137,6 +3140,7 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, "dependencies": { "safer-buffer": "~2.1.0" } @@ -3145,6 +3149,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, "engines": { "node": ">=0.8" } @@ -3182,6 +3187,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, "engines": { "node": "*" } @@ -3189,7 +3195,8 @@ "node_modules/aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true }, "node_modules/axios": { "version": "1.1.3", @@ -3311,6 +3318,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } @@ -3339,11 +3347,11 @@ "dev": true }, "node_modules/blockly": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/blockly/-/blockly-9.0.1.tgz", - "integrity": "sha512-xuEg6M1lBmQqzDQyExdaTv27gME64oNrEq3KlSk5CQegFhgz5NnKtrpM9ihiE3XBGQCwp9G6rsnPB6A0vkzi+g==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/blockly/-/blockly-9.2.0.tgz", + "integrity": "sha512-rygZJupS5u4DMGGQ70gExH71c34vUEUjTVVBzhgVH7PCAK2RaitCNwr2yF6hGj/QTVodkjjEOdTzbHqLbuPipQ==", "dependencies": { - "jsdom": "15.2.1" + "jsdom": "20.0.3" } }, "node_modules/bluebird": { @@ -3378,11 +3386,6 @@ "node": ">=8" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, "node_modules/browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -3522,7 +3525,8 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true }, "node_modules/chalk": { "version": "4.1.2", @@ -3789,7 +3793,8 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -3827,9 +3832,9 @@ } }, "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" }, "node_modules/cssstyle": { "version": "2.3.0", @@ -3853,9 +3858,9 @@ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, "node_modules/cypress": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", - "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.3.0.tgz", + "integrity": "sha512-ZQNebibi6NBt51TRxRMYKeFvIiQZ01t50HSy7z/JMgRVqBUey3cdjog5MYEbzG6Ktti5ckDt1tfcC47lmFwXkw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3906,7 +3911,7 @@ "cypress": "bin/cypress" }, "engines": { - "node": ">=12.0.0" + "node": "^14.0.0 || ^16.0.0 || >=18.0.0" } }, "node_modules/cypress/node_modules/@types/node": { @@ -3979,6 +3984,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -3987,13 +3993,16 @@ } }, "node_modules/data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/dayjs": { @@ -4027,6 +4036,11 @@ "node": ">=0.10.0" } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -4105,17 +4119,21 @@ } }, "node_modules/domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", "dependencies": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -4174,6 +4192,17 @@ "node": ">=8.6" } }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/es-abstract": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", @@ -4607,12 +4636,12 @@ } }, "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dependencies": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1" }, @@ -4621,20 +4650,12 @@ "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, "optionalDependencies": { "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -5067,7 +5088,8 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "node_modules/extract-zip": { "version": "2.0.1", @@ -5093,6 +5115,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, "engines": [ "node >=0.6.0" ] @@ -5290,6 +5313,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, "engines": { "node": "*" } @@ -5483,6 +5507,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, "dependencies": { "assert-plus": "^1.0.0" } @@ -5585,27 +5610,6 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -5700,11 +5704,14 @@ } }, "node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dependencies": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/html-escaper": { @@ -5713,18 +5720,29 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" + "node": ">= 6" } }, "node_modules/human-signals": { @@ -5737,11 +5755,11 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -5856,14 +5874,6 @@ "node": ">= 0.10" } }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "engines": { - "node": ">=4" - } - }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -6049,6 +6059,11 @@ "node": ">=8" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -6122,7 +6137,8 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", @@ -6166,7 +6182,8 @@ "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.0.0", @@ -6342,42 +6359,43 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "node_modules/jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "dependencies": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=14" }, "peerDependencies": { "canvas": "^2.5.0" @@ -6388,22 +6406,6 @@ } } }, - "node_modules/jsdom/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsdom/node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -6425,7 +6427,8 @@ "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -6441,7 +6444,8 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true }, "node_modules/json5": { "version": "1.0.1", @@ -6467,20 +6471,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/klona": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", @@ -6589,7 +6579,8 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -6616,11 +6607,6 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -6905,9 +6891,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", - "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" }, "node_modules/nyc": { "version": "15.1.0", @@ -7023,14 +7009,6 @@ "node": ">=8" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -7231,9 +7209,15 @@ } }, "node_modules/parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/path-exists": { "version": "4.0.0", @@ -7285,7 +7269,8 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.0", @@ -7376,11 +7361,6 @@ "node": ">=8" } }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, "node_modules/postcss": { "version": "8.4.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", @@ -7490,10 +7470,16 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, "engines": { "node": ">=0.6" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -7672,37 +7658,6 @@ "node": ">=4" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -7712,74 +7667,6 @@ "throttleit": "^1.0.0" } }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7795,6 +7682,11 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -7940,14 +7832,14 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "node_modules/saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dependencies": { - "xmlchars": "^2.1.1" + "xmlchars": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=v12.22.7" } }, "node_modules/schema-utils": { @@ -8130,6 +8022,7 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -8150,14 +8043,6 @@ "node": ">=0.10.0" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -8449,24 +8334,36 @@ } }, "node_modules/tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" } }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dependencies": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" } }, "node_modules/tsconfig-paths": { @@ -8491,6 +8388,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -8501,7 +8399,8 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", @@ -8701,21 +8600,21 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -8726,6 +8625,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, "engines": [ "node >=0.6.0" ], @@ -9026,30 +8926,17 @@ "vue": "^3.2.0" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, "node_modules/w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dependencies": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" } }, - "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -9064,9 +8951,12 @@ } }, "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } }, "node_modules/webpack": { "version": "5.75.0", @@ -9153,26 +9043,34 @@ } }, "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dependencies": { - "iconv-lite": "0.4.24" + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" } }, "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "engines": { + "node": ">=12" + } }, "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/which": { @@ -9255,15 +9153,15 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9278,7 +9176,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, "engines": { "node": ">=12" } @@ -11152,6 +11049,11 @@ "fastq": "^1.6.0" } }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + }, "@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -11533,24 +11435,17 @@ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" }, "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - } + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, "acorn-import-assertions": { @@ -11568,9 +11463,17 @@ "requires": {} }, "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } }, "aggregate-error": { "version": "3.1.0", @@ -11674,11 +11577,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==" - }, "array-includes": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", @@ -11714,6 +11612,7 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -11721,7 +11620,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true }, "astral-regex": { "version": "2.0.0", @@ -11749,12 +11649,14 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true }, "aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true }, "axios": { "version": "1.1.3", @@ -11841,6 +11743,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -11863,11 +11766,11 @@ "dev": true }, "blockly": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/blockly/-/blockly-9.0.1.tgz", - "integrity": "sha512-xuEg6M1lBmQqzDQyExdaTv27gME64oNrEq3KlSk5CQegFhgz5NnKtrpM9ihiE3XBGQCwp9G6rsnPB6A0vkzi+g==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/blockly/-/blockly-9.2.0.tgz", + "integrity": "sha512-rygZJupS5u4DMGGQ70gExH71c34vUEUjTVVBzhgVH7PCAK2RaitCNwr2yF6hGj/QTVodkjjEOdTzbHqLbuPipQ==", "requires": { - "jsdom": "15.2.1" + "jsdom": "20.0.3" } }, "bluebird": { @@ -11899,11 +11802,6 @@ "fill-range": "^7.0.1" } }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, "browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -11985,7 +11883,8 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true }, "chalk": { "version": "4.1.2", @@ -12189,7 +12088,8 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true }, "cross-spawn": { "version": "7.0.3", @@ -12215,9 +12115,9 @@ "dev": true }, "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" }, "cssstyle": { "version": "2.3.0", @@ -12240,9 +12140,9 @@ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, "cypress": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", - "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.3.0.tgz", + "integrity": "sha512-ZQNebibi6NBt51TRxRMYKeFvIiQZ01t50HSy7z/JMgRVqBUey3cdjog5MYEbzG6Ktti5ckDt1tfcC47lmFwXkw==", "dev": true, "requires": { "@cypress/request": "^2.88.10", @@ -12343,18 +12243,19 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, "requires": { "assert-plus": "^1.0.0" } }, "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" } }, "dayjs": { @@ -12377,6 +12278,11 @@ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -12433,17 +12339,18 @@ } }, "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", "requires": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "^7.0.0" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -12493,6 +12400,11 @@ "ansi-colors": "^4.1.1" } }, + "entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" + }, "es-abstract": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", @@ -12718,22 +12630,17 @@ "dev": true }, "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "requires": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -13066,7 +12973,8 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extract-zip": { "version": "2.0.1", @@ -13083,7 +12991,8 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -13228,7 +13137,8 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true }, "form-data": { "version": "4.0.0", @@ -13359,6 +13269,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -13434,20 +13345,6 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -13511,11 +13408,11 @@ } }, "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "^2.0.0" } }, "html-escaper": { @@ -13524,14 +13421,23 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" } }, "human-signals": { @@ -13541,11 +13447,11 @@ "dev": true }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "ieee754": { @@ -13619,11 +13525,6 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==" - }, "is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -13746,6 +13647,11 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -13792,7 +13698,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "is-unicode-supported": { "version": "0.1.0", @@ -13824,7 +13731,8 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true }, "istanbul-lib-coverage": { "version": "3.0.0", @@ -13962,51 +13870,40 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "requires": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - } + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "requires": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" } }, "jsesc": { @@ -14024,7 +13921,8 @@ "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -14040,7 +13938,8 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true }, "json5": { "version": "1.0.1", @@ -14061,17 +13960,6 @@ "universalify": "^2.0.0" } }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "klona": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", @@ -14144,7 +14032,8 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "lodash.debounce": { "version": "4.0.8", @@ -14171,11 +14060,6 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -14386,9 +14270,9 @@ } }, "nwsapi": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", - "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" }, "nyc": { "version": "15.1.0", @@ -14479,11 +14363,6 @@ } } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -14627,9 +14506,12 @@ } }, "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "requires": { + "entities": "^4.4.0" + } }, "path-exists": { "version": "4.0.0", @@ -14669,7 +14551,8 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, "picocolors": { "version": "1.0.0", @@ -14735,11 +14618,6 @@ } } }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, "postcss": { "version": "8.4.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", @@ -14814,7 +14692,13 @@ "qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "queue-microtask": { "version": "1.2.3", @@ -14949,54 +14833,6 @@ "es6-error": "^4.0.1" } }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, "request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -15006,35 +14842,6 @@ "throttleit": "^1.0.0" } }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15047,6 +14854,11 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -15136,11 +14948,11 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "requires": { - "xmlchars": "^2.1.1" + "xmlchars": "^2.2.0" } }, "schema-utils": { @@ -15283,6 +15095,7 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -15295,11 +15108,6 @@ "tweetnacl": "~0.14.0" } }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -15495,21 +15303,29 @@ } }, "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + } } }, "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "requires": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" } }, "tsconfig-paths": { @@ -15534,6 +15350,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -15541,7 +15358,8 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true }, "type-check": { "version": "0.4.0", @@ -15691,17 +15509,21 @@ "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -15712,6 +15534,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -15892,29 +15715,12 @@ "@vue/devtools-api": "^6.0.0-beta.11" } }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - } + "xml-name-validator": "^4.0.0" } }, "watchpack": { @@ -15928,9 +15734,9 @@ } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" }, "webpack": { "version": "5.75.0", @@ -15995,26 +15801,25 @@ "dev": true }, "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "requires": { - "iconv-lite": "0.4.24" + "iconv-lite": "0.6.3" } }, "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" }, "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" } }, "which": { @@ -16079,16 +15884,15 @@ } }, "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", "requires": {} }, "xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" }, "xmlchars": { "version": "2.2.0", diff --git a/package.json b/package.json index 397da7e..4d6c338 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@vuelidate/core": "2.0.0-alpha.42", "@vuelidate/validators": "2.0.0-alpha.30", "axios": "^1.1.3", - "blockly": "^9.0.1", + "blockly": "^9.2.0", "core-js": "^3.23.3", "material-design-icons-iconfont": "^6.7.0", "open-dyslexic": "^1.0.3", @@ -43,7 +43,7 @@ "vite-plugin-istanbul": "^3.0.2", "@vitejs/plugin-vue": "^3.1.2", "stylus": "0.59.0", - "cypress": "^10.11.0", + "cypress": "^12.3.0", "eslint": "^8.21.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.25.4", diff --git a/src/assets/js/blockly/bot_de.json b/src/assets/js/blockly/bot_de.json new file mode 100644 index 0000000..a201cc5 --- /dev/null +++ b/src/assets/js/blockly/bot_de.json @@ -0,0 +1,125 @@ +{ + "CODERBOT_MOVE_FORWARD": "vorwärts bewegen", + "CODERBOT_MOVE_BACKWARD": "rückwärts bewegen", + "CODERBOT_MOVE_LEFT": "links abbiegen", + "CODERBOT_MOVE_RIGHT": "rechts abbiegen", + "CODERBOT_MOVE_ADV_MOVE": "Bot verschieben", + "CODERBOT_MOVE_MOTION_MOVE": "Bot bewegen (Bewegungssteuerung)", + "CODERBOT_MOVE_MOTION_TURN": "Bot drehen (Bewegungssteuerung)", + "CODERBOT_MOVE_ADV_MOTOR": "Motorsteuerung", + "CODERBOT_MOVE_ADV_SPEED": "mit Geschwindigkeit", + "CODERBOT_MOVE_ADV_MOTOR_SPEED_LEFT": "Geschwindigkeit nach links", + "CODERBOT_MOVE_ADV_MOTOR_SPEED_RIGHT": "Rechtsgeschwindigkeit", + "CODERBOT_MOVE_ADV_MOTOR_STEPS_LEFT": "Schritte nach links", + "CODERBOT_MOVE_ADV_MOTOR_STEPS_RIGHT": "Schritte nach rechts", + "CODERBOT_MOVE_ADV_MOTOR_SPEED": "mit Geschwindigkeit", + "CODERBOT_MOVE_ADV_MOTOR_DISTANCE": "Entfernung", + "CODERBOT_MOVE_ADV_ELAPSE": "für", + "CODERBOT_MOVE_MOTION_DIST": "Entfernung", + "CODERBOT_MOVE_MOTION_ANGLE": "Winkel", + "CODERBOT_MOVE_ADV_TIP_FORWARD": "vorwärts", + "CODERBOT_MOVE_ADV_TIP_BACKWARD": "rückwärts", + "CODERBOT_MOVE_ADV_TIP_RIGHT": "richtig", + "CODERBOT_MOVE_ADV_TIP_LEFT": "links", + "CODERBOT_MOVE_ADV_TIP_TAIL": "bei Geschwindigkeit (0-100%) für Zeit (Sekunden)", + "CODERBOT_MOVE_MOTION_MOVE_TIP": "Bot bewegen, Sichtkontrolle verwenden", + "CODERBOT_MOVE_MOTION_TURN_TIP": "Bot drehen, mit Sicht steuern", + "CODERBOT_MOVE_SERVO": "Servo bewegen", + "CODERBOT_MOVE_SERVO_1": "1", + "CODERBOT_MOVE_SERVO_2": "2", + "CODERBOT_MOVE_SERVO_ANGLE": "Winkel", + "CODERBOT_MOVE_SERVO_TIP_TAIL": "Servowinkel (-90..90°)", + "CODERBOT_MOVE_STOP": "stoppen", + "CODERBOT_SAY": "sagen", + "CODERBOT_LOCALE_EN": "Englisch", + "CODERBOT_LOCALE_IT": "Italienisch", + "CODERBOT_LOCALE_FR": "Französisch", + "CODERBOT_LOCALE_ES": "Spanisch", + "CODERBOT_PHOTO_TAKE": "Foto machen", + "CODERBOT_VIDEO_REC": "Videoaufnahme", + "CODERBOT_VIDEO_STOP": "Videostopp", + "CODERBOT_SLEEP": "schlafen", + "CODERBOT_SENSOR_PATHAHEAD": "Weg voraus", + "CODERBOT_SENSOR_FINDLINE": "Linie finden", + "CODERBOT_SENSOR_FINDFACE": "Gesicht finden", + "CODERBOT_SENSOR_FINDSIGNAL": "Signal finden", + "CODERBOT_SENSOR_FINDCOLOR_FIND": "finden", + "CODERBOT_SENSOR_FINDCOLOR_COLOR": "von Farbe", + "CODERBOT_SENSOR_FINDCOLOR_DIST": "Entfernung", + "CODERBOT_SENSOR_FINDCOLOR_ANGLE": "Winkel", + "CODERBOT_SENSOR_FINDCOLOR_BOTH": "beide", + "CODERBOT_SENSOR_FINDFACE_X": "x-Koord", + "CODERBOT_SENSOR_FINDFACE_Y": "y-Koord", + "CODERBOT_SENSOR_FINDFACE_SIZE": "Größe", + "CODERBOT_SENSOR_FINDFACE_ALL": "x, y, Größe (als Liste)", + "CODERBOT_SENSOR_FINDLOGO": "Logo finden", + "CODERBOT_SENSOR_FINDCLASS": "Klasse finden", + "CODERBOT_SENSOR_FINDOBJECTS": "Objekte finden", + "CODERBOT_SENSOR_AVERAGE": "Bilddurchschnitt abrufen", + "CODERBOT_SENSOR_AVERAGE_HUE": "Farbton", + "CODERBOT_SENSOR_AVERAGE_SATURATION": "Sättigung", + "CODERBOT_SENSOR_AVERAGE_VALUE": "Wert (Helligkeit)", + "CODERBOT_SENSOR_AVERAGE_ALL": "HSV (als Liste)", + "CODERBOT_SENSOR_FINDTEXT_FIND": "Text finden", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHA": "Alpha (A..Z)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_NUM": "Numerisch (0..9)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHANUM": "Alphanumerisch (A..Z;0..9)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_UNSPEC": "Beliebig", + "CODERBOT_SENSOR_FINDTEXT_COLOR": "Hintergrundfarbe", + "CODERBOT_SENSOR_FINDQRCODE": "Bar-QRCode lesen", + "CODERBOT_SENSOR_FINDARCODE": "AR-Code lesen", + "CODERBOT_AUDIO_RECORD_FILE_NAME": "als Datei aufnehmen", + "CODERBOT_AUDIO_RECORD_FILE_ELAPSE": "Sekunden", + "CODERBOT_AUDIO_PLAY_FILE": "Datei abspielen", + "CODERBOT_AUDIO_HEAR": "Ton hören", + "CODERBOT_AUDIO_HEAR_LEVEL": " Niveau", + "CODERBOT_AUDIO_HEAR_ELAPSE": "für bis zu Sekunden", + "CODERBOT_AUDIO_LISTEN": "hören", + "CODERBOT_AUDIO_LISTEN_MODEL_SIMPLE": "einfache Befehle", + "CODERBOT_AUDIO_LISTEN_MODEL_MEDIUM": "mittlere Befehle", + "CODERBOT_AUDIO_LISTEN_MODEL_ADV": "Vorwärtsbefehle", + "CODERBOT_SONAR_GET_DISTANCE": "Entfernung mit Sonar erhalten", + "CODERBOT_SONAR_SENSOR_1": "1", + "CODERBOT_SONAR_SENSOR_2": "2", + "CODERBOT_SONAR_SENSOR_3": "3", + "CODERBOT_SONAR_SENSOR_4": "4", + "CODERBOT_MPU_GET_GYRO": "Kreiselachse", + "CODERBOT_MPU_GET_ACCEL": "Beschleunigungsmesserachse", + "CODERBOT_MPU_GET_HEADING": "Überschrift", + "CODERBOT_MPU_GET_TEMP": "Temperatur", + "CODERBOT_MPU_AXIS_X": "x", + "CODERBOT_MPU_AXIS_Y": "y", + "CODERBOT_MPU_AXIS_Z": "z", + "CODERBOT_EVENT_WHEN": "wann", + "CODERBOT_EVENT_WITH": "mit", + "CODERBOT_EVENT_PUBLISH": "veröffentlichen", + "CODERBOT_EVENT_ON_TOPIC": "zum Thema", + "CODERBOT_EVENT_GENERATOR": "Ereignisgenerator", + "CODERBOT_CONVERSATION_PARSE": "parsen", + "CODERBOT_ATMEGA_READ": "Lesen", + "CODERBOT_ATMEGA_VALUE": "Wert", + "CODERBOT_ATMEGA_AI_1": "Analogeingang 1", + "CODERBOT_ATMEGA_AI_2": "Analogeingang 2", + "CODERBOT_ATMEGA_DI_3": "Digitaleingang 1", + "CODERBOT_ATMEGA_DI_4": "Digitaleingang 2", + "CODERBOT_ATMEGA_DI_5": "Digitaleingang3", + "CODERBOT_ATMEGA_DI_6": "Digitaleingang 4", + "CODERBOT_ATMEGA_WRITE": "Schreiben", + "CODERBOT_ATMEGA_DO_1": "Digitalausgang 1", + "CODERBOT_ATMEGA_DO_2": "Digitalausgang 2", + "CODERBOT_ATMEGA_DO_3": "Digitalausgang 3", + "CODERBOT_ATMEGA_DO_4": "Digitalausgang 4", + "CODERBOT_ATMEGA_DO_5": "Digitalausgang 5", + "CODERBOT_ATMEGA_DO_6": "Digitalausgang 6", + "CODERBOT_ATMEGA_DO_7": "Digitalausgang 7", + "CODERBOT_ATMEGA_DO_8": "Digitalausgang 8", + "CODERBOT_ATMEGA_DO_9": "Digitalausgang 9", + "CODERBOT_ATMEGA_DO_10": "Digitalausgang 10", + "CODERBOT_ATMEGA_DO_11": "Digitalausgang 11", + "CODERBOT_ATMEGA_LED_SET": "LED-Steuerung", + "CODERBOT_ATMEGA_LED_BEGIN": "Start-Led", + "CODERBOT_ATMEGA_LED_END": "LED beenden", + "CODERBOT_ATMEGA_LED_RED": "Rote Intensität", + "CODERBOT_ATMEGA_LED_GREEN": "Grüne Intensität", + "CODERBOT_ATMEGA_LED_BLUE": "Blaue Intensität" +} \ No newline at end of file diff --git a/src/assets/js/blockly/bot_en.json b/src/assets/js/blockly/bot_en.json index 88ab52b..04add66 100644 --- a/src/assets/js/blockly/bot_en.json +++ b/src/assets/js/blockly/bot_en.json @@ -61,13 +61,11 @@ "CODERBOT_SENSOR_AVERAGE_VALUE": "Value (brightness)", "CODERBOT_SENSOR_AVERAGE_ALL": "HSV (as list)", "CODERBOT_SENSOR_FINDTEXT_FIND": "find text", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ENG": "English", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ITA": "Italian", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_FRE": "French", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_SPA": "Spanish", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_DEU": "German", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHA": "Alpha (A..Z)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_NUM": "Numeric (0..9)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHANUM": "Alphanumeric (A..Z;0..9)", "CODERBOT_SENSOR_FINDTEXT_ACCEPT_UNSPEC": "Any", - "CODERBOT_SENSOR_FINDTEXT_TIMEOUT": "max time", + "CODERBOT_SENSOR_FINDTEXT_COLOR": "background color", "CODERBOT_SENSOR_FINDQRCODE": "read Bar-QRCode", "CODERBOT_SENSOR_FINDARCODE": "read AR Code", "CODERBOT_AUDIO_RECORD_FILE_NAME": "record as file", diff --git a/src/assets/js/blockly/bot_es.json b/src/assets/js/blockly/bot_es.json new file mode 100644 index 0000000..73773ff --- /dev/null +++ b/src/assets/js/blockly/bot_es.json @@ -0,0 +1,125 @@ +{ + "CODERBOT_MOVE_FORWARD": "avanzar", + "CODERBOT_MOVE_BACKWARD": "mover hacia atrás", + "CODERBOT_MOVE_LEFT": "girar a la izquierda", + "CODERBOT_MOVE_RIGHT": "girar a la derecha", + "CODERBOT_MOVE_ADV_MOVE": "mover bot", + "CODERBOT_MOVE_MOTION_MOVE": "mover bot (control de movimiento)", + "CODERBOT_MOVE_MOTION_TURN": "girar bot (control de movimiento)", + "CODERBOT_MOVE_ADV_MOTOR": "control de motores", + "CODERBOT_MOVE_ADV_SPEED": "a velocidad", + "CODERBOT_MOVE_ADV_MOTOR_SPEED_LEFT": "velocidad izquierda", + "CODERBOT_MOVE_ADV_MOTOR_SPEED_RIGHT": "velocidad a la derecha", + "CODERBOT_MOVE_ADV_MOTOR_STEPS_LEFT": "pasos restantes", + "CODERBOT_MOVE_ADV_MOTOR_STEPS_RIGHT": "pasos a la derecha", + "CODERBOT_MOVE_ADV_MOTOR_SPEED": "a velocidad", + "CODERBOT_MOVE_ADV_MOTOR_DISTANCE": "distancia", + "CODERBOT_MOVE_ADV_ELAPSE": "para", + "CODERBOT_MOVE_MOTION_DIST": "distancia", + "CODERBOT_MOVE_MOTION_ANGLE": "ángulo", + "CODERBOT_MOVE_ADV_TIP_FORWARD": "adelante", + "CODERBOT_MOVE_ADV_TIP_BACKWARD": "hacia atrás", + "CODERBOT_MOVE_ADV_TIP_RIGHT": "derecha", + "CODERBOT_MOVE_ADV_TIP_LEFT": "izquierda", + "CODERBOT_MOVE_ADV_TIP_TAIL": " a velocidad (0-100%) por tiempo (segundos)", + "CODERBOT_MOVE_MOTION_MOVE_TIP": "mover bot, usando la visión para controlar", + "CODERBOT_MOVE_MOTION_TURN_TIP": "girar bot, usando la visión para controlar", + "CODERBOT_MOVE_SERVO": "mover servo", + "CODERBOT_MOVE_SERVO_1": "1", + "CODERBOT_MOVE_SERVO_2": "2", + "CODERBOT_MOVE_SERVO_ANGLE": "ángulo", + "CODERBOT_MOVE_SERVO_TIP_TAIL": "ángulo del servo (-90...90°)", + "CODERBOT_MOVE_STOP": "detener", + "CODERBOT_SAY": "decir", + "CODERBOT_LOCALE_EN": "Inglés", + "CODERBOT_LOCALE_IT": "Italiano", + "CODERBOT_LOCALE_FR": "Francés", + "CODERBOT_LOCALE_ES": "Español", + "CODERBOT_PHOTO_TAKE": "tomar foto", + "CODERBOT_VIDEO_REC": "grabación de vídeo", + "CODERBOT_VIDEO_STOP": "video detenido", + "CODERBOT_SLEEP": "dormir", + "CODERBOT_SENSOR_PATHAHEAD": "camino a seguir", + "CODERBOT_SENSOR_FINDLINE": "buscar línea", + "CODERBOT_SENSOR_FINDFACE": "buscar cara", + "CODERBOT_SENSOR_FINDSIGNAL": "encontrar señal", + "CODERBOT_SENSOR_FINDCOLOR_FIND": "buscar", + "CODERBOT_SENSOR_FINDCOLOR_COLOR": "del color", + "CODERBOT_SENSOR_FINDCOLOR_DIST": "distancia", + "CODERBOT_SENSOR_FINDCOLOR_ANGLE": "ángulo", + "CODERBOT_SENSOR_FINDCOLOR_BOTH": "ambos", + "CODERBOT_SENSOR_FINDFACE_X": "coord x", + "CODERBOT_SENSOR_FINDFACE_Y": "coord y", + "CODERBOT_SENSOR_FINDFACE_SIZE": "tamaño", + "CODERBOT_SENSOR_FINDFACE_ALL": "x, y, tamaño (como lista)", + "CODERBOT_SENSOR_FINDLOGO": "buscar logotipo", + "CODERBOT_SENSOR_FINDCLASS": "buscar clase", + "CODERBOT_SENSOR_FINDOBJECTS": "buscar objetos", + "CODERBOT_SENSOR_AVERAGE": "obtener imagen promedio", + "CODERBOT_SENSOR_AVERAGE_HUE": "Tono", + "CODERBOT_SENSOR_AVERAGE_SATURATION": "Saturación", + "CODERBOT_SENSOR_AVERAGE_VALUE": "Valor (brillo)", + "CODERBOT_SENSOR_AVERAGE_ALL": "HSV (como lista)", + "CODERBOT_SENSOR_FINDTEXT_FIND": "buscar texto", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHA": "Alfa (A..Z)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_NUM": "Numérico (0..9)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHANUM": "Alfanumérico (A..Z;0..9)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_UNSPEC": "Cualquiera", + "CODERBOT_SENSOR_FINDTEXT_COLOR": "color de fondo", + "CODERBOT_SENSOR_FINDQRCODE": "leer código QR de barras", + "CODERBOT_SENSOR_FINDARCODE": "leer código AR", + "CODERBOT_AUDIO_RECORD_FILE_NAME": "grabar como archivo", + "CODERBOT_AUDIO_RECORD_FILE_ELAPSE": "de segundos", + "CODERBOT_AUDIO_PLAY_FILE": "reproducir archivo", + "CODERBOT_AUDIO_HEAR": "escuchar sonido", + "CODERBOT_AUDIO_HEAR_LEVEL": "de nivel", + "CODERBOT_AUDIO_HEAR_ELAPSE": "hasta segundos", + "CODERBOT_AUDIO_LISTEN": "escuchar", + "CODERBOT_AUDIO_LISTEN_MODEL_SIMPLE": "comandos simples", + "CODERBOT_AUDIO_LISTEN_MODEL_MEDIUM": "comandos medios", + "CODERBOT_AUDIO_LISTEN_MODEL_ADV": "comandos avanzados", + "CODERBOT_SONAR_GET_DISTANCE": "obtener distancia con sonda", + "CODERBOT_SONAR_SENSOR_1": "1", + "CODERBOT_SONAR_SENSOR_2": "2", + "CODERBOT_SONAR_SENSOR_3": "3", + "CODERBOT_SONAR_SENSOR_4": "4", + "CODERBOT_MPU_GET_GYRO": "eje del giroscopio", + "CODERBOT_MPU_GET_ACCEL": "eje del acelerómetro", + "CODERBOT_MPU_GET_HEADING": "encabezado", + "CODERBOT_MPU_GET_TEMP": "temperatura", + "CODERBOT_MPU_AXIS_X": "x", + "CODERBOT_MPU_AXIS_Y": "y", + "CODERBOT_MPU_AXIS_Z": "z", + "CODERBOT_EVENT_WHEN": "cuándo", + "CODERBOT_EVENT_WITH": "con", + "CODERBOT_EVENT_PUBLISH": "publicar", + "CODERBOT_EVENT_ON_TOPIC": "sobre el tema", + "CODERBOT_EVENT_GENERATOR": "generador de eventos", + "CODERBOT_CONVERSATION_PARSE": "analizar", + "CODERBOT_ATMEGA_READ": "Leer", + "CODERBOT_ATMEGA_VALUE": "Valor", + "CODERBOT_ATMEGA_AI_1": "Entrada analógica 1", + "CODERBOT_ATMEGA_AI_2": "Entrada analógica 2", + "CODERBOT_ATMEGA_DI_3": "Entrada Digital 1", + "CODERBOT_ATMEGA_DI_4": "Entrada digital 2", + "CODERBOT_ATMEGA_DI_5": "Entrada digital 3", + "CODERBOT_ATMEGA_DI_6": "Entrada digital 4", + "CODERBOT_ATMEGA_WRITE": "Escribir", + "CODERBOT_ATMEGA_DO_1": "Salida Digital 1", + "CODERBOT_ATMEGA_DO_2": "Salida Digital 2", + "CODERBOT_ATMEGA_DO_3": "Salida Digital 3", + "CODERBOT_ATMEGA_DO_4": "Salida Digital 4", + "CODERBOT_ATMEGA_DO_5": "Salida digital 5", + "CODERBOT_ATMEGA_DO_6": "Salida Digital 6", + "CODERBOT_ATMEGA_DO_7": "Salida Digital 7", + "CODERBOT_ATMEGA_DO_8": "Salida Digital 8", + "CODERBOT_ATMEGA_DO_9": "Salida Digital 9", + "CODERBOT_ATMEGA_DO_10": "Salida Digital 10", + "CODERBOT_ATMEGA_DO_11": "Salida Digital 11", + "CODERBOT_ATMEGA_LED_SET": "Control de leds", + "CODERBOT_ATMEGA_LED_BEGIN": "Led de inicio", + "CODERBOT_ATMEGA_LED_END": "Led de Fin", + "CODERBOT_ATMEGA_LED_RED": "Intensidad de rojo", + "CODERBOT_ATMEGA_LED_GREEN": "Intensidad verde", + "CODERBOT_ATMEGA_LED_BLUE": "Intensidad azul" +} \ No newline at end of file diff --git a/src/assets/js/blockly/bot_fr.json b/src/assets/js/blockly/bot_fr.json index c7cca99..5d7439b 100644 --- a/src/assets/js/blockly/bot_fr.json +++ b/src/assets/js/blockly/bot_fr.json @@ -4,82 +4,122 @@ "CODERBOT_MOVE_LEFT": "tourner à gauche", "CODERBOT_MOVE_RIGHT": "tourner à droite", "CODERBOT_MOVE_ADV_MOVE": "déplacer le robot", - "CODERBOT_MOVE_MOTION_MOVE": "déplacer le robot (motion control)", - "CODERBOT_MOVE_MOTION_TURN": "tourner le robot (motion control)", - "CODERBOT_MOVE_ADV_MOTOR": "contrôler les moteurs :", - "CODERBOT_MOVE_ADV_SPEED": "vitesse", + "CODERBOT_MOVE_MOTION_MOVE": "déplacer le bot (contrôle de mouvement)", + "CODERBOT_MOVE_MOTION_TURN": "tour bot (contrôle de mouvement)", + "CODERBOT_MOVE_ADV_MOTOR": "contrôle moteur", + "CODERBOT_MOVE_ADV_SPEED": "à grande vitesse", "CODERBOT_MOVE_ADV_MOTOR_SPEED_LEFT": "vitesse à gauche", - "CODERBOT_MOVE_ADV_MOTOR_SPEED_RIGHT": "vitesse à droite", + "CODERBOT_MOVE_ADV_MOTOR_SPEED_RIGHT": "vite à droite", "CODERBOT_MOVE_ADV_MOTOR_STEPS_LEFT": "pas à gauche", - "CODERBOT_MOVE_ADV_MOTOR_STEPS_RIGHT": "pas à droite", - "CODERBOT_MOVE_ADV_ELAPSE": "durant", + "CODERBOT_MOVE_ADV_MOTOR_STEPS_RIGHT": "marche à droite", + "CODERBOT_MOVE_ADV_MOTOR_SPEED": "à vitesse", + "CODERBOT_MOVE_ADV_MOTOR_DISTANCE": "distance", + "CODERBOT_MOVE_ADV_ELAPSE": "pour", "CODERBOT_MOVE_MOTION_DIST": "distance", "CODERBOT_MOVE_MOTION_ANGLE": "angle", - "CODERBOT_MOVE_ADV_TIP_FORWARD": "en avant", + "CODERBOT_MOVE_ADV_TIP_FORWARD": "avant", "CODERBOT_MOVE_ADV_TIP_BACKWARD": "en arrière", - "CODERBOT_MOVE_ADV_TIP_RIGHT": "à droite", - "CODERBOT_MOVE_ADV_TIP_LEFT": "à gauche", - "CODERBOT_MOVE_ADV_TIP_TAIL": " avec une vitesse (0-100%) durant (secondes)", - "CODERBOT_MOVE_MOTION_MOVE_TIP": "déplace le robot, en utilisant la caméra pour controller", - "CODERBOT_MOVE_MOTION_TURN_TIP": "tourne le robot, en utilisant la caméra pour controller", - "CODERBOT_MOVE_STOP": "stop", - "CODERBOT_SAY": "dit", - "CODERBOT_LOCALE_EN": "English", - "CODERBOT_LOCALE_IT": "Italian", - "CODERBOT_LOCALE_FR": "French", - "CODERBOT_LOCALE_ES": "Spanish", - "CODERBOT_PHOTO_TAKE": "prend une photo", - "CODERBOT_VIDEO_REC": "démarre l'enregistrement vidéo", - "CODERBOT_VIDEO_STOP": "arrête l'enregistrement vidéo", - "CODERBOT_SLEEP": "attend pendant", + "CODERBOT_MOVE_ADV_TIP_RIGHT": "droit", + "CODERBOT_MOVE_ADV_TIP_LEFT": "gauche", + "CODERBOT_MOVE_ADV_TIP_TAIL": " à la vitesse (0-100 %) pendant le temps (secondes)", + "CODERBOT_MOVE_MOTION_MOVE_TIP": "déplacer le bot, en utilisant la vision pour contrôler", + "CODERBOT_MOVE_MOTION_TURN_TIP": "tourner le bot, utiliser la vision pour contrôler", + "CODERBOT_MOVE_SERVO": "déplacer le servo", + "CODERBOT_MOVE_SERVO_1": "1", + "CODERBOT_MOVE_SERVO_2": "2", + "CODERBOT_MOVE_SERVO_ANGLE": "angle", + "CODERBOT_MOVE_SERVO_TIP_TAIL": "angle d'asservissement (-90..90°)", + "CODERBOT_MOVE_STOP": "arrêter", + "CODERBOT_SAY": "dire", + "CODERBOT_LOCALE_EN": "Anglais", + "CODERBOT_LOCALE_IT": "Italien", + "CODERBOT_LOCALE_FR": "Français", + "CODERBOT_LOCALE_ES": "Espagnol", + "CODERBOT_PHOTO_TAKE": "prendre une photo", + "CODERBOT_VIDEO_REC": "enregistrement vidéo", + "CODERBOT_VIDEO_STOP": "arrêt vidéo", + "CODERBOT_SLEEP": "dormir", "CODERBOT_SENSOR_PATHAHEAD": "chemin devant", - "CODERBOT_SENSOR_FINDLINE": "trouve la ligne", - "CODERBOT_SENSOR_FINDFACE": "trouve un visage", - "CODERBOT_SENSOR_FINDSIGNAL": "trouve un signal", - "CODERBOT_SENSOR_FINDCOLOR_FIND": "trouve", - "CODERBOT_SENSOR_FINDCOLOR_COLOR": "de cette couleur", - "CODERBOT_SENSOR_FINDCOLOR_DIST": "la distance", - "CODERBOT_SENSOR_FINDCOLOR_ANGLE": "l'angle", - "CODERBOT_SENSOR_FINDCOLOR_BOTH": "la distance et l'angle", - "CODERBOT_SENSOR_FINDFACE_X": "abscisse", - "CODERBOT_SENSOR_FINDFACE_Y": "ordonnée", + "CODERBOT_SENSOR_FINDLINE": "trouver la ligne", + "CODERBOT_SENSOR_FINDFACE": "trouver un visage", + "CODERBOT_SENSOR_FINDSIGNAL": "trouver le signal", + "CODERBOT_SENSOR_FINDCOLOR_FIND": "trouver", + "CODERBOT_SENSOR_FINDCOLOR_COLOR": "à partir de la couleur", + "CODERBOT_SENSOR_FINDCOLOR_DIST": "distance", + "CODERBOT_SENSOR_FINDCOLOR_ANGLE": "angle", + "CODERBOT_SENSOR_FINDCOLOR_BOTH": "les deux", + "CODERBOT_SENSOR_FINDFACE_X": "x coord", + "CODERBOT_SENSOR_FINDFACE_Y": "y coord", "CODERBOT_SENSOR_FINDFACE_SIZE": "taille", - "CODERBOT_SENSOR_FINDFACE_ALL": "x, y, taille (sous forme de liste)", - "CODERBOT_SENSOR_AVERAGE": "get image average", - "CODERBOT_SENSOR_AVERAGE_HUE": "Hue", + "CODERBOT_SENSOR_FINDFACE_ALL": "x, y, taille (comme liste)", + "CODERBOT_SENSOR_FINDLOGO": "trouver le logo", + "CODERBOT_SENSOR_FINDCLASS": "trouver la classe", + "CODERBOT_SENSOR_FINDOBJECTS": "trouver des objets", + "CODERBOT_SENSOR_AVERAGE": "obtenir la moyenne des images", + "CODERBOT_SENSOR_AVERAGE_HUE": "Teinte", "CODERBOT_SENSOR_AVERAGE_SATURATION": "Saturation", - "CODERBOT_SENSOR_AVERAGE_VALUE": "Value (brightness)", - "CODERBOT_SENSOR_AVERAGE_ALL": "HSV (as list)", - "CODERBOT_SENSOR_FINDLOGO": "trouve le logo", - "CODERBOT_SENSOR_FINDCLASS": "trouve le class", - "CODERBOT_SENSOR_FINDTEXT_FIND": "trouve le text", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ENG": "English", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ITA": "Italian", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_FRE": "French", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_SPA": "Spanish", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_DEU": "German", - "CODERBOT_SENSOR_FINDTEXT_ACCEPT_UNSPEC": "Any", - "CODERBOT_SENSOR_FINDTEXT_TIMEOUT": "max time", - "CODERBOT_SENSOR_FINDQRCODE": "trouve le Bar/QRCode", - "CODERBOT_SENSOR_FINDARCODE": "trouve le AR Code", - "CODERBOT_AUDIO_RECORD_FILE_NAME": "record as file", - "CODERBOT_AUDIO_RECORD_FILE_ELAPSE": " of seconds", - "CODERBOT_AUDIO_PLAY_FILE": "play file", - "CODERBOT_AUDIO_HEAR": "hear sound", - "CODERBOT_AUDIO_HEAR_LEVEL": " of level", - "CODERBOT_AUDIO_HEAR_ELAPSE": "for up to seconds", - "CODERBOT_AUDIO_LISTEN": "listen", - "CODERBOT_AUDIO_LISTEN_MODEL_SIMPLE": "simple commands", - "CODERBOT_AUDIO_LISTEN_MODEL_MEDIUM": "medium commands", - "CODERBOT_AUDIO_LISTEN_MODEL_ADV": "advance commands", - "CODERBOT_SONAR_GET_DISTANCE": "get distance with", - "CODERBOT_SONAR_SENSOR_1": "sonar 1", - "CODERBOT_SONAR_SENSOR_2": "sonar 2", - "CODERBOT_SONAR_SENSOR_3": "sonar 3", - "CODERBOT_EVENT_WHEN": "when", - "CODERBOT_EVENT_WITH": "with", - "CODERBOT_EVENT_PUBLISH": "publish", - "CODERBOT_EVENT_ON_TOPIC": "on topic", - "CODERBOT_EVENT_GENERATOR": "event generator", - "CODERBOT_CONVERSATION_PARSE": "parse" + "CODERBOT_SENSOR_AVERAGE_VALUE": "Valeur (luminosité)", + "CODERBOT_SENSOR_AVERAGE_ALL": "HSV (comme liste)", + "CODERBOT_SENSOR_FINDTEXT_FIND": "trouver du texte", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHA": "Alpha (A..Z)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_NUM": "Numérique (0..9)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHANUM": "Alphanumérique (A..Z;0..9)", + "CODERBOT_SENSOR_FINDTEXT_ACCEPT_UNSPEC": "Tout", + "CODERBOT_SENSOR_FINDTEXT_COLOR": "couleur de fond", + "CODERBOT_SENSOR_FINDQRCODE": "lire le code QR à barres", + "CODERBOT_SENSOR_FINDARCODE": "lire le code AR", + "CODERBOT_AUDIO_RECORD_FILE_NAME": "enregistrer en tant que fichier", + "CODERBOT_AUDIO_RECORD_FILE_ELAPSE": " de secondes", + "CODERBOT_AUDIO_PLAY_FILE": "jouer le fichier", + "CODERBOT_AUDIO_HEAR": "entendre le son", + "CODERBOT_AUDIO_HEAR_LEVEL": " de niveau", + "CODERBOT_AUDIO_HEAR_ELAPSE": "jusqu'à secondes", + "CODERBOT_AUDIO_LISTEN": "écouter", + "CODERBOT_AUDIO_LISTEN_MODEL_SIMPLE": "commandes simples", + "CODERBOT_AUDIO_LISTEN_MODEL_MEDIUM": "commandes moyennes", + "CODERBOT_AUDIO_LISTEN_MODEL_ADV": "commandes avancées", + "CODERBOT_SONAR_GET_DISTANCE": "obtenir la distance avec le sonar", + "CODERBOT_SONAR_SENSOR_1": "1", + "CODERBOT_SONAR_SENSOR_2": "2", + "CODERBOT_SONAR_SENSOR_3": "3", + "CODERBOT_SONAR_SENSOR_4": "4", + "CODERBOT_MPU_GET_GYRO": "axe gyroscopique", + "CODERBOT_MPU_GET_ACCEL": "axe accéléromètre", + "CODERBOT_MPU_GET_HEADING": "en-tête", + "CODERBOT_MPU_GET_TEMP": "température", + "CODERBOT_MPU_AXIS_X": "x", + "CODERBOT_MPU_AXIS_Y": "y", + "CODERBOT_MPU_AXIS_Z": "z", + "CODERBOT_EVENT_WHEN": "quand", + "CODERBOT_EVENT_WITH": "avec", + "CODERBOT_EVENT_PUBLISH": "publier", + "CODERBOT_EVENT_ON_TOPIC": "sur le sujet", + "CODERBOT_EVENT_GENERATOR": "générateur d'événements", + "CODERBOT_CONVERSATION_PARSE": "analyser", + "CODERBOT_ATMEGA_READ": "Lire", + "CODERBOT_ATMEGA_VALUE": "Valeur", + "CODERBOT_ATMEGA_AI_1": "Entrée analogique 1", + "CODERBOT_ATMEGA_AI_2": "Entrée analogique 2", + "CODERBOT_ATMEGA_DI_3": "Entrée numérique 1", + "CODERBOT_ATMEGA_DI_4": "Entrée numérique 2", + "CODERBOT_ATMEGA_DI_5": "Entrée numérique3", + "CODERBOT_ATMEGA_DI_6": "Entrée numérique 4", + "CODERBOT_ATMEGA_WRITE": "Écrire", + "CODERBOT_ATMEGA_DO_1": "Sortie numérique 1", + "CODERBOT_ATMEGA_DO_2": "Sortie numérique 2", + "CODERBOT_ATMEGA_DO_3": "Sortie numérique 3", + "CODERBOT_ATMEGA_DO_4": "Sortie numérique 4", + "CODERBOT_ATMEGA_DO_5": "Sortie numérique 5", + "CODERBOT_ATMEGA_DO_6": "Sortie numérique 6", + "CODERBOT_ATMEGA_DO_7": "Sortie numérique 7", + "CODERBOT_ATMEGA_DO_8": "Sortie numérique 8", + "CODERBOT_ATMEGA_DO_9": "Sortie numérique 9", + "CODERBOT_ATMEGA_DO_10": "Sortie numérique 10", + "CODERBOT_ATMEGA_DO_11": "Sortie numérique 11", + "CODERBOT_ATMEGA_LED_SET": "Contrôle des voyants", + "CODERBOT_ATMEGA_LED_BEGIN": "DEL de démarrage", + "CODERBOT_ATMEGA_LED_END": "Fin Led", + "CODERBOT_ATMEGA_LED_RED": "Intensité rouge", + "CODERBOT_ATMEGA_LED_GREEN": "Intensité verte", + "CODERBOT_ATMEGA_LED_BLUE": "Intensité bleue" } \ No newline at end of file diff --git a/src/common/coderbot.js b/src/common/coderbot.js index 4f374ae..13cbde3 100644 --- a/src/common/coderbot.js +++ b/src/common/coderbot.js @@ -24,7 +24,6 @@ class CoderBot { const defaultActivity = { stock: true, default: true, - uiLang: 'browser', defaultView: null, exec: { camera: true, @@ -193,6 +192,7 @@ class CoderBot { data.movementUseMPU = remoteConfig.movement_use_mpu; data.movementUseMotion = remoteConfig.movement_use_motion; data.movementUseEncoder = remoteConfig.movement_use_encoder; + data.locale = remoteConfig.locale; this.$store.commit('setSettings', data); } @@ -244,7 +244,8 @@ class CoderBot { prog_scrollbars: settings.progScrollbars, movement_use_mpu: settings.movementUseMPU, movement_use_motion: settings.movementUseMotion, - movement_use_encoder: settings.movementUseEncoder + movement_use_encoder: settings.movementUseEncoder, + locale: settings.locale }; this.$store.commit('setSettings', settings); return this.$axios.put(`${this.CB}/settings`, legacySettings); diff --git a/src/components/Activity.vue b/src/components/Activity.vue index e91d530..d8401bc 100644 --- a/src/components/Activity.vue +++ b/src/components/Activity.vue @@ -354,9 +354,6 @@ export default { } this.$coderbot.loadActivity(activityName, activityDefault).then((activity) => { this.activity = activity.data; - if (this.activity.uiLang != 'browser') { - this.$i18n.locale = this.activity.uiLang; - } this.theme.global.name.value = this.activity.theme != 'dark' ? 'light' : 'dark'; this.settings.maxBlocks = this.activity.maxBlocks; this.updateCssProps(); diff --git a/src/components/ActivityEditor.vue b/src/components/ActivityEditor.vue index 51a0dcc..c711049 100644 --- a/src/components/ActivityEditor.vue +++ b/src/components/ActivityEditor.vue @@ -134,24 +134,6 @@ - - - - {{ $t("message.activity_locale") }} - - - - - - - - @@ -500,7 +482,6 @@ export default { activity: { stock: null, default: null, - uiLang: "browser", theme: null, defaultView: null, exec: { @@ -588,12 +569,6 @@ export default { 'Protanomaly', 'Protanopia', ], - langs: [ - { key: 'browser', text: this.$i18n.t('message.activity_lang_browser') }, - { key: 'it', text: this.$i18n.t('message.activity_lang_italian') }, - { key: 'en', text: this.$i18n.t('message.activity_lang_english') }, - { key: 'fr', text: this.$i18n.t('message.activity_lang_french') }, - ], editHistory: false, navHistory: false, experimental: true, @@ -629,7 +604,6 @@ export default { return { activity: { default: { }, - uiLang: { }, defaultView: { }, drawerEnabled: { }, showName: { }, diff --git a/src/components/BlocklyWorkspace.vue b/src/components/BlocklyWorkspace.vue index 97a1590..2caf6f8 100644 --- a/src/components/BlocklyWorkspace.vue +++ b/src/components/BlocklyWorkspace.vue @@ -16,11 +16,15 @@ import 'blockly/python'; import * as blockly_it from 'blockly/msg/it'; import * as blockly_en from 'blockly/msg/en'; import * as blockly_fr from 'blockly/msg/fr'; +import * as blockly_es from 'blockly/msg/es'; +import * as blockly_de from 'blockly/msg/de'; import '../assets/js/blockly/blocks'; import * as bot_it from '../assets/js/blockly/bot_it.json'; import * as bot_en from '../assets/js/blockly/bot_en.json'; import * as bot_fr from '../assets/js/blockly/bot_fr.json'; +import * as bot_es from '../assets/js/blockly/bot_es.json'; +import * as bot_de from '../assets/js/blockly/bot_de.json'; import i18n from '../i18n/index'; @@ -29,7 +33,9 @@ const locale = i18n.global.locale.substring(0, 2); const coderbot_locales = { it: bot_it.default, en: bot_en.default, - fr: bot_fr.default + fr: bot_fr.default, + es: bot_es.default, + de: bot_de.default }; Blockly.Msg = { ...Blockly.Msg, ...coderbot_locales[locale] }; @@ -37,7 +43,9 @@ Blockly.Msg = { ...Blockly.Msg, ...coderbot_locales[locale] }; const blockly_locales = { it: blockly_it, en: blockly_en, - fr: blockly_fr + fr: blockly_fr, + es: blockly_es, + de: blockly_de }; Blockly.setLocale(blockly_locales[locale]); diff --git a/src/components/Settings.vue b/src/components/Settings.vue index f8b44dc..87fbb25 100644 --- a/src/components/Settings.vue +++ b/src/components/Settings.vue @@ -174,6 +174,22 @@ + + + + {{ $t("message.settings_locale") }} + + + + + + @@ -1081,6 +1097,7 @@ export default { }, save() { if (this.v$.$invalid) { + console.log(this.v$) this.snackText = this.$i18n.t('message.settings_errors'); this.snackbar = true; } else { @@ -1241,6 +1258,7 @@ export default { startupProgram: null, progLevel: null, adminPassword: null, + locale: null }, musicPackages: null, cb: { @@ -1276,6 +1294,14 @@ export default { passwordIncorrect: false, interval_wifi: null, interval_info: null, + langs: [ + { key: 'browser', text: this.$i18n.t('message.activity_lang_browser') }, + { key: 'it', text: this.$i18n.t('message.activity_lang_italian') }, + { key: 'en', text: this.$i18n.t('message.activity_lang_english') }, + { key: 'fr', text: this.$i18n.t('message.activity_lang_french') }, + { key: 'es', text: this.$i18n.t('message.activity_lang_spanish') }, + { key: 'de', text: this.$i18n.t('message.activity_lang_german') }, + ] }; }, validations() { @@ -1436,6 +1462,8 @@ export default { }, adminPassword: { }, + locale: { + } }, }; }, diff --git a/src/i18n/index.js b/src/i18n/index.js index 69c404e..7b394d5 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -3,6 +3,8 @@ import { createI18n } from 'vue-i18n'; import * as it_messages from './locales/it/messages.json'; import * as en_messages from './locales/en/messages.json'; import * as fr_messages from './locales/fr/messages.json'; +import * as es_messages from './locales/es/messages.json'; +import * as de_messages from './locales/de/messages.json'; const locales = { it: { @@ -14,6 +16,12 @@ const locales = { fr: { message: fr_messages.default, }, + es: { + message: es_messages.default, + }, + de: { + message: de_messages.default, + }, }; const language = (window.navigator.userLanguage || window.navigator.language).substring(0, 2); diff --git a/src/i18n/locales/de/messages.json b/src/i18n/locales/de/messages.json new file mode 100644 index 0000000..0514e9d --- /dev/null +++ b/src/i18n/locales/de/messages.json @@ -0,0 +1,310 @@ +{ + "home": "Startseite", + "welcome": "Willkommen bei", + "choose_action": "Wähle eine zu startende Aktion", + "program": "Programm", + "docs": "Dokumentation", + "control": "Steuerung", + "settings": "Einstellungen", + "gallery": "Galerie", + "running": "Laufzeit", + "close": "Schließen", + "program_list": "Programmliste", + "program_stop": "Programm stoppen", + "cancel": "stornieren", + "error": "Fehler", + "save_as": "Speichern unter...", + "save": "Speichern", + "ok": "OK", + "no": "nein", + "yes": "ja", + "confirm": "Bestätigen", + "program_status_title": "Programmstatus", + "program_running": "Wird ausgeführt", + "program_completed": "Fertig", + "program_code": "Code", + "program_name_must_be_filled": "Programmname darf nicht leer bleiben.", + "cannot_overwrite_default_program": "Ein Standardprogramm kann nicht überschrieben werden, bitte umbenennen.", + "overwrite": "Überschreiben", + "program_exists_overwrite": "Programm mit dem Namen \"{programName}\" existiert bereits. Möchten Sie es überschreiben?", + "delete": "Löschen", + "delete_sure": "Sind Sie sicher, dass Sie das Programm \"{programName}\" löschen möchten?", + "clear_sure": "Sind Sie sicher, dass Sie den Arbeitsbereich löschen möchten?", + "coderbot_status": "CoderBot-Status", + "activity_new": "Neue Aktivität", + "activity_manage": "Aktivität verwalten", + "activity_open": "Öffnen", + "activity_edit": "Aktivität bearbeiten", + "activity_tip_1": "Hier können Sie eine Aktivität erstellen oder bearbeiten und definieren, wie sie dem Schüler angezeigt werden soll, der sie zum Schreiben von Programmen verwenden wird. Denken Sie daran, dass die Aktivität dann gestartet werden muss (Aktivitätsmenü -> Öffnen), um sie auszuführen tatsächlich verwenden.", + "activity_data": "Aktivitätseinstellungen", + "activity_typography": "Typografie", + "activity_typography_font_ui": "Schriftart der Benutzeroberfläche", + "activity_typography_font_editor": "Code-Schriftart (Werte, Code-Editoren)", + "activity_toolbar_preview": "Toolbar-Vorschau", + "activity_toolbar_button": "Schaltfläche", + "activity_toolbar_buttons": "Schaltflächen ändern", + "activity_toolbar_buttons_add": "Hinzufügen", + "activity_toolbar_buttons_predefined": "Vordefiniert", + "activity_toolbar_buttons_remove": "Entfernen", + "activity_toolbar_buttons_remove_all": "Alle entfernen", + "activity_toolbar_buttons_cannot_remove_run": "Schaltfläche „Ausführen“ kann nicht entfernt werden", + "activity_toolbar_buttons_color": "Schaltflächenfarbe", + "activity_toolbar_buttons_icon": "Symbol", + "activity_toolbar_buttons_icon_select": "Symbol auswählen", + "activity_toolbar_buttons_color_select": "Farbe auswählen", + "activity_toolbar_buttons_show_label": "Schaltflächenbeschriftung anzeigen", + "activity_toolbar_views": "Ansichten", + "activity_list": "Aktivitätsliste", + "activity_title": "Aktivität", + "activity_tip_2": "Hier können Sie eine gespeicherte Aktivität starten, indem Sie auf ihren Namen klicken.", + "activity_program_title": "Programm", + "activity_program_clear": "Löschen", + "activity_program_run": "Ausführen", + "activity_program_load": "Programm laden", + "activity_program_save": "Speichern", + "activity_program_save_as": "Speichern unter...", + "activity_program_export": "Exportieren", + "activity_program_import": "Importieren", + "activity_program_show_code": "Quellcode anzeigen", + "activity_tabs_general": "Allgemein", + "activity_tabs_toolbar": "Symbolleiste", + "activity_tabs_runtime": "Ansicht Programmablauf", + "activity_views_title": "Ansichten", + "activity_views_program": "Programm", + "activity_views_python": "Python", + "activity_views_runtime": "Ausführen", + "activity_views_runtime_camera": "Kamera", + "activity_views_runtime_log": "Programmprotokoll", + "activity_program_editor_type": "Editor-Typ", + "activity_font_size_s": "Klein", + "activity_font_size_m": "Mittel", + "activity_font_size_l": "Groß", + "activity_font_size_xl": "Riesig", + "activity_saved": "Aktivität gespeichert", + "activity_save_error": "Aktivität kann nicht gespeichert werden. Bitte geben Sie einen Namen für die Aktivität an", + "activity_program_save_as_name": "Programmname", + "activity_program_remaining_blocks": "Verbleibende Blöcke", + "activity_description": "Beschreibung", + "activity_predefined_view": "Vordefinierte Ansicht", + "activity_caps_only": "Nur Großbuchstaben", + "activity_theme": "Dunkles Schema", + "activity_programing_title": "Programmieren", + "activity_blocks_max_blocks": "Maximale Anzahl an Blöcken", + "activity_auto_rec_video": "Nehmen Sie für jeden Programmlauf ein Video auf", + "activity_name": "Aktivitätsname", + "activity_action": "Aktion", + "activity_lateral_menu_icon": "Symbol für seitliches Menü", + "activity_text_color": "Textfarbe", + "activity_label": "Label", + "activity_lang_browser": "Standard-Client-Einstellung", + "activity_lang_italian": "Italienisch", + "activity_lang_english": "Englisch", + "activity_lang_french": "Französisch", + "activity_lang_spanish": "Spanisch", + "activity_lang_german": "Deutsch", + "activity_list_text_1": "Das Symbol {0} ermöglicht es Ihnen, es zu löschen, während Sie auf {1} klicken, können Sie es ändern.", + "activity_list_text_2": "Keine Aktivität, warum nicht {0} eine neue?", + "activity_list_create": "erstellen", + "activity_list_delete_confirm_title": "Aktivität löschen", + "activity_list_delete_confirm_text": "Sind Sie sicher, dass Sie die Aktivität abbrechen möchten?\nDie Aktion kann nicht rückgängig gemacht werden", + "activity_confirm_exit_text": "Die vorgenommenen Änderungen gehen verloren, möchten Sie die Seite wirklich verlassen?", + "activity_category_title": "Kategorie", + "activity_category_name": "Kategoriename", + "activity_tabs_toolbox": "Blockmenü", + "activity_toolbox_category_add": "Neue Kategorie hinzufügen", + "activity_toolbox_category_add_all": "Alle hinzufügen", + "activity_default": "Vordefinierte Aktivität", + "activity_button_text_white": "Weiß", + "activity_button_text_black": "Schwarz", + "blockly_toolbox_category_base": "Basis", + "blockly_toolbox_category_cycles": "Schleifen", + "blockly_toolbox_category_math": "Mathe", + "blockly_toolbox_category_text": "Text", + "blockly_toolbox_category_lists": "Listen", + "blockly_toolbox_category_logic": "Logik", + "blockly_toolbox_category_variables": "Variablen", + "blockly_toolbox_category_functions": "Funktionen", + "blockly_toolbox_category_events": "Ereignisse", + "blockly_toolbox_category_movement": "Bewegung", + "blockly_toolbox_category_camera": "Kamera", + "blockly_toolbox_category_vision": "Vision", + "blockly_toolbox_category_io_extensions": "E/A-Erweiterungen", + "blockly_toolbox_category_sound": "Ton", + "blockly_toolbox_category_music": "Musik", + "blockly_toolbox_category_sensors": "Sensoren", + "control_speak": "Sprechen", + "control_speak_title": "Satz sprechen", + "control_speaking": "Sprechen", + "control_photo_take": "Foto machen", + "control_photo_taken": "Bild aufgenommen", + "control_video_rec": "Video aufnehmen", + "control_video_rec_started": "Videoaufnahme läuft", + "control_video_rec_stop": "Videoaufnahme stoppen", + "control_video_rec_stopped": "Videoaufnahme beendet", + "control_sound_playing": "'Spiele Note'", + "control_photo_gallery": "Galerie", + "gallery_pixel_color": "Pixelfarbe", + "gallery_get_pixel_color": "Pixelfarbe erhalten", + "coderbot_status_offline_1": "Warte darauf, dass CoderBot wieder online geht..", + "coderbot_status_offline_2": "CoderBot nicht erreichbar", + "coderbot_status_offline_3": "CoderBot ist offline, Sie können das Programm nicht ausführen.", + "control_text_to_speech": "Text in Sprache", + "gallery_title": "Galerie", + "gallery_empty": "Galerie ist leer", + "gallery_photo_confirm_title": "Bestätigen", + "gallery_photo_confirm_text": "Sind Sie sicher, dass Sie dieses Foto oder Video löschen möchten?", + "settings_title": "Einstellungen", + "settings_errors": "Warnung: Einige Parameter sind falsch", + "settings_system": "System", + "settings_toolbox_level": "Toolbox-Ebene", + "settings_frontend_build": "Frontend-Build", + "settings_actions_update_title": "CoderBot aktualisieren", + "settings_actions": "Aktionen", + "settings_actions_halt": "Stopp", + "settings_actions_halt_title": "Anhalten", + "settings_actions_halt_text_1": "Sind Sie sicher, dass Sie CoderBot stoppen möchten?", + "settings_actions_halt_text_2": "CoderBot wird angehalten, warten Sie ein paar Minuten und entfernen Sie die Stromversorgung, um ihn dauerhaft herunterzufahren.", + "settings_actions_halt_do": "Anhalten", + "settings_actions_reboot": "Neu starten", + "settings_actions_reboot_title": "Neustart abgeschlossen", + "settings_actions_reboot_text_1": "Sind Sie sicher, dass Sie CoderBot komplett neu starten möchten?", + "settings_actions_reboot_text_2": "Die Aktivität wird einige Minuten dauern.", + "settings_actions_reboot_do": "Neu starten", + "settings_actions_restart": "Neu starten", + "settings_actions_restart_title": "Neu starten", + "settings_actions_restart_text_1": "Sind Sie sicher, dass Sie CoderBot neu starten möchten?", + "settings_actions_restart_text_2": "Die Aktivität wird einige Minuten dauern.", + "settings_actions_restart_do": "Neu starten", + "settings_actions_restore": "Einstellungen wiederherstellen", + "settings_actions_restore_title": "Wiederherstellen", + "settings_actions_restore_text_1": "Sind Sie sicher, dass Sie die CoderBot-Einstellungen zurücksetzen möchten?", + "settings_actions_restore_text_2": "Die Einstellungen werden auf die Standardwerte zurückgesetzt, die Programme und andere Daten bleiben erhalten.", + "settings_actions_restore_do": "Wiederherstellen", + "settings_actions_reset": "Werkseinstellungen wiederherstellen", + "settings_actions_reset_title": "Wiederherstellen", + "settings_actions_reset_text_1": "Sind Sie sicher, dass Sie den CoderBot zurücksetzen möchten?", + "settings_actions_reset_text_2": "Alle gespeicherten Dateien (Programme, Fotos, Videos, Sounds usw.) werden gelöscht", + "settings_actions_reset_do": "Wiederherstellen", + "settings_hardware_version": "Version der Steuerplatine", + "settings_movement_control": "Steuerungsmodus-Parameter", + "settings_movement_program": "Im Programmiermodus", + "settings_movement_control_forward_speed": "Bewegungsgeschwindigkeit", + "settings_movement_control_forward_elapse": "Bewegungsablauf", + "settings_movement_control_turn_speed": "Wendegeschwindigkeit", + "settings_movement_control_turn_elapse": "Wendeablauf", + "settings_movement_program_forward_speed": "Bewegungsgeschwindigkeit", + "settings_movement_program_forward_elapse":"Bewegung verstreichen", + "settings_movement_program_turn_speed": "Wendegeschwindigkeit", + "settings_movement_program_turn_elapse": "Kurvenverlauf/Winkel", + "settings_movement_parameters": "Motorparameter", + "settings_motion_parameters": "Vision-Bewegungsparameter", + "settings_movement_parameters_mode": "Motorsteuerungsmodus (dc=normal, servo=360°-Servomotoren)", + "settings_movement_parameters_trim": "Korrekturfaktor zwischen Motoren (1,0 = keine)", + "settings_motor_max_power": "Maximale Motorleistung (0-100)", + "settings_motor_min_power": "Minimale Motorleistung (0-100)", + "settings_movement_parameters_power_1": "Motorleistung (Zielwinkel -15°)", + "settings_movement_parameters_power_2": "Motorleistung (Zielwinkel -4°)", + "settings_movement_parameters_power_3": "Motorleistung (Zielwinkel -1°)", + "settings_movement_parameters_pid": "PID-Parameter der Motorsteuerung", + "settings_movement_parameters_pid_max_speed": "Höchstgeschwindigkeit", + "settings_movement_parameters_pid_sample_rate": "Intervallzeit", + "settings_movement_parameters_pid_kp": "K proportional", + "settings_movement_parameters_pid_kd": "K-Ableitung", + "settings_movement_parameters_pid_ki": "K-Integral", + "settings_sounds_title": "Benutzerdefinierte Töne", + "settings_sounds_start": "Starten", + "settings_sounds_stop": "Stopp", + "settings_sounds_shutter": "Foto machen", + "settings_button_title": "Physische Tastenfunktion", + "settings_button_none": "Keine", + "settings_button_startstop": "Aktuelles Programm starten/stoppen", + "settings_load_at_start_title": "Beim Booten ausführen", + "settings_load_at_start_program": "Programmname", + "settings_network_title": "Netzwerkkonfiguration", + "settings_network_mode_client": "Mit einem bestehenden WLAN-Netzwerk verbinden (Client)", + "settings_network_mode_ap": "Lassen Sie CoderBot sein eigenes lokales (Ad-hoc) WLAN-Netzwerk konfigurieren", + "settings_network_ssid": "WLAN-Netzwerkname (SSID)", + "settings_network_username": "Benutzername", + "settings_network_password": "WLAN-Passwort", + "settings_network_save_title": "Warnung!", + "settings_network_save_text_1": "Dieser Vorgang ändert die Konfiguration von CoderBot, der dann neu gestartet wird.", + "settings_network_wait": "Bitte auf Verbindung warten.", + "settings_component_test_title": "Komponententest", + "settings_component_test_passed": "Bestanden", + "settings_component_test_failed": "Fehlgeschlagen", + "settings_component_test_not_tested": "Übersprungen", + "settings_component_test_run": "Test ausführen", + "settings_component_test_text_1": "Testen...", + "settings_component_test_motors": "Motoren", + "settings_component_test_speaker": "Lautsprecher", + "settings_component_test_sonar": "Abstandssensor", + "settings_component_test_ocr": "Texterkennung", + "settings_camera_title": "Kameraeinstellungen", + "settings_camera_cv_title": "Computer Vision", + "settings_camera_exposure_mode": "Belichtungsmodus", + "settings_camera_framerate": "Bilder pro Sekunde", + "settings_camera_jpeg_bitrate": "Bildbitrate (JPEG-Komprimierung)", + "settings_camera_jpeg_quality": "Bildqualität (JPEG-Komprimierung)", + "settings_camera_cv_image_factor": "Skalierungsfaktor für Computer Vision", + "settings_camera_color_object_size_max": "Objektsuche nach maximaler Größe (Pixel) nach Farbe", + "settings_camera_color_object_size_min": "Mindestgröße (Pixel) Objektsuche nach Farbe", + "settings_camera_path_object_size_max": "Maximale Größe (Pixel) Hinderniserkennung", + "settings_camera_path_object_size_min": "Mindestgröße (Pixel) Hinderniserkennung", + "settings_camera_cnn_default_model": "Neuronales Netzwerk zur Objekterkennung: Standardmodell", + "settings_audio_title": "Audioeinstellungen", + "settings_audio_volume": "Lautstärke", + "settings_music_packages_title": "Paketverwaltung", + "settings_music_packages_installed": "Installierte Pakete:", + "settings_music_packages_type": "Typ:", + "settings_music_packages_add": "Paket hinzufügen", + "settings_music_packages_remove": "Paket entfernen", + "settings_music_package_installed": "Paket installiert", + "settings_music_packages_installation_failed": "Installation fehlgeschlagen", + "settings_music_packages_update": "Aktualisieren", + "settings_music_packages_select": "Zu installierendes Paket auswählen", + "settings_music_packages_install_confirm_text": "Klicken Sie auf \"Bestätigen\", um das Paket zu installieren", + "settings_music_packages_install_confirm": "Bestätigen", + "settings_tabs_general": "Allgemein", + "settings_tabs_movement": "Bewegung", + "settings_tabs_sounds": "Töne", + "settings_tabs_advanced": "Erweitert", + "settings_tabs_network": "Netzwerk", + "settings_tabs_test": "Test", + "settings_tabs_camera": "Kamera", + "settings_tabs_audio": "Audio", + "settings_tabs_music_packages": "Musikpakete", + "settings_general_info": "Status und Informationen", + "settings_info": "Informationen", + "settings_status": "Status", + "settings_music_packages": "Paketverwaltung", + "settings_music_packages_text_1": "Klicken Sie auf \"Aktualisieren\" um die Änderungen anzuzeigen.", + "settings_music_packages_text_2": "Update fehlgeschlagen, das Paket ist bereits mit einer neueren Version als der, die Sie installieren möchten, vorhanden.", + "settings_music_packages_text_3": "Update fehlgeschlagen, Paket bereits mit derselben Version vorhanden.", + "settings_packages_text_1": "Hochladen abgeschlossen. Neustart läuft.", + "settings_reset_complete": "Einstellungen wiederhergestellt", + "settings_reset_text_1": "Zurücksetzen auf Werkseinstellungen abgeschlossen.\nNeustart läuft...", + "settings_music_package_removed": "Paket entfernt", + "settings_updated": "Einstellungen aktualisiert", + "settings_network_updated": "Netzwerkeinstellung aktualisiert", + "coderbot_status_shutting_down": "CoderBot wird heruntergefahren...", + "coderbot_status_rebooting": "Neustart läuft...", + "coderbot_restart_start": "Neustart gestartet ...", + "coderbot_status_online": "CoderBot online", + "coderbot_status_offline": "CoderBot ist nicht erreichbar", + "settings_toolbax_movement": "Bewegung", + "settings_toolbax_base": "Basis", + "settings_toolbax_standard": "Standard", + "settings_toolbax_advanced": "Erweitert", + "settings_confirm_exit_text": "Die vorgenommenen Änderungen gehen verloren. Bestätigen Sie, dass Sie die Seite wechseln möchten?", + "settings_restart_needed": "Starten Sie CoderBot neu, damit die Änderungen wirksam werden.", + "settings_admin_password_verify_title": "Zugriff reserviert", + "settings_admin_password_verify": "Administrationspasswort eingeben", + "settings_admin_password_title": "Administrationspasswort", + "settings_admin_password": "Passwort", + "settings_admin_password_incorrect": "Ungültiges Passwort", + "settings_locale": "Sprache der Benutzeroberfläche", + "validation_integer": "Gib eine ganze Zahl ein (1234)", + "validation_decimal": "Fügen Sie eine Dezimalzahl ein (12,34)", + "validation_integer_positive": "Gib eine ganze Zahl ein, positiv oder gleich 0 ", + "validation_decimal_positive": "Gib eine ganze Zahl ein, positiv oder gleich 0,0" +} \ No newline at end of file diff --git a/src/i18n/locales/en/messages.json b/src/i18n/locales/en/messages.json index ba8110a..47f60b1 100644 --- a/src/i18n/locales/en/messages.json +++ b/src/i18n/locales/en/messages.json @@ -1,8 +1,310 @@ { + "home": "Home page", "welcome": "Welcome to", - "choose_action": "Choose an option to start!", + "choose_action": "Choose an action to start", "program": "Program", "docs": "Documentation", "control": "Control", - "settings": "Settings" -} + "settings": "Settings", + "gallery": "Gallery", + "running": "Runtime", + "close": "Close", + "program_list": "Program List", + "program_stop": "Stop program", + "cancel": "Cancel", + "error": "Error", + "save_as": "Save As...", + "save": "Save", + "ok": "Ok", + "no": "No", + "yes": "Yes", + "confirm": "Confirm", + "program_status_title": "Program status", + "program_running": "Running", + "program_completed": "Finished", + "program_code": "Code", + "program_name_must_be_filled": "Program name cannot be left empty.", + "cannot_overwrite_default_program": "Cannot overwrite a default program, please rename it.", + "overwrite": "Overwrite", + "program_exists_overwrite": "Program with name \"{programName}\" already exists. Do you want to overwrite it?", + "delete": "Delete", + "delete_sure": "Are you shure you want to delete program \"{programName}\"?", + "clear_sure": "Are you shure you want to clear the workspace?", + "coderbot_status": "CoderBot status", + "activity_new": "New Activity", + "activity_manage": "Manage Activity", + "activity_open": "Open", + "activity_edit": "Edit Activity", + "activity_tip_1": "Here you can create or edit an activity, defining how it should appear to the student who will use it to write programs. Remember that the activity will then have to be started (Activity Menu -> Open) in order to actually use it.", + "activity_data": "Activity settings", + "activity_typography": "Typography", + "activity_typography_font_ui": "Interface font", + "activity_typography_font_editor": "Code font (values, code editors)", + "activity_toolbar_preview": "Toolbar preview", + "activity_toolbar_button": "Button", + "activity_toolbar_buttons": "Modify Buttons", + "activity_toolbar_buttons_add": "Add", + "activity_toolbar_buttons_predefined": "Predefined", + "activity_toolbar_buttons_remove": "Remove", + "activity_toolbar_buttons_remove_all": "Remove all", + "activity_toolbar_buttons_cannot_remove_run": "\"Run\" button cannot be removed", + "activity_toolbar_buttons_color": "Button color", + "activity_toolbar_buttons_icon": "Icon", + "activity_toolbar_buttons_icon_select": "Select icon", + "activity_toolbar_buttons_color_select": "Select Color", + "activity_toolbar_buttons_show_label": "Show buttons label", + "activity_toolbar_views": "Views", + "activity_list": "Activity List", + "activity_title": "Activity", + "activity_tip_2": "Here you can start a saved activity by clicking on its name.", + "activity_program_title": "Program", + "activity_program_clear": "Clear", + "activity_program_run": "Run", + "activity_program_load": "Program Load", + "activity_program_save": "Save", + "activity_program_save_as": "Save As...", + "activity_program_export": "Export", + "activity_program_import": "Import", + "activity_program_show_code": "Show source code", + "activity_tabs_general": "General", + "activity_tabs_toolbar": "Toolbar", + "activity_tabs_runtime": "Program run view", + "activity_views_title": "Views", + "activity_views_program": "Program", + "activity_views_python": "Python", + "activity_views_runtime": "Run", + "activity_views_runtime_camera": "Camera", + "activity_views_runtime_log": "Program log", + "activity_program_editor_type": "Editor type", + "activity_font_size_s": "Small", + "activity_font_size_m": "Medium", + "activity_font_size_l": "Large", + "activity_font_size_xl": "Huge", + "activity_saved": "Activity saved", + "activity_save_error": "Unable to save activity. Please specify a name for the Activity", + "activity_program_save_as_name": "Program name", + "activity_program_remaining_blocks": "Blocks remaining", + "activity_description": "Description", + "activity_predefined_view": "Predefined view", + "activity_caps_only": "Capital letters only", + "activity_theme": "Dark scheme", + "activity_programing_title": "Programming", + "activity_blocks_max_blocks": "Max number of blocks", + "activity_auto_rec_video": "Record a video for each program run", + "activity_name": "Activity name", + "activity_action": "Action", + "activity_lateral_menu_icon": "Lateral menu icon", + "activity_text_color": "Text color", + "activity_label": "Label", + "activity_lang_browser": "Default client setting", + "activity_lang_italian": "Italian", + "activity_lang_english": "English", + "activity_lang_french": "French", + "activity_lang_spanish": "Spanish", + "activity_lang_german": "German", + "activity_list_text_1": "The {0} icon allows you to delete it, while clicking on {1} you can modify it.", + "activity_list_text_2": "No Activity, why not {0} a new one?", + "activity_list_create": "create", + "activity_list_delete_confirm_title": "Delete Activity", + "activity_list_delete_confirm_text": "Are you sure you want to cancel the activity?\nThe action is not reversible", + "activity_confirm_exit_text": "The changes made will be lost, are you sure you want to exit the page?", + "activity_category_title": "Category", + "activity_category_name": "Category name", + "activity_tabs_toolbox": "Blocks menu", + "activity_toolbox_category_add": "Add new category", + "activity_toolbox_category_add_all": "Add all", + "activity_default": "Predefined Activity", + "activity_button_text_white": "White", + "activity_button_text_black": "Black", + "blockly_toolbox_category_base": "Base", + "blockly_toolbox_category_cycles": "Loops", + "blockly_toolbox_category_math": "Math", + "blockly_toolbox_category_text": "Text", + "blockly_toolbox_category_lists": "Lists", + "blockly_toolbox_category_logic": "Logic", + "blockly_toolbox_category_variables": "Variables", + "blockly_toolbox_category_functions": "Functions", + "blockly_toolbox_category_events": "Events", + "blockly_toolbox_category_movement": "Movement", + "blockly_toolbox_category_camera": "Camera", + "blockly_toolbox_category_vision": "Vision", + "blockly_toolbox_category_io_extensions": "I/O Extensions", + "blockly_toolbox_category_sound": "Sound", + "blockly_toolbox_category_music": "Music", + "blockly_toolbox_category_sensors": "Sensors", + "control_speak": "Speak", + "control_speak_title": "Speak phrase", + "control_speaking": "Speaking", + "control_photo_take": "Take picture", + "control_photo_taken": "Picture taken", + "control_video_rec": "Record video", + "control_video_rec_started": "Video recording in progress", + "control_video_rec_stop": "Stop video recording", + "control_video_rec_stopped": "video recording terminated", + "control_sound_playing": "'Playing note'", + "control_photo_gallery": "Gallery", + "gallery_pixel_color": "Pixel color", + "gallery_get_pixel_color": "Get pixel color", + "coderbot_status_offline_1": "Waiting for CoderBot to come back online..", + "coderbot_status_offline_2": "CoderBot unreachable", + "coderbot_status_offline_3": "CoderBot is offline, you cannot run the program.", + "control_text_to_speech": "Text to Speech", + "gallery_title": "Gallery", + "gallery_empty": "Gallery is empty", + "gallery_photo_confirm_title": "Confirm", + "gallery_photo_confirm_text": "Are you sure you want to delete this photo or video?", + "settings_title": "Settings", + "settings_errors": "Warning: some parameters are incorrect", + "settings_system": "System", + "settings_toolbox_level": "Toolbox level", + "settings_frontend_build": "Frontend build", + "settings_actions_update_title": "Update CoderBot", + "settings_actions": "Actions", + "settings_actions_halt": "Stop", + "settings_actions_halt_title": "Stop", + "settings_actions_halt_text_1": "Are you sure you want to stop CoderBot?", + "settings_actions_halt_text_2": "CoderBot will be stopped, wait a few minutes and, to shut it down permanently, remove the power.", + "settings_actions_halt_do": "Halt", + "settings_actions_reboot": "Reboot", + "settings_actions_reboot_title": "Reboot completed", + "settings_actions_reboot_text_1": "Are you sure you want to completely reboot CoderBot?", + "settings_actions_reboot_text_2": "The activity will take a few minutes.", + "settings_actions_reboot_do": "Reboot", + "settings_actions_restart": "Restart", + "settings_actions_restart_title": "Restart", + "settings_actions_restart_text_1": "Are you sure you want to restart CoderBot?", + "settings_actions_restart_text_2": "The activity will take a few minutes.", + "settings_actions_restart_do": "Reboot", + "settings_actions_restore": "Restore settings", + "settings_actions_restore_title": "Restore", + "settings_actions_restore_text_1": "Are you sure you want to reset CoderBot settings?", + "settings_actions_restore_text_2": "The settings will be restored to the default values, the programs and other data will be preserved.", + "settings_actions_restore_do": "Restore", + "settings_actions_reset": "Restore factory settings", + "settings_actions_reset_title": "Restore", + "settings_actions_reset_text_1": "Are you sure you want to reset the CoderBot?", + "settings_actions_reset_text_2": "All saved files (programs, photos, videos, sounds, etc) will be deleted", + "settings_actions_reset_do": "Restore", + "settings_hardware_version": "Control board version", + "settings_movement_control": "Control mode parameters", + "settings_movement_program": "In programming mode", + "settings_movement_control_forward_speed": "Moving speed", + "settings_movement_control_forward_elapse": "Moving elapse", + "settings_movement_control_turn_speed": "Turn speed", + "settings_movement_control_turn_elapse": "Turn elapse", + "settings_movement_program_forward_speed": "Movement speed", + "settings_movement_program_forward_elapse": "Movement elapse", + "settings_movement_program_turn_speed": "Turn speed", + "settings_movement_program_turn_elapse": "Turn elapse/angle", + "settings_movement_parameters": "Motor parameters", + "settings_motion_parameters": "Vision motion parameter", + "settings_movement_parameters_mode": "Motor control mode (dc=normal, servo=360° servo motors)", + "settings_movement_parameters_trim": "Correction factor between engines (1.0 = none)", + "settings_motor_max_power": "Maximum engine power (0-100)", + "settings_motor_min_power": "Minimum engine power (0-100)", + "settings_movement_parameters_power_1": "Motor power (target angle -15°)", + "settings_movement_parameters_power_2": "Motor power (target angle -4°)", + "settings_movement_parameters_power_3": "Motor power (target angle -1°)", + "settings_movement_parameters_pid": "Motor control PID parameters", + "settings_movement_parameters_pid_max_speed": "Max speed", + "settings_movement_parameters_pid_sample_rate": "Interval time", + "settings_movement_parameters_pid_kp": "K proportional", + "settings_movement_parameters_pid_kd": "K derivative", + "settings_movement_parameters_pid_ki": "K integral", + "settings_sounds_title": "Custom sounds", + "settings_sounds_start": "Start", + "settings_sounds_stop": "Stop", + "settings_sounds_shutter": "Take picture", + "settings_button_title": "Physical button function", + "settings_button_none": "None", + "settings_button_startstop": "Start/Stop current program", + "settings_load_at_start_title": "Run at boot", + "settings_load_at_start_program": "Program name", + "settings_network_title": "Network configuration", + "settings_network_mode_client": "Connect to an existing WiFi network (client)", + "settings_network_mode_ap": "Let CoderBot configure its own local (ad-hoc) WiFi network", + "settings_network_ssid": "WiFi Network Name (SSID)", + "settings_network_username": "User name", + "settings_network_password": "WiFi password", + "settings_network_save_title": "Warning!", + "settings_network_save_text_1": "This operation will change the configuration of CoderBot which will then be restarted.", + "settings_network_wait": "Please wait for connection.", + "settings_component_test_title": "Components test", + "settings_component_test_passed": "Passed", + "settings_component_test_failed": "Failed", + "settings_component_test_not_tested": "Skipped", + "settings_component_test_run": "Run test", + "settings_component_test_text_1": "Testing...", + "settings_component_test_motors": "Motors", + "settings_component_test_speaker": "Speaker", + "settings_component_test_sonar": "Distance sensor", + "settings_component_test_ocr": "Text recognition", + "settings_camera_title": "Camera settings", + "settings_camera_cv_title": "Computer vision", + "settings_camera_exposure_mode": "Exposure mode", + "settings_camera_framerate": "Frames per second", + "settings_camera_jpeg_bitrate": "Image bitrate (jpeg compression)", + "settings_camera_jpeg_quality": "Image quality (jpeg compression)", + "settings_camera_cv_image_factor": "Scale factor for computer vision", + "settings_camera_color_object_size_max": "Maximum size (pixel) object search by color", + "settings_camera_color_object_size_min": "Minimum size (pixel) object search by color", + "settings_camera_path_object_size_max": "Maximum size (pixel) obstacle recognition", + "settings_camera_path_object_size_min": "Minimum size (pixel) obstacle recognition", + "settings_camera_cnn_default_model": "Object recognition neural network: default model", + "settings_audio_title": "Audio settings", + "settings_audio_volume": "Volume", + "settings_music_packages_title": "Package management", + "settings_music_packages_installed": "Installed packages:", + "settings_music_packages_type": "type:", + "settings_music_packages_add": "Add Package", + "settings_music_packages_remove": "Remove Package", + "settings_music_package_installed": "Package installed", + "settings_music_packages_installation_failed": "Installation failed", + "settings_music_packages_update": "Update", + "settings_music_packages_select": "Select package to install", + "settings_music_packages_install_confirm_text": "Click \"Confirm\" to install the package", + "settings_music_packages_install_confirm": "Confim", + "settings_tabs_general": "General", + "settings_tabs_movement": "Movement", + "settings_tabs_sounds": "Sounds", + "settings_tabs_advanced": "Advanced", + "settings_tabs_network": "Network", + "settings_tabs_test": "Test", + "settings_tabs_camera": "Camera", + "settings_tabs_audio": "Audio", + "settings_tabs_music_packages": "Music packages", + "settings_general_info": "Status and informations", + "settings_info": "Information", + "settings_status": "Status", + "settings_music_packages": "Package management", + "settings_music_packages_text_1": "Click \"Update\" to view the changes.", + "settings_music_packages_text_2": "Update failed, the package is already present with a version later than the one you want to install.", + "settings_music_packages_text_3": "Update failed, package already present with the same version.", + "settings_packages_text_1": "Upload completed. Restart in progress.", + "settings_reset_complete": "Settings restored", + "settings_reset_text_1": "Reset to factory settings done.\nReboot in progress...", + "settings_music_package_removed": "Package removed", + "settings_updated": "Settings updated", + "settings_network_updated": "Network setting updated", + "coderbot_status_shutting_down": "CoderBot shutting down...", + "coderbot_status_rebooting": "Restart in progress...", + "coderbot_restart_start": "Reboot started ...", + "coderbot_status_online": "CoderBot online", + "coderbot_status_offline": "CoderBot is unreachable", + "settings_toolbax_movement": "Movement", + "settings_toolbax_base": "Base", + "settings_toolbax_standard": "Standard", + "settings_toolbax_advanced": "Advanced", + "settings_confirm_exit_text": "The changes made will be lost, do you confirm you want to change page?", + "settings_restart_needed": "For the changes to take effect, restart CoderBot.", + "settings_admin_password_verify_title": "Access reserved", + "settings_admin_password_verify": "Insert administration password", + "settings_admin_password_title": "Administration password", + "settings_admin_password": "password", + "settings_admin_password_incorrect": "Invalid password", + "settings_locale": "User interface language", + "validation_integer": "Insert a integer number (1234)", + "validation_decimal": "Insert a decimal number (12.34)", + "validation_integer_positive": "Insert a integer number, positive or equal to 0 ", + "validation_decimal_positive": "Insert a integer number, positive or equal to 0.0" +} diff --git a/src/i18n/locales/es/messages.json b/src/i18n/locales/es/messages.json new file mode 100644 index 0000000..7ab090e --- /dev/null +++ b/src/i18n/locales/es/messages.json @@ -0,0 +1,310 @@ +{ + "home": "Página de inicio", + "welcome": "Bienvenido a", + "choose_action": "Elige una acción para comenzar", + "program": "Programa", + "docs": "Documentación", + "control": "controlar", + "settings": "Configuraciones", + "gallery": "Galería", + "running": "Tiempo de ejecución", + "close": "cerca", + "program_list": "Lista de programas", + "program_stop": "Detener programa", + "cancel": "Cancelar", + "error": "Error", + "save_as": "Guardar como...", + "save": "Guardar", + "ok": "bien", + "no": "no", + "yes": "Sí", + "confirm": "Confirmar", + "program_status_title": "Estado del programa", + "program_running": "En ejecución", + "program_completed": "Terminado", + "program_code": "Código", + "program_name_must_be_filled": "El nombre del programa no se puede dejar vacío.", + "cannot_overwrite_default_program": "No se puede sobrescribir un programa predeterminado, cámbiele el nombre.", + "overwrite": "Sobrescribir", + "program_exists_overwrite": "El programa con el nombre \"{programName}\" ya existe. ¿Quieres sobrescribirlo?", + "delete": "Eliminar", + "delete_sure": "¿Está seguro de que desea eliminar el programa \"{programName}\"?", + "clear_sure": "¿Estás seguro de que quieres borrar el espacio de trabajo?", + "coderbot_status": "Estado de CoderBot", + "activity_new": "Nueva Actividad", + "activity_manage": "Administrar actividad", + "activity_open": "Abrir", + "activity_edit": "Editar Actividad", + "activity_tip_1": "Aquí puedes crear o editar una actividad, definiendo cómo debe aparecer para el estudiante que la usará para escribir programas. Recuerda que la actividad deberá iniciarse (Menú Actividad -> Abrir) para poder realmente usarlo.", + "activity_data": "Configuración de la actividad", + "activity_typography": "Tipografía", + "activity_typography_font_ui": "Fuente de la interfaz", + "activity_typography_font_editor": "Fuente de código (valores, editores de código)", + "activity_toolbar_preview": "Vista previa de la barra de herramientas", + "activity_toolbar_button": "Botón", + "activity_toolbar_buttons": "Modificar Botones", + "activity_toolbar_buttons_add": "Agregar", + "activity_toolbar_buttons_predefined": "Predefinido", + "activity_toolbar_buttons_remove": "Eliminar", + "activity_toolbar_buttons_remove_all": "Quitar todo", + "activity_toolbar_buttons_cannot_remove_run": "No se puede eliminar el botón \"Ejecutar\"", + "activity_toolbar_buttons_color": "Color del botón", + "activity_toolbar_buttons_icon": "Icono", + "activity_toolbar_buttons_icon_select": "Seleccionar icono", + "activity_toolbar_buttons_color_select": "Seleccionar color", + "activity_toolbar_buttons_show_label": "Mostrar etiqueta de botones", + "activity_toolbar_views": "Vistas", + "activity_list": "Lista de actividades", + "activity_title": "Actividad", + "activity_tip_2": "Aquí puedes iniciar una actividad guardada haciendo clic en su nombre.", + "activity_program_title": "Programa", + "activity_program_clear": "Borrar", + "activity_program_run": "Ejecutar", + "activity_program_load": "Carga del Programa", + "activity_program_save": "Guardar", + "activity_program_save_as": "Guardar como...", + "activity_program_export": "Exportar", + "activity_program_import": "Importar", + "activity_program_show_code": "Mostrar código fuente", + "activity_tabs_general": "General", + "activity_tabs_toolbar": "Barra de herramientas", + "activity_tabs_runtime": "Vista de ejecución del programa", + "activity_views_title": "Vistas", + "activity_views_program": "Programa", + "activity_views_python": "Python", + "activity_views_runtime": "Ejecutar", + "activity_views_runtime_camera": "Cámara", + "activity_views_runtime_log": "Registro del programa", + "activity_program_editor_type": "Tipo de editor", + "activity_font_size_s": "Pequeño", + "activity_font_size_m": "Medio", + "activity_font_size_l": "Grande", + "activity_font_size_xl": "Enorme", + "activity_saved": "Actividad guardada", + "activity_save_error": "No se puede guardar la actividad. Especifique un nombre para la actividad", + "activity_program_save_as_name": "Nombre del programa", + "activity_program_remaining_blocks": "Bloques restantes", + "activity_description": "Descripción", + "activity_predefined_view": "Vista predefinida", + "activity_caps_only": "Solo letras mayúsculas", + "activity_theme": "Esquema oscuro", + "activity_programing_title": "Programación", + "activity_blocks_max_blocks": "Número máximo de bloques", + "activity_auto_rec_video": "Grabar un video para cada ejecución del programa", + "activity_name": "Nombre de la actividad", + "activity_action": "Acción", + "activity_lateral_menu_icon": "Icono de menú lateral", + "activity_text_color": "Color del texto", + "activity_label": "Etiqueta", + "activity_lang_browser": "Configuración de cliente predeterminada", + "activity_lang_italian": "italiano", + "activity_lang_english": "Inglés", + "activity_lang_french": "Francés", + "activity_lang_spanish": "Español", + "activity_lang_german": "Alemán", + "activity_list_text_1": "El ícono {0} te permite eliminarlo, mientras que al hacer clic en {1} puedes modificarlo.", + "activity_list_text_2": "Sin actividad, ¿por qué no {0} una nueva?", + "activity_list_create": "crear", + "activity_list_delete_confirm_title": "Borrar Actividad", + "activity_list_delete_confirm_text": "¿Está seguro de que desea cancelar la actividad?\nLa acción no es reversible", + "activity_confirm_exit_text": "Los cambios realizados se perderán, ¿estás seguro de que deseas salir de la página?", + "activity_category_title": "Categoría", + "activity_category_name": "Nombre de la categoría", + "activity_tabs_toolbox": "Menú de bloques", + "activity_toolbox_category_add": "Agregar nueva categoría", + "activity_toolbox_category_add_all": "Agregar todo", + "activity_default": "Actividad Predefinida", + "activity_button_text_white": "Blanco", + "activity_button_text_black": "Negro", + "blockly_toolbox_category_base": "Base", + "blockly_toolbox_category_cycles": "Bucles", + "blockly_toolbox_category_math": "Matemáticas", + "blockly_toolbox_category_text": "Texto", + "blockly_toolbox_category_lists": "Listas", + "blockly_toolbox_category_logic": "Lógica", + "blockly_toolbox_category_variables": "Variables", + "blockly_toolbox_category_functions": "Funciones", + "blockly_toolbox_category_events": "Eventos", + "blockly_toolbox_category_movement": "Movimiento", + "blockly_toolbox_category_camera": "Cámara", + "blockly_toolbox_category_vision": "Visión", + "blockly_toolbox_category_io_extensions": "Extensiones de E/S", + "blockly_toolbox_category_sound": "Sonido", + "blockly_toolbox_category_music": "Música", + "blockly_toolbox_category_sensors": "Sensores", + "control_speak": "Hablar", + "control_speak_title": "Hablar frase", + "control_speaking": "Hablando", + "control_photo_take": "Tomar foto", + "control_photo_taken": "Foto tomada", + "control_video_rec": "Grabar vídeo", + "control_video_rec_started": "Grabación de video en progreso", + "control_video_rec_stop": "Detener grabación de video", + "control_video_rec_stopped": "grabación de video terminada", + "control_sound_playing": "'Tocando nota'", + "control_photo_gallery": "Galería", + "gallery_pixel_color": "Color de píxel", + "gallery_get_pixel_color": "Obtener color de píxel", + "coderbot_status_offline_1": "Esperando que CoderBot vuelva a conectarse...", + "coderbot_status_offline_2": "CoderBot inalcanzable", + "coderbot_status_offline_3": "CoderBot está fuera de línea, no puedes ejecutar el programa.", + "control_text_to_speech": "Texto a voz", + "gallery_title": "Galería", + "gallery_empty": "La galería está vacía", + "gallery_photo_confirm_title": "Confirmar", + "gallery_photo_confirm_text": "¿Está seguro de que desea eliminar esta foto o video?", + "settings_title": "Configuración", + "settings_errors": "Advertencia: algunos parámetros son incorrectos", + "settings_system": "Sistema", + "settings_toolbox_level": "Nivel de la caja de herramientas", + "settings_frontend_build": "Compilación de interfaz", + "settings_actions_update_title": "Actualizar CoderBot", + "settings_actions": "Acciones", + "settings_actions_halt": "Detener", + "settings_actions_halt_title": "Detener", + "settings_actions_halt_text_1": "¿Está seguro de que desea detener CoderBot?", + "settings_actions_halt_text_2": "CoderBot se detendrá, espere unos minutos y, para apagarlo permanentemente, desconecte la alimentación.", + "settings_actions_halt_do": "Detener", + "settings_actions_reboot": "Reiniciar", + "settings_actions_reboot_title": "Reinicio completado", + "settings_actions_reboot_text_1": "¿Está seguro de que desea reiniciar completamente CoderBot?", + "settings_actions_reboot_text_2": "La actividad tardará unos minutos.", + "settings_actions_reboot_do": "Reiniciar", + "settings_actions_restart": "Reiniciar", + "settings_actions_restart_title": "Reiniciar", + "settings_actions_restart_text_1": "¿Está seguro de que desea reiniciar CoderBot?", + "settings_actions_restart_text_2": "La actividad tardará unos minutos.", + "settings_actions_restart_do": "Reiniciar", + "settings_actions_restore": "Restaurar configuración", + "settings_actions_restore_title": "Restaurar", + "settings_actions_restore_text_1": "¿Está seguro de que desea restablecer la configuración de CoderBot?", + "settings_actions_restore_text_2": "La configuración se restaurará a los valores predeterminados, los programas y otros datos se conservarán.", + "settings_actions_restore_do": "Restaurar", + "settings_actions_reset": "Restaurar configuración de fábrica", + "settings_actions_reset_title": "Restaurar", + "settings_actions_reset_text_1": "¿Está seguro de que desea restablecer el CoderBot?", + "settings_actions_reset_text_2": "Todos los archivos guardados (programas, fotos, videos, sonidos, etc.) serán eliminados", + "settings_actions_reset_do": "Restaurar", + "settings_hardware_version": "Versión del tablero de control", + "settings_movement_control": "Parámetros del modo de control", + "settings_movement_program": "En modo programación", + "settings_movement_control_forward_speed": "Velocidad de movimiento", + "settings_movement_control_forward_elapse": "Transcurrencia de movimiento", + "settings_movement_control_turn_speed": "Velocidad de giro", + "settings_movement_control_turn_elapse": "Giro transcurrido", + "settings_movement_program_forward_speed": "Velocidad de movimiento", + "settings_movement_program_forward_elapse": "Transcurrencia de movimiento", + "settings_movement_program_turn_speed": "Velocidad de giro", + "settings_movement_program_turn_elapse": "Giro transcurrido/ángulo", + "settings_movement_parameters": "Parámetros del motor", + "settings_motion_parameters": "Parámetro de movimiento de visión", + "settings_movement_parameters_mode": "Modo de control del motor (dc=normal, servo=servomotores de 360°)", + "settings_movement_parameters_trim": "Factor de corrección entre motores (1.0 = ninguno)", + "settings_motor_max_power": "Potencia máxima del motor (0-100)", + "settings_motor_min_power": "Potencia mínima del motor (0-100)", + "settings_movement_parameters_power_1": "Potencia del motor (ángulo objetivo -15°)", + "settings_movement_parameters_power_2": "Potencia del motor (ángulo objetivo -4°)", + "settings_movement_parameters_power_3": "Potencia del motor (ángulo objetivo -1°)", + "settings_movement_parameters_pid": "Parámetros PID de control de motores", + "settings_movement_parameters_pid_max_speed": "Velocidad máxima", + "settings_movement_parameters_pid_sample_rate": "Intervalo de tiempo", + "settings_movement_parameters_pid_kp": "K proporcional", + "settings_movement_parameters_pid_kd": "K derivada", + "settings_movement_parameters_pid_ki": "K integral", + "settings_sounds_title": "Sonidos personalizados", + "settings_sounds_start": "Iniciar", + "settings_sounds_stop": "Detener", + "settings_sounds_shutter": "Hacer una foto", + "settings_button_title": "Función del botón físico", + "settings_button_none": "Ninguno", + "settings_button_startstop": "Iniciar/Detener el programa actual", + "settings_load_at_start_title": "Ejecutar al arrancar", + "settings_load_at_start_program": "Nombre del programa", + "settings_network_title": "Configuración de red", + "settings_network_mode_client": "Conectarse a una red WiFi existente (cliente)", + "settings_network_mode_ap": "Permite que CoderBot configure su propia red WiFi local (ad-hoc)", + "settings_network_ssid": "Nombre de la red WiFi (SSID)", + "settings_network_username": "Nombre de usuario", + "settings_network_password": "Contraseña WiFi", + "settings_network_save_title": "¡Advertencia!", + "settings_network_save_text_1": "Esta operación cambiará la configuración de CoderBot, que luego se reiniciará.", + "settings_network_wait": "Por favor, espere la conexión.", + "settings_component_test_title": "Prueba de componentes", + "settings_component_test_passed": "Aprobado", + "settings_component_test_failed": "Error", + "settings_component_test_not_tested": "Omitido", + "settings_component_test_run": "Ejecutar prueba", + "settings_component_test_text_1": "Probando...", + "settings_component_test_motors": "Motores", + "settings_component_test_speaker": "Altavoz", + "settings_component_test_sonar": "Sensor de distancia", + "settings_component_test_ocr": "Reconocimiento de texto", + "settings_camera_title": "Configuración de la cámara", + "settings_camera_cv_title": "Visión por computadora", + "settings_camera_exposure_mode": "Modo de exposición", + "settings_camera_framerate": "Fotogramas por segundo", + "settings_camera_jpeg_bitrate": "Tasa de bits de la imagen (compresión jpeg)", + "settings_camera_jpeg_quality": "Calidad de imagen (compresión jpeg)", + "settings_camera_cv_image_factor": "Factor de escala para visión artificial", + "settings_camera_color_object_size_max": "Búsqueda de objeto de tamaño máximo (píxel) por color", + "settings_camera_color_object_size_min": "Búsqueda de objeto de tamaño mínimo (píxel) por color", + "settings_camera_path_object_size_max": "Reconocimiento de obstáculos de tamaño máximo (píxel)", + "settings_camera_path_object_size_min": "Reconocimiento de obstáculos de tamaño mínimo (píxel)", + "settings_camera_cnn_default_model": "Red neuronal de reconocimiento de objetos: modelo predeterminado", + "settings_audio_title": "Configuración de audio", + "settings_audio_volume": "Volumen", + "settings_music_packages_title": "Administración de paquetes", + "settings_music_packages_installed": "Paquetes instalados:", + "settings_music_packages_type": "tipo:", + "settings_music_packages_add": "Agregar paquete", + "settings_music_packages_remove": "Eliminar Paquete", + "settings_music_package_installed": "Paquete instalado", + "settings_music_packages_installation_failed": "Error en la instalación", + "settings_music_packages_update": "Actualizar", + "settings_music_packages_select": "Seleccione el paquete para instalar", + "settings_music_packages_install_confirm_text": "Haz clic en \"Confirmar\" para instalar el paquete", + "settings_music_packages_install_confirm": "Confirmar", + "settings_tabs_general": "General", + "settings_tabs_movement": "Movimiento", + "settings_tabs_sounds": "Sonidos", + "settings_tabs_advanced": "Avanzado", + "settings_tabs_network": "Red", + "settings_tabs_test": "Prueba", + "settings_tabs_camera": "Cámara", + "settings_tabs_audio": "Audio", + "settings_tabs_music_packages": "Paquetes de música", + "settings_general_info": "Estado e información", + "settings_info": "Información", + "settings_status": "Estado", + "settings_music_packages": "Administración de paquetes", + "settings_music_packages_text_1": "Haz clic en \"Actualizar\" para ver los cambios.", + "settings_music_packages_text_2": "Actualización fallida, el paquete ya está presente con una versión posterior a la que deseas instalar.", + "settings_music_packages_text_3": "Actualización fallida, el paquete ya está presente con la misma versión.", + "settings_packages_text_1": "Carga completada. Reinicio en curso.", + "settings_reset_complete": "Configuración restaurada", + "settings_reset_text_1": "Restablecimiento a la configuración de fábrica realizado.\nReinicio en curso...", + "settings_music_package_removed": "Paquete eliminado", + "settings_updated": "Configuración actualizada", + "settings_network_updated": "Configuración de red actualizada", + "coderbot_status_shutting_down": "CoderBot apagándose...", + "coderbot_status_rebooting": "Reinicio en progreso...", + "coderbot_restart_start": "Reinicio iniciado...", + "coderbot_status_online": "CoderBot en línea", + "coderbot_status_offline": "CoderBot no está disponible", + "settings_toolbax_movement": "Movimiento", + "settings_toolbax_base": "Base", + "settings_toolbax_standard": "Estándar", + "settings_toolbax_advanced": "Avanzado", + "settings_confirm_exit_text": "Los cambios realizados se perderán, ¿confirmas que quieres cambiar de página?", + "settings_restart_needed": "Para que los cambios surtan efecto, reinicie CoderBot.", + "settings_admin_password_verify_title": "Acceso reservado", + "settings_admin_password_verify": "Insertar contraseña de administración", + "settings_admin_password_title": "Contraseña de administración", + "settings_admin_password": "contraseña", + "settings_admin_password_incorrect": "Contraseña no válida", + "settings_locale": "Idioma de la interfaz de usuario", + "validation_integer": "Insertar un número entero (1234)", + "validation_decimal": "Insertar un número decimal (12.34)", + "validation_integer_positive": "Inserte un número entero, positivo o igual a 0", + "validation_decimal_positive": "Inserta un número entero, positivo o igual a 0.0" +} diff --git a/src/i18n/locales/fr/messages.json b/src/i18n/locales/fr/messages.json index 512bb0b..954e615 100644 --- a/src/i18n/locales/fr/messages.json +++ b/src/i18n/locales/fr/messages.json @@ -1,8 +1,310 @@ { - "welcome": "Benvenuto in", - "choose_action": "Scegli un'azione per iniziare!", - "program": "Programma", - "docs": "Documentazione", - "control": "Controlla", - "settings": "Impostazioni" -} + "home": "Page d'accueil", + "welcome": "Bienvenue à", + "choose_action": "Choisissez une action à démarrer", + "program": "Programme", + "docs": "Documents", + "control": "Contrôle", + "settings": "Paramètres", + "gallery": "Galerie", + "running": "Exécution", + "close": "Fermer", + "program_list": "Liste des programmes", + "program_stop": "Arrêter le programme", + "cancel": "Annuler", + "error": "Erreur", + "save_as": "Enregistrer sous...", + "save": "Enregistrer", + "ok": "Ok", + "no": "Non", + "yes": "Oui", + "confirm": "Confirmer", + "program_status_title": "État du programme", + "program_running": "En cours d'exécution", + "program_completed": "Terminé", + "program_code": "Code", + "program_name_must_be_filled": "Le nom du programme ne peut pas être laissé vide.", + "cannot_overwrite_default_program": "Impossible d'écraser un programme par défaut, veuillez le renommer.", + "overwrite": "Ecraser", + "program_exists_overwrite": "Le programme avec le nom \"{programName}\" existe déjà. Voulez-vous l'écraser ?", + "delete": "Supprimer", + "delete_sure": "Êtes-vous sûr de vouloir supprimer le programme \"{programName}\" ?", + "clear_sure": "Êtes-vous sûr de vouloir effacer l'espace de travail ?", + "coderbot_status": "Statut du CoderBot", + "activity_new": "Nouvelle activité", + "activity_manage": "Gérer l'activité", + "activity_open": "Ouvrir", + "activity_edit": "Modifier l'activité", + "activity_tip_1": "Ici, vous pouvez créer ou modifier une activité, en définissant comment elle doit apparaître à l'étudiant qui l'utilisera pour écrire des programmes. N'oubliez pas que l'activité devra ensuite être lancée (Menu Activité -> Ouvrir) afin de l'utiliser réellement.", + "activity_data": "Paramètres d'activité", + "activity_typography": "Typographie", + "activity_typography_font_ui": "Police de l'interface", + "activity_typography_font_editor": "Police du code (valeurs, éditeurs de code)", + "activity_toolbar_preview": "Aperçu de la barre d'outils", + "activity_toolbar_button": "Bouton", + "activity_toolbar_buttons": "Modifier les boutons", + "activity_toolbar_buttons_add": "Ajouter", + "activity_toolbar_buttons_predefined": "Prédéfini", + "activity_toolbar_buttons_remove": "Supprimer", + "activity_toolbar_buttons_remove_all": "Tout supprimer", + "activity_toolbar_buttons_cannot_remove_run": "Le bouton \"Exécuter\" ne peut pas être supprimé", + "activity_toolbar_buttons_color": "Couleur du bouton", + "activity_toolbar_buttons_icon": "Icône", + "activity_toolbar_buttons_icon_select": "Sélectionner l'icône", + "activity_toolbar_buttons_color_select": "Sélectionner la couleur", + "activity_toolbar_buttons_show_label": "Afficher l'étiquette des boutons", + "activity_toolbar_views": "Vues", + "activity_list": "Liste des activités", + "activity_title": "Activité", + "activity_tip_2": "Ici, vous pouvez démarrer une activité enregistrée en cliquant sur son nom.", + "activity_program_title": "Programme", + "activity_program_clear": "Effacer", + "activity_program_run": "Exécuter", + "activity_program_load": "Chargement du programme", + "activity_program_save": "Enregistrer", + "activity_program_save_as": "Enregistrer sous...", + "activity_program_export": "Exporter", + "activity_program_import": "Importer", + "activity_program_show_code": "Afficher le code source", + "activity_tabs_general": "Général", + "activity_tabs_toolbar": "Barre d'outils", + "activity_tabs_runtime": "Vue d'exécution du programme", + "activity_views_title": "Vues", + "activity_views_program": "Programme", + "activity_views_python": "Python", + "activity_views_runtime": "Exécuter", + "activity_views_runtime_camera": "Caméra", + "activity_views_runtime_log": "Journal du programme", + "activity_program_editor_type": "Type d'éditeur", + "activity_font_size_s": "Petit", + "activity_font_size_m": "Moyen", + "activity_font_size_l": "Grand", + "activity_font_size_xl": "Énorme", + "activity_saved": "Activité enregistrée", + "activity_save_error": "Impossible d'enregistrer l'activité. Veuillez spécifier un nom pour l'activité", + "activity_program_save_as_name": "Nom du programme", + "activity_program_remaining_blocks": "Blocs restants", + "activity_description": "Description", + "activity_predefined_view": "Vue prédéfinie", + "activity_caps_only": "Majuscules uniquement", + "activity_theme": "Schéma sombre", + "activity_programing_title": "Programmation", + "activity_blocks_max_blocks": "Nombre maximum de blocs", + "activity_auto_rec_video": "Enregistrer une vidéo pour chaque programme exécuté", + "activity_name": "Nom de l'activité", + "activity_action": "Action", + "activity_lateral_menu_icon": "Icône du menu latéral", + "activity_text_color": "Couleur du texte", + "activity_label": "Libellé", + "activity_lang_browser": "Paramètre client par défaut", + "activity_lang_italian": "Italien", + "activity_lang_english": "Anglais", + "activity_lang_french": "Français", + "activity_lang_spanish": "Espagnol", + "activity_lang_german": "Allemand", + "activity_list_text_1": "L'icône {0} vous permet de le supprimer, en cliquant sur {1} vous pouvez le modifier.", + "activity_list_text_2": "Aucune activité, pourquoi pas {0} une nouvelle ?", + "activity_list_create": "créer", + "activity_list_delete_confirm_title": "Supprimer l'activité", + "activity_list_delete_confirm_text": "Êtes-vous sûr de vouloir annuler l'activité ?\nL'action est irréversible", + "activity_confirm_exit_text": "Les modifications apportées seront perdues, êtes-vous sûr de vouloir quitter la page ?", + "activity_category_title": "Catégorie", + "activity_category_name": "Nom de la catégorie", + "activity_tabs_toolbox": "Menu des blocs", + "activity_toolbox_category_add": "Ajouter une nouvelle catégorie", + "activity_toolbox_category_add_all": "Tout ajouter", + "activity_default": "Activité prédéfinie", + "activity_button_text_white": "Blanc", + "activity_button_text_black": "Noir", + "blockly_toolbox_category_base": "Base", + "blockly_toolbox_category_cycles": "Boucles", + "blockly_toolbox_category_math": "Mathématiques", + "blockly_toolbox_category_text": "Texte", + "blockly_toolbox_category_lists": "Listes", + "blockly_toolbox_category_logic": "Logique", + "blockly_toolbox_category_variables": "Variables", + "blockly_toolbox_category_functions": "Fonctions", + "blockly_toolbox_category_events": "Événements", + "blockly_toolbox_category_movement": "Mouvement", + "blockly_toolbox_category_camera": "Caméra", + "blockly_toolbox_category_vision": "Vision", + "blockly_toolbox_category_io_extensions": "Extensions d'E/S", + "blockly_toolbox_category_sound": "Son", + "blockly_toolbox_category_music": "Musique", + "blockly_toolbox_category_sensors": "Capteurs", + "control_speak": "Parler", + "control_speak_title": "Énoncer la phrase", + "control_speaking": "Parlant", + "control_photo_take": "Prendre une photo", + "control_photo_taken": "Photo prise", + "control_video_rec": "Enregistrer une vidéo", + "control_video_rec_started": "Enregistrement vidéo en cours", + "control_video_rec_stop": "Arrêter l'enregistrement vidéo", + "control_video_rec_stopped": "enregistrement vidéo terminé", + "control_sound_playing": "'Jouer une note'", + "control_photo_gallery": "Galerie", + "gallery_pixel_color": "Couleur des pixels", + "gallery_get_pixel_color": "Obtenir la couleur des pixels", + "coderbot_status_offline_1": "En attente que CoderBot revienne en ligne..", + "coderbot_status_offline_2": "CoderBot inaccessible", + "coderbot_status_offline_3": "CoderBot est hors ligne, vous ne pouvez pas exécuter le programme.", + "control_text_to_speech": "Texte à la parole", + "gallery_title": "Galerie", + "gallery_empty": "La galerie est vide", + "gallery_photo_confirm_title": "Confirmer", + "gallery_photo_confirm_text": "Êtes-vous sûr de vouloir supprimer cette photo ou vidéo ?", + "settings_title": "Paramètres", + "settings_errors": "Attention : certains paramètres sont incorrects", + "settings_system": "Système", + "settings_toolbox_level": "Niveau de la boîte à outils", + "settings_frontend_build": "Construction de l'interface", + "settings_actions_update_title": "Mettre à jour CoderBot", + "settings_actions": "Actions", + "settings_actions_halt": "Arrêter", + "settings_actions_halt_title": "Arrêter", + "settings_actions_halt_text_1": "Êtes-vous sûr de vouloir arrêter CoderBot ?", + "settings_actions_halt_text_2": "CoderBot va être arrêté, attendez quelques minutes et, pour l'arrêter définitivement, coupez l'alimentation.", + "settings_actions_halt_do": "Arrêter", + "settings_actions_reboot": "Redémarrer", + "settings_actions_reboot_title": "Redémarrage terminé", + "settings_actions_reboot_text_1": "Êtes-vous sûr de vouloir redémarrer complètement CoderBot ?", + "settings_actions_reboot_text_2": "L'activité prendra quelques minutes.", + "settings_actions_reboot_do": "Redémarrer", + "settings_actions_restart": "Redémarrer", + "settings_actions_restart_title": "Redémarrer", + "settings_actions_restart_text_1": "Êtes-vous sûr de vouloir redémarrer CoderBot ?", + "settings_actions_restart_text_2": "L'activité prendra quelques minutes.", + "settings_actions_restart_do": "Redémarrer", + "settings_actions_restore": "Restaurer les paramètres", + "settings_actions_restore_title": "Restaurer", + "settings_actions_restore_text_1": "Voulez-vous vraiment réinitialiser les paramètres de CoderBot ?", + "settings_actions_restore_text_2": "Les paramètres seront restaurés aux valeurs par défaut, les programmes et autres données seront préservés.", + "settings_actions_restore_do": "Restaurer", + "settings_actions_reset": "Restaurer les paramètres d'usine", + "settings_actions_reset_title": "Restaurer", + "settings_actions_reset_text_1": "Êtes-vous sûr de vouloir réinitialiser le CoderBot ?", + "settings_actions_reset_text_2": "Tous les fichiers enregistrés (programmes, photos, vidéos, sons, etc.) seront supprimés", + "settings_actions_reset_do": "Restaurer", + "settings_hardware_version": "Version de la carte de contrôle", + "settings_movement_control": "Paramètres du mode de contrôle", + "settings_movement_program": "En mode programmation", + "settings_movement_control_forward_speed": "Vitesse de déplacement", + "settings_movement_control_forward_elapse": "Déplacement écoulé", + "settings_movement_control_turn_speed": "Vitesse de rotation", + "settings_movement_control_turn_elapse": "Tour écoulé", + "settings_movement_program_forward_speed": "Vitesse de déplacement", + "settings_movement_program_forward_elapse": "Mouvement écoulé", + "settings_movement_program_turn_speed": "Vitesse de rotation", + "settings_movement_program_turn_elapse": "Tourner l'intervalle/l'angle", + "settings_movement_parameters": "Paramètres du moteur", + "settings_motion_parameters": "Paramètre de mouvement de vision", + "settings_movement_parameters_mode": "Mode de contrôle du moteur (dc=normal, servo=servomoteurs 360°)", + "settings_movement_parameters_trim": "Facteur de correction entre les moteurs (1.0 = aucun)", + "settings_motor_max_power": "Puissance maximale du moteur (0-100)", + "settings_motor_min_power": "Puissance moteur minimale (0-100)", + "settings_movement_parameters_power_1": "Puissance moteur (angle cible -15°)", + "settings_movement_parameters_power_2": "Puissance du moteur (angle cible -4°)", + "settings_movement_parameters_power_3": "Puissance moteur (angle cible -1°)", + "settings_movement_parameters_pid": "Paramètres PID de contrôle moteur", + "settings_movement_parameters_pid_max_speed": "Vitesse maximale", + "settings_movement_parameters_pid_sample_rate": "Intervalle de temps", + "settings_movement_parameters_pid_kp": "K proportionnel", + "settings_movement_parameters_pid_kd": "K dérivée", + "settings_movement_parameters_pid_ki": "K intégral", + "settings_sounds_title": "Sons personnalisés", + "settings_sounds_start": "Démarrer", + "settings_sounds_stop": "Arrêter", + "settings_sounds_shutter": "Prendre une photo", + "settings_button_title": "Fonction du bouton physique", + "settings_button_none": "Aucun", + "settings_button_startstop": "Démarrer/arrêter le programme en cours", + "settings_load_at_start_title": "Exécuter au démarrage", + "settings_load_at_start_program": "Nom du programme", + "settings_network_title": "Configuration réseau", + "settings_network_mode_client": "Se connecter à un réseau WiFi existant (client)", + "settings_network_mode_ap": "Laissez CoderBot configurer son propre réseau WiFi local (ad-hoc)", + "settings_network_ssid": "Nom du réseau Wi-Fi (SSID)", + "settings_network_username": "Nom d'utilisateur", + "settings_network_password": "Mot de passe Wi-Fi", + "settings_network_save_title": "Attention !", + "settings_network_save_text_1": "Cette opération va changer la configuration de CoderBot qui sera alors redémarré.", + "settings_network_wait": "Veuillez attendre la connexion.", + "settings_component_test_title": "Test des composants", + "settings_component_test_passed": "Réussi", + "settings_component_test_failed": "Échec", + "settings_component_test_not_tested": "Ignoré", + "settings_component_test_run": "Exécuter le test", + "settings_component_test_text_1": "Test en cours...", + "settings_component_test_motors": "Moteurs", + "settings_component_test_speaker": "Haut-parleur", + "settings_component_test_sonar": "Capteur de distance", + "settings_component_test_ocr": "Reconnaissance de texte", + "settings_camera_title": "Paramètres de la caméra", + "settings_camera_cv_title": "Vision par ordinateur", + "settings_camera_exposure_mode": "Mode d'exposition", + "settings_camera_framerate": "Images par seconde", + "settings_camera_jpeg_bitrate": "Débit de l'image (compression jpeg)", + "settings_camera_jpeg_quality": "Qualité d'image (compression jpeg)", + "settings_camera_cv_image_factor": "Facteur d'échelle pour la vision par ordinateur", + "settings_camera_color_object_size_max": "Recherche d'objet de taille maximale (pixel) par couleur", + "settings_camera_color_object_size_min": "Recherche d'objet de taille minimale (pixel) par couleur", + "settings_camera_path_object_size_max": "Reconnaissance d'obstacles de taille maximale (pixel)", + "settings_camera_path_object_size_min": "Reconnaissance d'obstacles de taille minimale (pixel)", + "settings_camera_cnn_default_model": "Réseau de neurones de reconnaissance d'objet : modèle par défaut", + "settings_audio_title": "Paramètres audio", + "settings_audio_volume": "Volume", + "settings_music_packages_title": "Gestion des packages", + "settings_music_packages_installed": "Paquets installés :", + "settings_music_packages_type": "type :", + "settings_music_packages_add": "Ajouter un paquet", + "settings_music_packages_remove": "Supprimer le paquet", + "settings_music_package_installed": "Paquet installé", + "settings_music_packages_installation_failed": "L'installation a échoué", + "settings_music_packages_update": "Mettre à jour", + "settings_music_packages_select": "Sélectionnez le package à installer", + "settings_music_packages_install_confirm_text": "Cliquez sur \"Confirmer\" pour installer le package", + "settings_music_packages_install_confirm": "Confirmer", + "settings_tabs_general": "Général", + "settings_tabs_movement": "Mouvement", + "settings_tabs_sounds": "Sons", + "settings_tabs_advanced": "Avancé", + "settings_tabs_network": "Réseau", + "settings_tabs_test": "Tester", + "settings_tabs_camera": "Caméra", + "settings_tabs_audio": "Audio", + "settings_tabs_music_packages": "Forfaits de musique", + "settings_general_info": "État et informations", + "settings_info": "Informations", + "settings_status": "Statut", + "settings_music_packages": "Gestion des packages", + "settings_music_packages_text_1": "Cliquez sur \"Mettre à jour\" pour afficher les modifications.", + "settings_music_packages_text_2": "La mise à jour a échoué, le package est déjà présent avec une version ultérieure à celle que vous souhaitez installer.", + "settings_music_packages_text_3": "La mise à jour a échoué, le package est déjà présent avec la même version.", + "settings_packages_text_1": "Téléchargement terminé. Redémarrage en cours.", + "settings_reset_complete": "Paramètres restaurés", + "settings_reset_text_1": "Réinitialisation aux paramètres d'usine effectuée.\nRedémarrage en cours...", + "settings_music_package_removed": "Paquet supprimé", + "settings_updated": "Paramètres mis à jour", + "settings_network_updated": "Paramètre réseau mis à jour", + "coderbot_status_shutting_down": "CoderBot en cours d'arrêt...", + "coderbot_status_rebooting": "Redémarrage en cours...", + "coderbot_restart_start": "Le redémarrage a commencé...", + "coderbot_status_online": "CoderBot en ligne", + "coderbot_status_offline": "CoderBot est inaccessible", + "settings_toolbax_movement": "Mouvement", + "settings_toolbax_base": "Base", + "settings_toolbax_standard": "Norme", + "settings_toolbax_advanced": "Avancé", + "settings_confirm_exit_text": "Les modifications apportées seront perdues, confirmez-vous que vous voulez changer de page ?", + "settings_restart_needed": "Pour que les modifications prennent effet, redémarrez CoderBot.", + "settings_admin_password_verify_title": "Accès réservé", + "settings_admin_password_verify": "Insérer le mot de passe administrateur", + "settings_admin_password_title": "Mot de passe administrateur", + "settings_admin_password": "mot de passe", + "settings_admin_password_incorrect": "Mot de passe invalide", + "settings_locale": "Langue de l'interface utilisateur", + "validation_integer": "Insérez un nombre entier (1234)", + "validation_decimal": "Insérer un nombre décimal (12.34)", + "validation_integer_positive": "Insère un nombre entier, positif ou égal à 0", + "validation_decimal_positive": "Insérez un nombre entier, positif ou égal à 0.0" +} \ No newline at end of file diff --git a/src/i18n/locales/it/messages.json b/src/i18n/locales/it/messages.json index 7d3f264..3e84aa7 100644 --- a/src/i18n/locales/it/messages.json +++ b/src/i18n/locales/it/messages.json @@ -37,7 +37,6 @@ "activity_edit": "Modifica Attività", "activity_tip_1": "Qui puoi creare o modificare una attività, definendo come dovrà apparire allo studente che dovrà utilizzarla per scrivere programmi. Ricorda che l'attività andrà poi avviata (Menù Attività -> Apri) per poterne fare effettivamente uso.", "activity_data": "Dati Attività", - "activity_locale": "Lingua interfaccia", "activity_typography": "Tipografia", "activity_typography_font_ui": "Carattere tipografico dell'interfaccia", "activity_typography_font_editor": "Carattere tipografico del codice (valori, editor di codice)", @@ -101,6 +100,8 @@ "activity_lang_italian": "Italiano", "activity_lang_english": "Inglese", "activity_lang_french": "Francese", + "activity_lang_spanish": "Spagnolo", + "activity_lang_german": "Tedesco", "activity_list_text_1": "L'icona {0} ti permette di eliminarla, mentre cliccando su {1} puoi modificarla.", "activity_list_text_2": "Nessuna Attività, perchè non ne {0} una nuova?", "activity_list_create": "crei", @@ -295,12 +296,13 @@ "settings_toolbax_standard": "Standard", "settings_toolbax_advanced": "Avanzate", "settings_confirm_exit_text": "Le modifiche apportate andranno perse, comfermi di voler cambiare pagina?", - "settings_restart_needed": "Per rendere effettive le modifiche, riavviare CdoerBot.", + "settings_restart_needed": "Per rendere effettive le modifiche, riavviare CoderBot.", "settings_admin_password_verify_title": "Accesso riservato", "settings_admin_password_verify": "Inserire la password di amministrazione.", "settings_admin_password_title": "Password di amministrazione.", "settings_admin_password": "password", "settings_admin_password_incorrect": "Password non corretta.", + "settings_locale": "Lingua interfaccia", "validation_integer": "Inserire un numero intero (1234)", "validation_decimal": "Inserire un numero decimale (12.34)", "validation_integer_positive": "Inserire un numero intero maggiore o uguale a 0", diff --git a/src/main.js b/src/main.js index 2fc8d5d..79e0d2e 100644 --- a/src/main.js +++ b/src/main.js @@ -52,6 +52,7 @@ const $wifi_connect = new WifiConnect(import.meta.env.VITE_CB_ENDPOINT, $axios); /* eslint-disable no-new */ const app = createApp(App); // Configuration + app.use(router); app.use(vuetify); app.use(store); @@ -66,6 +67,9 @@ app.defaultTheme = 'dark'; function loadConfig() { $coderbot.load().then(() => { console.log('config loaded'); + if(store.getters.settings.locale != 'browser') { + i18n.global.locale = store.getters.settings.locale; + } }).catch((errors) => { console.log('error loading config: ', errors); setTimeout(loadConfig, 1000);