From 78011de7ef4587ea995399f987757fe8e3a151c6 Mon Sep 17 00:00:00 2001 From: hasezoey Date: Tue, 15 Aug 2023 13:33:41 +0200 Subject: [PATCH] docs: update website configuration to match typegoose this means there is now versioning also means that it is now in-sync with typegoose again --- .github/workflows/website.yml | 10 +- ghPagesPre.sh | 16 - scripts/getDeployInfo.js | 44 ++ scripts/ghPagesDeploy.js | 201 +++++++++ tsconfig.test.json | 3 +- website/README.md | 22 +- website/docusaurus.config.js | 36 +- website/src/components/NavbarBetaNotice.js | 104 +++++ .../src/components/NavbarVersionsSelector.js | 209 +++++++++ website/src/css/custom.css | 5 + .../src/theme/NavbarItem/ComponentTypes.js | 10 + website/src/theme/SearchMetadata/index.js | 28 ++ website/yarn.lock | 395 +++++++++--------- 13 files changed, 858 insertions(+), 225 deletions(-) delete mode 100644 ghPagesPre.sh create mode 100644 scripts/getDeployInfo.js create mode 100644 scripts/ghPagesDeploy.js create mode 100644 website/src/components/NavbarBetaNotice.js create mode 100644 website/src/components/NavbarVersionsSelector.js create mode 100644 website/src/theme/NavbarItem/ComponentTypes.js create mode 100644 website/src/theme/SearchMetadata/index.js diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 37b5cc6b5..64a8cac86 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -27,12 +27,4 @@ jobs: with: node-version: 18.x - name: Install & Build - run: bash ./ghPagesPre.sh - - name: Deploy to Github Pages - uses: JamesIves/github-pages-deploy-action@v4.4.2 - with: - token: ${{ secrets.GITHUB_TOKEN }} - branch: gh-pages - folder: . # the root, because the provided script already moves files - git-config-email: <> # disable gh-pages commits to have a email assigned to them - git-config-name: 'actions-deploy' # set a custom name, so that the original author of the commit that triggered the website build is not associated with this commit, which was not made by them + run: node scripts/ghPagesDeploy.js diff --git a/ghPagesPre.sh b/ghPagesPre.sh deleted file mode 100644 index d23b4ee25..000000000 --- a/ghPagesPre.sh +++ /dev/null @@ -1,16 +0,0 @@ -# DO NOT EXECUTE THIS FILE IN YOUR WORKING DIRECTORY -# THIS IS MEANT FOR CI/CD ONLY - -shopt -s dotglob nullglob - -set -e # exit when a error occurs - -cd website -yarn -yarn build -cd .. -find . -not -regex "^\.\/website.*\|^.\/\.git.*" -delete # delete everything that is not starting with ".git" or "website/build" -mv website/build/* ./ - -# redundant, just to have it clean -rm -rf website diff --git a/scripts/getDeployInfo.js b/scripts/getDeployInfo.js new file mode 100644 index 000000000..e6a774c2f --- /dev/null +++ b/scripts/getDeployInfo.js @@ -0,0 +1,44 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* + * Script to get deployment information + */ + +module.exports = function getDeployInfo() { + /** Branch we are currently on and will be used for edit branch */ + let branch = 'master'; + /** Name of the deploy */ + let deployName = ''; + let packagejson = require('../packages/mongodb-memory-server-core/package.json'); + + function checkDeploy() { + if (process.env['CI'] === 'true' && process.env['GITHUB_REF_NAME']) { + const refName = process.env['GITHUB_REF_NAME']; + + const oldBranchMatches = /^old\/(\d+\.x)/.exec(refName); + + if (oldBranchMatches) { + branch = 'old/' + oldBranchMatches[1]; + deployName = oldBranchMatches[1]; + + return; + } + + if (refName === 'beta') { + branch = deployName = 'beta'; + + return; + } + } + } + + checkDeploy(); + + return { + branch, + // change deploy name to be the deploy path in version directory + deployPath: !!deployName ? `versions/${deployName}` : '', + // deploy name should always be defined, if not set via the above, use the package.json major version + deployName: !!deployName ? deployName : packagejson.version.split('.')[0] + '.x', + searchName: deployName.length === 0 ? 'current' : deployName, + }; +}; diff --git a/scripts/ghPagesDeploy.js b/scripts/ghPagesDeploy.js new file mode 100644 index 000000000..39ea67d66 --- /dev/null +++ b/scripts/ghPagesDeploy.js @@ -0,0 +1,201 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const deployInfo = require('./getDeployInfo')(); +const { execSync } = require('node:child_process'); +const fs = require('node:fs'); +const path = require('node:path'); + +/* Constants / Config */ + +/** keep ".git", ".github", "website" and "scripts" */ +const keepRegex = /^(?:\.git|website|scripts|versions)/; +/** Regex to filter and get versions output from git ls-tree */ +const versionsFilter = /^versions\/(\d+\.x|beta)\/?$/; +/** Which branch to deploy to */ +const pagesBranch = 'gh-pages'; +/** As who should the deploy commit be made as */ +const commiterInfo = { + name: 'github-pages-deploy', + email: '<>', +}; +/** Commit message to use, from commit will be automatically added */ +const commitMessage = `Deploying to ${pagesBranch}`; + +/** + * This Script should not be run outside of a CI or a testing directory + */ + +function main() { + // ensure this script is not accidentally run + if (process.env['CI'] !== 'true') { + console.log( + 'No CI detected, refusing to run\n' + + 'Make sure you are running this script in a copy and set Environment Variable CI to true' + ); + + process.exit(1); + } + + // ensure the gh-pages branch exists and is up-to-date + execSync(`git fetch origin ${pagesBranch}:${pagesBranch}`, { stdio: 'inherit' }); + + // setup commiter info + execSync(`git config user.name "${commiterInfo.name}"`, { stdio: 'inherit' }); + execSync(`git config user.email "${commiterInfo.email}"`, { stdio: 'inherit' }); + + console.log('\nInstall & Build of website\n'); + + // make sure everything is correctly installed + execSync('yarn --cwd ./website install', { stdio: 'inherit' }); + + // build the website + execSync('yarn --cwd ./website build', { stdio: 'inherit' }); + + console.log('\nSwitching Branches\n'); + + // ensure there is nothing blocking from changing branches + execSync('git add -A', { stdio: 'inherit' }); + execSync('git stash push', { stdio: 'inherit' }); + + // works because "website" does not exist on the gh-pages branch + execSync(`git checkout ${pagesBranch}`, { stdio: 'inherit' }); + + console.log('\nRemoving & Moving build\n'); + + // create deployAs directory, if not empty + if (!!deployInfo.deployPath) { + fs.mkdirSync(deployInfo.deployPath, { recursive: true }); + } + + // remove everything except from the "keep" regex + const deployCleanDir = path.join('.', deployInfo.deployPath); + for (const entry of fs.readdirSync(deployCleanDir)) { + if (entry.match(keepRegex)) { + continue; + } + + const rmPath = path.join(deployCleanDir, entry); + + console.log('rm', rmPath); // always log what is removed + fs.rmSync(rmPath, { recursive: true }); + } + + // move all files from "website/build" to "deployAs" + const websiteDir = 'website/build'; + for (const entry of fs.readdirSync(websiteDir)) { + if (entry.match(keepRegex)) { + console.error('Website build contained entry from keep. Skipping! entry:', entry); + continue; + } + + const from = path.join(websiteDir, entry); + const to = path.join(deployInfo.deployPath, entry); + console.log('rename', from, '->', to); // always log what is renamed + fs.renameSync(from, to); + } + + // remove website + fs.rmSync('website', { recursive: true }); + + // generate versions.json file + const versions = generateVersions(); + fs.writeFileSync('versions.json', JSON.stringify(versions)); + + console.log('\nCommiting Changes\n'); + + // add stage all changes + execSync('git add *', { stdio: 'inherit' }); + + let commitmsg = commitMessage; + const githubSHA = process.env['GITHUB_SHA']; + + if (githubSHA) { + commitmsg += ` from @ ${githubSHA}`; + } + + // commit the changes + execSync(`git commit -m "${commitmsg}"`, { stdio: 'inherit' }); + + // refuse to push changes when not being in a CI (even if CI=true) for local testing + if (!githubSHA) { + console.log( + 'Refusing to push changes, because not in a CI (missing evironment variable "GITHUB_SHA")' + ); + process.exit(2); + } + + console.log('\nPushing Changes\n'); + + execSync(`git push --set-upstream origin ${pagesBranch}`, { stdio: 'inherit' }); +} + +main(); + +/** + * Generate the versions.json file + * @returns Object with keys sorted so that "beta" is first and otherwise the highest number descending + */ +function generateVersions() { + console.log('\nGenerating Versions\n'); + + const versions_map = new Map(); + + try { + // get existing versions.json file to include version that to merge them + const pagesVersions = execSync(`git show ${pagesBranch}:versions.json`).toString(); + + const parsed = JSON.parse(pagesVersions); + + if (Array.isArray(parsed)) { + throw new Error('versions.json is a array, expected object'); + } + + for (const [key, path] of Object.entries(parsed)) { + versions_map.set(key, path); + } + } catch (err) { + console.log('failed to get existing versions.json:', err); + } + + // get all existing versions from the gh-pages branch and merge them with existing versions.json + const versions_tree = execSync(`git ls-tree --name-only ${pagesBranch} versions/`); + + // parse all versions from the git output + for (const line of versions_tree.toString().split('\n')) { + const caps = versionsFilter.exec(line); + + if (caps) { + versions_map.set(caps[1], line); + continue; + } + + // ignore a empty line (to log no warning) + if (line.length === 0) { + continue; + } + + console.log('no match found for version line:', line); + } + + // always add the current version + versions_map.set(deployInfo.deployName, deployInfo.deployPath); + + // sort the versions so that named branches are at specific places and numbers are highest descending + const versions = Array.from(versions_map.entries()).sort(([versionA], [versionB]) => { + if (versionA === 'beta' && versionB === 'beta') { + return 0; + } + if (versionA === 'beta') { + return -1; + } + if (versionB === 'beta') { + return 1; + } + + const parsedA = parseInt(versionA.split('.')[0]); + const parsedB = parseInt(versionB.split('.')[0]); + + return parsedB - parsedA; + }); + + return Object.fromEntries(versions); +} diff --git a/tsconfig.test.json b/tsconfig.test.json index 8baf16220..d33d71ba6 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -7,7 +7,8 @@ "packages/**/*", "*.js", ".*.js", - "website/**/*.js" + "website/**/*.js", + "scripts/**/*.js" ], "exclude": [ "**/*/node_modules/**/*", diff --git a/website/README.md b/website/README.md index 3ef7d3642..39e393d76 100644 --- a/website/README.md +++ b/website/README.md @@ -1,31 +1,33 @@ This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator. -### Installation +Note: `yarn` is required otherwise, some plugins don't work -``` +## Installation + +```sh yarn ``` -### Local Development +## Local Development -``` +```sh yarn start ``` -This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. -### Build +## Build -``` +```sh yarn build ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. -### Deployment +## Deployment -``` -$ GIT_USER= USE_SSH=true yarn deploy +```sh +GIT_USER= USE_SSH=true yarn deploy ``` If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 0c612c386..8f829ade2 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -1,9 +1,22 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const deployInfo = require('../scripts/getDeployInfo.js')(); + +console.log( + `Deploying editBranch "${deployInfo.branch}" and deployPath "${deployInfo.deployPath}" deployName "${deployInfo.deployName}"` +); + +let baseUrl = '/mongodb-memory-server/' + deployInfo.deployPath; + +if (!baseUrl.endsWith('/')) { + baseUrl += '/'; +} + module.exports = { title: 'mongodb-memory-server', tagline: 'Spinning up mongod in memory for fast tests. If you run tests in parallel this lib helps to spin up dedicated mongodb servers for every test file in MacOS, *nix, Windows or CI environments (in most cases with zero-config).', url: 'https://nodkz.github.io', - baseUrl: '/mongodb-memory-server/', + baseUrl: baseUrl, favicon: 'img/favicon.ico', organizationName: 'nodkz', projectName: 'mongodb-memory-server', @@ -13,6 +26,9 @@ module.exports = { appId: '3KTVP2YGJO', indexName: 'docusaurus', contextualSearch: false, // since docusaurus v2.beta-15, it is defaulted to "true", but somehow breaks current search + searchParameters: { + facetFilters: [`version:${deployInfo.searchName}`], + }, }, navbar: { title: 'mongodb-memory-server', @@ -21,6 +37,16 @@ module.exports = { // src: 'img/logo.svg', // }, items: [ + { + type: 'custom-beta-notice', + position: 'left', + }, + { + // cannot use "docsVersionDropdown" because we are not using docusaurus' versioning system + type: 'custom-versions-selector', + position: 'right', + label: deployInfo.deployName, + }, { to: 'docs/guides/quick-start-guide', activeBasePath: 'guides', @@ -33,6 +59,11 @@ module.exports = { label: 'API', position: 'right', }, + { + href: 'https://github.com/nodkz/mongodb-memory-server/blob/master/CHANGELOG.md', + label: 'Changelog', + position: 'right', + }, { href: 'https://github.com/nodkz/mongodb-memory-server', label: 'GitHub', @@ -84,4 +115,7 @@ module.exports = { }, ], ], + customFields: { + deployInfo: deployInfo, + }, }; diff --git a/website/src/components/NavbarBetaNotice.js b/website/src/components/NavbarBetaNotice.js new file mode 100644 index 000000000..0c6ec2762 --- /dev/null +++ b/website/src/components/NavbarBetaNotice.js @@ -0,0 +1,104 @@ +import React from 'react'; +import clsx from 'clsx'; +import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +// Base Copy from "./NavbarVersionsSelector.js" + +/** + * try to parse the version from the current location + * @returns "false" if not found", otherwise the baseurl of the version + */ +function versionFromUrl() { + const caps = /^\/mongodb-memory-server\/versions\/(\d+\.x|beta)/.exec(window.location.pathname); + + if (caps) { + return `${caps[1]}`; + } + + return false; +} + +/** + * Get the label to use for the current version + * @returns "false" if no label is used, otherwise a string containing the label's text + */ +function getLabel() { + const caps = versionFromUrl(); + + if (!caps) { + return false; + } + + // add notice that "beta" is not always the same or higher than the current version + if (caps === 'beta') { + return 'Beta Version may not always be up-to-date'; + } + + return false; +} + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function NavbarBetaNoticeDesktop({ position, className, ...props }) { + const label = getLabel(); + + if (label) { + return ( +
+ e.preventDefault()} + onKeyDown={(e) => { + if (e.key === 'Enter') { + e.preventDefault(); + } + }} + > + {/*The following label seemingly does nothing*/} + {label} + +
+ ); + } + + return null; // dont add a label if no label is present +} + +function NavbarBetaNoticeMobile({ + className, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + position, // Need to destructure position from props so that it doesn't get passed on. + ...props +}) { + const label = getLabel(); + + if (label) { + return ( +
  • + { + e.preventDefault(); + }} + > + {/*The following label seemingly does nothing*/} + {label} + +
  • + ); + } + + return null; // dont add a label if no label is present +} + +export default function NavbarBetaNotice({ mobile = false, ...props }) { + const Comp = mobile ? NavbarBetaNoticeMobile : NavbarBetaNoticeDesktop; + + return {() => }; +} diff --git a/website/src/components/NavbarVersionsSelector.js b/website/src/components/NavbarVersionsSelector.js new file mode 100644 index 000000000..5c255d6a3 --- /dev/null +++ b/website/src/components/NavbarVersionsSelector.js @@ -0,0 +1,209 @@ +import React, { useState, useRef, useEffect } from 'react'; +import clsx from 'clsx'; +import { useCollapsible, Collapsible } from '@docusaurus/theme-common'; +import { useLocation } from '@docusaurus/router'; +import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink'; + +// Base Copy from "swizzle @docusaurus/theme-classic NavbarItem/DropdownNavbarItem" + +/** + * Check if the provided path is of the provided versionPath + * Assumes versionPath is either the top-level or a "versions/" path + * @param {String} path + * @param {String} versionPath + * @returns {Boolean} + */ +function isActiveVersion(path, versionPath) { + // special case for the "latest" (top-level) + // this function only handles the top-level and "versions/" paths + if (versionPath === '/mongodb-memory-server/') { + return versionPath === path; + } + + return path.startsWith(versionPath); +} + +/** + * try to parse the version from the current location + * @returns "false" if not found", otherwise the baseurl of the version + */ +function versionFromUrl() { + const caps = /^\/mongodb-memory-server\/versions\/(\d+\.x|beta)/.exec(window.location.pathname); + + if (caps) { + return `${caps[1]}`; + } + + return false; +} + +/** + * Helper function to share getting versions between components + * @param props The original arguments, needs to include "label" + */ +function getVersions(props) { + const baseUrl = '/mongodb-memory-server/'; + const [versions, setVersions] = useState([]); + + useEffect(async () => { + const current_version = props.label; + const versions = await fetch('/mongodb-memory-server/versions.json') + .then((v) => v.json()) + .catch((err) => { + console.log('json fetch errored, using default', err); + + const fromurl = versionFromUrl(); + + // if current version is not the baseurl, add a "latest" entry alongside the current version + if (fromurl) { + return { + latest: '', + [current_version]: fromurl, + }; + } + + // only add the current version + return { + [current_version]: '', + }; + }); + + setVersions(Object.entries(versions).map(([key, path]) => [key, baseUrl + path])); + }, []); + + return versions; +} + +function NavbarVersionsSelectorDesktop({ position, className, ...props }) { + const dropdownRef = useRef(null); + const [showDropdown, setShowDropdown] = useState(false); + useEffect(() => { + const handleClickOutside = (event) => { + if (!dropdownRef.current || dropdownRef.current.contains(event.target)) { + return; + } + + setShowDropdown(false); + }; + document.addEventListener('mousedown', handleClickOutside); + document.addEventListener('touchstart', handleClickOutside); + document.addEventListener('focusin', handleClickOutside); + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + document.removeEventListener('touchstart', handleClickOutside); + document.removeEventListener('focusin', handleClickOutside); + }; + }, [dropdownRef]); + + const versions = getVersions(props); + + const localpath = useLocation().pathname; + + return ( +
    + e.preventDefault()} + onKeyDown={(e) => { + if (e.key === 'Enter') { + e.preventDefault(); + setShowDropdown(!showDropdown); + } + }} + > + {/*The following label seemingly does nothing*/} + {props.label} + +
      + {versions.map(([versionKey, versionPath], i) => ( + // cant use built-in components because they either always prepend the baseUrl or dont treat links as external +
    • + + {versionKey} + +
    • + ))} +
    +
    + ); +} + +function NavbarVersionsSelectorMobile({ + className, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + position, // Need to destructure position from props so that it doesn't get passed on. + ...props +}) { + const versions = getVersions(props); + + const { collapsed, toggleCollapsed } = useCollapsible({ + initialState: true, + }); + + const localpath = useLocation().pathname; + + return ( +
  • + { + e.preventDefault(); + toggleCollapsed(); + }} + > + {/*The following label seemingly does nothing*/} + Versions + + + {versions.map(([versionKey, versionPath], i) => ( + // cant use built-in components because they either always prepend the baseUrl or dont treat links as external +
  • + + {versionKey} + +
  • + ))} + + + ); +} + +export default function NavbarVersionsSelector({ mobile = false, ...props }) { + const Comp = mobile ? NavbarVersionsSelectorMobile : NavbarVersionsSelectorDesktop; + + return ; +} diff --git a/website/src/css/custom.css b/website/src/css/custom.css index 74ba0f27f..446f355d5 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -17,6 +17,11 @@ --ifm-code-font-size: 95%; } +[data-theme='dark'] { + /* The following is to work around the badge text color being hard to read */ + --ifm-badge-color: var(--ifm-font-color-base-inverse); +} + .docusaurus-highlight-code-line { background-color: rgb(72, 77, 91); display: block; diff --git a/website/src/theme/NavbarItem/ComponentTypes.js b/website/src/theme/NavbarItem/ComponentTypes.js new file mode 100644 index 000000000..df9554b2b --- /dev/null +++ b/website/src/theme/NavbarItem/ComponentTypes.js @@ -0,0 +1,10 @@ +import OriginalComponentTypes from '@theme-original/NavbarItem/ComponentTypes'; +import NavbarVersionsSelector from '../../components/NavbarVersionsSelector'; +import NavbarBetaNotice from '../../components/NavbarBetaNotice'; + +const ComponentTypes = { + ...OriginalComponentTypes, + 'custom-versions-selector': NavbarVersionsSelector, + 'custom-beta-notice': NavbarBetaNotice, +}; +export default ComponentTypes; diff --git a/website/src/theme/SearchMetadata/index.js b/website/src/theme/SearchMetadata/index.js new file mode 100644 index 000000000..84734b6a0 --- /dev/null +++ b/website/src/theme/SearchMetadata/index.js @@ -0,0 +1,28 @@ +import React from 'react'; +import Head from '@docusaurus/Head'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; + +export default function SearchMetadata({ locale, tag }) { + const { siteConfig } = useDocusaurusContext(); + const deployInfo = siteConfig.customFields?.deployInfo ?? {}; + const searchName = deployInfo?.searchName ?? 'current'; + + tag = tag.replace('current', searchName); // replace "docs-default-current" with something like "docs-default-YourVersion" + + return ( + + {/* + Docusaurus metadata, used by third-party search plugin + See https://github.com/cmfcmf/docusaurus-search-local/issues/99 + */} + {locale && } + {} + {tag && } + + {/* Algolia DocSearch metadata */} + {locale && } + {} + {tag && } + + ); +} diff --git a/website/yarn.lock b/website/yarn.lock index c4a715a64..371f1aafd 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -29,114 +29,114 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== -"@algolia/cache-browser-local-storage@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.19.1.tgz#d29f42775ed4d117182897ac164519c593faf399" - integrity sha512-FYAZWcGsFTTaSAwj9Std8UML3Bu8dyWDncM7Ls8g+58UOe4XYdlgzXWbrIgjaguP63pCCbMoExKr61B+ztK3tw== - dependencies: - "@algolia/cache-common" "4.19.1" - -"@algolia/cache-common@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.19.1.tgz#faa5eeacaffd6023c2cf26e9866bdb06193f9b26" - integrity sha512-XGghi3l0qA38HiqdoUY+wvGyBsGvKZ6U3vTiMBT4hArhP3fOGLXpIINgMiiGjTe4FVlTa5a/7Zf2bwlIHfRqqg== - -"@algolia/cache-in-memory@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.19.1.tgz#afe4f0f21149800358379871089e0141fb72415b" - integrity sha512-+PDWL+XALGvIginigzu8oU6eWw+o76Z8zHbBovWYcrtWOEtinbl7a7UTt3x3lthv+wNuFr/YD1Gf+B+A9V8n5w== - dependencies: - "@algolia/cache-common" "4.19.1" - -"@algolia/client-account@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.19.1.tgz#1fa65881baab79ad35af6bcf44646a13b8d5edc9" - integrity sha512-Oy0ritA2k7AMxQ2JwNpfaEcgXEDgeyKu0V7E7xt/ZJRdXfEpZcwp9TOg4TJHC7Ia62gIeT2Y/ynzsxccPw92GA== - dependencies: - "@algolia/client-common" "4.19.1" - "@algolia/client-search" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-analytics@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.19.1.tgz#e6ed79acd4de5a0284c9696bf4e1c25278ba34db" - integrity sha512-5QCq2zmgdZLIQhHqwl55ZvKVpLM3DNWjFI4T+bHr3rGu23ew2bLO4YtyxaZeChmDb85jUdPDouDlCumGfk6wOg== - dependencies: - "@algolia/client-common" "4.19.1" - "@algolia/client-search" "4.19.1" - "@algolia/requester-common" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-common@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.19.1.tgz#40a8387316fa61d62ad1091beb3a8e227f008e75" - integrity sha512-3kAIVqTcPrjfS389KQvKzliC559x+BDRxtWamVJt8IVp7LGnjq+aVAXg4Xogkur1MUrScTZ59/AaUd5EdpyXgA== - dependencies: - "@algolia/requester-common" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-personalization@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.19.1.tgz#fe362e0684dc74c3504c3641c5a7488c6ae02e07" - integrity sha512-8CWz4/H5FA+krm9HMw2HUQenizC/DxUtsI5oYC0Jxxyce1vsr8cb1aEiSJArQT6IzMynrERif1RVWLac1m36xw== - dependencies: - "@algolia/client-common" "4.19.1" - "@algolia/requester-common" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-search@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.19.1.tgz#5e54601aa5f5cea790cec3f2cde4af9d6403871e" - integrity sha512-mBecfMFS4N+yK/p0ZbK53vrZbL6OtWMk8YmnOv1i0LXx4pelY8TFhqKoTit3NPVPwoSNN0vdSN9dTu1xr1XOVw== - dependencies: - "@algolia/client-common" "4.19.1" - "@algolia/requester-common" "4.19.1" - "@algolia/transporter" "4.19.1" +"@algolia/cache-browser-local-storage@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.19.0.tgz#e28e9f44c0cd25ca0a2dc5b1bd4d3048bf468d72" + integrity sha512-G2NxUr3+gFMFwrEsjy7DwZJYXIxBQC5DeRZVKVEpTxW8AkBI2Y7MF+VUs4C8qqE3lHuioym4rvDipzH1xk3DKw== + dependencies: + "@algolia/cache-common" "4.19.0" + +"@algolia/cache-common@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.19.0.tgz#30fc74715edaa0a08151ccc6124f0a5addb7acc9" + integrity sha512-4zFZCC0vYTvfoFSyAXEXDtQFamMibtMPjARirfvRlfgK+5YXW9qJIV+V7O/4qb1mH6RjngvHOo3GDE1xDoIzKA== + +"@algolia/cache-in-memory@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.19.0.tgz#4cf463db8a0ddb58133de024863924eb6007a06b" + integrity sha512-Q6z2p4MaiWs4PXB4NQ5l/ZE1j54mF1xlnqOLw0TKKXBhlNM5pOl5XKSvr/t/KHfrkO1/ua/f/YW71iA/lPGn+A== + dependencies: + "@algolia/cache-common" "4.19.0" + +"@algolia/client-account@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.19.0.tgz#eccf110aa9a5116debe157753ac9f7a56f4d78b7" + integrity sha512-/0ZASb3ErYjM9GJijaF6JDDhDiyGYwp2FQ2QInUzH0mq/+a5s1PMI3r/8NV1DmlX+p93d2QplnLpjgNTn4eafw== + dependencies: + "@algolia/client-common" "4.19.0" + "@algolia/client-search" "4.19.0" + "@algolia/transporter" "4.19.0" + +"@algolia/client-analytics@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.19.0.tgz#17a49df48ea68ecc30252282617f6351e15d4d41" + integrity sha512-tB9L0YJ86a1e/ibNdnbFw+yOKooQlmh95Ld6Qyj4GQ1vFmzBpd4x4ilhyFFXbOjsvNGgALu8+44gp5h2ynxrwg== + dependencies: + "@algolia/client-common" "4.19.0" + "@algolia/client-search" "4.19.0" + "@algolia/requester-common" "4.19.0" + "@algolia/transporter" "4.19.0" + +"@algolia/client-common@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.19.0.tgz#89506e256c53ad2061f0ed73abf5b58f0e1dcebd" + integrity sha512-tiEyCKkkG5Ig04ATYlt1v41UJb/lS4RmJVXEAsaTkoyB5iUCOChE5WEVPPuJbO/5tSTCbIF4P+g5BjQDb7aGBA== + dependencies: + "@algolia/requester-common" "4.19.0" + "@algolia/transporter" "4.19.0" + +"@algolia/client-personalization@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.19.0.tgz#0f4f8bcb4b1e596130890a858a934288cab0fdce" + integrity sha512-nG56w0dphlStCOgB80q0ug0SHYM+tQosL4Qprc+cy8ckFhTgC3hRtyRYHYGPk9txow5pPKDtyb5rnr3oviKP1Q== + dependencies: + "@algolia/client-common" "4.19.0" + "@algolia/requester-common" "4.19.0" + "@algolia/transporter" "4.19.0" + +"@algolia/client-search@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.19.0.tgz#52667c1e4a4559cb82b8766e5591afb2902d5c7c" + integrity sha512-kkqvljLIBYFv+GMefIq0wv2cRP30NG5/INyL1OKr8Qk4Nk0FciFF3wdxIgv6fm156x1q4V0fLw5zwMMWMPOsLQ== + dependencies: + "@algolia/client-common" "4.19.0" + "@algolia/requester-common" "4.19.0" + "@algolia/transporter" "4.19.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/logger-common@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.19.1.tgz#0e46a11510f3e94e1afc0ac780ae52e9597be78f" - integrity sha512-i6pLPZW/+/YXKis8gpmSiNk1lOmYCmRI6+x6d2Qk1OdfvX051nRVdalRbEcVTpSQX6FQAoyeaui0cUfLYW5Elw== +"@algolia/logger-common@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.19.0.tgz#0d68eed03d7d4e0d9f35b50d85c8f03b001c0eef" + integrity sha512-2YdIHiQwlUCdhFFK1rE53VCEc8scTUcQLWJgpzi1amvP/ffUog4h5VXdGhyhHzYeAexMsaELX2/sEJa4lgOzng== -"@algolia/logger-console@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.19.1.tgz#656a6f4ebb5de39af6ef7095c398d9ab3cceb87d" - integrity sha512-jj72k9GKb9W0c7TyC3cuZtTr0CngLBLmc8trzZlXdfvQiigpUdvTi1KoWIb2ZMcRBG7Tl8hSb81zEY3zI2RlXg== +"@algolia/logger-console@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.19.0.tgz#7c7db31150915a85dfaaffaf4a780aaae1fe3ef9" + integrity sha512-JjbFPW35gm1RswkB3sgIAS/TjXoqG3FR8Gvsg8lPIB2oh8mcpybyJOUcq56sAfbIQ6n0aFuG4lgqES5TqlWzXw== dependencies: - "@algolia/logger-common" "4.19.1" + "@algolia/logger-common" "4.19.0" -"@algolia/requester-browser-xhr@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.19.1.tgz#7341ea2f980b8980a2976110142026721e452187" - integrity sha512-09K/+t7lptsweRTueHnSnmPqIxbHMowejAkn9XIcJMLdseS3zl8ObnS5GWea86mu3vy4+8H+ZBKkUN82Zsq/zg== +"@algolia/requester-browser-xhr@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.19.0.tgz#18e4f2929a54731f3ec4883f6cb7fa84a26025d7" + integrity sha512-5c3FlK7ZJ6oiLuZHe0iSpPzWlHCzeunQS7nlBsB4sEecVcvRJfXOklLh2vZfouQdaT14gXJ+Hwb2SuyRQLU6Ug== dependencies: - "@algolia/requester-common" "4.19.1" + "@algolia/requester-common" "4.19.0" -"@algolia/requester-common@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.19.1.tgz#f3396c77631b9d36e8d4d6f819a2c27f9ddbf7a1" - integrity sha512-BisRkcWVxrDzF1YPhAckmi2CFYK+jdMT60q10d7z3PX+w6fPPukxHRnZwooiTUrzFe50UBmLItGizWHP5bDzVQ== +"@algolia/requester-common@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.19.0.tgz#185ccf3b819c30ae97799c0c46c4633dd92e13ac" + integrity sha512-oBsoYDNx09L163N9aQM/FrGfLoU/sLvvzcHw1fdJg5eysTAXCvdMNXk29ocy0rhq2deQ8ccdU/Z9Qu0RfLGUmA== -"@algolia/requester-node-http@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.19.1.tgz#ea210de9642628b3bdda1dd7fcd1fcb686da442e" - integrity sha512-6DK52DHviBHTG2BK/Vv2GIlEw7i+vxm7ypZW0Z7vybGCNDeWzADx+/TmxjkES2h15+FZOqVf/Ja677gePsVItA== +"@algolia/requester-node-http@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.19.0.tgz#be7830d90a9ee95d8054a0079fa98a19c5190714" + integrity sha512-UkTZEg5q9VTqfa8cPJbeDpu0Ff50aPx2MxGoYP2v25NFFcTlYRufiPBtux0ZKSyXTaoNPm/OBldWlDi9bTx1jA== dependencies: - "@algolia/requester-common" "4.19.1" + "@algolia/requester-common" "4.19.0" -"@algolia/transporter@4.19.1": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.19.1.tgz#b5787299740c4bec9ba05502d98c14b5999860c8" - integrity sha512-nkpvPWbpuzxo1flEYqNIbGz7xhfhGOKGAZS7tzC+TELgEmi7z99qRyTfNSUlW7LZmB3ACdnqAo+9A9KFBENviQ== +"@algolia/transporter@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.19.0.tgz#252ba0411ae61a3f559604d06ee56234a6c1eae0" + integrity sha512-xgpU6eTzHJ8rqEvhVW9DdyIC+rsRYovIGpCz8k9JjwpLHNltu8wTQik0hasb1z16mFaIQDzgJTxo/C4ciMMr6w== dependencies: - "@algolia/cache-common" "4.19.1" - "@algolia/logger-common" "4.19.1" - "@algolia/requester-common" "4.19.1" + "@algolia/cache-common" "4.19.0" + "@algolia/logger-common" "4.19.0" + "@algolia/requester-common" "4.19.0" "@ampproject/remapping@^2.2.0": version "2.2.1" @@ -260,10 +260,10 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" - integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== +"@babel/helper-define-polyfill-provider@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz#af1429c4a83ac316a6a8c2cc8ff45cb5d2998d3a" + integrity sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -1142,9 +1142,9 @@ semver "^6.3.1" "@babel/preset-modules@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" - integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1528,6 +1528,15 @@ "@types/react" "*" prop-types "^15.6.2" +"@docusaurus/remark-plugin-npm2yarn@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.4.1.tgz#c67f5bc97cc6a4adee5eec0f3e97238b674b844b" + integrity sha512-RTX4hGCrwibqjDVf6edWVNwdvWHjx+YmfKwxqXxfhNnYjypTCXWTAyKeIfCUW2DNdtqAI2ZM0zFhB1maua2JbQ== + dependencies: + npm-to-yarn "^2.0.0" + tslib "^2.4.1" + unist-util-visit "^2.0.3" + "@docusaurus/theme-classic@2.4.1": version "2.4.1" resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.4.1.tgz#0060cb263c1a73a33ac33f79bb6bc2a12a56ad9e" @@ -1781,6 +1790,11 @@ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== +"@nicolo-ribaudo/semver-v6@^6.3.3": + version "6.3.3" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz#ea6d23ade78a325f7a52750aab1526b02b628c29" + integrity sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -2000,9 +2014,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.44.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.1.tgz#d1811559bb6bcd1a76009e3f7883034b78a0415e" - integrity sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg== + version "8.44.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.0.tgz#55818eabb376e2272f77fbf5c96c43137c3c1e53" + integrity sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2103,9 +2117,9 @@ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== "@types/node@*": - version "20.4.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.7.tgz#74d323a93f1391a63477b27b9aec56669c98b2ab" - integrity sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g== + version "20.4.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.2.tgz#129cc9ae69f93824f92fac653eebfb4812ab4af9" + integrity sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw== "@types/node@^17.0.5": version "17.0.45" @@ -2164,9 +2178,9 @@ "@types/react" "*" "@types/react@*": - version "18.2.18" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.18.tgz#c8b233919eef1bdc294f6f34b37f9727ad677516" - integrity sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ== + version "18.2.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.15.tgz#14792b35df676c20ec3cf595b262f8c615a73066" + integrity sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2451,31 +2465,31 @@ ajv@^8.0.0, ajv@^8.9.0: uri-js "^4.2.2" algoliasearch-helper@^3.10.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.14.0.tgz#2409c2591952719ab6fba1de77b3bbe5094ab85e" - integrity sha512-gXDXzsSS0YANn5dHr71CUXOo84cN4azhHKUbg71vAWnH+1JBiR4jf7to3t3JHXknXkbV0F7f055vUSBKrltHLQ== + version "3.13.5" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.13.5.tgz#0e20f6af3b2cb918e0b8bcb6f7f233bdbb53be1d" + integrity sha512-UsiDw8/RN3S/46EEJ6s5fX/vCNPlMNPQrB0TL/105Umyc+UdgbErCTaSf46pcVDIctAFN+9HF7txEg1eMHUvww== dependencies: "@algolia/events" "^4.0.1" algoliasearch@^4.0.0, algoliasearch@^4.13.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.19.1.tgz#18111fb422eaf841737adb92d5ab12133d244218" - integrity sha512-IJF5b93b2MgAzcE/tuzW0yOPnuUyRgGAtaPv5UUywXM8kzqfdwZTO4sPJBzoGz1eOy6H9uEchsJsBFTELZSu+g== - dependencies: - "@algolia/cache-browser-local-storage" "4.19.1" - "@algolia/cache-common" "4.19.1" - "@algolia/cache-in-memory" "4.19.1" - "@algolia/client-account" "4.19.1" - "@algolia/client-analytics" "4.19.1" - "@algolia/client-common" "4.19.1" - "@algolia/client-personalization" "4.19.1" - "@algolia/client-search" "4.19.1" - "@algolia/logger-common" "4.19.1" - "@algolia/logger-console" "4.19.1" - "@algolia/requester-browser-xhr" "4.19.1" - "@algolia/requester-common" "4.19.1" - "@algolia/requester-node-http" "4.19.1" - "@algolia/transporter" "4.19.1" + version "4.19.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.19.0.tgz#2df13cd29c1bcf0ebd35d83e21af54e07e576dfa" + integrity sha512-UIzLHOkprUFzwFxqgw+TOhEG2usLv8q9l4V/Ul82IgNNO+g5RjENd5Sl/J6BU4BlRdMLy/OvPfbSc7Y1dOdwgA== + dependencies: + "@algolia/cache-browser-local-storage" "4.19.0" + "@algolia/cache-common" "4.19.0" + "@algolia/cache-in-memory" "4.19.0" + "@algolia/client-account" "4.19.0" + "@algolia/client-analytics" "4.19.0" + "@algolia/client-common" "4.19.0" + "@algolia/client-personalization" "4.19.0" + "@algolia/client-search" "4.19.0" + "@algolia/logger-common" "4.19.0" + "@algolia/logger-console" "4.19.0" + "@algolia/requester-browser-xhr" "4.19.0" + "@algolia/requester-common" "4.19.0" + "@algolia/requester-node-http" "4.19.0" + "@algolia/transporter" "4.19.0" ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" @@ -2620,28 +2634,28 @@ babel-plugin-extract-import-names@1.6.22: "@babel/helper-plugin-utils" "7.10.4" babel-plugin-polyfill-corejs2@^0.4.4: - version "0.4.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" - integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== + version "0.4.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz#9f9a0e1cd9d645cc246a5e094db5c3aa913ccd2b" + integrity sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.2" - semver "^6.3.1" + "@babel/helper-define-polyfill-provider" "^0.4.1" + "@nicolo-ribaudo/semver-v6" "^6.3.3" babel-plugin-polyfill-corejs3@^0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" - integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== + version "0.8.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz#d406c5738d298cd9c66f64a94cf8d5904ce4cc5e" + integrity sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.1" core-js-compat "^3.31.0" babel-plugin-polyfill-regenerator@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" - integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== + version "0.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz#ace7a5eced6dff7d5060c335c52064778216afd3" + integrity sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.1" bail@^1.0.0: version "1.0.5" @@ -2750,13 +2764,13 @@ braces@^3.0.2, braces@~3.0.2: fill-range "^7.0.1" browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9: - version "4.21.10" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" - integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== + version "4.21.9" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" + integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== dependencies: - caniuse-lite "^1.0.30001517" - electron-to-chromium "^1.4.477" - node-releases "^2.0.13" + caniuse-lite "^1.0.30001503" + electron-to-chromium "^1.4.431" + node-releases "^2.0.12" update-browserslist-db "^1.0.11" buffer-from@^1.0.0: @@ -2828,10 +2842,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.30001464, caniuse-lite@^1.0.30001517: - version "1.0.30001519" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz#3e7b8b8a7077e78b0eb054d69e6edf5c7df35601" - integrity sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503: + version "1.0.30001517" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" + integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== ccount@^1.0.0: version "1.1.0" @@ -3148,21 +3162,21 @@ copy-webpack-plugin@^11.0.0: serialize-javascript "^6.0.0" core-js-compat@^3.31.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.0.tgz#f41574b6893ab15ddb0ac1693681bd56c8550a90" - integrity sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw== + version "3.31.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.1.tgz#5084ad1a46858df50ff89ace152441a63ba7aae0" + integrity sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA== dependencies: browserslist "^4.21.9" core-js-pure@^3.30.2: - version "3.32.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.0.tgz#5d79f85da7a4373e9a06494ccbef995a4c639f8b" - integrity sha512-qsev1H+dTNYpDUEURRuOXMvpdtAnNEvQWS/FMJ2Vb5AY8ZP4rAPQldkE27joykZPJTe0+IVgHZYh1P5Xu1/i1g== + version "3.31.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.31.1.tgz#73d154958881873bc19381df80bddb20c8d0cdb5" + integrity sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw== core-js@^3.23.3: - version "3.32.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.0.tgz#7643d353d899747ab1f8b03d2803b0312a0fb3b6" - integrity sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww== + version "3.31.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.31.1.tgz#f2b0eea9be9da0def2c5fece71064a7e5d687653" + integrity sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ== core-util-is@~1.0.0: version "1.0.3" @@ -3595,10 +3609,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.477: - version "1.4.484" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.484.tgz#770358eba089471c5dae5719db3a5a4fbf02bfb2" - integrity sha512-nO3ZEomTK2PO/3TUXgEx0A97xZTpKVf4p427lABHuCpT1IQ2N+njVh29DkQkCk6Q4m2wjU+faK4xAcfFndwjvw== +electron-to-chromium@^1.4.431: + version "1.4.464" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.464.tgz#2f94bad78dff34e527aacbfc5d0b1a33cf046507" + integrity sha512-guZ84yoou4+ILNdj0XEbmGs6DEWj6zpVOWYpY09GU66yEb0DSYvP/biBPzHn0GuW/3RC/pnaYNUWlQE1fJYtgA== emoji-regex@^8.0.0: version "8.0.0" @@ -3820,9 +3834,9 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + version "3.3.0" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.0.tgz#7c40cb491e1e2ed5664749e87bfb516dbe8727c0" + integrity sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -4780,10 +4794,10 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -jest-util@^29.6.2: - version "29.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.2.tgz#8a052df8fff2eebe446769fd88814521a517664d" - integrity sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w== +jest-util@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.1.tgz#c9e29a87a6edbf1e39e6dee2b4689b8a146679cb" + integrity sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg== dependencies: "@jest/types" "^29.6.1" "@types/node" "*" @@ -4802,12 +4816,12 @@ jest-worker@^27.4.5: supports-color "^8.0.0" jest-worker@^29.1.2: - version "29.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.2.tgz#682fbc4b6856ad0aa122a5403c6d048b83f3fb44" - integrity sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ== + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.1.tgz#64b015f0e985ef3a8ad049b61fe92b3db74a5319" + integrity sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA== dependencies: "@types/node" "*" - jest-util "^29.6.2" + jest-util "^29.6.1" merge-stream "^2.0.0" supports-color "^8.0.0" @@ -5275,7 +5289,7 @@ node-forge@^1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-releases@^2.0.13: +node-releases@^2.0.12: version "2.0.13" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== @@ -5307,6 +5321,11 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npm-to-yarn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/npm-to-yarn/-/npm-to-yarn-2.0.0.tgz#59c9c615eca3ba8920308a0b418007b73ffc7492" + integrity sha512-/IbjiJ7vqbxfxJxAZ+QI9CCRjnIbvGxn5KQcSY9xHh0lMKc/Sgqmm7yp7KPmd6TiTZX5/KiSBKlkGHo59ucZbg== + nprogress@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" @@ -5892,9 +5911,9 @@ postcss-zindex@^5.1.0: integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.21: - version "8.4.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" - integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== + version "8.4.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.26.tgz#1bc62ab19f8e1e5463d98cf74af39702a00a9e94" + integrity sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -7001,9 +7020,9 @@ terser-webpack-plugin@^5.3.3, terser-webpack-plugin@^5.3.7: terser "^5.16.8" terser@^5.10.0, terser@^5.16.8: - version "5.19.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" - integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== + version "5.19.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.1.tgz#dbd7231f224a9e2401d0f0959542ed74d76d340b" + integrity sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -7077,10 +7096,10 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" - integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== type-fest@^0.20.2: version "0.20.2"