diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100644
index 000000000..372362317
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1 @@
+yarn lint-staged
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 000000000..7e6e37656
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,4 @@
+node_modules
+package-lock.json
+dist
+lint-*
diff --git a/.prettierrc b/.prettierrc
index ef4109aa1..95f88f62a 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -1,4 +1,14 @@
{
- "printWidth": 180,
- "singleQuote": true
+ "printWidth": 120,
+ "quoteProps": "consistent",
+ "singleQuote": true,
+ "trailingComma": "es5",
+ "useTabs": true,
+ "endOfLine": "auto",
+ "tabWidth": 2,
+ "semi": true,
+ "bracketSameLine": false,
+ "bracketSpacing": true,
+ "jsxSingleQuote": false,
+ "arrowParens": "always"
}
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 023706fd0..e23ff5952 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -9,44 +9,52 @@ import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
- baseDirectory: __dirname,
- recommendedConfig: js.configs.recommended,
- allConfig: js.configs.all
+ baseDirectory: __dirname,
+ recommendedConfig: js.configs.recommended,
+ allConfig: js.configs.all,
});
-export default [...fixupConfigRules(
- compat.extends("react-app", "airbnb", "plugin:jsx-a11y/recommended", "prettier"),
-), {
+export default [
+ ...fixupConfigRules(compat.extends("react-app", "airbnb", "plugin:jsx-a11y/recommended", "prettier")),
+ {
// root: true,
plugins: {
- "jsx-a11y": fixupPluginRules(jsxA11Y),
- prettier
+ "jsx-a11y": fixupPluginRules(jsxA11Y),
+ prettier,
},
rules: {
- camelcase: 0,
- "no-nested-ternary": 0,
- "no-param-reassign": 0,
- "no-return-assign": 0,
- "no-restricted-syntax": 0,
- "react/jsx-filename-extension": 0,
- "react/jsx-props-no-spreading": 0,
- "react/destructuring-assignment": 0,
- "react/prop-types": 0,
- "react/no-danger": 0,
- "no-unused-vars": 1,
- "react/button-has-type": 1,
- "import/no-named-as-default": 0,
- "import/no-named-as-default-member": 0,
- "no-underscore-dangle": ["warn", {
- allow: ["_kmq", "_kmk"],
- }],
- "no-unsafe-optional-chaining": 0,
- "jsx-a11y/label-has-associated-control": 0,
- "react/jsx-no-bind": 0,
+ camelcase: 0,
+ "import/no-extraneous-dependencies": ["error", { devDependencies: true }],
+ "no-nested-ternary": 0,
+ "no-param-reassign": 0,
+ "no-return-assign": 0,
+ "no-restricted-syntax": 0,
+ "react/jsx-filename-extension": 0,
+ "react/jsx-props-no-spreading": 0,
+ "react/destructuring-assignment": 0,
+ "react/prop-types": 0,
+ "react/no-danger": 0,
+ "no-unused-vars": 1,
+ "react/button-has-type": 1,
+ "import/no-named-as-default": 0,
+ "import/no-named-as-default-member": 0,
+ "no-underscore-dangle": [
+ "warn",
+ {
+ allow: ["_kmq", "_kmk"],
+ },
+ ],
+ "no-unsafe-optional-chaining": 0,
+ "jsx-a11y/label-has-associated-control": 0,
+ "react/jsx-no-bind": 0,
- "react/no-unstable-nested-components": ["warn", {
- allowAsProps: true,
- }],
+ "react/no-unstable-nested-components": [
+ "warn",
+ {
+ allowAsProps: true,
+ },
+ ],
},
-}];
+ },
+];
diff --git a/package.json b/package.json
index 01fc91399..944a2c676 100644
--- a/package.json
+++ b/package.json
@@ -1,90 +1,100 @@
{
- "name": "harperdb-studio",
- "version": "4.8.9",
- "description": "A UI for HarperDB",
- "deploymentUrl": "studio.harperdb.io",
- "private": true,
- "author": "harperdb",
- "license": "UNLICENSED",
- "scripts": {
- "start": "HTTPS=true SSL_CRT_FILE=./.cert/cert.pem SSL_KEY_FILE=./.cert/key.pem react-scripts start",
- "start:local": "REACT_APP_LOCALSTUDIO=true HTTPS=true SSL_CRT_FILE=./.cert/cert.pem SSL_KEY_FILE=./.cert/key.pem react-scripts start",
- "docker": "HTTPS=false react-scripts start",
- "build:stage": "DISABLE_ESLINT_PLUGIN=true GENERATE_SOURCEMAP=false PUBLIC_URL=https://dbjxbnqel2bw9.cloudfront.net react-scripts build",
- "build:prod": "DISABLE_ESLINT_PLUGIN=true GENERATE_SOURCEMAP=false PUBLIC_URL=https://ds5zz9rfvzuta.cloudfront.net react-scripts build",
- "build:local": "DISABLE_ESLINT_PLUGIN=true BUILD_PATH=./build-local GENERATE_SOURCEMAP=false REACT_APP_LOCALSTUDIO=true react-scripts build",
- "lint-dev": "eslint --fix src && npx stylelint --fix \"src/**/*.scss\"",
- "lint-prod": "eslint --fix src"
- },
- "dependencies": {
- "@monaco-editor/react": "^4.2.0",
- "@stripe/react-stripe-js": "^2.1.0",
- "@stripe/stripe-js": "^3.0.5",
- "apexcharts": "^3.27.1",
- "bootstrap-scss": "^5.0.1",
- "classnames": "^2.3.2",
- "deepmerge": "^4.2.2",
- "pullstate": "^1.22.1",
- "query-string": "^9.0.0",
- "react": "18.3.1",
- "react-alert": "^7.0.3",
- "react-apexcharts": "^1.3.9",
- "react-country-region-selector": "^3.4.0",
- "react-dom": "18.3.1",
- "react-dropzone": "^14.2.2",
- "react-error-boundary": "^4.0.9",
- "react-ga4": "^2.1.0",
- "react-json-editor-ajrm": "^2.5.11",
- "react-router": "^6.13.0",
- "react-router-dom": "^6.13.0",
- "react-scripts": "^5.0.0",
- "react-select": "^5.0.0",
- "react-table": "^7.7.0",
- "react-toggle": "^4.1.2",
- "reactstrap": "^9.0.0",
- "reodotdev": "^1.0.0",
- "use-async-effect": "^2.2.3",
- "use-debounce": "^10.0.0",
- "use-interval": "^1.3.0",
- "use-persisted-state": "^0.3.3",
- "whatwg-fetch": "^3.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "browserslist": {
- "production": [
- ">0.2%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version"
- ]
- },
- "devDependencies": {
- "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
- "@eslint/compat": "^1.1.1",
- "@eslint/eslintrc": "^3.1.0",
- "@eslint/js": "^9.10.0",
- "eslint": "^9.10.0",
- "eslint-config-airbnb": "^19.0.4",
- "eslint-config-prettier": "^9.0.0",
- "eslint-config-react-app": "^7.0.1",
- "eslint-plugin-jsx-a11y": "^6.4.1",
- "eslint-plugin-prettier": "^5.0.1",
- "eslint-plugin-react-hooks": "^4.6.2",
- "postcss-custom-properties": "^14.0.1",
- "prettier": "^3.1.0",
- "sass": "^1.46.0",
- "stylelint": "^16.0.2",
- "stylelint-config-sass-guidelines": "^12.0.0",
- "stylelint-config-standard-scss": "^13.1.0",
- "stylelint-order": "^6.0.1",
- "stylelint-scss": "^6.0.0",
- "typescript": "^5.6.2"
- },
- "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
+ "name": "harperdb-studio",
+ "version": "4.8.10",
+ "description": "A UI for HarperDB",
+ "deploymentUrl": "studio.harperdb.io",
+ "private": true,
+ "author": "harperdb",
+ "license": "UNLICENSED",
+ "scripts": {
+ "start": "HTTPS=true SSL_CRT_FILE=./.cert/cert.pem SSL_KEY_FILE=./.cert/key.pem react-scripts start",
+ "start:local": "REACT_APP_LOCALSTUDIO=true HTTPS=true SSL_CRT_FILE=./.cert/cert.pem SSL_KEY_FILE=./.cert/key.pem react-scripts start",
+ "docker": "HTTPS=false react-scripts start",
+ "build:stage": "DISABLE_ESLINT_PLUGIN=true GENERATE_SOURCEMAP=false PUBLIC_URL=https://dbjxbnqel2bw9.cloudfront.net react-scripts build",
+ "build:prod": "DISABLE_ESLINT_PLUGIN=true GENERATE_SOURCEMAP=false PUBLIC_URL=https://ds5zz9rfvzuta.cloudfront.net react-scripts build",
+ "build:local": "DISABLE_ESLINT_PLUGIN=true BUILD_PATH=./build-local GENERATE_SOURCEMAP=false REACT_APP_LOCALSTUDIO=true react-scripts build",
+ "lint-dev": "eslint --fix src && npx stylelint --fix \"src/**/*.scss\"",
+ "lint-prod": "eslint --fix src",
+ "prepare": "husky"
+ },
+ "dependencies": {
+ "@monaco-editor/react": "^4.2.0",
+ "@stripe/react-stripe-js": "^2.1.0",
+ "@stripe/stripe-js": "^3.0.5",
+ "apexcharts": "^3.27.1",
+ "bootstrap-scss": "^5.0.1",
+ "classnames": "^2.3.2",
+ "deepmerge": "^4.2.2",
+ "pullstate": "^1.22.1",
+ "query-string": "^9.0.0",
+ "react": "18.3.1",
+ "react-alert": "^7.0.3",
+ "react-apexcharts": "^1.3.9",
+ "react-country-region-selector": "^3.4.0",
+ "react-dom": "18.3.1",
+ "react-dropzone": "^14.2.2",
+ "react-error-boundary": "^4.0.9",
+ "react-ga4": "^2.1.0",
+ "react-json-editor-ajrm": "^2.5.11",
+ "react-router": "^6.13.0",
+ "react-router-dom": "^6.13.0",
+ "react-scripts": "^5.0.0",
+ "react-select": "^5.0.0",
+ "react-table": "^7.7.0",
+ "react-toggle": "^4.1.2",
+ "reactstrap": "^9.0.0",
+ "reodotdev": "^1.0.0",
+ "use-async-effect": "^2.2.3",
+ "use-debounce": "^10.0.0",
+ "use-interval": "^1.3.0",
+ "use-persisted-state": "^0.3.3",
+ "whatwg-fetch": "^3.6.2"
+ },
+ "engines": {
+ "node": ">=20.9.0"
+ },
+ "browserslist": {
+ "production": [
+ ">0.2%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ },
+ "lint-staged": {
+ "**/*": [
+ "prettier --write --ignore-unknown",
+ "eslint --fix"
+ ]
+ },
+ "devDependencies": {
+ "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
+ "@eslint/compat": "^1.1.1",
+ "@eslint/eslintrc": "^3.1.0",
+ "@eslint/js": "^9.10.0",
+ "eslint": "^9.10.0",
+ "eslint-config-airbnb": "^19.0.4",
+ "eslint-config-prettier": "^9.0.0",
+ "eslint-config-react-app": "^7.0.1",
+ "eslint-plugin-jsx-a11y": "^6.4.1",
+ "eslint-plugin-prettier": "^5.0.1",
+ "eslint-plugin-react-hooks": "^4.6.2",
+ "husky": "^9.1.7",
+ "lint-staged": "^15.2.10",
+ "pinst": "^3.0.0",
+ "postcss-custom-properties": "^14.0.1",
+ "prettier": "^3.1.0",
+ "sass": "^1.46.0",
+ "stylelint": "^16.0.2",
+ "stylelint-config-sass-guidelines": "^12.0.0",
+ "stylelint-config-standard-scss": "^13.1.0",
+ "stylelint-order": "^6.0.1",
+ "stylelint-scss": "^6.0.0",
+ "typescript": "^5.6.2"
+ },
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
diff --git a/src/components/layouts/App.js b/src/components/layouts/App.js
index 4f0c9779f..ccecf8e3e 100644
--- a/src/components/layouts/App.js
+++ b/src/components/layouts/App.js
@@ -45,176 +45,178 @@ const versionAlertOptions = { timeout: 0, position: positions.BOTTOM_CENTER };
let controller;
function ValidatedRoute(auth) {
- // ensure org id is valid for user. if not, redirect to organizations
- const { customer_id } = useParams();
+ // ensure org id is valid for user. if not, redirect to organizations
+ const { customer_id } = useParams();
- if (auth.auth.orgs.some((o) => o.customer_id === customer_id)) {
- return ;
- }
- return ;
+ if (auth.auth.orgs.some((o) => o.customer_id === customer_id)) {
+ return ;
+ }
+ return ;
}
function App() {
- const canonicalUrl = document.querySelector('link[rel="canonical"]');
- const navigate = useNavigate();
- const alert = useAlert();
- const location = useLocation();
- const { search, pathname } = location;
- const { redirect } = queryString.parse(search);
- const auth = useStoreState(appState, (s) => s.auth);
- const theme = useStoreState(appState, (s) => s.theme);
- const products = useStoreState(appState, (s) => s.products);
- const regions = useStoreState(appState, (s) => s.regions);
- const wavelengthRegions = useStoreState(appState, (s) => s.wavelengthRegions);
- const akamaiRegions = useStoreState(appState, (s) => s.akamaiRegions);
- const version = useStoreState(appState, (s) => s.version);
- const [fetchingUser, setFetchingUser] = useState(true);
- const [showVersionAlert, setShowVersionAlert] = useState(false);
- const [persistedUser, setPersistedUser] = usePersistedUser({});
- const loggedIn = auth?.user_id;
- const isNotEmployee = loggedIn && auth?.email.indexOf('harperdb.io') === -1 && auth?.email.indexOf('deliciousmonster.com') === -1;
- const isMaintenance = version?.maintenance && isNotEmployee;
-
- ReactGA.initialize(config.google_analytics_code);
-
- useEffect(() => {
- ReactGA.send({ hitType: 'pageview', page: window.location.pathname + window.location.search });
- }, [location.pathname]);
-
- useEffect(() => {
- changeFavIcon(persistedUser?.theme);
- }, [persistedUser?.theme]);
-
- useEffect(() => {
- setShowVersionAlert(checkVersion({ apiVersion: version.studio }));
- }, [version.studio]);
-
- useEffect(() => {
- if (auth?.email) {
- if (window._kmq) {
- window._kmq.push(['identify', auth.email]);
- }
- if (auth?.update_password) {
- navigate('/update-password');
- }
- if (redirect) {
- navigate(redirect);
- }
- }
- // eslint-disable-next-line
- }, [auth?.email]);
-
- useEffect(() => {
- if (showVersionAlert) alert.info(`HarperDB Studio v${showVersionAlert} is now available. Refresh to update.`, versionAlertOptions);
- // eslint-disable-next-line
- }, [showVersionAlert]);
-
- useEffect(() => {
- canonicalUrl.href = window.location.href;
- }, [location, canonicalUrl]);
-
- useEffect(() => {
- init({ currentPath: location.pathname, navigate, persistedUser, setPersistedUser, setFetchingUser, controller });
- // eslint-disable-next-line
- }, []);
-
- useInterval(() => {
- if (!products) getProducts();
- if (!regions) getRegions();
- if (!wavelengthRegions) getWavelengthRegions();
- if (!akamaiRegions) getAkamaiRegions();
- }, config.refresh_content_interval);
-
- useInterval(() => {
- getCurrentVersion();
- refreshUser({ auth, controller });
- }, config.check_version_interval);
-
- return (
-
- }>
-
-
- {fetchingUser ? (
-
- ) : loggedIn ? (
-
-
-
-
-
- }>
- {/* can we put instance routes in here, each in a suspense tag (since they're lazily loaded) */}
-
- : } path="/update-password" />
- : } path="/profile/*" />
- : }>
- } path="/o/:customer_id/i/:compute_stack_id/*" />
- } path="/o/:customer_id/instances/:action?/:purchaseStep?" />
- } path="/o/:customer_id/*" />
-
- : } path="/:list?/:action?" />
- } />
-
-
-
-
- ) : (
-
-
- }>
-
-
-
-
-
HarperDB Studio
-
Manage all your HarperDB instances.
-
- -
-
Manage All Instances
- Set access, cluster, monitor, and more.
-
- -
-
Embedded API Server
- HarperDB components give you unlimited application flexibility.
-
- -
-
Fully Managed Cloud & 5G Instances
- Go from zero to code in minutes.
-
- -
-
Deploy Anywhere
-
-
-
-
-
-
-
- } path="/" />
- : } path="/sign-up" />
- : } path="/reset-password" />
- } />
-
-
-
-
-
-
-
- )}
-
-
- HarperDB Studio v{config.studio_version}
- {version.maintenance && ' - MAINTENANCE MODE'}
-
-
- );
+ const canonicalUrl = document.querySelector('link[rel="canonical"]');
+ const navigate = useNavigate();
+ const alert = useAlert();
+ const location = useLocation();
+ const { search, pathname } = location;
+ const { redirect } = queryString.parse(search);
+ const auth = useStoreState(appState, (s) => s.auth);
+ const theme = useStoreState(appState, (s) => s.theme);
+ const products = useStoreState(appState, (s) => s.products);
+ const regions = useStoreState(appState, (s) => s.regions);
+ const wavelengthRegions = useStoreState(appState, (s) => s.wavelengthRegions);
+ const akamaiRegions = useStoreState(appState, (s) => s.akamaiRegions);
+ const version = useStoreState(appState, (s) => s.version);
+ const [fetchingUser, setFetchingUser] = useState(true);
+ const [showVersionAlert, setShowVersionAlert] = useState(false);
+ const [persistedUser, setPersistedUser] = usePersistedUser({});
+ const loggedIn = auth?.user_id;
+ const isNotEmployee = loggedIn && auth?.email.indexOf('harperdb.io') === -1 && auth?.email.indexOf('deliciousmonster.com') === -1;
+ const isMaintenance = version?.maintenance && isNotEmployee;
+
+ ReactGA.initialize(config.google_analytics_code);
+
+ useEffect(() => {
+ ReactGA.send({ hitType: 'pageview', page: window.location.pathname + window.location.search });
+ }, [location.pathname]);
+
+ useEffect(() => {
+ changeFavIcon(persistedUser?.theme);
+ }, [persistedUser?.theme]);
+
+ useEffect(() => {
+ setShowVersionAlert(checkVersion({ apiVersion: version.studio }));
+ }, [version.studio]);
+
+ useEffect(() => {
+ if (auth?.email) {
+ if (window._kmq) {
+ window._kmq.push(['identify', auth.email]);
+ }
+ if (auth?.update_password) {
+ navigate('/update-password');
+ }
+ if (redirect) {
+ navigate(redirect);
+ }
+ }
+ // eslint-disable-next-line
+ }, [auth?.email]);
+
+ useEffect(() => {
+ if (showVersionAlert) alert.info(`HarperDB Studio v${showVersionAlert} is now available. Refresh to update.`, versionAlertOptions);
+ // eslint-disable-next-line
+ }, [showVersionAlert]);
+
+ useEffect(() => {
+ canonicalUrl.href = window.location.href;
+ }, [location, canonicalUrl]);
+
+ useEffect(() => {
+ init({ currentPath: location.pathname, navigate, persistedUser, setPersistedUser, setFetchingUser, controller });
+ // eslint-disable-next-line
+ }, []);
+
+ useInterval(() => {
+ if (!products) getProducts();
+ if (!regions) getRegions();
+ if (!wavelengthRegions) getWavelengthRegions();
+ if (!akamaiRegions) getAkamaiRegions();
+ }, config.refresh_content_interval);
+
+ useInterval(() => {
+ getCurrentVersion();
+ refreshUser({ auth, controller });
+ }, config.check_version_interval);
+
+ return (
+
+
}>
+
+
+ {fetchingUser ? (
+
+
+
+ ) : loggedIn ? (
+
+
+
+
+
+ }>
+ {/* can we put instance routes in here, each in a suspense tag (since they're lazily loaded) */}
+
+ : } path="/update-password" />
+ : } path="/profile/*" />
+ : }>
+ } path="/o/:customer_id/i/:compute_stack_id/*" />
+ } path="/o/:customer_id/instances/:action?/:purchaseStep?" />
+ } path="/o/:customer_id/*" />
+
+ : } path="/:list?/:action?" />
+ } />
+
+
+
+
+ ) : (
+
+
+ }>
+
+
+
+
+
HarperDB Studio
+
Manage all your HarperDB instances.
+
+ -
+
Manage All Instances
+ Set access, cluster, monitor, and more.
+
+ -
+
Embedded API Server
+ HarperDB components give you unlimited application flexibility.
+
+ -
+
Fully Managed Cloud & 5G Instances
+ Go from zero to code in minutes.
+
+ -
+
Deploy Anywhere
+
+
+
+
+
+
+
+ } path="/" />
+ : } path="/sign-up" />
+ : } path="/reset-password" />
+ } />
+
+
+
+
+
+
+
+ )}
+
+
+ HarperDB Studio v{config.studio_version}
+ {version.maintenance && ' - MAINTENANCE MODE'}
+
+
+ );
}
export default App;
diff --git a/yarn.lock b/yarn.lock
index a631533b1..f75817cae 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2811,6 +2811,13 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1:
dependencies:
type-fest "^0.21.3"
+ansi-escapes@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7"
+ integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==
+ dependencies:
+ environment "^1.0.0"
+
ansi-html-community@^0.0.8:
version "0.0.8"
resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz"
@@ -2850,7 +2857,7 @@ ansi-styles@^5.0.0:
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz"
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
-ansi-styles@^6.1.0:
+ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1:
version "6.2.1"
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
@@ -3437,6 +3444,11 @@ 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@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385"
+ integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==
+
char-regex@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz"
@@ -3501,6 +3513,21 @@ clean-css@^5.2.2:
dependencies:
source-map "~0.6.0"
+cli-cursor@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38"
+ integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==
+ dependencies:
+ restore-cursor "^5.0.0"
+
+cli-truncate@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a"
+ integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==
+ dependencies:
+ slice-ansi "^5.0.0"
+ string-width "^7.0.0"
+
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz"
@@ -3558,7 +3585,7 @@ colord@^2.9.1, colord@^2.9.3:
resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz"
integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
-colorette@^2.0.10:
+colorette@^2.0.10, colorette@^2.0.20:
version "2.0.20"
resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz"
integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
@@ -3590,6 +3617,11 @@ commander@^8.3.0:
resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+commander@~12.1.0:
+ version "12.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
+ integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
+
common-tags@^1.8.0:
version "1.8.2"
resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz"
@@ -3994,7 +4026,7 @@ debug@2.6.9, debug@^2.6.0:
dependencies:
ms "2.0.0"
-debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7:
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7, debug@~4.3.6:
version "4.3.7"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz"
integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
@@ -4301,6 +4333,11 @@ emittery@^0.8.1:
resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz"
integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==
+emoji-regex@^10.3.0:
+ version "10.4.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4"
+ integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
@@ -4344,6 +4381,11 @@ env-paths@^2.2.1:
resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz"
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+environment@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1"
+ integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==
+
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
@@ -4920,6 +4962,11 @@ eventemitter3@^4.0.0:
resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+eventemitter3@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
+ integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
+
events@^3.2.0:
version "3.3.0"
resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz"
@@ -4940,6 +4987,21 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
+execa@~8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c"
+ integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^8.0.1"
+ human-signals "^5.0.0"
+ is-stream "^3.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^5.1.0"
+ onetime "^6.0.0"
+ signal-exit "^4.1.0"
+ strip-final-newline "^3.0.0"
+
exit@^0.1.2:
version "0.1.2"
resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
@@ -5321,6 +5383,11 @@ get-caller-file@^2.0.5:
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+get-east-asian-width@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389"
+ integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==
+
get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
version "1.2.4"
resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz"
@@ -5347,6 +5414,11 @@ get-stream@^6.0.0:
resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz"
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+get-stream@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
+ integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
+
get-symbol-description@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz"
@@ -5693,6 +5765,16 @@ human-signals@^2.1.0:
resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+human-signals@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28"
+ integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
+
+husky@^9.1.7:
+ version "9.1.7"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d"
+ integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==
+
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
@@ -5905,6 +5987,18 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+is-fullwidth-code-point@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
+ integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
+
+is-fullwidth-code-point@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704"
+ integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==
+ dependencies:
+ get-east-asian-width "^1.0.0"
+
is-generator-fn@^2.0.0:
version "2.1.0"
resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz"
@@ -6011,6 +6105,11 @@ is-stream@^2.0.0:
resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz"
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+is-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
+ integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
+
is-string@^1.0.5, is-string@^1.0.7:
version "1.0.7"
resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz"
@@ -6844,7 +6943,7 @@ lilconfig@^2.0.3, lilconfig@^2.1.0:
resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz"
integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
-lilconfig@^3.0.0:
+lilconfig@^3.0.0, lilconfig@~3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz"
integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==
@@ -6854,6 +6953,34 @@ lines-and-columns@^1.1.6:
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+lint-staged@^15.2.10:
+ version "15.2.10"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.10.tgz#92ac222f802ba911897dcf23671da5bb80643cd2"
+ integrity sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==
+ dependencies:
+ chalk "~5.3.0"
+ commander "~12.1.0"
+ debug "~4.3.6"
+ execa "~8.0.1"
+ lilconfig "~3.1.2"
+ listr2 "~8.2.4"
+ micromatch "~4.0.8"
+ pidtree "~0.6.0"
+ string-argv "~0.3.2"
+ yaml "~2.5.0"
+
+listr2@~8.2.4:
+ version "8.2.5"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d"
+ integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==
+ dependencies:
+ cli-truncate "^4.0.0"
+ colorette "^2.0.20"
+ eventemitter3 "^5.0.1"
+ log-update "^6.1.0"
+ rfdc "^1.4.1"
+ wrap-ansi "^9.0.0"
+
loader-runner@^4.2.0:
version "4.3.0"
resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz"
@@ -6930,6 +7057,17 @@ lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+log-update@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.1.0.tgz#1a04ff38166f94647ae1af562f4bd6a15b1b7cd4"
+ integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==
+ dependencies:
+ ansi-escapes "^7.0.0"
+ cli-cursor "^5.0.0"
+ slice-ansi "^7.1.0"
+ strip-ansi "^7.1.0"
+ wrap-ansi "^9.0.0"
+
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@@ -7051,7 +7189,7 @@ methods@~1.1.2:
resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
-micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8:
+micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8, micromatch@~4.0.8:
version "4.0.8"
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
@@ -7086,6 +7224,16 @@ mimic-fn@^2.1.0:
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+mimic-fn@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
+ integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
+
+mimic-function@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076"
+ integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==
+
mini-css-extract-plugin@^2.4.5:
version "2.9.1"
resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.1.tgz"
@@ -7239,6 +7387,13 @@ npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
+npm-run-path@^5.1.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f"
+ integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==
+ dependencies:
+ path-key "^4.0.0"
+
nth-check@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz"
@@ -7377,6 +7532,20 @@ onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
+onetime@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
+ integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
+ dependencies:
+ mimic-fn "^4.0.0"
+
+onetime@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60"
+ integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==
+ dependencies:
+ mimic-function "^5.0.0"
+
open@^8.0.9, open@^8.4.0:
version "8.4.2"
resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz"
@@ -7526,6 +7695,11 @@ path-key@^3.0.0, path-key@^3.1.0:
resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+path-key@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
+ integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
+
path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
@@ -7569,11 +7743,21 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+pidtree@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c"
+ integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==
+
pify@^2.3.0:
version "2.3.0"
resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
+pinst@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pinst/-/pinst-3.0.0.tgz#80dec0a85f1f993c6084172020f3dbf512897eec"
+ integrity sha512-cengSmBxtCyaJqtRSvJorIIZXMXg+lJ3sIljGmtBGUVonMnMsVJbnzl6jGN1HkOWwxNuJynCJ2hXxxqCQrFDdw==
+
pirates@^4.0.1, pirates@^4.0.4:
version "4.0.6"
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz"
@@ -8833,6 +9017,14 @@ resolve@^2.0.0-next.5:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
+restore-cursor@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7"
+ integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==
+ dependencies:
+ onetime "^7.0.0"
+ signal-exit "^4.1.0"
+
retry@^0.13.1:
version "0.13.1"
resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz"
@@ -8843,6 +9035,11 @@ reusify@^1.0.4:
resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+rfdc@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
+ integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
+
rimraf@^3.0.0, rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
@@ -9130,7 +9327,7 @@ 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==
-signal-exit@^4.0.1:
+signal-exit@^4.0.1, signal-exit@^4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
@@ -9159,6 +9356,22 @@ slice-ansi@^4.0.0:
astral-regex "^2.0.0"
is-fullwidth-code-point "^3.0.0"
+slice-ansi@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a"
+ integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==
+ dependencies:
+ ansi-styles "^6.0.0"
+ is-fullwidth-code-point "^4.0.0"
+
+slice-ansi@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9"
+ integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==
+ dependencies:
+ ansi-styles "^6.2.1"
+ is-fullwidth-code-point "^5.0.0"
+
sockjs@^0.3.24:
version "0.3.24"
resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz"
@@ -9301,6 +9514,11 @@ stop-iteration-iterator@^1.0.0:
dependencies:
internal-slot "^1.0.4"
+string-argv@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6"
+ integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==
+
string-length@^4.0.1:
version "4.0.2"
resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz"
@@ -9349,6 +9567,15 @@ string-width@^5.0.1, string-width@^5.1.2:
emoji-regex "^9.2.2"
strip-ansi "^7.0.1"
+string-width@^7.0.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc"
+ integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==
+ dependencies:
+ emoji-regex "^10.3.0"
+ get-east-asian-width "^1.0.0"
+ strip-ansi "^7.1.0"
+
string.prototype.includes@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz"
@@ -9449,7 +9676,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
-strip-ansi@^7.0.1:
+strip-ansi@^7.0.1, strip-ansi@^7.1.0:
version "7.1.0"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz"
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
@@ -9476,6 +9703,11 @@ strip-final-newline@^2.0.0:
resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+strip-final-newline@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
+ integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
+
strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
@@ -10730,6 +10962,15 @@ wrap-ansi@^8.1.0:
string-width "^5.0.1"
strip-ansi "^7.0.1"
+wrap-ansi@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e"
+ integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==
+ dependencies:
+ ansi-styles "^6.2.1"
+ string-width "^7.0.0"
+ strip-ansi "^7.1.0"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
@@ -10793,6 +11034,11 @@ yaml@^2.3.4:
resolved "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz"
integrity sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==
+yaml@~2.5.0:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130"
+ integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==
+
yargs-parser@^20.2.2:
version "20.2.9"
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"