diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml
index 6e574a60a00..39bce0edf18 100644
--- a/.github/workflows/ci-cd.yml
+++ b/.github/workflows/ci-cd.yml
@@ -107,6 +107,7 @@ jobs:
QUALITATIVE_FEEDBACK_TUTORIALS_USER_FREQUENCY: "${{ vars.QUALITATIVE_FEEDBACK_TUTORIALS_USER_FREQUENCY }}"
QUALITATIVE_FEEDBACK_ENDING_DATE: "${{ vars.QUALITATIVE_FEEDBACK_ENDING_DATE }}"
IDEAS_GENERATOR_SOURCE: "${{ vars.IDEAS_GENERATOR_SOURCE }}"
+ MANUALLY_SAVE_THUMBNAILS: "${{ vars.MANUALLY_SAVE_THUMBNAILS }}"
# used by src/template-config.js
GTM_ID: ${{ secrets.GTM_ID }}
diff --git a/bin/browserslist-to-html.cjs b/bin/browserslist-to-html.cjs
new file mode 100755
index 00000000000..b83aff67be4
--- /dev/null
+++ b/bin/browserslist-to-html.cjs
@@ -0,0 +1,95 @@
+#!/usr/bin/env node
+
+const readline = require('node:readline');
+
+const friendlyBrowsers = {
+ and_chr: 'Android Chrome',
+ chrome: 'Chrome',
+ edge: 'Edge',
+ firefox: 'Firefox',
+ ios_saf: 'iOS Safari',
+ safari: 'Safari'
+};
+
+/**
+ * Zips together multiple iterables. Most implementations stop as soon as one iterable is exhausted,
+ * but this implementation continues until all iterables are exhausted, filling in `undefined` for
+ * any missing values.
+ * @param {...Iterable} iterables The iterables to zip together.
+ * @yields {Array} An array containing the next value from each iterable, or `undefined` if an iterable is exhausted.
+ * @example
+ * const zipped = zipAll([1, 2], ['a', 'b', 'c'], [true]);
+ * console.log([...zipped]); // [[1, 'a', true], [2, 'b', undefined], [undefined, 'c', undefined]]
+ */
+const zipAll = function*(...iterables) {
+ const iterators = iterables.map(iterable => iterable[Symbol.iterator]());
+ while (true) {
+ const results = iterators.map(iterator => iterator.next());
+ if (results.every(result => result.done)) {
+ return;
+ }
+ yield results.map(result => result.value);
+ }
+};
+
+const main = async () => {
+ const input = readline.createInterface({
+ input: process.stdin
+ });
+
+ const browsers = {};
+
+ for await (const line of input) {
+ const [browser, version] = line.split(' ');
+ if (!browsers[browser]) {
+ browsers[browser] = [];
+ }
+ browsers[browser].unshift(version);
+ }
+
+ process.stdout.write([
+ '',
+ '',
+ '
',
+ ' Scratch: Supported Browsers',
+ ' ',
+ ' ',
+ ' ',
+ ' ',
+ ' ',
+ ' Supported Browsers',
+ ' ',
+ ' ',
+ ''
+ ].join('\n'));
+
+ const browserIds = Object.keys(browsers).sort();
+ for (const browserId of browserIds) {
+ process.stdout.write(` ${friendlyBrowsers[browserId] || browserId} | \n`);
+ }
+ process.stdout.write([
+ '
',
+ ' ',
+ ' ',
+ ''
+ ].join('\n'));
+ for (const versions of zipAll(...Object.values(browsers))) {
+ process.stdout.write(' \n');
+ for (const version of versions) {
+ process.stdout.write(` ${version || ''} | \n`);
+ }
+ process.stdout.write('
\n');
+ }
+ process.stdout.write([
+ ' ',
+ '
',
+ ' ',
+ '',
+ ''
+ ].join('\n'));
+};
+
+main();
diff --git a/package-lock.json b/package-lock.json
index 5688c175bec..7a1a7d8ba01 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,23 +23,23 @@
"react-twitter-embed": "3.0.3",
"react-use": "17.6.0",
"scratch-parser": "6.0.0",
- "scratch-storage": "^4.0.179"
+ "scratch-storage": "^4.0.214"
},
"devDependencies": {
- "@babel/cli": "7.27.2",
- "@babel/core": "7.27.7",
- "@babel/eslint-parser": "7.27.5",
+ "@babel/cli": "7.28.3",
+ "@babel/core": "7.28.3",
+ "@babel/eslint-parser": "7.28.0",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/plugin-transform-async-to-generator": "7.27.1",
- "@babel/plugin-transform-object-rest-spread": "7.27.7",
- "@babel/preset-env": "7.27.2",
+ "@babel/plugin-transform-object-rest-spread": "7.28.0",
+ "@babel/preset-env": "7.28.3",
"@babel/preset-react": "7.27.1",
"@formatjs/intl-datetimeformat": "6.18.0",
"@formatjs/intl-locale": "3.4.6",
"@formatjs/intl-numberformat": "8.15.4",
"@formatjs/intl-pluralrules": "5.4.4",
"@formatjs/intl-relativetimeformat": "11.4.11",
- "@scratch/scratch-gui": "11.3.0",
+ "@scratch/scratch-gui": "11.6.0-face-sensing.2",
"@types/jest": "29.5.14",
"async": "3.2.6",
"autoprefixer": "10.4.21",
@@ -94,7 +94,7 @@
"postcss-loader": "4.3.0",
"postcss-simple-vars": "5.0.2",
"prop-types": "15.8.1",
- "query-string": "9.2.1",
+ "query-string": "9.2.2",
"react": "16.14.0",
"react-dom": "16.14.0",
"react-intl": "5.25.1",
@@ -110,17 +110,17 @@
"redux-mock-store": "1.5.5",
"redux-thunk": "2.4.2",
"regenerator-runtime": "0.13.9",
- "sass": "1.89.2",
+ "sass": "1.90.0",
"sass-loader": "10.5.2",
- "scratch-l10n": "5.0.294",
- "selenium-webdriver": "4.34.0",
+ "scratch-l10n": "6.0.30",
+ "selenium-webdriver": "4.35.0",
"slick-carousel": "1.8.1",
"stream-browserify": "3.0.0",
"style-loader": "4.0.0",
"tap": "14.11.0",
"url-loader": "3.0.0",
"use-onclickoutside": "0.4.1",
- "webpack": "5.99.9",
+ "webpack": "5.101.2",
"webpack-bundle-analyzer": "4.10.2",
"webpack-cli": "5.1.4",
"webpack-dev-middleware": "5.3.4",
@@ -146,6 +146,7 @@
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz",
"integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@csstools/css-calc": "^2.1.3",
"@csstools/css-color-parser": "^3.0.9",
@@ -158,16 +159,17 @@
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@babel/cli": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.27.2.tgz",
- "integrity": "sha512-cfd7DnGlhH6OIyuPSSj3vcfIdnbXukhAyKY8NaZrFadC7pXyL9mOL5WgjcptiEJLi5k3j8aYvLIVCzezrWTaiA==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.28.3.tgz",
+ "integrity": "sha512-n1RU5vuCX0CsaqaXm9I0KUCNKNQMy5epmzl/xdSSm70bSqhg9GWhgeosypyQLc0bK24+Xpk1WGzZlI9pJtkZdg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.25",
+ "@jridgewell/trace-mapping": "^0.3.28",
"commander": "^6.2.0",
"convert-source-map": "^2.0.0",
"fs-readdir-recursive": "^1.1.0",
@@ -228,9 +230,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.27.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
- "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz",
+ "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -238,22 +240,22 @@
}
},
"node_modules/@babel/core": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.7.tgz",
- "integrity": "sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz",
+ "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.27.5",
+ "@babel/generator": "^7.28.3",
"@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.27.3",
- "@babel/helpers": "^7.27.6",
- "@babel/parser": "^7.27.7",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.3",
+ "@babel/parser": "^7.28.3",
"@babel/template": "^7.27.2",
- "@babel/traverse": "^7.27.7",
- "@babel/types": "^7.27.7",
+ "@babel/traverse": "^7.28.3",
+ "@babel/types": "^7.28.2",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -269,9 +271,9 @@
}
},
"node_modules/@babel/eslint-parser": {
- "version": "7.27.5",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.27.5.tgz",
- "integrity": "sha512-HLkYQfRICudzcOtjGwkPvGc5nF1b4ljLZh1IRDj50lRZ718NAKVgQpIAUX8bfg6u/yuSKY3L7E0YzIV+OxrB8Q==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.0.tgz",
+ "integrity": "sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -288,16 +290,16 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.27.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",
- "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
+ "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.27.5",
- "@babel/types": "^7.27.3",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
+ "@babel/parser": "^7.28.3",
+ "@babel/types": "^7.28.2",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
},
"engines": {
@@ -335,18 +337,18 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz",
- "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz",
+ "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-annotate-as-pure": "^7.27.3",
"@babel/helper-member-expression-to-functions": "^7.27.1",
"@babel/helper-optimise-call-expression": "^7.27.1",
"@babel/helper-replace-supers": "^7.27.1",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/traverse": "^7.27.1",
+ "@babel/traverse": "^7.28.3",
"semver": "^6.3.1"
},
"engines": {
@@ -375,22 +377,32 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz",
- "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==",
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz",
+ "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "debug": "^4.4.1",
"lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
+ "resolve": "^1.22.10"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-member-expression-to-functions": {
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
@@ -420,15 +432,15 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
- "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-module-imports": "^7.27.1",
"@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.27.3"
+ "@babel/traverse": "^7.28.3"
},
"engines": {
"node": ">=6.9.0"
@@ -541,42 +553,42 @@
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz",
- "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz",
+ "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.1",
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.3",
+ "@babel/types": "^7.28.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.27.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
- "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz",
+ "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/template": "^7.27.2",
- "@babel/types": "^7.27.6"
+ "@babel/types": "^7.28.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.7.tgz",
- "integrity": "sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz",
+ "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.7"
+ "@babel/types": "^7.28.2"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -653,14 +665,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz",
- "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz",
+ "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/traverse": "^7.28.3"
},
"engines": {
"node": ">=6.9.0"
@@ -984,15 +996,15 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz",
- "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz",
+ "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1",
"@babel/helper-remap-async-to-generator": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/traverse": "^7.28.0"
},
"engines": {
"node": ">=6.9.0"
@@ -1036,9 +1048,9 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.27.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz",
- "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz",
+ "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1069,13 +1081,13 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz",
- "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz",
+ "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-create-class-features-plugin": "^7.28.3",
"@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
@@ -1086,18 +1098,18 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz",
- "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.3.tgz",
+ "integrity": "sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-compilation-targets": "^7.27.1",
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-globals": "^7.28.0",
"@babel/helper-plugin-utils": "^7.27.1",
"@babel/helper-replace-supers": "^7.27.1",
- "@babel/traverse": "^7.27.1",
- "globals": "^11.1.0"
+ "@babel/traverse": "^7.28.3"
},
"engines": {
"node": ">=6.9.0"
@@ -1124,14 +1136,14 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.7.tgz",
- "integrity": "sha512-pg3ZLdIKWCP0CrJm0O4jYjVthyBeioVfvz9nwt6o5paUxsgJ/8GucSMAIaj6M7xA4WY+SrvtGu2LijzkdyecWQ==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz",
+ "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.7"
+ "@babel/traverse": "^7.28.0"
},
"engines": {
"node": ">=6.9.0"
@@ -1206,6 +1218,23 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-explicit-resource-management": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz",
+ "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-transform-destructuring": "^7.28.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-transform-exponentiation-operator": {
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz",
@@ -1473,17 +1502,17 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.7.tgz",
- "integrity": "sha512-201B1kFTWhckclcXpWHc8uUpYziDX/Pl4rxl0ZX0DiCZ3jknwfSUALL3QCYeeXXB37yWxJbo+g+Vfq8pAaHi3w==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz",
+ "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-compilation-targets": "^7.27.2",
"@babel/helper-plugin-utils": "^7.27.1",
- "@babel/plugin-transform-destructuring": "^7.27.7",
+ "@babel/plugin-transform-destructuring": "^7.28.0",
"@babel/plugin-transform-parameters": "^7.27.7",
- "@babel/traverse": "^7.27.7"
+ "@babel/traverse": "^7.28.0"
},
"engines": {
"node": ">=6.9.0"
@@ -1610,9 +1639,9 @@
}
},
"node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz",
- "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz",
+ "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1679,9 +1708,9 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.27.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz",
- "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.3.tgz",
+ "integrity": "sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1876,13 +1905,13 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz",
- "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz",
+ "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.2",
+ "@babel/compat-data": "^7.28.0",
"@babel/helper-compilation-targets": "^7.27.2",
"@babel/helper-plugin-utils": "^7.27.1",
"@babel/helper-validator-option": "^7.27.1",
@@ -1890,25 +1919,26 @@
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
"@babel/plugin-syntax-import-assertions": "^7.27.1",
"@babel/plugin-syntax-import-attributes": "^7.27.1",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
"@babel/plugin-transform-arrow-functions": "^7.27.1",
- "@babel/plugin-transform-async-generator-functions": "^7.27.1",
+ "@babel/plugin-transform-async-generator-functions": "^7.28.0",
"@babel/plugin-transform-async-to-generator": "^7.27.1",
"@babel/plugin-transform-block-scoped-functions": "^7.27.1",
- "@babel/plugin-transform-block-scoping": "^7.27.1",
+ "@babel/plugin-transform-block-scoping": "^7.28.0",
"@babel/plugin-transform-class-properties": "^7.27.1",
- "@babel/plugin-transform-class-static-block": "^7.27.1",
- "@babel/plugin-transform-classes": "^7.27.1",
+ "@babel/plugin-transform-class-static-block": "^7.28.3",
+ "@babel/plugin-transform-classes": "^7.28.3",
"@babel/plugin-transform-computed-properties": "^7.27.1",
- "@babel/plugin-transform-destructuring": "^7.27.1",
+ "@babel/plugin-transform-destructuring": "^7.28.0",
"@babel/plugin-transform-dotall-regex": "^7.27.1",
"@babel/plugin-transform-duplicate-keys": "^7.27.1",
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
"@babel/plugin-transform-dynamic-import": "^7.27.1",
+ "@babel/plugin-transform-explicit-resource-management": "^7.28.0",
"@babel/plugin-transform-exponentiation-operator": "^7.27.1",
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
"@babel/plugin-transform-for-of": "^7.27.1",
@@ -1925,15 +1955,15 @@
"@babel/plugin-transform-new-target": "^7.27.1",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
"@babel/plugin-transform-numeric-separator": "^7.27.1",
- "@babel/plugin-transform-object-rest-spread": "^7.27.2",
+ "@babel/plugin-transform-object-rest-spread": "^7.28.0",
"@babel/plugin-transform-object-super": "^7.27.1",
"@babel/plugin-transform-optional-catch-binding": "^7.27.1",
"@babel/plugin-transform-optional-chaining": "^7.27.1",
- "@babel/plugin-transform-parameters": "^7.27.1",
+ "@babel/plugin-transform-parameters": "^7.27.7",
"@babel/plugin-transform-private-methods": "^7.27.1",
"@babel/plugin-transform-private-property-in-object": "^7.27.1",
"@babel/plugin-transform-property-literals": "^7.27.1",
- "@babel/plugin-transform-regenerator": "^7.27.1",
+ "@babel/plugin-transform-regenerator": "^7.28.3",
"@babel/plugin-transform-regexp-modifiers": "^7.27.1",
"@babel/plugin-transform-reserved-words": "^7.27.1",
"@babel/plugin-transform-shorthand-properties": "^7.27.1",
@@ -1946,10 +1976,10 @@
"@babel/plugin-transform-unicode-regex": "^7.27.1",
"@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
"@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.11.0",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.40.0",
+ "babel-plugin-polyfill-corejs2": "^0.4.14",
+ "babel-plugin-polyfill-corejs3": "^0.13.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.5",
+ "core-js-compat": "^3.43.0",
"semver": "^6.3.1"
},
"engines": {
@@ -1996,9 +2026,9 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.27.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
- "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz",
+ "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -2020,28 +2050,28 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz",
- "integrity": "sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz",
+ "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.27.5",
- "@babel/parser": "^7.27.7",
+ "@babel/generator": "^7.28.3",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.3",
"@babel/template": "^7.27.2",
- "@babel/types": "^7.27.7",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
+ "@babel/types": "^7.28.2",
+ "debug": "^4.3.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.7.tgz",
- "integrity": "sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==",
+ "version": "7.28.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz",
+ "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2101,6 +2131,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT-0",
"engines": {
"node": ">=18"
}
@@ -2120,6 +2151,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -2143,6 +2175,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"dependencies": {
"@csstools/color-helpers": "^5.0.2",
"@csstools/css-calc": "^2.1.4"
@@ -2170,6 +2203,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -2192,6 +2226,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -2206,6 +2241,448 @@
"node": ">=10.0.0"
}
},
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
+ "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
+ "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
+ "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
+ "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
+ "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
+ "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
+ "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
+ "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
+ "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
+ "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
+ "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
+ "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
+ "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
+ "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
+ "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
+ "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
+ "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
+ "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
+ "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
+ "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
+ "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
@@ -2266,39 +2743,10 @@
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/@eslint/js": {
@@ -2697,16 +3145,6 @@
"node": ">=8"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
"node_modules/@istanbuljs/load-nyc-config/node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -2801,13 +3239,6 @@
"node": ">=8"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true,
- "license": "BSD-3-Clause"
- },
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -3183,18 +3614,14 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
- "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/sourcemap-codec": "^1.5.0",
"@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
@@ -3207,20 +3634,10 @@
"node": ">=6.0.0"
}
},
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/@jridgewell/source-map": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
- "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3229,15 +3646,15 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "version": "0.3.30",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz",
+ "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3393,6 +3810,13 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@mediapipe/face_detection": {
+ "version": "0.4.1646425229",
+ "resolved": "https://registry.npmjs.org/@mediapipe/face_detection/-/face_detection-0.4.1646425229.tgz",
+ "integrity": "sha512-aeCN+fRAojv9ch3NXorP6r5tcGVLR3/gC1HmtqB0WEZBRXrdP6/3W/sGR0dHr1iT6ueiK95G9PVjbzFosf/hrg==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/@microbit/microbit-universal-hex": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@microbit/microbit-universal-hex/-/microbit-universal-hex-0.2.2.tgz",
@@ -3870,21 +4294,25 @@
"resolved": "https://registry.npmjs.org/@scratch/paper/-/paper-0.11.20221201200345.tgz",
"integrity": "sha512-I3BZNrHeaQJt2H6TD7HGsuBKJPDDF/BIDOaRvnN7Gj/QBRvpSaRK8JAmzcrRHZ+AqNtKrG50eOkS/acMjTw3rw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/@scratch/scratch-gui": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/@scratch/scratch-gui/-/scratch-gui-11.3.0.tgz",
- "integrity": "sha512-WLg7qtBNm+KRU6+AlIDg/qUBOiraKxT44UA1MSEbUCGvnjs+2AhLTWh6mRjqSAIytem06u0xyyI6lDGpQXknvw==",
+ "version": "11.6.0-face-sensing.2",
+ "resolved": "https://registry.npmjs.org/@scratch/scratch-gui/-/scratch-gui-11.6.0-face-sensing.2.tgz",
+ "integrity": "sha512-TqlkOCr/WxGlD7T9YTXg8/5Ges0Pob/7qpllS5XNFoRiAE7JPmYNo8BdEmQumiUFGRWZbtTpyKJyvnBBzN+ZSA==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
+ "@mediapipe/face_detection": "0.4.1646425229",
"@microbit/microbit-universal-hex": "0.2.2",
- "@scratch/scratch-render": "11.3.0",
- "@scratch/scratch-svg-renderer": "11.3.0",
- "@scratch/scratch-vm": "11.3.0",
+ "@scratch/scratch-render": "11.6.0-face-sensing.2",
+ "@scratch/scratch-svg-renderer": "11.6.0-face-sensing.2",
+ "@scratch/scratch-vm": "11.6.0-face-sensing.2",
+ "@tensorflow-models/face-detection": "^1.0.3",
+ "@tensorflow/tfjs": "^4.22.0",
"arraybuffer-loader": "1.0.8",
"autoprefixer": "9.8.8",
"balance-text": "3.3.1",
@@ -3933,12 +4361,12 @@
"react-virtualized": "9.22.6",
"react-visibility-sensor": "5.1.1",
"redux-throttle": "0.1.1",
- "scratch-audio": "2.0.179",
+ "scratch-audio": "2.0.199",
"scratch-blocks": "1.1.210",
- "scratch-l10n": "5.0.293",
- "scratch-paint": "3.0.314",
- "scratch-render-fonts": "1.0.209",
- "scratch-storage": "4.0.178",
+ "scratch-l10n": "6.0.13",
+ "scratch-paint": "3.0.339",
+ "scratch-render-fonts": "1.0.218",
+ "scratch-storage": "4.0.201",
"startaudiocontext": "1.2.1",
"style-loader": "4.0.0",
"text-encoding": "0.7.0",
@@ -3996,6 +4424,28 @@
"node": ">=0.10"
}
},
+ "node_modules/@scratch/scratch-gui/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@scratch/scratch-gui/node_modules/intl-messageformat": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz",
@@ -4041,6 +4491,22 @@
"microee": "0.0.6"
}
},
+ "node_modules/@scratch/scratch-gui/node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@scratch/scratch-gui/node_modules/picocolors": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
@@ -4118,25 +4584,30 @@
}
},
"node_modules/@scratch/scratch-gui/node_modules/scratch-l10n": {
- "version": "5.0.293",
- "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-5.0.293.tgz",
- "integrity": "sha512-aeIwlQG8gUAL8A9zmsBq4GcS4R5N7ZDg6xY9oNU9jTejcNUtWpLlmEnstWm0PZHeuySTdOjToCC7sIsLZY0Uog==",
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-6.0.13.tgz",
+ "integrity": "sha512-uQyGFxd8eM9tn9dlxWLE7SGa5wBNVcIrR4YZaYLinzIysp563tsWxM/ucvvvcfo7PiNy7AOcQvy6C/IgcsJYig==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
"@transifex/api": "7.1.4",
- "download": "8.0.0",
- "transifex": "1.6.6"
+ "async": "3.2.6",
+ "format-message-parse": "6.2.4",
+ "glob": "7.2.3",
+ "lodash.defaultsdeep": "4.6.1",
+ "mkdirp": "3.0.1",
+ "transifex": "1.6.6",
+ "tsx": "4.20.3"
},
"bin": {
- "build-i18n-src": "scripts/build-i18n-src.js",
- "tx-push-src": "scripts/tx-push-src.js"
+ "build-i18n-src": "scripts/build-i18n-src.mts",
+ "tx-push-src": "scripts/tx-push-src.mts"
}
},
"node_modules/@scratch/scratch-gui/node_modules/scratch-storage": {
- "version": "4.0.178",
- "resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-4.0.178.tgz",
- "integrity": "sha512-twZ6yidoaKjoO9yCzYK4D7wwqr8zbafYhCeuzpOoEUaRmiPKuMnPlFNYDLt6FEFpXcXglpkhinmsB0d92hZj1w==",
+ "version": "4.0.201",
+ "resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-4.0.201.tgz",
+ "integrity": "sha512-wexsLsewAjpARvP3wUR43zM5TE+LM4hm9blGoy2cC7m39UGzhrZCjsbDfRX26JwQBHI33RhBU7NjAFdT+WmZvQ==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
@@ -4150,14 +4621,34 @@
"minilog": "^3.1.0"
}
},
+ "node_modules/@scratch/scratch-gui/node_modules/tsx": {
+ "version": "4.20.3",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz",
+ "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.25.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
"node_modules/@scratch/scratch-render": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/@scratch/scratch-render/-/scratch-render-11.3.0.tgz",
- "integrity": "sha512-Nj2hH5+HKorxTB5ikQLUXbFgsSOu2WmjqBE+pnt2+TZZW5F0IAJzDUSvCz+sBRlDlvopSP6hp0Blg3XzZap5jw==",
+ "version": "11.6.0-face-sensing.2",
+ "resolved": "https://registry.npmjs.org/@scratch/scratch-render/-/scratch-render-11.6.0-face-sensing.2.tgz",
+ "integrity": "sha512-M7J105fwGHdVcc0DJjMYlf21xS3Fk0AI3hgzq5GAZm6WbnAPKHWITmWaotA8a1vQ6+kTG0OHd2xjNtkcaZR34A==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
- "@scratch/scratch-svg-renderer": "11.3.0",
+ "@scratch/scratch-svg-renderer": "11.6.0-face-sensing.2",
"grapheme-breaker": "0.3.2",
"hull.js": "0.2.10",
"ify-loader": "1.1.0",
@@ -4194,9 +4685,9 @@
"dev": true
},
"node_modules/@scratch/scratch-svg-renderer": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/@scratch/scratch-svg-renderer/-/scratch-svg-renderer-11.3.0.tgz",
- "integrity": "sha512-/oy7oIg6ouB+qJWTQ39hhlTDU3iAuJiIPETr2Fdm+p9lU9fm53aEWzvUne8CN7ikm79mx5kEJ5wed4IyMAPwHQ==",
+ "version": "11.6.0-face-sensing.2",
+ "resolved": "https://registry.npmjs.org/@scratch/scratch-svg-renderer/-/scratch-svg-renderer-11.6.0-face-sensing.2.tgz",
+ "integrity": "sha512-T/V4FKki5JeO72EEHxpI+hwp9MqBU7ghRuXqvUt5miIVTLl0UlokEKS9UP9LOZ3nJTir7cUX9/YjizU6S9gtDw==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
@@ -4204,7 +4695,7 @@
"base64-loader": "1.0.0",
"css-tree": "1.1.3",
"fastestsmallesttextencoderdecoder": "1.0.22",
- "isomorphic-dompurify": "2.25.0",
+ "isomorphic-dompurify": "2.26.0",
"minilog": "3.1.0",
"transformation-matrix": "1.15.3"
},
@@ -4230,14 +4721,14 @@
}
},
"node_modules/@scratch/scratch-vm": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/@scratch/scratch-vm/-/scratch-vm-11.3.0.tgz",
- "integrity": "sha512-4dqsmpeGRsb3iHqi0gm1CcKz7OobPg5oMCPXbsuN5pJFR1ZKh/OyjkGRo8P8yWg2MDqbDKgrqj3ghmsuE/SJHA==",
+ "version": "11.6.0-face-sensing.2",
+ "resolved": "https://registry.npmjs.org/@scratch/scratch-vm/-/scratch-vm-11.6.0-face-sensing.2.tgz",
+ "integrity": "sha512-8FPrELSZOz6jgq39DvTST6nuV1XaUMozI7w+MsfRIR6baloYQLKwarUKGBE8W4KU9qZGcMmLirQDM6LRfrT4KA==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
- "@scratch/scratch-render": "11.3.0",
- "@scratch/scratch-svg-renderer": "11.3.0",
+ "@scratch/scratch-render": "11.6.0-face-sensing.2",
+ "@scratch/scratch-svg-renderer": "11.6.0-face-sensing.2",
"@vernier/godirect": "1.8.3",
"arraybuffer-loader": "1.0.8",
"atob": "2.1.2",
@@ -4250,10 +4741,10 @@
"immutable": "3.8.2",
"jszip": "3.10.1",
"minilog": "3.1.0",
- "scratch-audio": "2.0.179",
+ "scratch-audio": "2.0.199",
"scratch-parser": "6.0.0",
- "scratch-sb1-converter": "2.0.177",
- "scratch-storage": "4.0.178",
+ "scratch-sb1-converter": "2.0.199",
+ "scratch-storage": "4.0.201",
"scratch-translate-extension-languages": "1.0.7",
"text-encoding": "0.7.0",
"uuid": "8.3.2",
@@ -4278,9 +4769,9 @@
}
},
"node_modules/@scratch/scratch-vm/node_modules/scratch-storage": {
- "version": "4.0.178",
- "resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-4.0.178.tgz",
- "integrity": "sha512-twZ6yidoaKjoO9yCzYK4D7wwqr8zbafYhCeuzpOoEUaRmiPKuMnPlFNYDLt6FEFpXcXglpkhinmsB0d92hZj1w==",
+ "version": "4.0.201",
+ "resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-4.0.201.tgz",
+ "integrity": "sha512-wexsLsewAjpARvP3wUR43zM5TE+LM4hm9blGoy2cC7m39UGzhrZCjsbDfRX26JwQBHI33RhBU7NjAFdT+WmZvQ==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
@@ -4331,6 +4822,163 @@
"@sinonjs/commons": "^3.0.0"
}
},
+ "node_modules/@tensorflow-models/face-detection": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tensorflow-models/face-detection/-/face-detection-1.0.3.tgz",
+ "integrity": "sha512-4Ld/vFF8MrdFdrMWhlLKZD4hMW0PNY9OkYeqoCPNZ+LwFyenxAqVaNaWrR8JKp37vw9Nuzp4ILbkal5zPUnA0g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "rimraf": "^3.0.2",
+ "tslib": "2.4.0"
+ },
+ "peerDependencies": {
+ "@mediapipe/face_detection": "~0.4.0",
+ "@tensorflow/tfjs-backend-webgl": "^4.21.0",
+ "@tensorflow/tfjs-converter": "^4.21.0",
+ "@tensorflow/tfjs-core": "^4.21.0"
+ }
+ },
+ "node_modules/@tensorflow-models/face-detection/node_modules/tslib": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/@tensorflow/tfjs": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-4.22.0.tgz",
+ "integrity": "sha512-0TrIrXs6/b7FLhLVNmfh8Sah6JgjBPH4mZ8JGb7NU6WW+cx00qK5BcAZxw7NCzxj6N8MRAIfHq+oNbPUNG5VAg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@tensorflow/tfjs-backend-cpu": "4.22.0",
+ "@tensorflow/tfjs-backend-webgl": "4.22.0",
+ "@tensorflow/tfjs-converter": "4.22.0",
+ "@tensorflow/tfjs-core": "4.22.0",
+ "@tensorflow/tfjs-data": "4.22.0",
+ "@tensorflow/tfjs-layers": "4.22.0",
+ "argparse": "^1.0.10",
+ "chalk": "^4.1.0",
+ "core-js": "3.29.1",
+ "regenerator-runtime": "^0.13.5",
+ "yargs": "^16.0.3"
+ },
+ "bin": {
+ "tfjs-custom-module": "dist/tools/custom_module/cli.js"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-backend-cpu": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.22.0.tgz",
+ "integrity": "sha512-1u0FmuLGuRAi8D2c3cocHTASGXOmHc/4OvoVDENJayjYkS119fcTcQf4iHrtLthWyDIPy3JiPhRrZQC9EwnhLw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/seedrandom": "^2.4.28",
+ "seedrandom": "^3.0.5"
+ },
+ "engines": {
+ "yarn": ">= 1.3.2"
+ },
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.22.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-backend-webgl": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.22.0.tgz",
+ "integrity": "sha512-H535XtZWnWgNwSzv538czjVlbJebDl5QTMOth4RXr2p/kJ1qSIXE0vZvEtO+5EC9b00SvhplECny2yDewQb/Yg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@tensorflow/tfjs-backend-cpu": "4.22.0",
+ "@types/offscreencanvas": "~2019.3.0",
+ "@types/seedrandom": "^2.4.28",
+ "seedrandom": "^3.0.5"
+ },
+ "engines": {
+ "yarn": ">= 1.3.2"
+ },
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.22.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-converter": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.22.0.tgz",
+ "integrity": "sha512-PT43MGlnzIo+YfbsjM79Lxk9lOq6uUwZuCc8rrp0hfpLjF6Jv8jS84u2jFb+WpUeuF4K33ZDNx8CjiYrGQ2trQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.22.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-core": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.22.0.tgz",
+ "integrity": "sha512-LEkOyzbknKFoWUwfkr59vSB68DMJ4cjwwHgicXN0DUi3a0Vh1Er3JQqCI1Hl86GGZQvY8ezVrtDIvqR1ZFW55A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/long": "^4.0.1",
+ "@types/offscreencanvas": "~2019.7.0",
+ "@types/seedrandom": "^2.4.28",
+ "@webgpu/types": "0.1.38",
+ "long": "4.0.0",
+ "node-fetch": "~2.6.1",
+ "seedrandom": "^3.0.5"
+ },
+ "engines": {
+ "yarn": ">= 1.3.2"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": {
+ "version": "2019.7.3",
+ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz",
+ "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tensorflow/tfjs-data": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-4.22.0.tgz",
+ "integrity": "sha512-dYmF3LihQIGvtgJrt382hSRH4S0QuAp2w1hXJI2+kOaEqo5HnUPG0k5KA6va+S1yUhx7UBToUKCBHeLHFQRV4w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node-fetch": "^2.1.2",
+ "node-fetch": "~2.6.1",
+ "string_decoder": "^1.3.0"
+ },
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.22.0",
+ "seedrandom": "^3.0.5"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-layers": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-4.22.0.tgz",
+ "integrity": "sha512-lybPj4ZNj9iIAPUj7a8ZW1hg8KQGfqWLlCZDi9eM/oNKCCAgchiyzx8OrYoWmRrB+AM6VNEeIT+2gZKg5ReihA==",
+ "dev": true,
+ "license": "Apache-2.0 AND MIT",
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.22.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs/node_modules/core-js": {
+ "version": "3.29.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.1.tgz",
+ "integrity": "sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
"node_modules/@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -4346,6 +4994,7 @@
"resolved": "https://registry.npmjs.org/@transifex/api/-/api-7.1.4.tgz",
"integrity": "sha512-oRWw10V+YPFl1WJuORcQHcjtvqd70lFXxpmXQ/yUn3KE7cLtBMkFeC+2kULw3Rk17hD6EEO2HQLkvpR7NY/Zsw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"core-js": "^3.35.0"
},
@@ -4354,11 +5003,12 @@
}
},
"node_modules/@transifex/api/node_modules/core-js": {
- "version": "3.43.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.43.0.tgz",
- "integrity": "sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==",
+ "version": "3.45.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.0.tgz",
+ "integrity": "sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
@@ -4400,13 +5050,13 @@
}
},
"node_modules/@types/babel__traverse": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
- "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
+ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.20.7"
+ "@babel/types": "^7.28.2"
}
},
"node_modules/@types/eslint": {
@@ -4449,14 +5099,16 @@
}
},
"node_modules/@types/hoist-non-react-statics": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz",
- "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==",
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz",
+ "integrity": "sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/react": "*",
"hoist-non-react-statics": "^3.3.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*"
}
},
"node_modules/@types/html-minifier-terser": {
@@ -4555,14 +5207,32 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/long": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
+ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/node": {
- "version": "24.0.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz",
- "integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==",
+ "version": "24.3.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz",
+ "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.10.0"
+ }
+ },
+ "node_modules/@types/node-fetch": {
+ "version": "2.6.13",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz",
+ "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "undici-types": "~7.8.0"
+ "@types/node": "*",
+ "form-data": "^4.0.4"
}
},
"node_modules/@types/node-hid": {
@@ -4575,6 +5245,13 @@
"@types/node": "*"
}
},
+ "node_modules/@types/offscreencanvas": {
+ "version": "2019.3.0",
+ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz",
+ "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/parse-json": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
@@ -4600,6 +5277,13 @@
"csstype": "^3.0.2"
}
},
+ "node_modules/@types/seedrandom": {
+ "version": "2.4.34",
+ "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.34.tgz",
+ "integrity": "sha512-ytDiArvrn/3Xk6/vtylys5tlY6eo7Ane0hvcx++TKo6RxQXuVfW0AF/oeWqAj9dN29SyhtawuXstgmPlwNcv/A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/semver": {
"version": "7.7.0",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
@@ -4626,6 +5310,7 @@
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/@types/usb": {
@@ -4817,7 +5502,8 @@
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/@vernier/godirect/-/godirect-1.8.3.tgz",
"integrity": "sha512-poS0LZ3jAjH36gIAI0aNBBdsGGbmt11VFbLO+eGDJ/JDSPtMu1iUStvOi0UM/ZH6Jyh34SjVd8Cnxu/Wmcb8iQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@webassemblyjs/ast": {
"version": "1.14.1",
@@ -4980,6 +5666,13 @@
"@xtuc/long": "4.2.2"
}
},
+ "node_modules/@webgpu/types": {
+ "version": "0.1.38",
+ "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.38.tgz",
+ "integrity": "sha512-7LrhVKz2PRh+DD7+S+PVaFd5HxaWQvoMqBbsV9fNJO1pjUs1P8bM2vQVNfk+3URTqbuTI7gkXi0rfsN0IadoBA==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
"node_modules/@webpack-cli/configtest": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
@@ -5141,6 +5834,19 @@
"acorn-walk": "^8.0.2"
}
},
+ "node_modules/acorn-import-phases": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
+ "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "peerDependencies": {
+ "acorn": "^8.14.0"
+ }
+ },
"node_modules/acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
@@ -5379,6 +6085,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/ansi-escapes/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -5440,9 +6159,9 @@
}
},
"node_modules/aproba": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz",
+ "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==",
"dev": true,
"license": "ISC"
},
@@ -5506,11 +6225,14 @@
"license": "MIT"
},
"node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
- "license": "Python-2.0"
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
},
"node_modules/array-bounds": {
"version": "1.0.1",
@@ -5812,6 +6534,7 @@
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true,
+ "license": "(MIT OR Apache-2.0)",
"bin": {
"atob": "bin/atob.js"
},
@@ -6038,14 +6761,14 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz",
- "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==",
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz",
+ "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.4",
+ "@babel/compat-data": "^7.27.7",
+ "@babel/helper-define-polyfill-provider": "^0.6.5",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -6053,27 +6776,27 @@
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz",
- "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
+ "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.3",
- "core-js-compat": "^3.40.0"
+ "@babel/helper-define-polyfill-provider": "^0.6.5",
+ "core-js-compat": "^3.43.0"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz",
- "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==",
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz",
+ "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.4"
+ "@babel/helper-define-polyfill-provider": "^0.6.5"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -6113,9 +6836,9 @@
}
},
"node_modules/babel-preset-current-node-syntax": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz",
- "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz",
+ "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6136,7 +6859,7 @@
"@babel/plugin-syntax-top-level-await": "^7.14.5"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@babel/core": "^7.0.0 || ^8.0.0-0"
}
},
"node_modules/babel-preset-jest": {
@@ -6203,7 +6926,8 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/base64-loader/-/base64-loader-1.0.0.tgz",
"integrity": "sha512-p32+F8dg+ANGx7s8QsZS74ZPHfIycmC2yZcoerzFgbersIYWitPbbF39G6SBx3gyvzyLH5nt1ooocxr0IHuWKA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
@@ -6468,9 +7192,9 @@
"license": "ISC"
},
"node_modules/browserslist": {
- "version": "4.25.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
- "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
+ "version": "4.25.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.2.tgz",
+ "integrity": "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==",
"dev": true,
"funding": [
{
@@ -6488,8 +7212,8 @@
],
"license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001718",
- "electron-to-chromium": "^1.5.160",
+ "caniuse-lite": "^1.0.30001733",
+ "electron-to-chromium": "^1.5.199",
"node-releases": "^2.0.19",
"update-browserslist-db": "^1.1.3"
},
@@ -6515,6 +7239,7 @@
"resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
"integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
"dev": true,
+ "license": "(MIT OR Apache-2.0)",
"bin": {
"btoa": "bin/btoa.js"
},
@@ -7041,9 +7766,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001724",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz",
- "integrity": "sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==",
+ "version": "1.0.30001735",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz",
+ "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==",
"dev": true,
"funding": [
{
@@ -7091,7 +7816,8 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/canvas-toBlob/-/canvas-toBlob-1.0.0.tgz",
"integrity": "sha512-oU5bawygt/Nef9F+C49eTFmzXzz6yKdGqn6J1wn/LZQF5ulnnZVm0KIZzik85I6tjCbZFH6aa47j4bU2tkHxRw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cardinal": {
"version": "0.4.4",
@@ -7419,6 +8145,16 @@
"mimic-response": "^1.0.0"
}
},
+ "node_modules/clone-response/node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/clsx": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
@@ -7847,13 +8583,13 @@
"license": "MIT"
},
"node_modules/core-js-compat": {
- "version": "3.43.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz",
- "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==",
+ "version": "3.45.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.0.tgz",
+ "integrity": "sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "browserslist": "^4.25.0"
+ "browserslist": "^4.25.1"
},
"funding": {
"type": "opencollective",
@@ -7917,16 +8653,6 @@
"node": ">=6"
}
},
- "node_modules/coveralls/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
"node_modules/coveralls/node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -7938,7 +8664,22 @@
"esvalidate": "bin/esvalidate.js"
},
"engines": {
- "node": ">=4"
+ "node": ">=4"
+ }
+ },
+ "node_modules/coveralls/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
}
},
"node_modules/coveralls/node_modules/js-yaml": {
@@ -7998,13 +8739,6 @@
"node": ">= 6"
}
},
- "node_modules/coveralls/node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true,
- "license": "BSD-3-Clause"
- },
"node_modules/coveralls/node_modules/tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
@@ -8100,6 +8834,48 @@
"node-fetch": "^2.7.0"
}
},
+ "node_modules/cross-fetch/node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
+ "node_modules/cross-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/cross-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -8352,6 +9128,7 @@
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz",
"integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@asamuzakjp/css-color": "^3.2.0",
"rrweb-cssom": "^0.8.0"
@@ -8805,6 +9582,7 @@
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
"integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"whatwg-mimetype": "^4.0.0",
"whatwg-url": "^14.0.0"
@@ -8900,9 +9678,9 @@
}
},
"node_modules/decimal.js": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz",
- "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==",
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
"dev": true,
"license": "MIT"
},
@@ -8910,7 +9688,8 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/decode-html/-/decode-html-2.0.0.tgz",
"integrity": "sha512-lVJ+EBozhAXA2nSQG+xAgcD0P5K3uejnIIvM09uoQfS8AALkQ+HhHcEUvKovXi0EIpIZWjm0y8X7ULjaJpgY9w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/decode-uri-component": {
"version": "0.4.1",
@@ -8943,16 +9722,16 @@
}
},
"node_modules/decompress-response": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
+ "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "mimic-response": "^1.0.0"
+ "mimic-response": "^2.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/decompress-tar": {
@@ -9345,7 +10124,8 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
"integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/diff-sequences": {
"version": "29.6.3",
@@ -9464,6 +10244,7 @@
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz",
"integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==",
"dev": true,
+ "license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
}
@@ -9746,9 +10527,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.171",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz",
- "integrity": "sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==",
+ "version": "1.5.203",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.203.tgz",
+ "integrity": "sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g==",
"dev": true,
"license": "ISC"
},
@@ -9861,9 +10642,9 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.18.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
- "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "version": "5.18.3",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
+ "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10282,6 +11063,48 @@
"es6-symbol": "^3.1.1"
}
},
+ "node_modules/esbuild": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
+ "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.9",
+ "@esbuild/android-arm": "0.25.9",
+ "@esbuild/android-arm64": "0.25.9",
+ "@esbuild/android-x64": "0.25.9",
+ "@esbuild/darwin-arm64": "0.25.9",
+ "@esbuild/darwin-x64": "0.25.9",
+ "@esbuild/freebsd-arm64": "0.25.9",
+ "@esbuild/freebsd-x64": "0.25.9",
+ "@esbuild/linux-arm": "0.25.9",
+ "@esbuild/linux-arm64": "0.25.9",
+ "@esbuild/linux-ia32": "0.25.9",
+ "@esbuild/linux-loong64": "0.25.9",
+ "@esbuild/linux-mips64el": "0.25.9",
+ "@esbuild/linux-ppc64": "0.25.9",
+ "@esbuild/linux-riscv64": "0.25.9",
+ "@esbuild/linux-s390x": "0.25.9",
+ "@esbuild/linux-x64": "0.25.9",
+ "@esbuild/netbsd-arm64": "0.25.9",
+ "@esbuild/netbsd-x64": "0.25.9",
+ "@esbuild/openbsd-arm64": "0.25.9",
+ "@esbuild/openbsd-x64": "0.25.9",
+ "@esbuild/openharmony-arm64": "0.25.9",
+ "@esbuild/sunos-x64": "0.25.9",
+ "@esbuild/win32-arm64": "0.25.9",
+ "@esbuild/win32-ia32": "0.25.9",
+ "@esbuild/win32-x64": "0.25.9"
+ }
+ },
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
@@ -10612,35 +11435,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/eslint/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/esm": {
"version": "3.2.25",
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
@@ -11564,13 +12358,13 @@
}
},
"node_modules/flow-remove-types": {
- "version": "2.273.1",
- "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.273.1.tgz",
- "integrity": "sha512-OsiyA6URBPkG0Ns5DYH556uFtTFfyQ9kg4PfMi8l5DfSieHAtxKnlCgZFPu0lC+37sWkQtnyVCYTFbQcHxOwZg==",
+ "version": "2.279.0",
+ "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.279.0.tgz",
+ "integrity": "sha512-bPFloMR/A2b/r/sIsf7Ix0LaMicCJNjwhXc4xEEQVzJCIz5u7C7XDaEOXOiqveKlCYK7DcBNn6R01Cbbc9gsYA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hermes-parser": "0.28.0",
+ "hermes-parser": "0.29.1",
"pirates": "^3.0.2",
"vlq": "^0.2.1"
},
@@ -11705,18 +12499,20 @@
}
},
"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==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
+ "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
- "node": ">= 0.12"
+ "node": ">= 6"
}
},
"node_modules/form-data-to-object": {
@@ -11731,6 +12527,7 @@
"resolved": "https://registry.npmjs.org/format-message/-/format-message-6.2.4.tgz",
"integrity": "sha512-/24zYeSRy2ZlEO2OIctm7jOHvMpoWf+uhqFCaqqyZKi1C229zAAy2E5vF4lSSaMH0a2kewPrOzq6xN4Yy7cQrw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"format-message-formats": "^6.2.4",
"format-message-interpret": "^6.2.4",
@@ -11742,13 +12539,15 @@
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/format-message-formats/-/format-message-formats-6.2.4.tgz",
"integrity": "sha512-smT/fAqBLqusWfWCKRAx6QBDAAbmYznWsIyTyk66COmvwt2Byiqd7SJe2ma9a5oV0kwRaOJpN/F4lr4YK/n6qQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/format-message-interpret": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/format-message-interpret/-/format-message-interpret-6.2.4.tgz",
"integrity": "sha512-dRvz9mXhITApyOtfuFEb/XqvCe1u6RMkQW49UJHXS8w2S8cAHCqq5LNDFK+QK6XVzcofROycLb/k1uybTAKt2w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"format-message-formats": "^6.2.4",
"lookup-closest-locale": "^6.2.0"
@@ -11758,7 +12557,8 @@
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/format-message-parse/-/format-message-parse-6.2.4.tgz",
"integrity": "sha512-k7WqXkEzgXkW4wkHdS6Cv2Ou0rIFtiDelZjgoe1saW4p7FT7zS8OeAUpAekhormqzpeecR97e4vBft1zMsfFOQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/formik": {
"version": "1.5.8",
@@ -11866,6 +12666,7 @@
"resolved": "https://registry.npmjs.org/from2-array/-/from2-array-0.0.4.tgz",
"integrity": "sha512-0G0cAp7sYLobH7ALsr835x98PU/YeVF7wlwxdWbCUaea7wsa7lJfKZUAo6p2YZGZ8F94luCuqHZS3JtFER6uPg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"from2": "^2.0.3"
}
@@ -11953,9 +12754,9 @@
}
},
"node_modules/fs-monkey": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz",
- "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz",
+ "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==",
"dev": true,
"license": "Unlicense"
},
@@ -12210,6 +13011,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/get-tsconfig": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz",
+ "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
"node_modules/get-user-media-promise": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/get-user-media-promise/-/get-user-media-promise-1.1.4.tgz",
@@ -12706,9 +13520,9 @@
"license": "MIT"
},
"node_modules/gl-vec3": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gl-vec3/-/gl-vec3-1.1.3.tgz",
- "integrity": "sha512-jduKUqT0SGH02l8Yl+mV1yVsDfYgQAJyXGxkJQGyxPLHRiW25DwVIRPt6uvhrEMHftJfqhqKthRcyZqNEl9Xdw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gl-vec3/-/gl-vec3-1.2.0.tgz",
+ "integrity": "sha512-ynW7j5ZshRTHXG5UPC5u6G52cBCNx53LbNlq2HQ1bAosZbO4wOCEBufXS7KGiKL1slMgy4j/77Ikt+vMznouLg==",
"dev": true,
"license": "zlib"
},
@@ -12769,13 +13583,19 @@
}
},
"node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/globalthis": {
@@ -13198,6 +14018,19 @@
"node": ">=4"
}
},
+ "node_modules/got/node_modules/decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/got/node_modules/get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
@@ -13208,6 +14041,16 @@
"node": ">=4"
}
},
+ "node_modules/got/node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/got/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
@@ -13230,6 +14073,7 @@
"resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz",
"integrity": "sha512-mB6rwkw1Z7z4z2RkFFTd/+q6Ug1gnCgjKAervAKgBeNI1mSr8E5EUWoYzFNOZsLHFArLfpk+O8X8qXC7uvuawQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"brfs": "^1.2.0",
"unicode-trie": "^0.3.1"
@@ -13258,16 +14102,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/gray-matter/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
"node_modules/gray-matter/node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -13296,13 +14130,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/gray-matter/node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true,
- "license": "BSD-3-Clause"
- },
"node_modules/grid-index": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz",
@@ -13550,20 +14377,20 @@
}
},
"node_modules/hermes-estree": {
- "version": "0.28.0",
- "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.0.tgz",
- "integrity": "sha512-M5IFfnP4RCA2/Hv7VTIlZ1FV4qW33gresbv0SDaSBS/6lax23oV2sg4iE0fhYnpMeQL7Inob+jAeO+mV2T3bKA==",
+ "version": "0.29.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz",
+ "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==",
"dev": true,
"license": "MIT"
},
"node_modules/hermes-parser": {
- "version": "0.28.0",
- "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.0.tgz",
- "integrity": "sha512-PPtmoqyz4vv5SqVCYuvJLPKZt+SqCMviICVEygi6jHyfAvDd0cQTV2MfikDd8YXPOszR/9QvauWcGyluxej+rg==",
+ "version": "0.29.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz",
+ "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hermes-estree": "0.28.0"
+ "hermes-estree": "0.29.1"
}
},
"node_modules/history": {
@@ -13615,6 +14442,7 @@
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
"integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"whatwg-encoding": "^3.1.1"
},
@@ -13737,6 +14565,7 @@
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
"integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
"debug": "^4.3.4"
@@ -13746,10 +14575,11 @@
}
},
"node_modules/http-proxy-agent/node_modules/agent-base": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
- "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 14"
}
@@ -13789,7 +14619,8 @@
"resolved": "https://registry.npmjs.org/hull.js/-/hull.js-0.2.10.tgz",
"integrity": "sha512-UO3W30HxhWgeSpNKCdXt00xkwjRTGmhQaoZNP8ll509Nl+DP9juXE3wRGizihuop08FSB4xtAWIbWSe+RxEoog==",
"deprecated": "This package is unmaintained and vulnerable. Do not use it.",
- "dev": true
+ "dev": true,
+ "license": "BSD"
},
"node_modules/human-signals": {
"version": "2.1.0",
@@ -13857,6 +14688,7 @@
"resolved": "https://registry.npmjs.org/ify-loader/-/ify-loader-1.1.0.tgz",
"integrity": "sha512-EiyC45FRIs+z4g98+jBzuYCfoM6TKG9p7Ek5YZUeM7rucNucaMZIseRj/5Q3I4ypkZXyC2wnU1RcYrVmshe2xw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bl": "^1.0.0",
"findup": "^0.1.5",
@@ -13888,6 +14720,7 @@
"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
"integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -14864,10 +15697,11 @@
}
},
"node_modules/isomorphic-dompurify": {
- "version": "2.25.0",
- "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.25.0.tgz",
- "integrity": "sha512-bcpJzu9DOjN21qaCVpcoCwUX1ytpvA6EFqCK5RNtPg5+F0Jz9PX50jl6jbEicBNeO87eDDfC7XtPs4zjDClZJg==",
+ "version": "2.26.0",
+ "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.26.0.tgz",
+ "integrity": "sha512-nZmoK4wKdzPs5USq4JHBiimjdKSVAOm2T1KyDoadtMPNXYHxiENd19ou4iU/V4juFM6LVgYQnpxCYmxqNP4Obw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"dompurify": "^3.2.6",
"jsdom": "^26.1.0"
@@ -15359,6 +16193,50 @@
}
}
},
+ "node_modules/jest-cli/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jest-cli/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jest-cli/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/jest-config": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
@@ -15565,25 +16443,8 @@
"engines": {
"node": ">=0.12"
},
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/jest-environment-jsdom/node_modules/form-data": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
- "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "es-set-tostringtag": "^2.1.0",
- "hasown": "^2.0.2",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": {
@@ -16310,6 +17171,13 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/js-yaml/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
"node_modules/jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
@@ -16322,6 +17190,7 @@
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz",
"integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cssstyle": "^4.2.1",
"data-urls": "^5.0.0",
@@ -16357,10 +17226,11 @@
}
},
"node_modules/jsdom/node_modules/agent-base": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
- "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 14"
}
@@ -16370,6 +17240,7 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
"integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -16382,6 +17253,7 @@
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.2",
"debug": "4"
@@ -16395,6 +17267,7 @@
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
"integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"entities": "^6.0.0"
},
@@ -16707,6 +17580,7 @@
"resolved": "https://registry.npmjs.org/linebreak/-/linebreak-0.3.0.tgz",
"integrity": "sha512-zt8pzlM3oq4moDN8U5mP1SbZ44yKV6dXCu44Ez6iTXmxUl8/jRFWeho2SDqL5YDBv0TBKPgU/XGovZwnXAKlOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"base64-js": "0.0.8",
"brfs": "^1.3.0",
@@ -16718,6 +17592,7 @@
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
"integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -17103,6 +17978,13 @@
"node": ">=0.8.6"
}
},
+ "node_modules/long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/longest": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
@@ -17117,7 +17999,8 @@
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz",
"integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/loose-envify": {
"version": "1.4.0",
@@ -17511,13 +18394,16 @@
}
},
"node_modules/mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
+ "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/min-document": {
@@ -17954,6 +18840,7 @@
"resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.3.1.tgz",
"integrity": "sha512-ZUcepNdMeKBRn/ksm2XTxFnhBaqnBJSZNqwajmiem6b7Rp3fNAAq+twYn3kqw9YMY7HJuc7I7OObX9cMgB1ANg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"duplexer2": "^0.1.2"
}
@@ -18026,9 +18913,9 @@
}
},
"node_modules/nan": {
- "version": "2.22.2",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz",
- "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==",
+ "version": "2.23.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.0.tgz",
+ "integrity": "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==",
"devOptional": true,
"license": "MIT"
},
@@ -18299,9 +19186,10 @@
"optional": true
},
"node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "version": "2.6.13",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz",
+ "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
@@ -18322,18 +19210,21 @@
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true,
"license": "MIT"
},
"node_modules/node-fetch/node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true,
"license": "BSD-2-Clause"
},
"node_modules/node-fetch/node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"tr46": "~0.0.3",
@@ -18481,7 +19372,8 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
"integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/npm-run-path": {
"version": "4.0.1",
@@ -18547,9 +19439,9 @@
"dev": true
},
"node_modules/nwsapi": {
- "version": "2.2.20",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz",
- "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==",
+ "version": "2.2.21",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz",
+ "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==",
"dev": true,
"license": "MIT"
},
@@ -18616,16 +19508,6 @@
"node": ">=4"
}
},
- "node_modules/nyc/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
"node_modules/nyc/node_modules/cliui": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
@@ -18931,13 +19813,6 @@
"rimraf": "bin.js"
}
},
- "node_modules/nyc/node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true,
- "license": "BSD-3-Clause"
- },
"node_modules/nyc/node_modules/string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -19464,7 +20339,8 @@
"version": "5.5.3",
"resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.3.tgz",
"integrity": "sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/param-case": {
"version": "3.0.4",
@@ -19502,6 +20378,7 @@
"resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
"integrity": "sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "~0.5.0"
}
@@ -20510,9 +21387,9 @@
}
},
"node_modules/query-string": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-9.2.1.tgz",
- "integrity": "sha512-3jTGGLRzlhu/1ws2zlr4Q+GVMLCQTLFOj8CMX5x44cdZG9FQE07x2mQhaNxaKVPNmIDu0mvJ/cEwtY7Pim7hqA==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-9.2.2.tgz",
+ "integrity": "sha512-pDSIZJ9sFuOp6VnD+5IkakSVf+rICAuuU88Hcsr6AKL0QtxSIfVuKiVP2oahFI7tk3CRSexwV+Ya6MOoTxzg9g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -21341,6 +22218,7 @@
"integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
"deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.1",
"json-parse-even-better-errors": "^2.3.0",
@@ -21354,6 +22232,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -21879,9 +22758,9 @@
}
},
"node_modules/renderkid/node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -22169,6 +23048,16 @@
"integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==",
"license": "MIT"
},
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
"node_modules/resolve-protobuf-schema": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
@@ -22396,7 +23285,8 @@
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
"integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/rst-selector-parser": {
"version": "2.2.3",
@@ -22542,9 +23432,9 @@
"license": "MIT"
},
"node_modules/sass": {
- "version": "1.89.2",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz",
- "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==",
+ "version": "1.90.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz",
+ "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -22727,9 +23617,9 @@
}
},
"node_modules/scratch-audio": {
- "version": "2.0.179",
- "resolved": "https://registry.npmjs.org/scratch-audio/-/scratch-audio-2.0.179.tgz",
- "integrity": "sha512-OpanST4r6AQOeJJU9x0fwgRekPdTuUSRKGHrYB2djZ+OZN4m+48Pk4T9Mg4uLoXmB2rYKdlT3dgBYSr1MHWNnw==",
+ "version": "2.0.199",
+ "resolved": "https://registry.npmjs.org/scratch-audio/-/scratch-audio-2.0.199.tgz",
+ "integrity": "sha512-I7UqcObjH5eOc6Cm3gSA1GBO2KzpTPE5pnq3kn1EmdTlR2tvRCubo3ArbP2zW5Xzs8ejlhBm9+V5sLd2wKLCVQ==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
@@ -22782,9 +23672,9 @@
}
},
"node_modules/scratch-blocks/node_modules/core-js": {
- "version": "3.43.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.43.0.tgz",
- "integrity": "sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==",
+ "version": "3.45.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.0.tgz",
+ "integrity": "sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -22848,25 +23738,68 @@
}
},
"node_modules/scratch-l10n": {
- "version": "5.0.294",
- "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-5.0.294.tgz",
- "integrity": "sha512-1YcThA9gzHusKVgylGgIqydcDaBhOYBWdiq6Y0sDvmHork9r0S7+cJI5KGxuQU19EyUCmXtQb+t9zLXCaEGGSg==",
+ "version": "6.0.30",
+ "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-6.0.30.tgz",
+ "integrity": "sha512-put22RWdf6jEq8jZopYFpXCR7/he/O1tEB+ene3fB1xRoknkdQxE1LrCq6D5WYl8kb+dbr7YmiyVJhOHsZ2MKg==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
"@transifex/api": "7.1.4",
- "download": "8.0.0",
- "transifex": "1.6.6"
+ "async": "3.2.6",
+ "format-message-parse": "6.2.4",
+ "glob": "7.2.3",
+ "lodash.defaultsdeep": "4.6.1",
+ "mkdirp": "3.0.1",
+ "transifex": "1.6.6",
+ "tsx": "4.20.4"
},
"bin": {
- "build-i18n-src": "scripts/build-i18n-src.js",
- "tx-push-src": "scripts/tx-push-src.js"
+ "build-i18n-src": "scripts/build-i18n-src.mts",
+ "tx-push-src": "scripts/tx-push-src.mts"
+ }
+ },
+ "node_modules/scratch-l10n/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/scratch-l10n/node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/scratch-paint": {
- "version": "3.0.314",
- "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-3.0.314.tgz",
- "integrity": "sha512-bTEDUddeA7iyB6uhtkLKlZDOGKo7m9fHcZh9cN2wc57kPJ4lLoCNsajGLHlvPmSDrnQNLJwu4ZT62i9nBw0LCA==",
+ "version": "3.0.339",
+ "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-3.0.339.tgz",
+ "integrity": "sha512-nOEDjEZ1lpTsaKcCq2CRcv/mTqCQN6DYPw2t7ZPy1B79dAi1c7vyPfsObbRaN07BTSpqH/2O5/4UmJi1TKr3tQ==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
@@ -22898,19 +23831,22 @@
"resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
"integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==",
"deprecated": "This package is deprecated. Use destructuring assignment syntax instead.",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/scratch-paint/node_modules/microee": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/microee/-/microee-0.0.6.tgz",
"integrity": "sha512-/LdL3jiBWDJ3oQIRLgRhfeCZNE3patM1LiwCC124+/HHn10sI/G2OAyiMfTNzH5oYWoZBk0tRZADAUOv+0Wt0A==",
- "dev": true
+ "dev": true,
+ "license": "BSD"
},
"node_modules/scratch-paint/node_modules/minilog": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/minilog/-/minilog-3.1.0.tgz",
"integrity": "sha512-Xfm4jWjWzSAduvEWtuZX/8TMkxfJlCfH7XvikCZe3ptojYTBq1eoEs3rh9/3LNLOckUP86m+8l8+Iw5NU/pBww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"microee": "0.0.6"
}
@@ -22930,18 +23866,18 @@
}
},
"node_modules/scratch-render-fonts": {
- "version": "1.0.209",
- "resolved": "https://registry.npmjs.org/scratch-render-fonts/-/scratch-render-fonts-1.0.209.tgz",
- "integrity": "sha512-twrPr+4G8/Xn0vlJICr/9sNGTUOx6XL/RFlrmsnD5l9IXpMCAIkU+1rjhJnHdR16TKSwAwtLVrFEAvG+Orr+nA==",
+ "version": "1.0.218",
+ "resolved": "https://registry.npmjs.org/scratch-render-fonts/-/scratch-render-fonts-1.0.218.tgz",
+ "integrity": "sha512-zP2Ka0tMQGMwCtOsU87qEVR0auIT+1dffEDFdAeLEnHUQ7eYEECvKwWowPIlqoRsCusX8EALatSLSnvPx2oqcw==",
"dev": true,
"dependencies": {
"base64-loader": "^1.0.0"
}
},
"node_modules/scratch-sb1-converter": {
- "version": "2.0.177",
- "resolved": "https://registry.npmjs.org/scratch-sb1-converter/-/scratch-sb1-converter-2.0.177.tgz",
- "integrity": "sha512-eGUdqM7lk266E74sDynN4alUOxmtP3OmqSesiQCT2CLAKv1XgxXgWvqmCNiyZ/1oA47yca0niKsWhp9lWBOy4A==",
+ "version": "2.0.199",
+ "resolved": "https://registry.npmjs.org/scratch-sb1-converter/-/scratch-sb1-converter-2.0.199.tgz",
+ "integrity": "sha512-9TQGtteLrEMhF2GElAHyIHm/vEtW5QqmayuQ2O9lhlT8LinUqfuDaPgKIG6qtNMHVhLrm1zFnf7yXBypZg1KRA==",
"dev": true,
"license": "AGPL-3.0-only",
"dependencies": {
@@ -22968,9 +23904,9 @@
}
},
"node_modules/scratch-storage": {
- "version": "4.0.180",
- "resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-4.0.180.tgz",
- "integrity": "sha512-EvBtMDtiA1mZqnFJduhaVoBQ5ekc2xJY3lu1turytNwKP0j9sVUnGmgz34AaHhkqJFwWr6Ivd7gEejNQOeQabA==",
+ "version": "4.0.215",
+ "resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-4.0.215.tgz",
+ "integrity": "sha512-ZMEbX1Zhj9PJGrVceaV4leU2HJ5dPgzt4h0tki9Jo+SyUJkICC9Hspjh+nz+T3GJoY3494T0tFouIaKLf0Mgog==",
"license": "AGPL-3.0-only",
"dependencies": {
"@babel/runtime": "^7.21.0",
@@ -23002,7 +23938,8 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/scratch-translate-extension-languages/-/scratch-translate-extension-languages-1.0.7.tgz",
"integrity": "sha512-6+bQU9iVYv23T8J0SjpV6MTugm0y8myh/4DPgu1BGfccysdkaWzu3MkNGQyQRUlbqAiW9wM7ctfv3USPEkzTgg==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/screenfull": {
"version": "5.2.0",
@@ -23023,9 +23960,9 @@
"license": "MIT"
},
"node_modules/seedrandom": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.4.tgz",
- "integrity": "sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
+ "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==",
"dev": true,
"license": "MIT"
},
@@ -23051,9 +23988,9 @@
"license": "MIT"
},
"node_modules/selenium-webdriver": {
- "version": "4.34.0",
- "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.34.0.tgz",
- "integrity": "sha512-zGfQFcsASAv3KrYzYh+iw4fFqB7iZAgHW7BU6rRz7isK1i1X4x3LvjmZad4bUUgHDwTnAhlqTzDh21byB+zHMg==",
+ "version": "4.35.0",
+ "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.35.0.tgz",
+ "integrity": "sha512-Baaeiuyu7BIIsSYf0SI7Mi55gsNmdI00KM0Hcofw1RnAY+0QEVpdh5yAxueDxgTZS8vcbGZFU0NJ6Qc1riIrLg==",
"dev": true,
"funding": [
{
@@ -23383,6 +24320,13 @@
"seedrandom": "^2.4.2"
}
},
+ "node_modules/shuffle-seed/node_modules/seedrandom": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.4.tgz",
+ "integrity": "sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/side-channel": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
@@ -23502,32 +24446,6 @@
"simple-concat": "^1.0.0"
}
},
- "node_modules/simple-get/node_modules/decompress-response": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
- "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-response": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/simple-get/node_modules/mimic-response": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
- "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/simplicial-complex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/simplicial-complex/-/simplicial-complex-1.0.0.tgz",
@@ -23885,9 +24803,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.21",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
- "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==",
+ "version": "3.0.22",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
+ "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
"dev": true,
"license": "CC0-1.0"
},
@@ -23928,9 +24846,9 @@
}
},
"node_modules/sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true,
"license": "BSD-3-Clause"
},
@@ -24054,7 +24972,8 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/startaudiocontext/-/startaudiocontext-1.2.1.tgz",
"integrity": "sha512-ooOQhOAoCwzMIRwWd9j7xF8kAMo1Wv7Zfw+q6dWDW5gxJUKx15HJXWDg89GMDqfdle9xsqPv+uioneX+bI643g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/static-eval": {
"version": "2.1.1",
@@ -26822,7 +27741,8 @@
"resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.7.0.tgz",
"integrity": "sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==",
"deprecated": "no longer maintained",
- "dev": true
+ "dev": true,
+ "license": "(Unlicense OR Apache-2.0)"
},
"node_modules/text-table": {
"version": "0.2.0",
@@ -26912,7 +27832,8 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/tiny-invariant": {
"version": "1.3.3",
@@ -26952,6 +27873,7 @@
"resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz",
"integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tldts-core": "^6.1.86"
},
@@ -26963,12 +27885,13 @@
"version": "6.1.86",
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz",
"integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/tmp": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
- "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
+ "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
"dev": true,
"license": "MIT",
"engines": {
@@ -27086,6 +28009,7 @@
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
"integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"tldts": "^6.1.32"
},
@@ -27098,6 +28022,7 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
"integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"punycode": "^2.3.1"
},
@@ -27109,7 +28034,8 @@
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/transformation-matrix/-/transformation-matrix-1.15.3.tgz",
"integrity": "sha512-ThJH58GNFKhCw3gIoOtwf3tNwuYjbyEeiGdeq4mNMYWdJctnI896KUqn6PVt7jmNVepqa1bcKQtnMB1HtjsDMA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/transifex": {
"version": "1.6.6",
@@ -27139,6 +28065,21 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/transifex/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
"node_modules/transifex/node_modules/qs": {
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
@@ -27334,6 +28275,26 @@
"dev": true,
"license": "0BSD"
},
+ "node_modules/tsx": {
+ "version": "4.20.4",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.4.tgz",
+ "integrity": "sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.25.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -27376,7 +28337,8 @@
"version": "4.24.0",
"resolved": "https://registry.npmjs.org/twgl.js/-/twgl.js-4.24.0.tgz",
"integrity": "sha512-JGVTxuV9dqaBmajXyvuZIlhCHrTbIaoNjQvtdoLHyK74OtbmNwZUj6rfdp+pz9htitI/tVxiVQ2nuw+KmD29vg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/two-product": {
"version": "1.0.2",
@@ -27423,9 +28385,9 @@
}
},
"node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -27719,9 +28681,9 @@
}
},
"node_modules/undici-types": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
- "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz",
+ "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==",
"dev": true,
"license": "MIT"
},
@@ -27784,6 +28746,7 @@
"resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz",
"integrity": "sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pako": "^0.2.5",
"tiny-inflate": "^1.0.0"
@@ -28195,6 +29158,7 @@
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
"integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"xml-name-validator": "^5.0.0"
},
@@ -28260,7 +29224,8 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz",
"integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/webgl-context": {
"version": "2.2.0",
@@ -28283,22 +29248,23 @@
}
},
"node_modules/webpack": {
- "version": "5.99.9",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz",
- "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==",
+ "version": "5.101.2",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.2.tgz",
+ "integrity": "sha512-4JLXU0tD6OZNVqlwzm3HGEhAHufSiyv+skb7q0d2367VDMzrU1Q/ZeepvkcHH0rZie6uqEtTQQe0OEOOluH3Mg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/eslint-scope": "^3.7.7",
- "@types/estree": "^1.0.6",
+ "@types/estree": "^1.0.8",
"@types/json-schema": "^7.0.15",
"@webassemblyjs/ast": "^1.14.1",
"@webassemblyjs/wasm-edit": "^1.14.1",
"@webassemblyjs/wasm-parser": "^1.14.1",
- "acorn": "^8.14.0",
+ "acorn": "^8.15.0",
+ "acorn-import-phases": "^1.0.3",
"browserslist": "^4.24.0",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.1",
+ "enhanced-resolve": "^5.17.3",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
@@ -28312,7 +29278,7 @@
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.3.11",
"watchpack": "^2.4.1",
- "webpack-sources": "^3.2.3"
+ "webpack-sources": "^3.3.3"
},
"bin": {
"webpack": "bin/webpack.js"
@@ -28631,6 +29597,7 @@
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
"integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"iconv-lite": "0.6.3"
},
@@ -28643,6 +29610,7 @@
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
@@ -28662,6 +29630,7 @@
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
"integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -28671,6 +29640,7 @@
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
"integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tr46": "^5.1.0",
"webidl-conversions": "^7.0.0"
@@ -28834,9 +29804,9 @@
}
},
"node_modules/world-calendars": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.3.tgz",
- "integrity": "sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.4.tgz",
+ "integrity": "sha512-VGRnLJS+xJmGDPodgJRnGIDwGu0s+Cr9V2HB3EzlDZ5n0qb8h5SJtGUEkjrphZYAglEiXZ6kiXdmk0H/h/uu/w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -28883,9 +29853,9 @@
}
},
"node_modules/ws": {
- "version": "8.18.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
- "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -28929,6 +29899,7 @@
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
"integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=18"
}
@@ -28985,22 +29956,22 @@
"license": "ISC"
},
"node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "cliui": "^8.0.1",
+ "cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "string-width": "^4.2.3",
+ "string-width": "^4.2.0",
"y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
+ "yargs-parser": "^20.2.2"
},
"engines": {
- "node": ">=12"
+ "node": ">=10"
}
},
"node_modules/yargs-parser": {
@@ -29014,29 +29985,14 @@
"decamelize": "^1.2.0"
}
},
- "node_modules/yargs/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/yargs/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
"license": "ISC",
"engines": {
- "node": ">=12"
+ "node": ">=10"
}
},
"node_modules/yauzl": {
diff --git a/package.json b/package.json
index e64d1eb3582..386c4fb6411 100644
--- a/package.json
+++ b/package.json
@@ -16,8 +16,9 @@
"test:unit:tap": "tap ./test/{unit-legacy,localization-legacy}/ --no-coverage -R classic",
"test:unit:convertReportToXunit": "tap ./test/results/unit-raw.tap --no-coverage -R xunit > ./test/results/unit-tap-results.xml",
"test:coverage": "tap ./test/{unit-legacy,localization-legacy}/ --coverage --coverage-report=lcov",
- "build": "npm run clean && npm run translate && NODE_OPTIONS=--max_old_space_size=8000 webpack --bail",
+ "build": "npm run clean && npm run translate && npm run build:browserslist && NODE_OPTIONS=--max_old_space_size=8000 webpack --bail",
"build:analyze": "ANALYZE_BUNDLE=true npm run build",
+ "build:browserslist": "browserslist | node ./bin/browserslist-to-html.cjs > ./build/browserslist.html",
"clean": "rm -rf ./build && rm -rf ./intl && mkdir -p build && mkdir -p intl",
"deploy": "npm run deploy:s3 && npm run deploy:fastly && npm run deploy:announce",
"deploy:fastly": "node ./bin/configure-fastly.js",
@@ -58,23 +59,23 @@
"react-twitter-embed": "3.0.3",
"react-use": "17.6.0",
"scratch-parser": "6.0.0",
- "scratch-storage": "^4.0.179"
+ "scratch-storage": "^4.0.214"
},
"devDependencies": {
- "@babel/cli": "7.27.2",
- "@babel/core": "7.27.7",
- "@babel/eslint-parser": "7.27.5",
+ "@babel/cli": "7.28.3",
+ "@babel/core": "7.28.3",
+ "@babel/eslint-parser": "7.28.0",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/plugin-transform-async-to-generator": "7.27.1",
- "@babel/plugin-transform-object-rest-spread": "7.27.7",
- "@babel/preset-env": "7.27.2",
+ "@babel/plugin-transform-object-rest-spread": "7.28.0",
+ "@babel/preset-env": "7.28.3",
"@babel/preset-react": "7.27.1",
"@formatjs/intl-datetimeformat": "6.18.0",
"@formatjs/intl-locale": "3.4.6",
"@formatjs/intl-numberformat": "8.15.4",
"@formatjs/intl-pluralrules": "5.4.4",
"@formatjs/intl-relativetimeformat": "11.4.11",
- "@scratch/scratch-gui": "11.3.0",
+ "@scratch/scratch-gui": "11.6.0-face-sensing.2",
"@types/jest": "29.5.14",
"async": "3.2.6",
"autoprefixer": "10.4.21",
@@ -129,7 +130,7 @@
"postcss-loader": "4.3.0",
"postcss-simple-vars": "5.0.2",
"prop-types": "15.8.1",
- "query-string": "9.2.1",
+ "query-string": "9.2.2",
"react": "16.14.0",
"react-dom": "16.14.0",
"react-intl": "5.25.1",
@@ -145,17 +146,17 @@
"redux-mock-store": "1.5.5",
"redux-thunk": "2.4.2",
"regenerator-runtime": "0.13.9",
- "sass": "1.89.2",
+ "sass": "1.90.0",
"sass-loader": "10.5.2",
- "scratch-l10n": "5.0.294",
- "selenium-webdriver": "4.34.0",
+ "scratch-l10n": "6.0.30",
+ "selenium-webdriver": "4.35.0",
"slick-carousel": "1.8.1",
"stream-browserify": "3.0.0",
"style-loader": "4.0.0",
"tap": "14.11.0",
"url-loader": "3.0.0",
"use-onclickoutside": "0.4.1",
- "webpack": "5.99.9",
+ "webpack": "5.101.2",
"webpack-bundle-analyzer": "4.10.2",
"webpack-cli": "5.1.4",
"webpack-dev-middleware": "5.3.4",
@@ -186,11 +187,10 @@
"all": true
},
"browserslist": [
- "Chrome >= 63",
- "Firefox >= 57",
- "Edge >= 15",
- "Safari >= 11",
- "ChromeAndroid >= 63",
- "ios_saf >= 11"
+ "Chrome >= 0 and last 3 years and not dead",
+ "Firefox >= 0 and last 3 years and not dead",
+ "Edge >= 0 and last 3 years and not dead",
+ "Safari >= 0 and last 3 years and not dead",
+ "ios_saf >= 0 and last 3 years and not dead"
]
}
diff --git a/renovate.json5 b/renovate.json5
index ea288a16745..c9ca1cafe93 100644
--- a/renovate.json5
+++ b/renovate.json5
@@ -3,5 +3,13 @@
"extends": [
"github>scratchfoundation/scratch-renovate-config:js-app"
+ ],
+
+ "packageRules": [
+ {
+ "description": "Force scratch-gui to follow a specific NPM tag. Use `latest` to stick to normal releases.",
+ "matchPackageNames": ["@scratch/scratch-gui"],
+ "followTag": "UEPR-282-face-sensing"
+ }
]
}
diff --git a/src/components/checkbox/simple-checkbox.jsx b/src/components/checkbox/simple-checkbox.jsx
new file mode 100644
index 00000000000..ae0f3f32e6c
--- /dev/null
+++ b/src/components/checkbox/simple-checkbox.jsx
@@ -0,0 +1,25 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import './simple-checkbox.scss';
+
+export const SimpleCheckbox = ({id, checked, onChange, label}) => (
+
+);
+
+SimpleCheckbox.propTypes = {
+ id: PropTypes.string.isRequired,
+ checked: PropTypes.bool.isRequired,
+ onChange: PropTypes.func.isRequired,
+ label: PropTypes.node.isRequired
+};
diff --git a/src/components/checkbox/simple-checkbox.scss b/src/components/checkbox/simple-checkbox.scss
new file mode 100644
index 00000000000..892614a3962
--- /dev/null
+++ b/src/components/checkbox/simple-checkbox.scss
@@ -0,0 +1,41 @@
+@import "../../colors";
+@import "../../frameless";
+
+.checkbox-container {
+ display: flex;
+ cursor: pointer;
+ align-items: center;
+ gap: 0.5rem;
+ color: $header-gray;
+ font-size: 0.75rem;
+ font-style: normal;
+ line-height: 1rem;
+
+ input {
+ &[type=checkbox] {
+ cursor: pointer;
+ appearance: none;
+ border: 2px solid $active-gray;
+ border-radius: 4px;
+ width: 1.25rem;
+ height: 1.25rem;
+
+ &:checked,
+ &:focus {
+ transition: all .25s ease;
+ }
+
+ &:checked {
+ background-color: $ui-blue;
+ text-align: center;
+ text-indent: .125rem;
+ line-height: 1.1rem;
+
+ &:after {
+ color: $type-white;
+ content: "\2714";
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/components/grid/grid.jsx b/src/components/grid/grid.jsx
index fd738fe5543..7c02b306227 100644
--- a/src/components/grid/grid.jsx
+++ b/src/components/grid/grid.jsx
@@ -1,6 +1,7 @@
const classNames = require('classnames');
const PropTypes = require('prop-types');
const React = require('react');
+const {useCallback} = require('react');
const Thumbnail = require('../thumbnail/thumbnail.jsx');
const FlexRow = require('../flex-row/flex-row.jsx');
@@ -8,49 +9,63 @@ const thumbnailUrl = require('../../lib/user-thumbnail');
require('./grid.scss');
-const Grid = props => (
-
-
- {props.items.map((item, key) => {
- const href = `/${props.itemType}/${item.id}/`;
- if (props.itemType === 'projects') {
+const Grid = props => {
+ const handleRemove = useCallback(
+ item => () => {
+ if (props.onRemove) {
+ props.onRemove(item);
+ }
+ },
+ [props.onRemove]
+ );
+ return (
+
+
+ {props.items.map((item, key) => {
+ const href = `/${props.itemType}/${item.id}/`;
+ if (props.itemType === 'projects') {
+ return (
+
+ );
+ }
return (
);
- }
- return (
-
- );
- })}
-
-
-);
+ })}
+
+
+ );
+};
Grid.propTypes = {
className: PropTypes.string,
@@ -60,7 +75,9 @@ Grid.propTypes = {
showFavorites: PropTypes.bool,
showLoves: PropTypes.bool,
showRemixes: PropTypes.bool,
- showViews: PropTypes.bool
+ showViews: PropTypes.bool,
+ showRemoveButton: PropTypes.bool,
+ onRemove: PropTypes.func
};
Grid.defaultProps = {
@@ -70,7 +87,9 @@ Grid.defaultProps = {
showFavorites: false,
showRemixes: false,
showViews: false,
- showAvatar: false
+ showAvatar: false,
+ showRemoveButton: false,
+ onRemove: null
};
module.exports = Grid;
diff --git a/src/components/modal/share/modal.jsx b/src/components/modal/share/modal.jsx
new file mode 100644
index 00000000000..5f0955758fa
--- /dev/null
+++ b/src/components/modal/share/modal.jsx
@@ -0,0 +1,128 @@
+import React, {useCallback, useState, useEffect} from 'react';
+import PropTypes from 'prop-types';
+import Modal from '../base/modal.jsx';
+import ModalTitle from '../base/modal-title.jsx';
+import ModalInnerContent from '../base/modal-inner-content.jsx';
+import {SimpleCheckbox} from '../../checkbox/simple-checkbox.jsx';
+import {FormattedMessage, useIntl} from 'react-intl';
+import {setLocalStorageValue} from '../../../lib/local-storage.js';
+import './modal.scss';
+
+const updateLocalStorage = (username = 'guest', dontShowAgain) => {
+ if (dontShowAgain === false) {
+ return;
+ }
+
+ // `dontShowAgain` is true => we need to update the preference to false
+ setLocalStorageValue('shareModalPreference', username, false);
+};
+
+// This modal uses texts from preview/l10n.json
+// Parametrise texts if needed to be used outside of the preview context.
+const ShareModal = ({
+ isOpen,
+ onClose,
+ onChangeThumbnail,
+ onShare,
+ projectThumbnailUrl,
+ username
+}) => {
+ const intl = useIntl();
+ const [dontShowAgain, setDontShowAgain] = useState(false);
+
+ const handleCheckboxChange = useCallback(e => {
+ setDontShowAgain(e.target.checked);
+ }, []);
+
+ const handleChangeThumbnail = useCallback(() => {
+ updateLocalStorage(username, dontShowAgain);
+ onChangeThumbnail();
+ }, [username, dontShowAgain, onChangeThumbnail]);
+
+ const handleShare = useCallback(() => {
+ updateLocalStorage(username, dontShowAgain);
+ onShare();
+ }, [username, dontShowAgain, onShare]);
+
+ // Preload the project thumbnail image to ensure it is ready when the modal opens.
+ useEffect(() => {
+ if (projectThumbnailUrl) {
+ new Image().src = projectThumbnailUrl;
+ }
+ }, [projectThumbnailUrl]);
+
+ return (
+
+ }
+ />
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+ShareModal.propTypes = {
+ isOpen: PropTypes.bool.isRequired,
+ onClose: PropTypes.func.isRequired,
+ onChangeThumbnail: PropTypes.func.isRequired,
+ onShare: PropTypes.func.isRequired,
+ projectThumbnailUrl: PropTypes.string,
+ username: PropTypes.string
+};
+
+export {ShareModal};
diff --git a/src/components/modal/share/modal.scss b/src/components/modal/share/modal.scss
new file mode 100644
index 00000000000..4b5f3fd8350
--- /dev/null
+++ b/src/components/modal/share/modal.scss
@@ -0,0 +1,98 @@
+@import "../../../colors";
+@import "../../../frameless";
+
+.share-modal {
+ margin-top: 15vh;
+ width: 39.25rem;
+ border-radius: .5rem;
+ overflow: hidden;
+
+ .title {
+ display: flex;
+ align-items: center;
+ box-shadow: inset 0 -1px 0 0 $ui-blue;
+ background: $ui-blue;
+ width: 100%;
+ height: 3rem;
+ padding-left: 12px;
+ }
+
+ .title-text {
+ text-align: center;
+ color: white;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25rem;
+ }
+
+ .share-modal-inner {
+ padding: 1.5rem;
+ padding-bottom: 1rem;
+ gap: 1.5rem;
+ background: white;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.75rem;
+ }
+
+ .thumbnail-container {
+ display: flex;
+ justify-content: center;
+ }
+
+ .thumbnail-img {
+ border-radius: .5rem;
+ width: 300px;
+ height: 240px;
+ }
+
+ .footer {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ }
+
+ .divider {
+ width: 100%;
+ border-top: 1px solid $ui-blue-25percent;
+ }
+
+ .button-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+ }
+
+ .actions {
+ display: flex;
+ gap: 1rem;
+ }
+
+ .ok-button, .change-thumbnail-button {
+ border: none;
+ border-radius: 4px;
+ padding: 0.75rem 1rem;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25rem;
+ text-align: center;
+ cursor: pointer;
+ }
+
+ .ok-button {
+ background: $ui-blue;
+ color: $type-white;
+ border: none;
+ }
+
+ .change-thumbnail-button {
+ background: white;
+ color: $ui-blue;
+ border: 1px solid $ui-blue;
+ }
+}
+
+.share-modal-overlay {
+ background-color: $active-gray;
+}
diff --git a/src/components/modal/update-thumbnail-info/modal.jsx b/src/components/modal/update-thumbnail-info/modal.jsx
new file mode 100644
index 00000000000..c8329cf7aef
--- /dev/null
+++ b/src/components/modal/update-thumbnail-info/modal.jsx
@@ -0,0 +1,41 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import Modal from '../base/modal.jsx';
+import ModalTitle from '../base/modal-title.jsx';
+import ModalInnerContent from '../base/modal-inner-content.jsx';
+import {FormattedMessage} from 'react-intl';
+import './modal.scss';
+
+const UpdateThumbnailInfoModal = ({isOpen, hideModal}) => (
+
+ }
+ />
+
+
+
+
+
+
+
+
+
+);
+
+UpdateThumbnailInfoModal.propTypes = {
+ isOpen: PropTypes.bool.isRequired,
+ hideModal: PropTypes.func.isRequired
+};
+
+export {UpdateThumbnailInfoModal};
diff --git a/src/components/modal/update-thumbnail-info/modal.scss b/src/components/modal/update-thumbnail-info/modal.scss
new file mode 100644
index 00000000000..f65b56a14e2
--- /dev/null
+++ b/src/components/modal/update-thumbnail-info/modal.scss
@@ -0,0 +1,63 @@
+@import "../../../colors";
+@import "../../../frameless";
+
+.update-thumbnail-info-modal {
+ margin-top: 30vh;
+ width: 26rem;
+ border-radius: .5rem;
+ overflow: hidden;
+
+ .update-thumbnail-info-modal-title {
+ display: flex;
+ align-items: center;
+ box-shadow: inset 0 -1px 0 0 $ui-blue;
+ background: $ui-blue;
+ width: 100%;
+ height: 3rem;
+ padding-left: 12px;
+ }
+
+ .update-thumbnail-info-modal-title-text {
+ text-align: center;
+ color: white;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25rem;
+ }
+
+ .update-thumbnail-info-modal-inner {
+ padding: 1.5rem;
+ padding-bottom: 1rem;
+ gap: 1.5rem;
+ background: white;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.75rem;
+ }
+
+ .update-thumbnail-info-modal-button-row {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ }
+
+ .update-thumbnail-info-modal-ok-button {
+ width: 100%;
+ max-width: 368px;
+ background: $ui-blue;
+ color: white;
+ border: none;
+ border-radius: 4px;
+ padding: 0.75rem;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25rem;
+ text-align: center;
+ cursor: pointer;
+ }
+}
+
+.update-thumbnail-info-modal-overlay {
+ background-color: $active-gray;
+}
diff --git a/src/components/thumbnail/thumbnail-remove-button.jsx b/src/components/thumbnail/thumbnail-remove-button.jsx
new file mode 100644
index 00000000000..922cde7f838
--- /dev/null
+++ b/src/components/thumbnail/thumbnail-remove-button.jsx
@@ -0,0 +1,20 @@
+const React = require('react');
+require('./thumbnail-remove-button.scss');
+const PropTypes = require('prop-types');
+
+const ThumbnailRemoveButton = ({onClick}) => (
+
+);
+
+ThumbnailRemoveButton.propTypes = {
+ onClick: PropTypes.func
+};
+
+module.exports = ThumbnailRemoveButton;
diff --git a/src/components/thumbnail/thumbnail-remove-button.scss b/src/components/thumbnail/thumbnail-remove-button.scss
new file mode 100644
index 00000000000..24f93f22b1b
--- /dev/null
+++ b/src/components/thumbnail/thumbnail-remove-button.scss
@@ -0,0 +1,22 @@
+@import "../../colors";
+
+.thumbnail-remove-button {
+ position: absolute;
+ top: -4px;
+ right: -4px;
+ background: $ui-white;
+ border: 1px solid $ui-border;
+ color: $type-gray;
+ font-size: 12px;
+ width: 24px;
+ height: 24px;
+ line-height: 24px;
+ text-align: center;
+ border-radius: 50%;
+ cursor: pointer;
+ z-index: 2;
+
+ &:hover {
+ background: $ui-border;
+ }
+}
diff --git a/src/components/thumbnail/thumbnail.jsx b/src/components/thumbnail/thumbnail.jsx
index 461cd67b1a4..9bfd7e6899a 100644
--- a/src/components/thumbnail/thumbnail.jsx
+++ b/src/components/thumbnail/thumbnail.jsx
@@ -4,6 +4,8 @@ const React = require('react');
require('./thumbnail.scss');
+const ThumbnailRemoveButton = require('./thumbnail-remove-button.jsx');
+
const Thumbnail = props => {
const extra = [];
const info = [];
@@ -110,6 +112,7 @@ const Thumbnail = props => {
);
}
+
return (
{
{extra}
+ {props.showRemoveButton &&
+
+ }
);
};
@@ -145,10 +151,12 @@ Thumbnail.propTypes = {
showLoves: PropTypes.bool,
showRemixes: PropTypes.bool,
showViews: PropTypes.bool,
+ showRemoveButton: PropTypes.bool,
src: PropTypes.string,
title: PropTypes.string,
type: PropTypes.string,
- views: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
+ views: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+ onRemove: PropTypes.func
};
Thumbnail.defaultProps = {
@@ -161,9 +169,11 @@ Thumbnail.defaultProps = {
showLoves: false,
showRemixes: false,
showViews: false,
+ showRemoveButton: false,
src: '',
title: 'Project',
- type: 'project'
+ type: 'project',
+ onRemove: null
};
module.exports = Thumbnail;
diff --git a/src/components/thumbnail/thumbnail.scss b/src/components/thumbnail/thumbnail.scss
index e1f1bf79549..039caec2d33 100644
--- a/src/components/thumbnail/thumbnail.scss
+++ b/src/components/thumbnail/thumbnail.scss
@@ -1,6 +1,7 @@
@import "../../colors";
.thumbnail {
+ position: relative;
.thumbnail-image {
display: block;
diff --git a/src/lib/extensions.js b/src/lib/extensions.js
index 94e7b021b19..2254371924e 100644
--- a/src/lib/extensions.js
+++ b/src/lib/extensions.js
@@ -16,6 +16,10 @@ const EXTENSION_INFO = {
l10nId: 'project.videoSensingChip',
icon: 'extension-videosensing.svg'
},
+ faceSensing: {
+ l10nId: 'project.faceSensingChip',
+ icon: 'extension-facesensing.svg'
+ },
text2speech: {
l10nId: 'project.text2SpeechChip',
icon: 'extension-text2speech.svg'
diff --git a/src/lib/local-storage.js b/src/lib/local-storage.js
new file mode 100644
index 00000000000..568f7efdd94
--- /dev/null
+++ b/src/lib/local-storage.js
@@ -0,0 +1,32 @@
+/**
+ * Util functions for managing local storage entries as key-value pairs.
+ */
+
+const getMap = key => {
+ try {
+ const raw = localStorage.getItem(key);
+ return raw ? JSON.parse(raw) : {};
+ } catch (e) {
+ return {};
+ }
+};
+
+const setMap = (key, map) => {
+ localStorage.setItem(key, JSON.stringify(map));
+};
+
+const getLocalStorageValue = (key, id) => {
+ const map = getMap(key);
+ return map[id];
+};
+
+const setLocalStorageValue = (key, id, value) => {
+ const map = getMap(key);
+ map[id] = value;
+ setMap(key, map);
+};
+
+module.exports = {
+ getLocalStorageValue,
+ setLocalStorageValue
+};
diff --git a/src/lib/project-info.js b/src/lib/project-info.js
index 30b82e777cb..27485e5a13c 100644
--- a/src/lib/project-info.js
+++ b/src/lib/project-info.js
@@ -21,7 +21,8 @@ module.exports = {
return Object.values(stage.variables)
.some(variable => variable.length === 3); // 3 entries if cloud var
},
- videoSensing: project => (project.extensions || []).includes('videoSensing')
+ videoSensing: project => (project.extensions || []).includes('videoSensing'),
+ faceSensing: project => (project.extensions || []).includes('faceSensing')
},
2: {
extensions: () => [], // Showing extension chip not implemented for scratch2 projects
diff --git a/src/redux/preview.js b/src/redux/preview.js
index 6c81a0095bc..df6cd184f92 100644
--- a/src/redux/preview.js
+++ b/src/redux/preview.js
@@ -686,7 +686,7 @@ module.exports.reportProject = (id, jsonData, token) => (dispatch => {
});
});
-module.exports.updateProjectThumbnail = (id, blob) => (dispatch => {
+module.exports.updateProjectThumbnail = (id, blob, onSuccess, onError) => (dispatch => {
dispatch(module.exports.setFetchStatus('project-thumbnail', module.exports.Status.FETCHING));
api({
uri: `${process.env.THUMBNAIL_URI.replace('{}', id)}`,
@@ -697,13 +697,19 @@ module.exports.updateProjectThumbnail = (id, blob) => (dispatch => {
withCredentials: true,
useCsrf: true,
body: blob,
- host: process.env.THUMBNAIL_HOST
+ host: process.env.THUMBNAIL_HOST,
+ // The responseType is `json` on success, but on error it returns `text/html`.
+ // Passing `json` causes an internal error in xhr when `text/html` is returned, that doesn't bubble up.
+ // Currently we don't use the body anyways, so it should be okay if it's unparsed.
+ responseType: 'text/html'
}, (err, body, res) => {
if (err || res.statusCode !== 200) {
dispatch(module.exports.setFetchStatus('project-thumbnail', module.exports.Status.ERROR));
+ onError?.();
return;
}
dispatch(module.exports.setFetchStatus('project-thumbnail', module.exports.Status.FETCHED));
+ onSuccess?.();
});
});
diff --git a/src/views/explore/explore.jsx b/src/views/explore/explore.jsx
index 049dbc08313..c370cd223c1 100644
--- a/src/views/explore/explore.jsx
+++ b/src/views/explore/explore.jsx
@@ -4,9 +4,11 @@ const injectIntl = require('react-intl').injectIntl;
const FormattedMessage = require('react-intl').FormattedMessage;
const React = require('react');
const render = require('../../lib/render.jsx');
+const {connect} = require('react-redux');
const api = require('../../lib/api');
const intlShape = require('../../lib/intl-shape');
+const PropTypes = require('prop-types');
const {getLocale} = require('../../lib/locales.js');
const Page = require('../../components/page/www/page.jsx');
@@ -27,12 +29,15 @@ class Explore extends React.Component {
'getExploreState',
'handleGetExploreMore',
'handleChangeSortMode',
+ 'handleToggleRemoveButton',
+ 'handleRemove',
'getBubble'
]);
this.state = this.getExploreState();
this.state.loaded = [];
this.state.offset = 0;
+ this.state.showRemoveButton = false;
}
componentDidMount () {
this.handleGetExploreMore();
@@ -101,6 +106,27 @@ class Explore extends React.Component {
`${window.location.origin}/explore/${this.state.itemType}/${this.state.category}/${value}`;
}
}
+
+ handleToggleRemoveButton (e) {
+ this.setState({showRemoveButton: e.target.checked});
+ }
+
+ handleRemove (item) {
+ // TODO: don't slice the itemType (this was a hacky way to turn 'projects' --> 'project')
+ api({
+ uri: `/admin/search/${this.state.itemType.slice(0, -1)}/${item.id}`,
+ method: 'DELETE'
+ }, err => {
+ if (err) {
+ alert('Error removing project.'); // eslint-disable-line no-alert
+ console.error(err);
+ } else {
+ const updated = this.state.loaded.filter(p => p.id !== item.id);
+ this.setState({loaded: updated});
+ }
+ });
+ }
+
getBubble (type) {
const classes = classNames({
active: (this.state.category === type)
@@ -211,6 +237,18 @@ class Explore extends React.Component {
/>
+ {this.props.session?.session?.permissions?.admin && (
+
+
+
+ )}