From 0efc0ba6ef9e2b27a21ecdb66b7fbb6c545123e7 Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Tue, 30 Jul 2024 19:51:48 +0200 Subject: [PATCH 01/16] feat: jsx-migration script (wip) --- cli/src/commands/jsx-migration.js | 94 +++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 cli/src/commands/jsx-migration.js diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js new file mode 100644 index 00000000..e6f9c297 --- /dev/null +++ b/cli/src/commands/jsx-migration.js @@ -0,0 +1,94 @@ +const fs = require('fs/promises') +const path = require('path') +const fg = require('fast-glob') + +// Looks for JSX syntax; avoids comments +// Known false positives: in strings or multiline comments (see regex101) +// https://regex101.com/r/YDkml7/5 +const jsxRegex = /^(?![ \t]*(?:\/\/|\/?\*+)).*(<\/?[a-zA-Z]+[^>]*>)/gim + +// Looks for relative import statements +// https://regex101.com/r/xsHZdQ/2 +const importRegex = /(import.*|from) ['"](\..*)['"]/gim + +;(async function () { + const globMatches = await fg.glob('src/**/*.js') + + // 1. Search each file for JSX syntax + // If found, 1) add to Set and 2) rename file (add 'x' to end) + const renamedFiles = new Set() + await Promise.all( + globMatches.map(async (matchPath) => { + const contents = await fs.readFile(matchPath, { + encoding: 'utf8', + }) + if (!contents) { + return + } + + if (contents.match(jsxRegex)) { + const newPath = matchPath.concat('x') // Add 'x' to the end to make it 'jsx' + // todo: logging + // console.log(`Renaming ${matchPath} to ${newPath}`) + + await fs.rename(matchPath, newPath) + renamedFiles.add(matchPath) + } + }) + ) + // todo: logging + console.log(`${renamedFiles.size} files renamed`) + + // 2. Go through each file again for imports + // (Run glob again because some files have been renamed) + // If there's a local file import, check to see if it matches + // a renamed item in the set. If so, rewrite the new extension + // (Note: Files without extension aren't edited; Vite and TS + // handle them, so it's up to eslint rules) + const globMatches2 = await fg.glob('src/**/*.(js|jsx)') + await Promise.all( + globMatches2.map(async (matchPath) => { + const fileContent = await fs.readFile(matchPath, { + encoding: 'utf8', + }) + + let newFileContent = fileContent + const importMatches = Array.from(fileContent.matchAll(importRegex)) + importMatches.forEach((match) => { + // get the second capturing group, the import path + const importPath = match[2] + const joinedPath = path.join(matchPath, '..', importPath) + const isRenamed = renamedFiles.has(joinedPath) + + if (isRenamed) { + newFileContent = newFileContent.replace( + importPath, + importPath + 'x' + ) + } + }) + await fs.writeFile(matchPath, newFileContent) + }) + ) + // todo: logging + + // 3. Update d2.config.js + // Read d2 config as JS for easier access to entryPoint strings + const { entryPoints } = require('./d2.config.js') + const d2ConfigContents = await fs.readFile('./d2.config.js', { + encoding: 'utf8', + }) + let newD2ConfigContents = d2ConfigContents + Object.values(entryPoints).forEach((entryPoint) => { + // entryPoint is formatted as './src/...' -- drop first 2 chars + // to match the glob format above + if (renamedFiles.has(entryPoint.substring(2))) { + newD2ConfigContents = newD2ConfigContents.replace( + entryPoint, + entryPoint + 'x' + ) + } + }) + await fs.writeFile('./d2.config.js', newD2ConfigContents) + // todo: logging +})() From 9a80b81f924341d6ff0a1dedef96f9dda3c223ec Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Mon, 5 Aug 2024 18:02:57 +0200 Subject: [PATCH 02/16] fix: deps --- cli/package.json | 1 + yarn.lock | 1340 +++++++++++++++++++--------------------------- 2 files changed, 562 insertions(+), 779 deletions(-) diff --git a/cli/package.json b/cli/package.json index cfa37d96..e1906aae 100644 --- a/cli/package.json +++ b/cli/package.json @@ -45,6 +45,7 @@ "detect-port": "^1.3.0", "dotenv": "^8.1.0", "dotenv-expand": "^5.1.0", + "fast-glob": "^3.3.2", "file-loader": "^6.2.0", "form-data": "^3.0.0", "fs-extra": "^8.1.0", diff --git a/yarn.lock b/yarn.lock index 5d196dae..4efec090 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27,6 +27,13 @@ jsonpointer "^5.0.0" leven "^3.1.0" +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": version "7.18.6" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" @@ -42,13 +49,6 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10", "@babel/compat-data@^7.18.8": version "7.18.13" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz" @@ -59,7 +59,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.6.2", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.6.2", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": version "7.18.5" resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz" integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== @@ -650,13 +650,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.17.12": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz" - integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-jsx@7.14.5": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz" @@ -664,6 +657,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-syntax-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" @@ -1205,6 +1205,14 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/types@7.15.0": + version "7.15.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz" + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== + dependencies: + "@babel/helper-validator-identifier" "^7.14.9" + to-fast-properties "^2.0.0" + "@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.18.13" resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz" @@ -1223,14 +1231,6 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@babel/types@7.15.0": - version "7.15.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz" - integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== - dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" @@ -1954,14 +1954,7 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2/app-adapter@12.0.0-alpha.5", "@dhis2/app-adapter@file:/home/runner/work/app-platform/app-platform/adapter": - version "12.0.0-alpha.5" - resolved "file:adapter" - dependencies: - "@dhis2/pwa" "12.0.0-alpha.5" - moment "^2.24.0" - -"@dhis2/app-runtime@*", "@dhis2/app-runtime@^3", "@dhis2/app-runtime@^3.10.4": +"@dhis2/app-runtime@^3.10.4": version "3.10.4" resolved "https://registry.npmjs.org/@dhis2/app-runtime/-/app-runtime-3.10.4.tgz" integrity sha512-W/d0WcYYcKAeE5/xCunZEMYUSD1fxG+JDQdRDEUsH5y5hB8i/4o2QQrZK8xa19Z3xQJhaW5ypWWqIQVjTJT2Ww== @@ -2003,82 +1996,6 @@ dependencies: post-robot "^10.0.46" -"@dhis2/app-shell@12.0.0-alpha.5", "@dhis2/app-shell@file:/home/runner/work/app-platform/app-platform/shell": - version "12.0.0-alpha.5" - resolved "file:shell" - dependencies: - "@dhis2/app-adapter" "12.0.0-alpha.5" - "@dhis2/app-runtime" "^3.10.4" - "@dhis2/d2-i18n" "^1.1.1" - "@dhis2/pwa" "12.0.0-alpha.5" - "@dhis2/ui" "^9.8.9" - classnames "^2.2.6" - moment "^2.29.1" - post-robot "^10.0.46" - prop-types "^15.7.2" - react "^16.8.6" - react-dom "^16.8.6" - source-map-explorer "^2.1.0" - styled-jsx "^4.0.1" - typeface-roboto "^0.0.75" - typescript "^3.6.3" - -"@dhis2/cli-app-scripts@12.0.0-alpha.5", "@dhis2/cli-app-scripts@file:/home/runner/work/app-platform/app-platform/cli": - version "12.0.0-alpha.5" - resolved "file:cli" - dependencies: - "@babel/core" "^7.6.2" - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.8.3" - "@babel/preset-env" "^7.14.7" - "@babel/preset-react" "^7.0.0" - "@babel/preset-typescript" "^7.6.0" - "@dhis2/app-shell" "12.0.0-alpha.5" - "@dhis2/cli-helpers-engine" "^3.2.2" - "@jest/core" "^27.0.6" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.4" - "@vitejs/plugin-react" "^4.2.1" - "@yarnpkg/lockfile" "^1.1.0" - archiver "^3.1.1" - axios "^0.25.0" - babel-jest "^27.0.6" - babel-loader "^8.1.0" - babel-plugin-react-require "^3.1.3" - chokidar "^3.3.0" - css-loader "^6.7.1" - css-minimizer-webpack-plugin "^3.4.1" - detect-port "^1.3.0" - dotenv "^8.1.0" - dotenv-expand "^5.1.0" - file-loader "^6.2.0" - form-data "^3.0.0" - fs-extra "^8.1.0" - gaze "^1.1.3" - handlebars "^4.3.3" - html-webpack-plugin "^5.5.0" - http-proxy "^1.18.1" - i18next-conv "^9" - i18next-scanner "^3.3.0" - inquirer "^7.3.3" - lodash "^4.17.11" - mini-css-extract-plugin "^2.5.3" - node-http-proxy-json "^0.1.9" - parse-author "^2.0.0" - parse-gitignore "^1.0.1" - postcss-loader "^7.0.1" - react-dev-utils "^12.0.0" - react-refresh "^0.11.0" - style-loader "^3.3.1" - styled-jsx "^4.0.1" - terser-webpack-plugin "^5.3.1" - vite "^5.2.9" - vite-plugin-dynamic-import "^1.5.0" - webpack "^5.41.1" - webpack-dev-server "^4.7.4" - workbox-build "^6.1.5" - workbox-webpack-plugin "^6.5.4" - "@dhis2/cli-helpers-engine@^1.5.0": version "1.5.0" resolved "https://registry.npmjs.org/@dhis2/cli-helpers-engine/-/cli-helpers-engine-1.5.0.tgz" @@ -2176,7 +2093,7 @@ react-docgen "^6.0.0-alpha.0" url-join "^4.0.1" -"@dhis2/d2-i18n@*", "@dhis2/d2-i18n@^1", "@dhis2/d2-i18n@^1.1.0", "@dhis2/d2-i18n@^1.1.1": +"@dhis2/d2-i18n@^1.1.1": version "1.1.1" resolved "https://registry.npmjs.org/@dhis2/d2-i18n/-/d2-i18n-1.1.1.tgz" integrity sha512-X0jOCIKPaYv/2z0/sdkEvcbRiYu5o1FrOwvitiS6aKFxSL/GJ872I+UdHwpWJtL+yM7Z8E1epljazW0LnHUz0Q== @@ -2197,16 +2114,6 @@ resolved "https://registry.npmjs.org/@dhis2/prop-types/-/prop-types-3.1.2.tgz" integrity sha512-eM0jjLOWvtXWqSFp5YC4DHFpkP8Y1D2eUwGV7MBWjni+o27oesVan+oT7WHeOeLdlAd4acRJrnaaAyB4Ck1wGQ== -"@dhis2/pwa@12.0.0-alpha.5", "@dhis2/pwa@file:/home/runner/work/app-platform/app-platform/pwa": - version "12.0.0-alpha.5" - resolved "file:pwa" - dependencies: - idb "^6.0.0" - workbox-core "^6.1.5" - workbox-precaching "^6.1.5" - workbox-routing "^6.1.5" - workbox-strategies "^6.1.5" - "@dhis2/ui-constants@9.8.9": version "9.8.9" resolved "https://registry.npmjs.org/@dhis2/ui-constants/-/ui-constants-9.8.9.tgz" @@ -2239,7 +2146,7 @@ resolved "https://registry.npmjs.org/@dhis2/ui-icons/-/ui-icons-9.8.9.tgz" integrity sha512-+7vS14U1l/vud107hvQlnCPW2WfkNdf6O8bi7TOe3OcT6qt84/vnDh0Hdpruk8QHr6u+5aHwzkAZOM/Hcz8wwA== -"@dhis2/ui@^9.8.9", "@dhis2/ui@>=9.8.9": +"@dhis2/ui@^9.8.9": version "9.8.9" resolved "https://registry.npmjs.org/@dhis2/ui/-/ui-9.8.9.tgz" integrity sha512-BXNHkTMQTIhaaf+TGUmZJHwmiylMyhdDaYqrnzw3t89oTaroWCwDTiPsxcs3VCQuva0TzYSRM3kf0LGiBClppg== @@ -2294,11 +2201,121 @@ "@dhis2/ui-icons" "9.8.9" prop-types "^15.7.2" +"@esbuild/aix-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" + integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== + +"@esbuild/android-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" + integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== + +"@esbuild/android-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" + integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== + +"@esbuild/android-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" + integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== + +"@esbuild/darwin-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" + integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== + +"@esbuild/darwin-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" + integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== + +"@esbuild/freebsd-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" + integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== + +"@esbuild/freebsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" + integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== + +"@esbuild/linux-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" + integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== + +"@esbuild/linux-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" + integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== + +"@esbuild/linux-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" + integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== + +"@esbuild/linux-loong64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" + integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== + +"@esbuild/linux-mips64el@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" + integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== + +"@esbuild/linux-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" + integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== + +"@esbuild/linux-riscv64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" + integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== + +"@esbuild/linux-s390x@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" + integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== + "@esbuild/linux-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz" integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== +"@esbuild/netbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" + integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== + +"@esbuild/openbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" + integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== + +"@esbuild/sunos-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" + integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== + +"@esbuild/win32-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" + integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== + +"@esbuild/win32-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" + integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== + +"@esbuild/win32-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" + integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" @@ -2572,12 +2589,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz" integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== -"@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -2629,7 +2641,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -2657,7 +2669,7 @@ schema-utils "^3.0.0" source-map "^0.7.3" -"@popperjs/core@^2.0.0", "@popperjs/core@^2.10.1": +"@popperjs/core@^2.10.1": version "2.11.5" resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz" integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw== @@ -2728,6 +2740,61 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/rollup-android-arm-eabi@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz#bddf05c3387d02fac04b6b86b3a779337edfed75" + integrity sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g== + +"@rollup/rollup-android-arm64@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz#b26bd09de58704c0a45e3375b76796f6eda825e4" + integrity sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ== + +"@rollup/rollup-darwin-arm64@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz#c5f3fd1aa285b6d33dda6e3f3ca395f8c37fd5ca" + integrity sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA== + +"@rollup/rollup-darwin-x64@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz#8e4673734d7dc9d68f6d48e81246055cda0e840f" + integrity sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw== + +"@rollup/rollup-linux-arm-gnueabihf@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz#53ed38eb13b58ababdb55a7f66f0538a7f85dcba" + integrity sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw== + +"@rollup/rollup-linux-arm-musleabihf@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz#0706ee38330e267a5c9326956820f009cfb21fcd" + integrity sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw== + +"@rollup/rollup-linux-arm64-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz#426fce7b8b242ac5abd48a10a5020f5a468c6cb4" + integrity sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA== + +"@rollup/rollup-linux-arm64-musl@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz#65bf944530d759b50d7ffd00dfbdf4125a43406f" + integrity sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz#494ba3b31095e9a45df9c3f646d21400fb631a95" + integrity sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw== + +"@rollup/rollup-linux-riscv64-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz#8b88ed0a40724cce04aa15374ebe5ba4092d679f" + integrity sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ== + +"@rollup/rollup-linux-s390x-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz#09c9e5ec57a0f6ec3551272c860bb9a04b96d70f" + integrity sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg== + "@rollup/rollup-linux-x64-gnu@4.14.3": version "4.14.3" resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz" @@ -2738,6 +2805,21 @@ resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz" integrity sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg== +"@rollup/rollup-win32-arm64-msvc@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz#a648122389d23a7543b261fba082e65fefefe4f6" + integrity sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg== + +"@rollup/rollup-win32-ia32-msvc@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz#34727b5c7953c35fc6e1ae4f770ad3a2025f8e03" + integrity sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw== + +"@rollup/rollup-win32-x64-msvc@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz#5b2fb4d8cd44c05deef8a7b0e6deb9ccb8939d18" + integrity sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" @@ -2820,7 +2902,7 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz" integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== @@ -2997,7 +3079,7 @@ resolved "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz" integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== -"@types/markdown-it@*", "@types/markdown-it@^12.2.3": +"@types/markdown-it@^12.2.3": version "12.2.3" resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz" integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== @@ -3020,7 +3102,7 @@ resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@^18.0.0 || >=20.0.0": +"@types/node@*": version "18.0.0" resolved "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz" integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== @@ -3067,7 +3149,7 @@ dependencies: "@types/react" "^17" -"@types/react@^16.9.0 || ^17.0.0", "@types/react@^17": +"@types/react@^17": version "17.0.47" resolved "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz" integrity sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA== @@ -3296,6 +3378,14 @@ resolved "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz" integrity sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg== +JSONStream@^1.0.4: + version "1.3.5" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" @@ -3379,20 +3469,15 @@ acorn-walk@^8.0.0: dependencies: acorn "^8.11.0" -"acorn@^6 || ^7 || ^8", acorn@^6.0.0, "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^6.1.0 || ^7 || ^8", "acorn@^7.4 || ^8", acorn@^8, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.8.2: - version "8.12.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== - -acorn@^7.1.1: +acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.0.4, acorn@^8.11.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.8.2: + version "8.12.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== address@^1.0.1, address@^1.1.2: version "1.1.2" @@ -3440,7 +3525,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1, ajv@6.12.6: +ajv@6.12.6, ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3450,27 +3535,7 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1, ajv json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.8.0, ajv@^8.8.2: - version "8.11.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.11.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.6.0, ajv@>=8: +ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.8.0: version "8.11.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -3533,14 +3598,7 @@ ansi-regex@^5.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -3665,21 +3723,7 @@ arr-union@^3.1.0: resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== -array-back@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" - integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== - dependencies: - typical "^2.6.0" - -array-back@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" - integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== - dependencies: - typical "^2.6.0" - -array-back@^1.0.4: +array-back@^1.0.2, array-back@^1.0.3, array-back@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== @@ -3693,12 +3737,7 @@ array-back@^2.0.0: dependencies: typical "^2.6.1" -array-back@^3.0.1: - version "3.1.0" - resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^3.1.0: +array-back@^3.0.1, array-back@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== @@ -3708,16 +3747,16 @@ array-back@^4.0.0, array-back@^4.0.1: resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== -array-flatten@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + array-ify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" @@ -3808,7 +3847,7 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" -assert-plus@^1.0.0, assert-plus@1.0.0: +assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== @@ -4008,6 +4047,11 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" @@ -4021,11 +4065,6 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - basic-auth@~2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" @@ -4079,6 +4118,13 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + bl@^4.0.3: version "4.1.0" resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" @@ -4126,6 +4172,19 @@ boolbase@^1.0.0: resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +boxen@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + boxen@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz" @@ -4140,19 +4199,6 @@ boxen@^3.0.0: type-fest "^0.3.0" widest-line "^2.0.0" -boxen@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -4184,14 +4230,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -4228,7 +4267,7 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4 node-releases "^2.0.5" picocolors "^1.0.0" -browserslist@^4.22.2, "browserslist@>= 4.21.0": +browserslist@^4.22.2: version "4.23.0" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -4436,16 +4475,16 @@ catharsis@^0.9.0: dependencies: lodash "^4.17.15" -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +chalk@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.0.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4470,15 +4509,6 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz" - integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" @@ -4584,7 +4614,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2, classnames@^2.2.6, classnames@^2.3.1: +classnames@^2.2.6, classnames@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== @@ -4730,16 +4760,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + colord@^2.9.1: version "2.9.2" resolved "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz" @@ -4863,29 +4893,29 @@ compressible@~2.0.14, compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== +compression@1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz" + integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== dependencies: accepts "~1.3.5" bytes "3.0.0" - compressible "~2.0.16" + compressible "~2.0.14" debug "2.6.9" - on-headers "~1.0.2" + on-headers "~1.0.1" safe-buffer "5.1.2" vary "~1.1.2" -compression@1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz" - integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" bytes "3.0.0" - compressible "~2.0.14" + compressible "~2.0.16" debug "2.6.9" - on-headers "~1.0.1" + on-headers "~1.0.2" safe-buffer "5.1.2" vary "~1.1.2" @@ -4991,13 +5021,20 @@ conventional-commits-parser@^3.0.0: resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: - is-text-path "^1.0.1" JSONStream "^1.0.4" + is-text-path "^1.0.1" lodash "^4.17.15" meow "^8.0.0" split2 "^3.0.0" through2 "^4.0.0" +convert-source-map@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" @@ -5015,13 +5052,6 @@ convert-source-map@^2.0.0: resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -convert-source-map@1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" @@ -5050,16 +5080,16 @@ core-js-pure@^3.8.1: resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.23.1.tgz" integrity sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg== -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - core-util-is@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cors@latest: version "2.8.5" resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" @@ -5090,13 +5120,6 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -crc@^3.4.4: - version "3.8.0" - resolved "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" - crc32-stream@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz" @@ -5105,6 +5128,13 @@ crc32-stream@^3.0.1: crc "^3.4.4" readable-stream "^3.4.0" +crc@^3.4.4: + version "3.8.0" + resolved "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + cross-domain-safe-weakmap@^1, cross-domain-safe-weakmap@^1.0.1: version "1.0.29" resolved "https://registry.npmjs.org/cross-domain-safe-weakmap/-/cross-domain-safe-weakmap-1.0.29.tgz" @@ -5340,47 +5370,26 @@ date-fns@^2.16.1: resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz" integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== -debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9, debug@2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^4.1.0, debug@^4.3.1: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^4.1.1: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ms "2.1.2" + ms "^2.1.1" decamelize-keys@^1.1.0: version "1.1.0" @@ -5502,16 +5511,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +depd@2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -depd@~2.0.0, depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" @@ -5660,16 +5669,7 @@ domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -domutils@^2.5.2: - version "2.8.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^2.8.0: +domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -5719,16 +5719,16 @@ dotenv@^8.1.0: resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== -duplexer@^0.1.2, duplexer@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA== +duplexer@^0.1.2, duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + duplexify@^3.6.0: version "3.7.1" resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" @@ -5884,7 +5884,7 @@ enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.4: has "^1.0.3" object-is "^1.1.2" -enzyme@^3.0.0, enzyme@^3.10.0, enzyme@^3.11.0: +enzyme@^3.10.0, enzyme@^3.11.0: version "3.11.0" resolved "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz" integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== @@ -6136,7 +6136,7 @@ eslint-plugin-react@^7.31.10: semver "^6.3.0" string.prototype.matchall "^4.0.8" -eslint-scope@^5.1.1, eslint-scope@5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -6161,7 +6161,7 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -"eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", eslint@^7.32.0, "eslint@>= 4.12.1", "eslint@>= 6", eslint@>=7.0.0: +eslint@^7.32.0: version "7.32.0" resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== @@ -6410,15 +6410,7 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend-shallow@^3.0.2: +extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== @@ -6454,24 +6446,24 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.12: +fast-glob@^3.2.12, fast-glob@^3.3.2: version "3.3.2" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -6515,7 +6507,7 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -faye-websocket@^0.11.3, faye-websocket@0.11.x: +faye-websocket@0.11.x, faye-websocket@^0.11.3: version "0.11.4" resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== @@ -6567,6 +6559,11 @@ file-set@^3.0.0: array-back "^4.0.0" glob "^7.1.5" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + filelist@^1.0.1: version "1.0.4" resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" @@ -6596,7 +6593,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -final-form@^4.20.2, final-form@^4.20.4: +final-form@^4.20.2: version "4.20.7" resolved "https://registry.npmjs.org/final-form/-/final-form-4.20.7.tgz" integrity sha512-ii3X9wNfyBYFnDPunYN5jh1/HAvtOZ9aJI/TVk0MB86hZuOeYkb+W5L3icgwW9WWNztZR6MDU3En6eoZTUoFPg== @@ -6659,15 +6656,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -6816,17 +6805,7 @@ fs-extra@^8.0.1, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.0.1: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -6866,6 +6845,19 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" @@ -7095,14 +7087,7 @@ globals@^11.1.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0: - version "13.15.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz" - integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== - dependencies: - type-fest "^0.20.2" - -globals@^13.9.0: +globals@^13.6.0, globals@^13.9.0: version "13.15.0" resolved "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz" integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== @@ -7425,16 +7410,6 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -7446,6 +7421,16 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-parser-js@>=0.5.1: version "0.5.6" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz" @@ -7564,7 +7549,7 @@ i18next@^10.3: resolved "https://registry.npmjs.org/i18next/-/i18next-10.6.0.tgz" integrity sha512-ycRlN145kQf8EsyDAzMfjqv1ZT1Jwp7P2H/07bP8JLWm+7cSLD4XqlJOvq4mKVS2y2mMIy10lX9ZeYUdQ0qSRw== -iconv-lite@^0.4.24, iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -7644,7 +7629,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -7687,16 +7672,16 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -ipaddr.js@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" - integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz" @@ -8072,7 +8057,7 @@ is-yarn-global@^0.3.0: resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== -isarray@~1.0.0, isarray@1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -8381,7 +8366,7 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@*, jest-resolve@^27.5.1: +jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== @@ -8702,7 +8687,7 @@ json-schema-traverse@^1.0.0: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@^0.4.0, json-schema@0.4.0: +json-schema@0.4.0, json-schema@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== @@ -8760,14 +8745,6 @@ jsonpointer@^5.0.0: resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz" integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== -JSONStream@^1.0.4: - version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - jsprim@^1.2.2: version "1.4.2" resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" @@ -8793,21 +8770,7 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^3.0.3: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== @@ -8929,6 +8892,15 @@ loader-runner@^4.2.0: resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + loader-utils@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz" @@ -8943,15 +8915,6 @@ loader-utils@^3.2.0: resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz" integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" @@ -9200,7 +9163,7 @@ markdown-it-anchor@^8.4.1: resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.4.tgz" integrity sha512-Ul4YVYZNxMJYALpKtu+ZRdrryYt/GlQ5CK+4l1bp/gWXOG2QWElt6AqF3Mih/wfUKdZbNAZVXGR73/n6U/8img== -markdown-it@*, markdown-it@^12.3.2: +markdown-it@^12.3.2: version "12.3.2" resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz" integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== @@ -9330,7 +9293,7 @@ microseconds@0.2.0: resolved "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz" integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== -"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -9340,13 +9303,6 @@ mime-db@~1.33.0: resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - mime-types@2.1.18: version "2.1.18" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" @@ -9354,6 +9310,13 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" @@ -9386,6 +9349,13 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -9407,13 +9377,6 @@ minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - minimist-options@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" @@ -9451,6 +9414,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp2@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz" + integrity sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw== + mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" @@ -9463,12 +9431,7 @@ mkdirp@^1.0.4: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp2@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz" - integrity sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw== - -moment@*, moment@^2.24.0, moment@^2.29.1: +moment@^2.24.0, moment@^2.29.1: version "2.29.3" resolved "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz" integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== @@ -9489,11 +9452,6 @@ morgan@^1.9.1: on-finished "~2.3.0" on-headers "~1.0.2" -ms@^2.1.1, ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -9504,6 +9462,11 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multicast-dns@^7.2.5: version "7.2.5" resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" @@ -9517,6 +9480,11 @@ mute-stream@0.0.8: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +nan@^2.12.1: + version "2.20.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" + integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== + nano-time@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz" @@ -9832,13 +9800,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" @@ -9846,6 +9807,13 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + on-headers@~1.0.1, on-headers@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" @@ -10062,7 +10030,7 @@ parse5-htmlparser2-tree-adapter@^7.0.0: domhandler "^5.0.2" parse5 "^7.0.0" -parse5@^6.0.0, parse5@6.0.1: +parse5@6.0.1, parse5@^6.0.0: version "6.0.1" resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== @@ -10112,7 +10080,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-is-inside@^1.0.1, path-is-inside@1.0.2: +path-is-inside@1.0.2, path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== @@ -10122,12 +10090,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -10465,7 +10428,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3.5, postcss@^8.4.7: +postcss@^8.3.5, postcss@^8.4.7: version "8.4.14" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz" integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== @@ -10552,7 +10515,7 @@ prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@^15, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -10619,20 +10582,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -"pwa-app@file:/home/runner/work/app-platform/app-platform/examples/pwa-app": - version "12.0.0-alpha.5" - resolved "file:examples/pwa-app" - q@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - qs@6.10.3: version "6.10.3" resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" @@ -10640,6 +10594,11 @@ qs@6.10.3: dependencies: side-channel "^1.0.4" +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -10682,16 +10641,16 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - range-parser@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + raw-body@2.5.1: version "2.5.1" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" @@ -10702,7 +10661,7 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.8, rc@1.2.8: +rc@1.2.8, rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -10758,7 +10717,7 @@ react-docgen@^6.0.0-alpha.0: resolve "^1.17.0" strip-indent "^3.0.0" -react-dom@^16.0.0-0, react-dom@^16.8, "react-dom@^16.8.0 || ^17 || ^18", react-dom@^16.8.6, "react-dom@^16.9.0 || ^17.0.0", react-dom@<18.0.0: +react-dom@^16.8, react-dom@^16.8.6: version "16.14.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz" integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== @@ -10819,7 +10778,7 @@ react-query@^3.13.11: broadcast-channel "^3.4.1" match-sorter "^6.0.2" -react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": +react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== @@ -10829,7 +10788,7 @@ react-refresh@^0.14.0: resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react-test-renderer@^16.0.0-0, react-test-renderer@^16.8.6, "react-test-renderer@^16.9.0 || ^17.0.0": +react-test-renderer@^16.0.0-0, react-test-renderer@^16.8.6: version "16.14.0" resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz" integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== @@ -10839,7 +10798,7 @@ react-test-renderer@^16.0.0-0, react-test-renderer@^16.8.6, "react-test-renderer react-is "^16.8.6" scheduler "^0.19.1" -"react@^0.14 || ^15.0.0 || ^16.0.0-alpha", react@^16.0.0-0, react@^16.14.0, react@^16.8, "react@^16.8.0 || ^17 || ^18", "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^16.8.6, "react@^16.9.0 || ^17.0.0", react@<18.0.0, "react@>= 16.8.0 || 17.x.x || 18.x.x", react@>=16.13.1, react@>=16.8, "react@0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0": +react@^16.8, react@^16.8.6: version "16.14.0" resolved "https://registry.npmjs.org/react/-/react-16.14.0.tgz" integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== @@ -10867,6 +10826,15 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.2.0, readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" @@ -10880,20 +10848,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^2.1.5: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^2.3.3: +readable-stream@^2.1.5, readable-stream@^2.3.3, readable-stream@^2.3.5: version "2.3.8" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -10906,73 +10861,6 @@ readable-stream@^2.3.3: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^2.3.5: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^3.0.6: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^3.1.1: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^3.2.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@3: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" @@ -11096,13 +10984,6 @@ regexpu-core@^5.0.1: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" -registry-auth-token@^4.0.0: - version "4.2.2" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" - integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== - dependencies: - rc "1.2.8" - registry-auth-token@3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz" @@ -11111,12 +10992,12 @@ registry-auth-token@3.3.2: rc "^1.1.6" safe-buffer "^5.0.1" -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +registry-auth-token@^4.0.0: + version "4.2.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" + integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== dependencies: - rc "^1.2.8" + rc "1.2.8" registry-url@3.1.0: version "3.1.0" @@ -11125,6 +11006,13 @@ registry-url@3.1.0: dependencies: rc "^1.0.1" +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + regjsgen@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz" @@ -11253,17 +11141,17 @@ resize-observer-polyfill@^1.5.1: resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0, resolve-from@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-global@^1.0.0, resolve-global@1.0.0: +resolve-global@1.0.0, resolve-global@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz" integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== @@ -11335,7 +11223,7 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.0, rimraf@^3.0.2, rimraf@3.0.2: +rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -11359,7 +11247,7 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: +rollup@^2.43.1: version "2.75.7" resolved "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz" integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== @@ -11418,25 +11306,15 @@ rxjs@^6.6.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex-test@^1.0.0: version "1.0.0" @@ -11454,7 +11332,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -11474,6 +11352,15 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" @@ -11502,15 +11389,6 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.0.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" @@ -11530,25 +11408,22 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -semver@^5.0.3: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.5.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^5.7.0: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^5.7.1: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@7.3.5: + version "7.3.5" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" @@ -11560,58 +11435,13 @@ semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" -semver@^7.3.2: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.4: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.5: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.7: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -"semver@2 || 3 || 4 || 5": - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.3.5: - version "7.3.5" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - send@0.18.0, send@latest: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" @@ -11784,10 +11614,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -"simple-app@file:/home/runner/work/app-platform/app-platform/examples/simple-app": - version "12.0.0-alpha.5" - resolved "file:examples/simple-app" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" @@ -11917,6 +11743,11 @@ source-map-url@^0.4.0: resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== +source-map@0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + source-map@^0.5.6: version "0.5.7" resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" @@ -11939,11 +11770,6 @@ source-map@^0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -source-map@0.7.3: - version "0.7.3" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -12010,13 +11836,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split@0.3: - version "0.3.3" - resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz" - integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== - dependencies: - through "2" - split2@^3.0.0: version "3.2.2" resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" @@ -12024,6 +11843,13 @@ split2@^3.0.0: dependencies: readable-stream "^3.0.0" +split@0.3: + version "0.3.3" + resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz" + integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" @@ -12069,21 +11895,16 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.4.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + stream-combiner@~0.0.4: version "0.0.4" resolved "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz" @@ -12108,20 +11929,6 @@ stream-via@^1.0.4: resolved "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz" integrity sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ== -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-hash@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz" @@ -12135,15 +11942,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -12210,6 +12009,20 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -12287,7 +12100,7 @@ style-loader@^3.3.1: resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== -styled-jsx@^4, styled-jsx@^4.0.1: +styled-jsx@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.1.tgz" integrity sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ== @@ -12314,7 +12127,7 @@ stylis-rule-sheet@0.0.10: resolved "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz" integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== -stylis@^3.5.0, stylis@3.5.4: +stylis@3.5.4: version "3.5.4" resolved "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz" integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== @@ -12333,14 +12146,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.0: +supports-color@^8.0.0, supports-color@^8.1.0: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -12493,7 +12299,7 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.1: serialize-javascript "^6.0.0" terser "^5.7.2" -terser@^5.0.0, terser@^5.10.0, terser@^5.4.0, terser@^5.7.2: +terser@^5.0.0, terser@^5.10.0, terser@^5.7.2: version "5.14.1" resolved "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz" integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== @@ -12551,11 +12357,6 @@ throat@^6.0.1: resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== -through@^2.3.6, "through@>=2.2.7 <3", through@~2.3, through@~2.3.1, through@2: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - through2-filter@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/through2-filter/-/through2-filter-3.1.0.tgz" @@ -12571,19 +12372,17 @@ through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^4.0.0: +through2@^4.0.0, through2@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== dependencies: readable-stream "3" -through2@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== thunky@^1.0.2: version "1.1.0" @@ -12725,7 +12524,7 @@ tslib@^1.9.0: resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.2.tgz" integrity sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg== -tslib@^2.0.1: +tslib@^2.0.1, tslib@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -12740,11 +12539,6 @@ tslib@^2.3.1: resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" @@ -12757,7 +12551,7 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -type-check@^0.4.0: +type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== @@ -12771,19 +12565,12 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.16.0, "type-fest@>=0.17.0 <3.0.0": +type-fest@^0.16.0: version "0.16.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== @@ -12843,7 +12630,7 @@ typeface-roboto@^0.0.75: resolved "https://registry.npmjs.org/typeface-roboto/-/typeface-roboto-0.0.75.tgz" integrity sha512-VrR/IiH00Z1tFP4vDGfwZ1esNqTiDMchBEXYY9kilT6wRGgFoCAlgkEUMHb1E3mB0FsfZhv756IF0+R+SFPfdg== -typescript@^3.6.3, "typescript@>= 2.7": +typescript@^3.6.3: version "3.9.10" resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== @@ -12948,12 +12735,7 @@ universal-serialize@^1.0.4: resolved "https://registry.npmjs.org/universal-serialize/-/universal-serialize-1.0.10.tgz" integrity sha512-FdouA4xSFa0fudk1+z5vLWtxZCoC0Q9lKYV3uUdFl7DttNfolmiw2ASr5ddY+/Yz6Isr68u3IqC9XMSwMP+Pow== -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^0.1.2: +universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -12976,7 +12758,7 @@ unload@2.2.0: "@babel/runtime" "^7.6.2" detect-node "^2.0.4" -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -13190,7 +12972,7 @@ vite-plugin-dynamic-import@^1.5.0: fast-glob "^3.2.12" magic-string "^0.30.1" -"vite@^4.2.0 || ^5.0.0", vite@^5.2.9: +vite@^5.2.9: version "5.2.9" resolved "https://registry.npmjs.org/vite/-/vite-5.2.9.tgz" integrity sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw== @@ -13285,7 +13067,7 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.7.4, "webpack-dev-server@3.x || 4.x": +webpack-dev-server@^4.7.4: version "4.9.2" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.2.tgz" integrity sha512-H95Ns95dP24ZsEzO6G9iT+PNw4Q7ltll1GfJHV4fKphuHWgKFzGHWi4alTlTnpk1SPPk41X+l2RB7rLfIhnB9Q== @@ -13333,7 +13115,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.41.1, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": +webpack@^5.41.1: version "5.73.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz" integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== @@ -13363,7 +13145,7 @@ webpack-sources@^3.2.3: watchpack "^2.3.1" webpack-sources "^3.2.3" -websocket-driver@^0.7.4, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -13477,7 +13259,7 @@ workbox-broadcast-update@6.5.4: dependencies: workbox-core "6.5.4" -workbox-build@^6.1.5, workbox-build@6.5.4: +workbox-build@6.5.4, workbox-build@^6.1.5: version "6.5.4" resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz" integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== @@ -13527,7 +13309,7 @@ workbox-cacheable-response@6.5.4: dependencies: workbox-core "6.5.4" -workbox-core@^6.1.5, workbox-core@6.5.4: +workbox-core@6.5.4, workbox-core@^6.1.5: version "6.5.4" resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz" integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== @@ -13557,7 +13339,7 @@ workbox-navigation-preload@6.5.4: dependencies: workbox-core "6.5.4" -workbox-precaching@^6.1.5, workbox-precaching@6.5.4: +workbox-precaching@6.5.4, workbox-precaching@^6.1.5: version "6.5.4" resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz" integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== @@ -13585,14 +13367,14 @@ workbox-recipes@6.5.4: workbox-routing "6.5.4" workbox-strategies "6.5.4" -workbox-routing@^6.1.5, workbox-routing@6.5.4: +workbox-routing@6.5.4, workbox-routing@^6.1.5: version "6.5.4" resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz" integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== dependencies: workbox-core "6.5.4" -workbox-strategies@^6.1.5, workbox-strategies@6.5.4: +workbox-strategies@6.5.4, workbox-strategies@^6.1.5: version "6.5.4" resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz" integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== From e75323a2bea51e6535799c3fdac74468e4c67ebc Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Mon, 5 Aug 2024 18:32:01 +0200 Subject: [PATCH 03/16] feat: logging --- cli/src/commands/jsx-migration.js | 58 ++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index e6f9c297..e629448b 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -1,5 +1,6 @@ const fs = require('fs/promises') const path = require('path') +const { reporter /* chalk */ } = require('@dhis2/cli-helpers-engine') const fg = require('fast-glob') // Looks for JSX syntax; avoids comments @@ -11,7 +12,7 @@ const jsxRegex = /^(?![ \t]*(?:\/\/|\/?\*+)).*(<\/?[a-zA-Z]+[^>]*>)/gim // https://regex101.com/r/xsHZdQ/2 const importRegex = /(import.*|from) ['"](\..*)['"]/gim -;(async function () { +const handler = async () => { const globMatches = await fg.glob('src/**/*.js') // 1. Search each file for JSX syntax @@ -28,16 +29,14 @@ const importRegex = /(import.*|from) ['"](\..*)['"]/gim if (contents.match(jsxRegex)) { const newPath = matchPath.concat('x') // Add 'x' to the end to make it 'jsx' - // todo: logging - // console.log(`Renaming ${matchPath} to ${newPath}`) + reporter.debug(`Renaming ${matchPath} to ${newPath}`) await fs.rename(matchPath, newPath) renamedFiles.add(matchPath) } }) ) - // todo: logging - console.log(`${renamedFiles.size} files renamed`) + reporter.info(`Renamed ${renamedFiles.size} file(s)`) // 2. Go through each file again for imports // (Run glob again because some files have been renamed) @@ -46,6 +45,7 @@ const importRegex = /(import.*|from) ['"](\..*)['"]/gim // (Note: Files without extension aren't edited; Vite and TS // handle them, so it's up to eslint rules) const globMatches2 = await fg.glob('src/**/*.(js|jsx)') + let fileUpdatedCount = 0 await Promise.all( globMatches2.map(async (matchPath) => { const fileContent = await fs.readFile(matchPath, { @@ -53,6 +53,7 @@ const importRegex = /(import.*|from) ['"](\..*)['"]/gim }) let newFileContent = fileContent + let contentUpdated = false const importMatches = Array.from(fileContent.matchAll(importRegex)) importMatches.forEach((match) => { // get the second capturing group, the import path @@ -65,20 +66,29 @@ const importRegex = /(import.*|from) ['"](\..*)['"]/gim importPath, importPath + 'x' ) + contentUpdated = true } }) - await fs.writeFile(matchPath, newFileContent) + + if (contentUpdated) { + await fs.writeFile(matchPath, newFileContent) + fileUpdatedCount += 1 + } }) ) - // todo: logging + if (fileUpdatedCount > 0) { + reporter.info(`Updated imports in ${fileUpdatedCount} file(s)`) + } // 3. Update d2.config.js // Read d2 config as JS for easier access to entryPoint strings - const { entryPoints } = require('./d2.config.js') - const d2ConfigContents = await fs.readFile('./d2.config.js', { + const d2ConfigPath = path.join(process.cwd(), './d2.config.js') + const { entryPoints } = require(d2ConfigPath) + const d2ConfigContents = await fs.readFile(d2ConfigPath, { encoding: 'utf8', }) let newD2ConfigContents = d2ConfigContents + let configContentUpdated = false Object.values(entryPoints).forEach((entryPoint) => { // entryPoint is formatted as './src/...' -- drop first 2 chars // to match the glob format above @@ -87,8 +97,32 @@ const importRegex = /(import.*|from) ['"](\..*)['"]/gim entryPoint, entryPoint + 'x' ) + configContentUpdated = true } }) - await fs.writeFile('./d2.config.js', newD2ConfigContents) - // todo: logging -})() + if (configContentUpdated) { + await fs.writeFile(d2ConfigPath, newD2ConfigContents) + reporter.info('Updated d2.config.js entrypoints') + } +} + +const command = { + command: 'jsx-migration', + desc: 'Renames .js files to .jsx -- also handles file imports and d2.config.js', + builder: { + // todo: update parameters + username: { + alias: 'u', + description: + 'The username for authenticating with the DHIS2 instance', + }, + timeout: { + description: + 'The timeout (in seconds) for uploading the app bundle', + default: 300, + }, + }, + handler, +} + +module.exports = command From 826c769ac6c7c9f7b3d2e35715bb72b78f01c476 Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Wed, 7 Aug 2024 17:18:11 +0200 Subject: [PATCH 04/16] fix: handle extensionless and duplicate imports --- cli/src/commands/jsx-migration.js | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index e629448b..6f4cf8a9 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -9,9 +9,12 @@ const fg = require('fast-glob') const jsxRegex = /^(?![ \t]*(?:\/\/|\/?\*+)).*(<\/?[a-zA-Z]+[^>]*>)/gim // Looks for relative import statements -// https://regex101.com/r/xsHZdQ/2 +// https://regex101.com/r/xsHZdQ/3 const importRegex = /(import.*|from) ['"](\..*)['"]/gim +// https://regex101.com/r/u5vIVb/1 +const hasFileExtensionRegex = /[^/]*\.[^/]*$/ + const handler = async () => { const globMatches = await fg.glob('src/**/*.js') @@ -58,13 +61,31 @@ const handler = async () => { importMatches.forEach((match) => { // get the second capturing group, the import path const importPath = match[2] - const joinedPath = path.join(matchPath, '..', importPath) - const isRenamed = renamedFiles.has(joinedPath) + const importPathWithExtension = hasFileExtensionRegex.test( + importPath + ) + ? importPath + : importPath + '.js' + // get the full path of the imported file from the repo root + const importPathFromRoot = path.join( + matchPath, + '..', + importPathWithExtension + ) + const isRenamed = renamedFiles.has(importPathFromRoot) + + // todo: 'updateImportsWithoutFileExtensions' option if (isRenamed) { - newFileContent = newFileContent.replace( + // replacing the whole matched string ends up being more + // precise and avoids side effects + const newMatchContent = match[0].replace( importPath, - importPath + 'x' + importPathWithExtension + 'x' + ) + newFileContent = newFileContent.replace( + match[0], + newMatchContent ) contentUpdated = true } From f433d6c121219a4fad580ebebcbd259361e39779 Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Mon, 12 Aug 2024 17:31:57 +0200 Subject: [PATCH 05/16] fix: avoid IDing types as JSX, handle .component files better, flag for extensionless imports --- cli/src/commands/jsx-migration.js | 42 +++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index 6f4cf8a9..1ac69a88 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -5,17 +5,14 @@ const fg = require('fast-glob') // Looks for JSX syntax; avoids comments // Known false positives: in strings or multiline comments (see regex101) -// https://regex101.com/r/YDkml7/5 -const jsxRegex = /^(?![ \t]*(?:\/\/|\/?\*+)).*(<\/?[a-zA-Z]+[^>]*>)/gim +// https://regex101.com/r/YDkml7/6 +const jsxRegex = /^(?![ \t]*(?:\/\/|\/?\*+)).*[^a-zA-Z](<\/?[a-zA-Z]+[^>]*>)/gim // Looks for relative import statements // https://regex101.com/r/xsHZdQ/3 const importRegex = /(import.*|from) ['"](\..*)['"]/gim -// https://regex101.com/r/u5vIVb/1 -const hasFileExtensionRegex = /[^/]*\.[^/]*$/ - -const handler = async () => { +const handler = async ({ dontAddExtensionsToImportsWithoutOne }) => { const globMatches = await fg.glob('src/**/*.js') // 1. Search each file for JSX syntax @@ -59,11 +56,20 @@ const handler = async () => { let contentUpdated = false const importMatches = Array.from(fileContent.matchAll(importRegex)) importMatches.forEach((match) => { - // get the second capturing group, the import path + // match[2] is the second capturing group, the import path const importPath = match[2] - const importPathWithExtension = hasFileExtensionRegex.test( - importPath - ) + // This is a little weird for files with an extension other + // than .js, but it's okay since they won't need renaming + const importPathHasExtension = importPath.endsWith('.js') + if ( + !importPathHasExtension && + dontAddExtensionsToImportsWithoutOne + ) { + return + } + + // We'll need an extension to match with the renamed files Set + const importPathWithExtension = importPathHasExtension ? importPath : importPath + '.js' // get the full path of the imported file from the repo root @@ -74,11 +80,9 @@ const handler = async () => { ) const isRenamed = renamedFiles.has(importPathFromRoot) - // todo: 'updateImportsWithoutFileExtensions' option - if (isRenamed) { // replacing the whole matched string ends up being more - // precise and avoids side effects + // precise than just the import text and avoids side effects const newMatchContent = match[0].replace( importPath, importPathWithExtension + 'x' @@ -132,15 +136,11 @@ const command = { desc: 'Renames .js files to .jsx -- also handles file imports and d2.config.js', builder: { // todo: update parameters - username: { - alias: 'u', - description: - 'The username for authenticating with the DHIS2 instance', - }, - timeout: { + dontAddExtensionsToImportsWithoutOne: { description: - 'The timeout (in seconds) for uploading the app bundle', - default: 300, + "Normally, this script will update `import './App'` to `import './App.jsx'`. Use this flag to skip adding the extension in this case. Imports that already end with .js will still be updated to .jsx", + type: 'boolean', + default: false, }, }, handler, From 40c11ceefe8af642fa4a2301f78a757dca1f875e Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Wed, 14 Aug 2024 12:35:27 +0200 Subject: [PATCH 06/16] refactor: use babel for AST parsing --- cli/package.json | 1 + cli/src/commands/jsx-migration.js | 204 +++++++++++++++++++----------- yarn.lock | 12 ++ 3 files changed, 142 insertions(+), 75 deletions(-) diff --git a/cli/package.json b/cli/package.json index e1906aae..e4952aab 100644 --- a/cli/package.json +++ b/cli/package.json @@ -25,6 +25,7 @@ "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.24.7", "@babel/preset-env": "^7.14.7", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.6.0", diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index 1ac69a88..2ada0323 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -1,37 +1,133 @@ const fs = require('fs/promises') const path = require('path') +const babel = require('@babel/core') const { reporter /* chalk */ } = require('@dhis2/cli-helpers-engine') const fg = require('fast-glob') -// Looks for JSX syntax; avoids comments -// Known false positives: in strings or multiline comments (see regex101) -// https://regex101.com/r/YDkml7/6 -const jsxRegex = /^(?![ \t]*(?:\/\/|\/?\*+)).*[^a-zA-Z](<\/?[a-zA-Z]+[^>]*>)/gim +const babelParseOptions = { + // could just use jsx syntax parser, but this is already a dep of CLI + presets: ['@babel/preset-react'], + // just need syntax parser here + plugins: ['@babel/plugin-syntax-flow'], +} -// Looks for relative import statements -// https://regex101.com/r/xsHZdQ/3 -const importRegex = /(import.*|from) ['"](\..*)['"]/gim +const isJsxInFile = async (filepath) => { + const code = await fs.readFile(filepath, { encoding: 'utf8' }) + try { + const ast = await babel.parseAsync(code, babelParseOptions) -const handler = async ({ dontAddExtensionsToImportsWithoutOne }) => { - const globMatches = await fg.glob('src/**/*.js') + let isJsx = false + babel.traverse(ast, { + // Triggers for any JSX-type node (JSXElement, JSXAttribute, etc) + JSX: (path) => { + isJsx = true + path.stop() // done here; stop traversing + }, + }) + + return isJsx + } catch (err) { + console.log(err) + return false + } +} + +const renameFile = async (filepath) => { + const newPath = filepath.concat('x') // Add 'x' to the end to make it 'jsx' + reporter.debug(`Renaming ${filepath} to ${newPath}`) + await fs.rename(filepath, newPath) +} + +const updateImports = async ({ + filepath, + renamedFiles, + skipUpdatingImportsWithoutExtension, +}) => { + const code = await fs.readFile(filepath, { encoding: 'utf8' }) + let newCode = code + try { + const ast = await babel.parseAsync(code, babelParseOptions) + + let contentUpdated = false + babel.traverse(ast, { + ImportDeclaration: (astPath) => { + const importSource = astPath.node.source.value + if (!importSource.startsWith('.')) { + return // not a relative import + } + + // This is a little weird for files with an extension other + // than .js, but it's okay since they won't need updating + const importSourceHasExtension = importSource.endsWith('.js') + if ( + skipUpdatingImportsWithoutExtension && + !importSourceHasExtension + ) { + return + } + + // We'll need an extension to match with the renamed files Set + const importSourceWithExtension = importSourceHasExtension + ? importSource + : importSource + '.js' + // get the full path of the imported file from the cwd + const importPathFromCwd = path.join( + filepath, + '..', + importSourceWithExtension + ) + const isRenamed = renamedFiles.has(importPathFromCwd) + + // Since generating code from babel doesn't respect formatting, + // update imports with just string replacement + if (isRenamed) { + // updating & replacing the raw value, which includes quotes, + // ends up being more precise and avoids side effects + const rawImportSource = astPath.node.source.extra.raw + const newRawImportSource = rawImportSource.replace( + importSource, + importSourceWithExtension + 'x' + ) + newCode = newCode.replace( + rawImportSource, + newRawImportSource + ) + contentUpdated = true + console.log({ newRawImportSource, contentUpdated }) + } + }, + }) + + if (contentUpdated) { + await fs.writeFile(filepath, newCode) + return true + } + } catch (err) { + console.log(err) + return false + } +} + +// todo: test filepaths +// const filepath = '../capture-app/src/core_modules/capture-core/rules/getApplicableRuleEffects.js' +// const filepath = '../capture-app/src/core_modules/capture-core/components/D2Form/D2Form.component.js' +// const filepath = 'examples/pwa-app/src/App.js' - // 1. Search each file for JSX syntax +// todo: hmm -- now that we're parsing ASTs, it may be best to use a map of +// { path: ast } ... or would that be too much memory? + +const handler = async ({ skipUpdatingImportsWithoutExtension }) => { + // 1. Search each JS file for JSX syntax // If found, 1) add to Set and 2) rename file (add 'x' to end) + const globMatches = await fg.glob('src/**/*.js') + // todo: progress bar: map index / globMatches.length + reporter.info(`Searching for JSX in ${globMatches.length} files...`) const renamedFiles = new Set() await Promise.all( globMatches.map(async (matchPath) => { - const contents = await fs.readFile(matchPath, { - encoding: 'utf8', - }) - if (!contents) { - return - } - - if (contents.match(jsxRegex)) { - const newPath = matchPath.concat('x') // Add 'x' to the end to make it 'jsx' - reporter.debug(`Renaming ${matchPath} to ${newPath}`) - - await fs.rename(matchPath, newPath) + const jsxIsInFile = await isJsxInFile(matchPath) + if (jsxIsInFile) { + await renameFile(matchPath, renamedFiles) renamedFiles.add(matchPath) } }) @@ -45,69 +141,27 @@ const handler = async ({ dontAddExtensionsToImportsWithoutOne }) => { // (Note: Files without extension aren't edited; Vite and TS // handle them, so it's up to eslint rules) const globMatches2 = await fg.glob('src/**/*.(js|jsx)') + // todo: progress bar: map index / globMatches.length + reporter.info(`Scanning ${globMatches2.length} files to update imports...`) let fileUpdatedCount = 0 await Promise.all( globMatches2.map(async (matchPath) => { - const fileContent = await fs.readFile(matchPath, { - encoding: 'utf8', + const importsAreUpdated = await updateImports({ + filepath: matchPath, + renamedFiles, + skipUpdatingImportsWithoutExtension, }) - - let newFileContent = fileContent - let contentUpdated = false - const importMatches = Array.from(fileContent.matchAll(importRegex)) - importMatches.forEach((match) => { - // match[2] is the second capturing group, the import path - const importPath = match[2] - // This is a little weird for files with an extension other - // than .js, but it's okay since they won't need renaming - const importPathHasExtension = importPath.endsWith('.js') - if ( - !importPathHasExtension && - dontAddExtensionsToImportsWithoutOne - ) { - return - } - - // We'll need an extension to match with the renamed files Set - const importPathWithExtension = importPathHasExtension - ? importPath - : importPath + '.js' - // get the full path of the imported file from the repo root - const importPathFromRoot = path.join( - matchPath, - '..', - importPathWithExtension - ) - const isRenamed = renamedFiles.has(importPathFromRoot) - - if (isRenamed) { - // replacing the whole matched string ends up being more - // precise than just the import text and avoids side effects - const newMatchContent = match[0].replace( - importPath, - importPathWithExtension + 'x' - ) - newFileContent = newFileContent.replace( - match[0], - newMatchContent - ) - contentUpdated = true - } - }) - - if (contentUpdated) { - await fs.writeFile(matchPath, newFileContent) - fileUpdatedCount += 1 + if (importsAreUpdated) { + fileUpdatedCount++ } }) ) - if (fileUpdatedCount > 0) { - reporter.info(`Updated imports in ${fileUpdatedCount} file(s)`) - } + reporter.info(`Updated imports in ${fileUpdatedCount} file(s)`) // 3. Update d2.config.js // Read d2 config as JS for easier access to entryPoint strings const d2ConfigPath = path.join(process.cwd(), './d2.config.js') + // todo: verify file exists before requiring const { entryPoints } = require(d2ConfigPath) const d2ConfigContents = await fs.readFile(d2ConfigPath, { encoding: 'utf8', @@ -136,7 +190,7 @@ const command = { desc: 'Renames .js files to .jsx -- also handles file imports and d2.config.js', builder: { // todo: update parameters - dontAddExtensionsToImportsWithoutOne: { + skipUpdatingImportsWithoutExtension: { description: "Normally, this script will update `import './App'` to `import './App.jsx'`. Use this flag to skip adding the extension in this case. Imports that already end with .js will still be updated to .jsx", type: 'boolean', diff --git a/yarn.lock b/yarn.lock index 4efec090..9c1096d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -301,6 +301,11 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz" integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== +"@babel/helper-plugin-utils@^7.24.7": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz" @@ -629,6 +634,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-flow@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz#d1759e84dd4b437cf9fae69b4c06c41d7625bfb7" + integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-import-assertions@^7.17.12": version "7.17.12" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz" From 80923b96ddfac0762e2759e4333274bd599fa7e4 Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Wed, 14 Aug 2024 12:47:40 +0200 Subject: [PATCH 07/16] fix: better logging --- cli/src/commands/jsx-migration.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index 2ada0323..922806d3 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -44,10 +44,12 @@ const updateImports = async ({ skipUpdatingImportsWithoutExtension, }) => { const code = await fs.readFile(filepath, { encoding: 'utf8' }) - let newCode = code + reporter.debug(`Parsing ${filepath}`) + try { const ast = await babel.parseAsync(code, babelParseOptions) + let newCode = code let contentUpdated = false babel.traverse(ast, { ImportDeclaration: (astPath) => { @@ -84,16 +86,19 @@ const updateImports = async ({ // updating & replacing the raw value, which includes quotes, // ends up being more precise and avoids side effects const rawImportSource = astPath.node.source.extra.raw + const newImportSource = importSourceWithExtension + 'x' const newRawImportSource = rawImportSource.replace( importSource, - importSourceWithExtension + 'x' + newImportSource + ) + reporter.debug( + ` Replacing ${importSource} => ${newImportSource}` ) newCode = newCode.replace( rawImportSource, newRawImportSource ) contentUpdated = true - console.log({ newRawImportSource, contentUpdated }) } }, }) From c8ed60c22093e88e52e70add700509193dd1e3fe Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Wed, 14 Aug 2024 17:13:42 +0200 Subject: [PATCH 08/16] fix: improve d2 config handling --- cli/src/commands/jsx-migration.js | 110 ++++++++++++++++++++---------- 1 file changed, 74 insertions(+), 36 deletions(-) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index 922806d3..d0f11584 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -38,6 +38,45 @@ const renameFile = async (filepath) => { await fs.rename(filepath, newPath) } +/** + * For JS imports, this will handle imports either with or without a .js + * extension, such that the result ends with .jsx if the target file has been + * renamed. + * Files without extension are updated by default since some linting rules give + * `import/no-unresolved` errors after switching to JSX if imports don't use + * an extension + * + * If `skipUpdatingImportsWithoutExtension` is set, imports without an extension + * will be left as-is + */ +const updateImportSource = ({ + filepath, + importSource, + renamedFiles, + skipUpdatingImportsWithoutExtension, +}) => { + // This is a little weird for files with an extension other + // than .js, but it's okay since they won't need updating + const importSourceHasExtension = importSource.endsWith('.js') + if (skipUpdatingImportsWithoutExtension && !importSourceHasExtension) { + return + } + + // We'll need an extension to match with the renamed files Set + const importSourceWithExtension = importSourceHasExtension + ? importSource + : importSource + '.js' + // get the full path of the imported file from the cwd + const importPathFromCwd = path.join( + filepath, + '..', + importSourceWithExtension + ) + + const isRenamed = renamedFiles.has(importPathFromCwd) + return isRenamed ? importSourceWithExtension + 'x' : importSource +} + const updateImports = async ({ filepath, renamedFiles, @@ -58,35 +97,19 @@ const updateImports = async ({ return // not a relative import } - // This is a little weird for files with an extension other - // than .js, but it's okay since they won't need updating - const importSourceHasExtension = importSource.endsWith('.js') - if ( - skipUpdatingImportsWithoutExtension && - !importSourceHasExtension - ) { - return - } - - // We'll need an extension to match with the renamed files Set - const importSourceWithExtension = importSourceHasExtension - ? importSource - : importSource + '.js' - // get the full path of the imported file from the cwd - const importPathFromCwd = path.join( + const newImportSource = updateImportSource({ filepath, - '..', - importSourceWithExtension - ) - const isRenamed = renamedFiles.has(importPathFromCwd) + importSource, + renamedFiles, + skipUpdatingImportsWithoutExtension, + }) // Since generating code from babel doesn't respect formatting, // update imports with just string replacement - if (isRenamed) { + if (newImportSource !== importSource) { // updating & replacing the raw value, which includes quotes, // ends up being more precise and avoids side effects const rawImportSource = astPath.node.source.extra.raw - const newImportSource = importSourceWithExtension + 'x' const newRawImportSource = rawImportSource.replace( importSource, newImportSource @@ -118,14 +141,10 @@ const updateImports = async ({ // const filepath = '../capture-app/src/core_modules/capture-core/components/D2Form/D2Form.component.js' // const filepath = 'examples/pwa-app/src/App.js' -// todo: hmm -- now that we're parsing ASTs, it may be best to use a map of -// { path: ast } ... or would that be too much memory? - const handler = async ({ skipUpdatingImportsWithoutExtension }) => { // 1. Search each JS file for JSX syntax // If found, 1) add to Set and 2) rename file (add 'x' to end) const globMatches = await fg.glob('src/**/*.js') - // todo: progress bar: map index / globMatches.length reporter.info(`Searching for JSX in ${globMatches.length} files...`) const renamedFiles = new Set() await Promise.all( @@ -146,7 +165,6 @@ const handler = async ({ skipUpdatingImportsWithoutExtension }) => { // (Note: Files without extension aren't edited; Vite and TS // handle them, so it's up to eslint rules) const globMatches2 = await fg.glob('src/**/*.(js|jsx)') - // todo: progress bar: map index / globMatches.length reporter.info(`Scanning ${globMatches2.length} files to update imports...`) let fileUpdatedCount = 0 await Promise.all( @@ -164,29 +182,49 @@ const handler = async ({ skipUpdatingImportsWithoutExtension }) => { reporter.info(`Updated imports in ${fileUpdatedCount} file(s)`) // 3. Update d2.config.js - // Read d2 config as JS for easier access to entryPoint strings - const d2ConfigPath = path.join(process.cwd(), './d2.config.js') - // todo: verify file exists before requiring - const { entryPoints } = require(d2ConfigPath) + const d2ConfigPath = path.join(process.cwd(), 'd2.config.js') + reporter.info('Checking d2.config.js for entry points to update...') + reporter.debug(`d2 config path: ${d2ConfigPath}`) + + // Read d2 config as JS for easy access to entryPoint strings + let entryPoints + try { + const d2Config = require(d2ConfigPath) + entryPoints = d2Config.entryPoints + } catch (err) { + reporter.info(`Did not find d2.config.js at ${d2ConfigPath}; finishing`) + return + } + const d2ConfigContents = await fs.readFile(d2ConfigPath, { encoding: 'utf8', }) let newD2ConfigContents = d2ConfigContents let configContentUpdated = false Object.values(entryPoints).forEach((entryPoint) => { - // entryPoint is formatted as './src/...' -- drop first 2 chars - // to match the glob format above - if (renamedFiles.has(entryPoint.substring(2))) { + const newEntryPointSource = updateImportSource({ + filepath: 'd2.config.js', + importSource: entryPoint, + renamedFiles, + skipUpdatingImportsWithoutExtension, + }) + if (newEntryPointSource !== entryPoint) { newD2ConfigContents = newD2ConfigContents.replace( entryPoint, - entryPoint + 'x' + newEntryPointSource ) configContentUpdated = true + reporter.debug( + `Updating entry point ${entryPoint} => ${newEntryPointSource}` + ) } }) + if (configContentUpdated) { await fs.writeFile(d2ConfigPath, newD2ConfigContents) - reporter.info('Updated d2.config.js entrypoints') + reporter.info('Updated d2.config.js entry points') + } else { + reporter.info('No entry points updated') } } From d59e24b530c8a36f8e886298b55407297eb7466b Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Wed, 14 Aug 2024 23:25:22 +0200 Subject: [PATCH 09/16] feat: handle export statements --- cli/src/commands/jsx-migration.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index d0f11584..69284999 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -91,7 +91,12 @@ const updateImports = async ({ let newCode = code let contentUpdated = false babel.traverse(ast, { - ImportDeclaration: (astPath) => { + // Triggers on imports and exports, the latter for cases like + // `export * from './file.js'` + 'ImportDeclaration|ExportDeclaration': (astPath) => { + if (!astPath.node.source) { + return // for exports from this file itself + } const importSource = astPath.node.source.value if (!importSource.startsWith('.')) { return // not a relative import From 42c133c17c735b69deb0746f24acbc9c42e8f47a Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Thu, 15 Aug 2024 01:17:31 +0200 Subject: [PATCH 10/16] feat: custom glob pattern --- cli/src/commands/jsx-migration.js | 36 +++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index 69284999..e4822a40 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -59,7 +59,7 @@ const updateImportSource = ({ // than .js, but it's okay since they won't need updating const importSourceHasExtension = importSource.endsWith('.js') if (skipUpdatingImportsWithoutExtension && !importSourceHasExtension) { - return + return importSource } // We'll need an extension to match with the renamed files Set @@ -97,6 +97,7 @@ const updateImports = async ({ if (!astPath.node.source) { return // for exports from this file itself } + const importSource = astPath.node.source.value if (!importSource.startsWith('.')) { return // not a relative import @@ -141,15 +142,25 @@ const updateImports = async ({ } } -// todo: test filepaths -// const filepath = '../capture-app/src/core_modules/capture-core/rules/getApplicableRuleEffects.js' -// const filepath = '../capture-app/src/core_modules/capture-core/components/D2Form/D2Form.component.js' -// const filepath = 'examples/pwa-app/src/App.js' +const validateGlobString = (glob) => { + if (!glob.endsWith('.js')) { + throw new Error('Glob string must end with .js') + } +} +// in case of custom glob string +const globOptions = { ignore: ['**/node_modules/**'] } + +const defaultGlobString = 'src/**/*.js' +const handler = async ({ + globString = defaultGlobString, + skipUpdatingImportsWithoutExtension, +}) => { + validateGlobString(globString) -const handler = async ({ skipUpdatingImportsWithoutExtension }) => { // 1. Search each JS file for JSX syntax // If found, 1) add to Set and 2) rename file (add 'x' to end) - const globMatches = await fg.glob('src/**/*.js') + reporter.info(`Using glob ${globString}`) + const globMatches = await fg.glob(globString, globOptions) reporter.info(`Searching for JSX in ${globMatches.length} files...`) const renamedFiles = new Set() await Promise.all( @@ -167,9 +178,7 @@ const handler = async ({ skipUpdatingImportsWithoutExtension }) => { // (Run glob again because some files have been renamed) // If there's a local file import, check to see if it matches // a renamed item in the set. If so, rewrite the new extension - // (Note: Files without extension aren't edited; Vite and TS - // handle them, so it's up to eslint rules) - const globMatches2 = await fg.glob('src/**/*.(js|jsx)') + const globMatches2 = await fg.glob(globString + '(|x)', globOptions) reporter.info(`Scanning ${globMatches2.length} files to update imports...`) let fileUpdatedCount = 0 await Promise.all( @@ -237,13 +246,18 @@ const command = { command: 'jsx-migration', desc: 'Renames .js files to .jsx -- also handles file imports and d2.config.js', builder: { - // todo: update parameters skipUpdatingImportsWithoutExtension: { description: "Normally, this script will update `import './App'` to `import './App.jsx'`. Use this flag to skip adding the extension in this case. Imports that already end with .js will still be updated to .jsx", type: 'boolean', default: false, }, + globString: { + description: + 'Glob string to use for finding files to parse, rename, and update imports. It will be manipulated by the script, so it must end with .js, and make sure to use quotes around this argument to keep it a string', + type: 'string', + default: defaultGlobString, + }, }, handler, } From 2f692760358bdfd67f9565f0ef21b1912d1edab0 Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Thu, 15 Aug 2024 13:48:49 +0200 Subject: [PATCH 11/16] chore: clean-up --- cli/src/commands/jsx-migration.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/jsx-migration.js index e4822a40..ee0867ea 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/jsx-migration.js @@ -4,6 +4,8 @@ const babel = require('@babel/core') const { reporter /* chalk */ } = require('@dhis2/cli-helpers-engine') const fg = require('fast-glob') +// These are the plugins needed to parse JS with various syntaxes -- +// typescript shouldn't be needed const babelParseOptions = { // could just use jsx syntax parser, but this is already a dep of CLI presets: ['@babel/preset-react'], @@ -41,22 +43,21 @@ const renameFile = async (filepath) => { /** * For JS imports, this will handle imports either with or without a .js * extension, such that the result ends with .jsx if the target file has been - * renamed. + * renamed * Files without extension are updated by default since some linting rules give * `import/no-unresolved` errors after switching to JSX if imports don't use * an extension - * * If `skipUpdatingImportsWithoutExtension` is set, imports without an extension * will be left as-is */ -const updateImportSource = ({ +const resolveImportSource = ({ filepath, importSource, renamedFiles, skipUpdatingImportsWithoutExtension, }) => { - // This is a little weird for files with an extension other - // than .js, but it's okay since they won't need updating + // This doesn't handle files with an extension other than .js, + // since they won't need updating const importSourceHasExtension = importSource.endsWith('.js') if (skipUpdatingImportsWithoutExtension && !importSourceHasExtension) { return importSource @@ -103,7 +104,7 @@ const updateImports = async ({ return // not a relative import } - const newImportSource = updateImportSource({ + const newImportSource = resolveImportSource({ filepath, importSource, renamedFiles, @@ -134,8 +135,8 @@ const updateImports = async ({ if (contentUpdated) { await fs.writeFile(filepath, newCode) - return true } + return contentUpdated } catch (err) { console.log(err) return false @@ -147,10 +148,10 @@ const validateGlobString = (glob) => { throw new Error('Glob string must end with .js') } } -// in case of custom glob string +const defaultGlobString = 'src/**/*.js' +// in case a custom glob string includes node_modules somewhere: const globOptions = { ignore: ['**/node_modules/**'] } -const defaultGlobString = 'src/**/*.js' const handler = async ({ globString = defaultGlobString, skipUpdatingImportsWithoutExtension, @@ -158,7 +159,7 @@ const handler = async ({ validateGlobString(globString) // 1. Search each JS file for JSX syntax - // If found, 1) add to Set and 2) rename file (add 'x' to end) + // If found, 2) Rename (add 'x' to the end) and 2) add path to a Set reporter.info(`Using glob ${globString}`) const globMatches = await fg.glob(globString, globOptions) reporter.info(`Searching for JSX in ${globMatches.length} files...`) @@ -175,7 +176,7 @@ const handler = async ({ reporter.info(`Renamed ${renamedFiles.size} file(s)`) // 2. Go through each file again for imports - // (Run glob again because some files have been renamed) + // (Run glob again and include .jsx because some files have been renamed) // If there's a local file import, check to see if it matches // a renamed item in the set. If so, rewrite the new extension const globMatches2 = await fg.glob(globString + '(|x)', globOptions) @@ -206,7 +207,7 @@ const handler = async ({ const d2Config = require(d2ConfigPath) entryPoints = d2Config.entryPoints } catch (err) { - reporter.info(`Did not find d2.config.js at ${d2ConfigPath}; finishing`) + reporter.warn(`Did not find d2.config.js at ${d2ConfigPath}; finishing`) return } @@ -216,7 +217,7 @@ const handler = async ({ let newD2ConfigContents = d2ConfigContents let configContentUpdated = false Object.values(entryPoints).forEach((entryPoint) => { - const newEntryPointSource = updateImportSource({ + const newEntryPointSource = resolveImportSource({ filepath: 'd2.config.js', importSource: entryPoint, renamedFiles, From 53df7465eea6fef878510e260aec8875a221d67e Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Thu, 15 Aug 2024 14:47:58 +0200 Subject: [PATCH 12/16] docs: jsx-migration --- docs/scripts/jsx-migration.md | 74 +++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 docs/scripts/jsx-migration.md diff --git a/docs/scripts/jsx-migration.md b/docs/scripts/jsx-migration.md new file mode 100644 index 00000000..3ac2be00 --- /dev/null +++ b/docs/scripts/jsx-migration.md @@ -0,0 +1,74 @@ +# d2-app-scripts jsx-migration + +Converts files with `.js` extensions to `.jsx` if the file contains JSX syntax. This is intended as a helper for moving `@dhis2/cli-app-scripts` to Vite, which prefers files to be named as such to avoid unnecessarily parsing vanilla JS files for JSX syntax. + +## Example + +This should usually be run from the root directory of a project. + +```sh +yarn d2-app-scripts jsx-migration +``` + +By default, this will crawl through each `.js` file in the `src` directory (using the glob `src/**/*.js`), look for JSX syntax in the file, then rename the file to use a `.jsx` extension if appropriate. + +Then, it will crawl through all `.js` _and_ `.jsx` file in `src` and update file imports to match the newly renamed files. **By default, this will update imports without a file extension**, e.g. `import Component from './Component'` => `import Component from './Component.jsx'`. This is because, in testing, updating files to `.jsx` extensions without updating the imports ends up causing linting errors. Functionally, the app will still work without extensions on imports though; Vite handles it. If you don't want to update imports without extensions, you can use the `--skipUpdatingImportsWithoutExtension` flag when running this script. Imports that use a `.js` extension will be updated to `.jsx` either way. + +Lastly, the script will check `d2.config.js` in the CWD for entry points to update if the respective files have been renamed. + +## Tips + +This may update a _lot_ of files; be prepared with your source control to undo changes if needed. In VSCode, for example, there is an feature in the Source Control UI to "Discard All Changes" from unstaged files. Before running the script, stage the files you want to keep around, then run the script. If the outcome isn't what you want, you can use the "Discard All Changes" option to undo them easily. + +Note that renamed files are only kept track of during script execution. If, for example, you run the script, then you want to redo it with the `--skipUpdatingImportsWithoutExtension` flag, it's best to undo all the renamed files before running the script again. + +### `--globString` + +The script will crawl through files using the `src/**/*.js` glob by default. If you want to crawl different directories, for example to migrate smaller pieces of a project at a time, you can specify a custom glob when running the script. + +Since imports will only be updated within the scope of that glob, a directory that exports its contents through an `index.js` file is an ideal choice. + +Example: + +```sh +yarn d2-app-scripts jsx-migration --globString "src/components/**/*.js" +``` + +Since the glob string will be reused and manipulated by the script, make sure to use quotes around the argument so that the shell doesn't handle it as a normal glob. + +Contents of `node_modules` directories will always be ignored. `d2.config.js` will still be sought out in the CWD, but won't cause an error if one is not found. + +## Usage + +```sh +> d2-app-scripts jsx-migration --help +d2-app-scripts jsx-migration + +Renames .js files to .jsx -- also handles file imports and d2.config.js + +Global Options: + -h, --help Show help [boolean] + -v, --version Show version number [boolean] + --verbose Enable verbose messages [boolean] + --debug Enable debug messages [boolean] + --quiet Enable quiet mode [boolean] + --config Path to JSON config file + +Options: + --cwd working directory to use (defaults to + cwd) + --skipUpdatingImportsWithoutExtension Normally, this script will update + `import './App'` to `import + './App.jsx'`. Use this flag to skip + adding the extension in this case. + Imports that already end with .js will + still be updated to .jsx + [boolean] [default: false] + --globString Glob string to use for finding files to + parse, rename, and update imports. It + will be manipulated by the script, so + it must end with .js, and make sure to + use quotes around this argument to keep + it a string + [string] [default: "src/**/*.js"] +``` From 1726749257b2847a4f5666cb729537fc0ebf9deb Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Fri, 16 Aug 2024 16:43:44 +0200 Subject: [PATCH 13/16] refactor: add script to 'migrate' namespace --- cli/src/commands/migrate.js | 6 ++++++ cli/src/commands/{jsx-migration.js => migrate/js-to-jsx.js} | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 cli/src/commands/migrate.js rename cli/src/commands/{jsx-migration.js => migrate/js-to-jsx.js} (98%) diff --git a/cli/src/commands/migrate.js b/cli/src/commands/migrate.js new file mode 100644 index 00000000..e8a5dd6c --- /dev/null +++ b/cli/src/commands/migrate.js @@ -0,0 +1,6 @@ +const { namespace } = require('@dhis2/cli-helpers-engine') + +module.exports = namespace('migrate', { + desc: 'Scripts to make changes to DHIS2 apps', + builder: (yargs) => yargs.commandDir('migrate'), +}) diff --git a/cli/src/commands/jsx-migration.js b/cli/src/commands/migrate/js-to-jsx.js similarity index 98% rename from cli/src/commands/jsx-migration.js rename to cli/src/commands/migrate/js-to-jsx.js index ee0867ea..0ae6b26d 100644 --- a/cli/src/commands/jsx-migration.js +++ b/cli/src/commands/migrate/js-to-jsx.js @@ -244,8 +244,8 @@ const handler = async ({ } const command = { - command: 'jsx-migration', - desc: 'Renames .js files to .jsx -- also handles file imports and d2.config.js', + command: 'js-to-jsx', + desc: 'Renames .js files that include JSX to .jsx. Also handles file imports and d2.config.js', builder: { skipUpdatingImportsWithoutExtension: { description: From d0ee220d1ad7530485e2467cc977d0d0916070e4 Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Fri, 16 Aug 2024 16:49:02 +0200 Subject: [PATCH 14/16] fix: reporter text styles --- cli/src/commands/migrate/js-to-jsx.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/src/commands/migrate/js-to-jsx.js b/cli/src/commands/migrate/js-to-jsx.js index 0ae6b26d..74702363 100644 --- a/cli/src/commands/migrate/js-to-jsx.js +++ b/cli/src/commands/migrate/js-to-jsx.js @@ -173,7 +173,7 @@ const handler = async ({ } }) ) - reporter.info(`Renamed ${renamedFiles.size} file(s)`) + reporter.print(`Renamed ${renamedFiles.size} file(s)`) // 2. Go through each file again for imports // (Run glob again and include .jsx because some files have been renamed) @@ -194,7 +194,7 @@ const handler = async ({ } }) ) - reporter.info(`Updated imports in ${fileUpdatedCount} file(s)`) + reporter.print(`Updated imports in ${fileUpdatedCount} file(s)`) // 3. Update d2.config.js const d2ConfigPath = path.join(process.cwd(), 'd2.config.js') @@ -237,9 +237,9 @@ const handler = async ({ if (configContentUpdated) { await fs.writeFile(d2ConfigPath, newD2ConfigContents) - reporter.info('Updated d2.config.js entry points') + reporter.print('Updated d2.config.js entry points') } else { - reporter.info('No entry points updated') + reporter.print('No entry points updated') } } From a7602f27428cda2def8a51ca5156dedc8d63ed29 Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Fri, 16 Aug 2024 16:52:39 +0200 Subject: [PATCH 15/16] fix: update caniuse-lite to remove warning --- yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9c1096d5..9b10e991 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4465,15 +4465,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001349: - version "1.0.30001409" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz" - integrity sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ== - -caniuse-lite@^1.0.30001587: - version "1.0.30001610" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz" - integrity sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001349, caniuse-lite@^1.0.30001587: + version "1.0.30001651" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz" + integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== caseless@~0.12.0: version "0.12.0" From 5df327a703801d8a2cc59e9c5d2156181a95e504 Mon Sep 17 00:00:00 2001 From: Kai Vandivier Date: Mon, 19 Aug 2024 15:42:58 +0200 Subject: [PATCH 16/16] docs: update for new namespace --- docs/_sidebar.md | 2 ++ .../{jsx-migration.md => migrate/js-to-jsx.md} | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) rename docs/scripts/{jsx-migration.md => migrate/js-to-jsx.md} (93%) diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 073c3170..2059e008 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -9,6 +9,8 @@ - [`d2-app-scripts pack`](scripts/pack.md) - [`d2-app-scripts deploy`](scripts/deploy.md) - [`d2-app-scripts publish`](scripts/publish.md) + - [**Migrate**](scripts/migrate) + - [`d2-app-scripts migrate js-to-jsx`](scripts/migrate/js-to-jsx.md) - [**Configuration**](config.md) - [Types - `app`, `lib`](config/types) - [`d2.config.js` Reference](config/d2-config-js-reference.md) diff --git a/docs/scripts/jsx-migration.md b/docs/scripts/migrate/js-to-jsx.md similarity index 93% rename from docs/scripts/jsx-migration.md rename to docs/scripts/migrate/js-to-jsx.md index 3ac2be00..4d43953a 100644 --- a/docs/scripts/jsx-migration.md +++ b/docs/scripts/migrate/js-to-jsx.md @@ -1,4 +1,4 @@ -# d2-app-scripts jsx-migration +# d2-app-scripts migrate js-to-jsx Converts files with `.js` extensions to `.jsx` if the file contains JSX syntax. This is intended as a helper for moving `@dhis2/cli-app-scripts` to Vite, which prefers files to be named as such to avoid unnecessarily parsing vanilla JS files for JSX syntax. @@ -7,7 +7,7 @@ Converts files with `.js` extensions to `.jsx` if the file contains JSX syntax. This should usually be run from the root directory of a project. ```sh -yarn d2-app-scripts jsx-migration +yarn d2-app-scripts migrate js-to-jsx ``` By default, this will crawl through each `.js` file in the `src` directory (using the glob `src/**/*.js`), look for JSX syntax in the file, then rename the file to use a `.jsx` extension if appropriate. @@ -31,7 +31,7 @@ Since imports will only be updated within the scope of that glob, a directory th Example: ```sh -yarn d2-app-scripts jsx-migration --globString "src/components/**/*.js" +yarn d2-app-scripts migrate js-to-jsx --globString "src/components/**/*.js" ``` Since the glob string will be reused and manipulated by the script, make sure to use quotes around the argument so that the shell doesn't handle it as a normal glob. @@ -41,10 +41,11 @@ Contents of `node_modules` directories will always be ignored. `d2.config.js` wi ## Usage ```sh -> d2-app-scripts jsx-migration --help -d2-app-scripts jsx-migration +> d2-app-scripts migrate js-to-jsx --help +d2-app-scripts migrate js-to-jsx -Renames .js files to .jsx -- also handles file imports and d2.config.js +Renames .js files that include JSX to .jsx. Also handles file imports and +d2.config.js Global Options: -h, --help Show help [boolean]