diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index 3c98a38c9e..9e90276484 100644 --- a/.code-samples.meilisearch.yaml +++ b/.code-samples.meilisearch.yaml @@ -1,7 +1,6 @@ # This code-samples file is used by the Meilisearch documentation # Every example written here will be automatically fetched by # the documentation on build -# You can read more at https://github.com/meilisearch/documentation/tree/main/.vuepress/code-samples --- get_one_index_1: |- curl \ @@ -892,7 +891,7 @@ getting_started_pagination: |- --data-binary '{ "maxTotalHits": 500 }' -search_parameter_guide_matching_strategy_1: | +search_parameter_guide_matching_strategy_1: |- curl \ -X POST 'http://localhost:7700/indexes/movies/search' \ -H 'Content-Type: application/json' \ @@ -900,7 +899,7 @@ search_parameter_guide_matching_strategy_1: | "q": "big fat liar", "matchingStrategy": "last" }' -search_parameter_guide_matching_strategy_2: | +search_parameter_guide_matching_strategy_2: |- curl \ -X POST 'http://localhost:7700/indexes/movies/search' \ -H 'Content-Type: application/json' \ @@ -908,19 +907,19 @@ search_parameter_guide_matching_strategy_2: | "q": "big fat liar", "matchingStrategy": "all" }' -date_guide_index_1: | +date_guide_index_1: |- curl \ -x POST 'http://localhost:7700/indexes/games/documents' \ -h 'content-type: application/json' \ --data-binary @games.json -date_guide_filterable_attributes_1: | +date_guide_filterable_attributes_1: |- curl \ -X PUT 'http://localhost:7700/indexes/games/settings/filterable-attributes' \ -H 'Content-Type: application/json' \ --data-binary '[ "release_timestamp" ]' -date_guide_filter_1: | +date_guide_filter_1: |- curl \ -X POST 'http://localhost:7700/indexes/games/search' \ -H 'Content-Type: application/json' \ @@ -928,14 +927,14 @@ date_guide_filter_1: | "q": "", "filter": "release_timestamp >= 1514761200 AND release_timestamp < 1672527600" }' -date_guide_sortable_attributes_1: | +date_guide_sortable_attributes_1: |- curl \ -X PUT 'http://localhost:7700/indexes/games/settings/sortable-attributes' \ -H 'Content-Type: application/json' \ --data-binary '[ "release_timestamp" ]' -date_guide_sort_1: | +date_guide_sort_1: |- curl \ -X POST 'http://localhost:7700/indexes/games/search' \ -H 'Content-Type: application/json' \ @@ -943,34 +942,34 @@ date_guide_sort_1: | "q": "", "sort": ["release_timestamp:desc"] }' -async_guide_filter_by_date_1: | +async_guide_filter_by_date_1: |- curl \ -X GET 'http://localhost:7700/tasks?afterEnqueuedAt=2020-10-11T11:49:53.000Z' -async_guide_multiple_filters_1: | +async_guide_multiple_filters_1: |- curl \ -X GET 'http://localhost:7700/tasks?indexUids=movies&types=documentAdditionOrUpdate,documentDeletion&statuses=processing' -async_guide_filter_by_ids_1: | +async_guide_filter_by_ids_1: |- curl \ -X GET 'http://localhost:7700/tasks?uids=5,10,13' -async_guide_filter_by_statuses_1: | +async_guide_filter_by_statuses_1: |- curl \ -X GET 'http://localhost:7700/tasks?statuses=failed,canceled' -async_guide_filter_by_types_1: | +async_guide_filter_by_types_1: |- curl \ -X GET 'http://localhost:7700/tasks?types=dumpCreation,indexSwap' -async_guide_filter_by_index_uids_1: | +async_guide_filter_by_index_uids_1: |- curl \ -X GET 'http://localhost:7700/tasks?indexUids=movies' -async_guide_canceled_by_1: | +async_guide_canceled_by_1: |- curl \ -X GET 'http://localhost:7700/tasks?canceledBy=9,15' -delete_tasks_1: | +delete_tasks_1: |- curl \ -X DELETE 'http://localhost:7700/tasks?uids=1,2' -cancel_tasks_1: | +cancel_tasks_1: |- curl \ -X POST 'http://localhost:7700/tasks/cancel?uids=1,2' -swap_indexes_1: | +swap_indexes_1: |- curl \ -X POST 'http://localhost:7700/swap-indexes' \ -H 'Content-Type: application/json' \ @@ -1058,3 +1057,11 @@ faceted_search_2: |- } ] }' +filtering_update_settings_1: |- + curl \ + -X PUT 'http://localhost:7700/indexes/movie_ratings/settings/filterable-attributes' \ + -H 'Content-Type: application/json' \ + --data-binary '[ + "genres", + "director" + ]' diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 2693eaf2f5..0000000000 --- a/.editorconfig +++ /dev/null @@ -1,14 +0,0 @@ -# This file is for unifying the coding style for different editors and IDEs -# editorconfig.org - -root = true - -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[**.{js,vue,css,scss,html}] -indent_style = space -indent_size = 2 diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 059c749f61..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -!.vuepress -.vuepress/dist/ diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 0534678210..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,50 +0,0 @@ -module.exports = { - env: { - browser: true, - es6: true, - node: true, - }, - extends: [ - 'eslint:recommended', - 'eslint-config-standard', - 'plugin:vue/recommended', - ], - globals: { - Atomics: 'readonly', - SharedArrayBuffer: 'readonly', - CODE_SAMPLES: 'readonly', - }, - parserOptions: { - parser: 'babel-eslint', - allowImportExportEverywhere: true, - ecmaVersion: 2018, - sourceType: 'module', - }, - plugins: ['vue', 'prettier'], - rules: { - 'vue/no-v-html': 'off', // used in cases where HTML is needed - 'array-callback-return': 'off', - 'space-before-function-paren': ['error', { - anonymous: 'always', - named: 'never', - asyncArrow: 'always', - }], - 'comma-dangle': ['error', { - arrays: 'always-multiline', - objects: 'always-multiline', - imports: 'always-multiline', - exports: 'always-multiline', - functions: 'never', - }], - 'vue/max-attributes-per-line': [ - 2, - { - singleline: 20, - multiline: { - max: 1, - allowFirstLine: false, - }, - }, - ], - }, -} diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 94084de50e..2c4a736e4b 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,10 +7,4 @@ updates: time: "04:00" open-pull-requests-limit: 10 versioning-strategy: increase - ignore: - - dependency-name: "eslint*" - - dependency-name: "babel-eslint" - - dependency-name: "js-yaml" - - dependency-name: "*prettier*" - - dependency-name: "vuex" rebase-strategy: disabled diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml deleted file mode 100644 index 25d7b60d9f..0000000000 --- a/.github/workflows/checks.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: Checks - -on: - pull_request: - push: - # trying and staging branches are for Bors config - branches: - - trying - - staging - - main - -jobs: - check-builds: - runs-on: ubuntu-20.04 - strategy: - fail-fast: false - matrix: - node: ["14", "16"] - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node }} - cache: "yarn" - cache-dependency-path: yarn.lock - - run: yarn install - - run: yarn build - - check-links: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 16 - cache: "yarn" - cache-dependency-path: yarn.lock - - run: yarn install - - run: yarn check-links - - check-style: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 16 - cache: "yarn" - cache-dependency-path: yarn.lock - - run: yarn install - - run: yarn style - vale: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: errata-ai/vale-action@reviewdog - with: - fail_on_error: true - debug: true - env: - # Required, set by GitHub actions automatically: - # https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index d2aabaecb7..0000000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Deploy documentation -on: - push: - branches: - - main - -jobs: - build-deploy: - runs-on: ubuntu-20.04 - name: build and deploy to Netlify - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 16 - cache: "yarn" - cache-dependency-path: yarn.lock - - name: Publish - uses: netlify/actions/build@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - NETLIFY_CMD: vuepress build . - NETLIFY_DIR: .vuepress/dist - - scrape-docs: - needs: build-deploy - runs-on: ubuntu-20.04 - name: scrape and push content on Meilisearch instance - steps: - - uses: actions/checkout@v3 - - name: Run docs-scraper - env: - HOST_URL: ${{ secrets.MEILISEARCH_HOST_URL }} - API_KEY: ${{ secrets.MEILISEARCH_API_KEY }} - CONFIG_FILE_PATH: ${{ github.workspace }}/.vuepress/docs-scraper/docs-scraper.config.json - run: | - docker run -t --rm \ - -e MEILISEARCH_HOST_URL=$HOST_URL \ - -e MEILISEARCH_API_KEY=$API_KEY \ - -v $CONFIG_FILE_PATH:/docs-scraper/config.json \ - getmeili/docs-scraper:v0.12.2 pipenv run ./docs_scraper config.json diff --git a/.github/workflows/scraper.yml b/.github/workflows/scraper.yml new file mode 100644 index 0000000000..0709bc02ff --- /dev/null +++ b/.github/workflows/scraper.yml @@ -0,0 +1,58 @@ +name: Deploy to main & run scraper +on: + push: + branches: + - main + +jobs: + trigger-deploy: + runs-on: ubuntu-22.04 + steps: + - name: Ping the deployment hook + run: | + response="$(curl -X POST ${{ secrets.DEPLOY_HOOK }})" + timestamp="$(jq -r ".job.createdAt" <<< "$response")" + echo "timestamp=$timestamp" >> $GITHUB_OUTPUT + + await-deploy: + needs: trigger-deploy + runs-on: ubuntu-22.04 + steps: + - env: + TIMESTAMP: ${{ needs.trigger-deploy.outputs.timestamp }} + TEAM_ID: team_okdUhHpKkohHXyqJWQOuloqC + APP_NAME: website + name: Wait for deployment + run: | + for i in {1..25}; do + sleep 30 + response=$(curl -s -X GET "https://api.vercel.com/v6/deployments?app=$APP_NAME&teamId=$TEAM_ID&since=$TIMESTAMP" -H "Authorization: Bearer ${{ secrets.VERCEL_TOKEN }}") + status=$(echo "$response" | jq -r '.deployments[0] | .state // ""') + if [[ $status == "READY" ]]; then + ready_deployment_url=$(echo "$response" | jq -r '.deployments[0] | .url // ""') + echo "Deployment is ready at $ready_deployment_url" + break + elif [[ $status == "ERROR" || $status == "CANCELED" ]]; then + echo "Deployment failed with status $status" + exit 1 # exit with a failure status code + fi + echo "Deployment is not ready yet, retrying..." + done + + scrape-docs: + needs: await-deploy + runs-on: ubuntu-20.04 + name: scrape and push content on Meilisearch instance + steps: + - uses: actions/checkout@v3 + - name: Run docs-scraper + env: + HOST_URL: ${{ secrets.MEILISEARCH_HOST_URL }} + API_KEY: ${{ secrets.MEILISEARCH_API_KEY }} + CONFIG_FILE_PATH: ${{ github.workspace }}/docs-scraper.config.json + run: | + docker run -t --rm \ + -e MEILISEARCH_HOST_URL=$HOST_URL \ + -e MEILISEARCH_API_KEY=$API_KEY \ + -v $CONFIG_FILE_PATH:/docs-scraper/config.json \ + getmeili/docs-scraper:v0.12.8 pipenv run ./docs_scraper config.json diff --git a/.github/workflows/update-copyright.yml b/.github/workflows/update-copyright.yml deleted file mode 100644 index 9d2a5b4130..0000000000 --- a/.github/workflows/update-copyright.yml +++ /dev/null @@ -1,9 +0,0 @@ -name: Update copyright year(s) in license file - -on: workflow_dispatch - -jobs: - run: - runs-on: ubuntu-latest - steps: - - uses: FantasticFiasco/action-update-license-year@v1 diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc deleted file mode 100644 index e8f1d533fc..0000000000 --- a/.markdownlint.jsonc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "MD013": false, // line-length Line length [Expected: 80; Actual: 119] - "MD001": false, // heading-increment/header-increment Heading levels should only increment by one level at a time - "MD026": {"punctuation": ".,;:。,;"}, // no-trailing-punctuation Trailing punctuation in headings except ? and ! - "MD014": false, // commands-show-output Dollar signs used before commands without showing output - "MD024": false, // no-duplicate-heading/no-duplicate-header - "MD040": false, // fenced-code-language Fenced code blocks should have a language specified - "MD033": false, // no-inline-html Inline HTML - "MD049": { "style": "underscore" }, // enforce use of underscore for em/italics - "MD050": { "style": "asterisk" }, // enforce use of asterisk for strong/bold - "MD051": false -} diff --git a/.markdownlintignore b/.markdownlintignore deleted file mode 100644 index 186404081d..0000000000 --- a/.markdownlintignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -.vuepress -public diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index 8351c19397..0000000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -14 diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 3e17a9c413..0000000000 --- a/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -.yarn/ -.github/ -public/ diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index ecd26f6787..0000000000 --- a/.prettierrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "always", - "semi": false, - "bracketSpacing": true, - "trailingComma": "es5", - "printWidth": 80 - } diff --git a/.vale.ini b/.vale.ini deleted file mode 100644 index dc3f3775e6..0000000000 --- a/.vale.ini +++ /dev/null @@ -1,7 +0,0 @@ -StylesPath = .vale/styles -MinAlertLevel = suggestion - -Vocab = word_list - -[*.md] -BasedOnStyles = Meilisearch diff --git a/.vale/styles/Meilisearch/British.yml b/.vale/styles/Meilisearch/British.yml deleted file mode 100644 index 5f76b6e1a2..0000000000 --- a/.vale/styles/Meilisearch/British.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -# Suggestion: Meilisearch.British.yml -# Checks for American spelling -# -extends: substitution -message: 'Use the American spelling "%s" instead of the British "%s".' -link: https://about.gitlab.com/handbook/communication/#top-misused-terms -level: suggestion -ignorecase: true -swap: - analyse: analyze - behaviour: behavior - centre: center - colour: color - dependant: dependent - favourite: favorite - initialled: initialed - initialling: initialing - labelling: labeling - labelled: labeled - programme: program - licence: license - cancelled: canceled - cancellation: cancelation diff --git a/.vale/styles/Meilisearch/FirstPerson.yml b/.vale/styles/Meilisearch/FirstPerson.yml deleted file mode 100644 index cbd032df24..0000000000 --- a/.vale/styles/Meilisearch/FirstPerson.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -# Suggestion: Meilisearch.FirstPerson - -# We want to avoid using singular first person pronouns -extends: existence -message: "Avoid first-person pronouns such as '%s' unless writing FAQs" -link: 'https://developers.google.com/style/pronouns#personal-pronouns' -ignorecase: true -level: suggestion -scope: sentence -nonword: true -tokens: - - (?:^|\s)I\s - - (?:^|\s)I,\s - - \bI'm\b - - \bme\b - - \bmy\b - - \bmine\b diff --git a/.vale/styles/Meilisearch/Headings.yml b/.vale/styles/Meilisearch/Headings.yml deleted file mode 100644 index 7c6b45bd4f..0000000000 --- a/.vale/styles/Meilisearch/Headings.yml +++ /dev/null @@ -1,60 +0,0 @@ ---- -# Suggestion: Meilisearch.Headings.yml - -# Our headings should use sentence-style capitalization. The exceptions include any headings that maybe a list, start with "Step 1: Do this", and the list of words below -extends: capitalization -message: "'%s' should use sentence-style capitalization." -link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings' -level: suggestion -scope: heading -match: $sentence -indicators: - - ':' - - '.' -exceptions: - - Azure - - CLI - - Code - - Docker - - SDK - - SDKs - - Kubernetes - - Linux - - macOS - - Marketplace - - MongoDB - - TypeScript - - URLs - - Visual - - VS - - Windows - - Meilisearch - - AWS - - Amazon Web Services - - DigitalOcean - - GCP - - Qovery - - GCP - - Google Cloud Platform - - Compute Engine - - GitHub - - JSON - - API - - VuePress - - OpenAPI - - Elasticsearch - - Algolia - - DevOps - - Lucene-Solr - - App Service Auto-Scale - - Certbot - - Bleve & Tantivy - - Google Cloud Console - - AMIs - - Droplet - - "(.*?)" #ignore words in quotes - - '\b\s[0-9]:\s[A-Z]' # Step 1: Do this - - '[0-9]\.\s[A-Z]' # 1. Do this - - 'v[0-9][.][0-9]{1,2}' # e.g. v0.17 - - PRs - - PR diff --git a/.vale/styles/Meilisearch/Indexing.yml b/.vale/styles/Meilisearch/Indexing.yml deleted file mode 100644 index ac7b4e4105..0000000000 --- a/.vale/styles/Meilisearch/Indexing.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# Error: Meilisearch.indexing.yml - -# Most dictionaries still list "indexation" as a term with a very specific meaning in economy so we should use “indexing” -extends: substitution -message: "Use '%s' instead of '%s'." -level: warning -swap: - indexation: indexing - \ No newline at end of file diff --git a/.vale/styles/Meilisearch/LatinTerms.yml b/.vale/styles/Meilisearch/LatinTerms.yml deleted file mode 100644 index ff7f5cbc87..0000000000 --- a/.vale/styles/Meilisearch/LatinTerms.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -# Error: Meilisearch.LatinTerms.yml - -# Avoid Latin terms like `i.e.` and `e.g.` as everyone does not understand them -extends: substitution -message: "Use '%s' instead of '%s', but consider rewriting the sentence." -link: https://developers.google.com/style/abbreviations#dont-use -level: warning -nonword: true -ignorecase: true -swap: - e\.g\.: for example - e\. g\.: for example - e\.g: for example - i\.e\.: that is - i\. e\.: that is - i\.e: that is diff --git a/.vale/styles/Meilisearch/MergeConflictMarkers.yml b/.vale/styles/Meilisearch/MergeConflictMarkers.yml deleted file mode 100644 index b3f4e915c8..0000000000 --- a/.vale/styles/Meilisearch/MergeConflictMarkers.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Error: Meilisearch.MergeConflictMarkers.yml - -# Checks for the presence of merge conflict markers. -extends: existence -message: 'Merge conflict marker "%s" found.' -link: https://docs.gitlab.com/ee/development/code_review.html#merging-a-merge-request -level: error -scope: raw -raw: - - '\n<<<<<<< .+\n|\n=======\n|\n>>>>>>> .+\n' - \ No newline at end of file diff --git a/.vale/styles/Meilisearch/OxfordComma.yml b/.vale/styles/Meilisearch/OxfordComma.yml deleted file mode 100644 index 1f417aa9dd..0000000000 --- a/.vale/styles/Meilisearch/OxfordComma.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -# Suggestion: Meilisearch.OxfordComma.yml - -# Use the Oxford comma, this may not work as intended for complex sentences with many commas -extends: existence -message: "Use the Oxford comma in '%s'." -link: 'https://developers.google.com/style/commas' -scope: sentence -level: suggestion -tokens: - - '(?:[^,]+,){1,}\s\w+\s(?:and|or)' diff --git a/.vale/styles/Meilisearch/Periods.yml b/.vale/styles/Meilisearch/Periods.yml deleted file mode 100644 index ef87111dab..0000000000 --- a/.vale/styles/Meilisearch/Periods.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Suggestion: Meilisearch.Period.yml - -# Don't use periods with acronyms. "H.T.M.L" is incorrect, HTML isn't - -extends: existence -message: "Don't use periods with acronyms or initialisms such as '%s'." -link: 'https://developers.google.com/style/abbreviations' -level: suggestion -nonword: true -tokens: - - '\b(?:[A-Z]\.){3,}' diff --git a/.vale/styles/Meilisearch/Repetition.yml b/.vale/styles/Meilisearch/Repetition.yml deleted file mode 100644 index 4dfab6f844..0000000000 --- a/.vale/styles/Meilisearch/Repetition.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# Error: Meilisearch.Repetition.yml - -# catch any instances of repeated words. E.g., "This is is a sentence" -extends: repetition -message: "'%s' is repeated." -level: error -alpha: true -tokens: - - '[^\s]+' \ No newline at end of file diff --git a/.vale/styles/Meilisearch/Semicolons.yml b/.vale/styles/Meilisearch/Semicolons.yml deleted file mode 100644 index d9783b4425..0000000000 --- a/.vale/styles/Meilisearch/Semicolons.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Suggestion: Meilisearch.Semicolons.yml - -# If your sentence uses a semicolon, you should break it into two sentences or rewrite it to avoid super long sentences. -extends: existence -message: "Use semicolons judiciously." -link: 'https://developers.google.com/style/semicolons' -nonword: true -scope: sentence -level: suggestion -tokens: - - ';' diff --git a/.vale/styles/Meilisearch/SentenceLength.yml b/.vale/styles/Meilisearch/SentenceLength.yml deleted file mode 100644 index f1d57f3764..0000000000 --- a/.vale/styles/Meilisearch/SentenceLength.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Warning: Meilisearch.SentenceLength - -# Counts words in a sentence and alerts if a sentence exceeds 40 words. -extends: occurrence -message: 'Shorter sentences improve readability (max 40 words).' -scope: sentence -link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language -level: warning -max: 40 -token: \b(\w+)\b - diff --git a/.vale/styles/Meilisearch/Spacing.yml b/.vale/styles/Meilisearch/Spacing.yml deleted file mode 100644 index 85f1479e72..0000000000 --- a/.vale/styles/Meilisearch/Spacing.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# Error: Meilisearch.Spacing.yml - -# Use a space between words, sentences, and punctuation marks -extends: existence -message: "'%s' should have one space." -link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods -level: error -nonword: true -tokens: - - '[a-z]\s{2,}[a-z]' # ensure only one space between words - - '[a-z][.?!:;",] {2,}[A-Z]' # one space between sentences (end. new) - - '[a-z][.?!:;",][A-Z]' #(end.new) - - '[\w.?!,\(\)\-":] {2,}[\w.?!,\(\)\-":]' #only one space after ,.? - \ No newline at end of file diff --git a/.vale/styles/Meilisearch/Spelling.yml b/.vale/styles/Meilisearch/Spelling.yml deleted file mode 100644 index 659f118efa..0000000000 --- a/.vale/styles/Meilisearch/Spelling.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -# Warning: Meilisearch.Spelling.yml - -# Checks if your words exist in the dictionary. Any exceptions (including Meilisearch) should be defined in `styles/Vocab/word_list/accept.txt` -extends: spelling -message: "Did you really mean '%s'?" -level: warning -filters: - - 'Vale.*\b' diff --git a/.vale/styles/Meilisearch/Typos.yml b/.vale/styles/Meilisearch/Typos.yml deleted file mode 100644 index 1dbe80e354..0000000000 --- a/.vale/styles/Meilisearch/Typos.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Error: Meilisearch.Typos.yml - -# Lists any possible typos and the correct spelling -extends: substitution -message: "Use '%s' instead of '%s'." -level: error -swap: - MeiliSearch: Meilisearch - MieliSearch: Meilisearch - meiliSearch: Meilisearch - od: of diff --git a/.vale/styles/Meilisearch/URLFormat.yml b/.vale/styles/Meilisearch/URLFormat.yml deleted file mode 100644 index f1a7187fcb..0000000000 --- a/.vale/styles/Meilisearch/URLFormat.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -# Warning: Meilisearch.URLFormat.yml - -# Use "a URL"/"an HTML" instead of "an URL"/"a HTML" -extends: substitution -message: "Use '%s' instead of '%s'." -ignorecase: true -level: warning -action: - name: replace -swap: - URL for: URL of - an URL: a URL - a HTML: an HTML diff --git a/.vale/styles/Vocab/word_list/accept.txt b/.vale/styles/Vocab/word_list/accept.txt deleted file mode 100644 index 36e8e594d9..0000000000 --- a/.vale/styles/Vocab/word_list/accept.txt +++ /dev/null @@ -1,105 +0,0 @@ -Meilisearch -[Ss]ubroute -[Ss]ubstring -uid -jq -Qovery -Koyeb -Vue -[Gg]eosearch -Nginx -Docxtemplater -[Cc]onfig -Algolia -Typesense -Symfony -Laravel -Strapi -[Ss]chemaless -[Rr]eindexed -chatbox -Lucene -Levenshtein -Swiftype -[Tt]okenizer -[Tt]okenization -[Aa]sync -[Ee]nqueued -[Ff]ilepath -[Ww]ebshop -boolean -Taj -Mahal -[Cc]ertbot -[Tt]oolchain -Jieba -Lindera -Netlify -[Oo]verconsumption -[Gg]eopositioning -hanzi -[Aa]utobatching -[Ii]mpactful -[Ll]owercased -[Mm]ultitenancy -[Rr]ulesets -[Pp]repended -[Aa]nonymized -[Ss]erverless -[Aa]utoscaling -[Hh]ostname -Scaleway -cron -mkcert -[Uu]pvote -Docsearch -[Oo]rderable -[Pp]erformant -Nutch -[Ss]ubproject -Doofinder -'/\(\B(.*?)\)' -[Ss]harding -[Mm]eili -jsonlines -Biutiful -Gb -docs-searchbar.js -SDKs -SSDs -HDDs -[Ss]egmenter -Niqqud -IMDb -UIs -JWTs -APIs -AMIs -[Cc]ancelation -Brotli -zlib -datetime -GZip -videogame -gcp -Maneu -Hoxie -Bleve -Yonik -Seeley -MBs -url -masterKey -SDK's -Bardem -LMDB's -vogli -belgium -Radford's -Palo -glibc -autogenerate -[toc] -[Uu]pvoting -faq -npm diff --git a/.vale/styles/Vocab/word_list/reject.txt b/.vale/styles/Vocab/word_list/reject.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/.vuepress/code-samples/CHANGELOG.md b/.vuepress/code-samples/CHANGELOG.md deleted file mode 100644 index 3fb819e78d..0000000000 --- a/.vuepress/code-samples/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -## v0.1.1 - -- Changed examples in add_or_replace_documents_1 diff --git a/.vuepress/code-samples/README.MD b/.vuepress/code-samples/README.MD deleted file mode 100644 index 6984e061f1..0000000000 --- a/.vuepress/code-samples/README.MD +++ /dev/null @@ -1,93 +0,0 @@ -# CODE-SAMPLES - -Code-sample is a Meilisearch VuePress plugin that gathers sample files and adds them to the documentation. - -Each official Meilisearch SDK should provide a filled sample file in their respective language. The files are fetched by the documentation on each build (*see next chapter*). -Each sample of the file is added to the right place in the documentation, depending on its `sampleId`. - -## Sample files - -The sample file is a yaml file at the root of each Meilisearch SDK. -Sample files are created based on the `sample-template.yaml` file. - -`sample-template` file: -```yaml -get_one_index_1: |- -list_all_indexes_1: |- -create_an_index_1: |- -... -``` - -This file is accessible publicly [here](https://docs.meilisearch.com/sample-template.yaml) or in the public directory: `.vuepress/public/sample-template.yaml`. - -Each official Meilisearch SDK should have a sample file at its root with filled with samples in their respective language. -The name of the file should be `.code-samples.meilisearch.yaml`. - -JavaScript example: -```yaml -get_one_index_1: |- - client.getIndex('movies').show() -list_all_indexes_1: |- - client.listIndexes() -create_an_index_1: |- - client.createIndex({ uid: 'movies' }) - ... -``` - -The complete `cURL` sample is available at the root of the documentation repository. -Every other SDK sample should be available at the root of their respective repository. - -## Samples - -By the name of the `sampleId`, you should know where that code sample will be added to the documentation. Based on the `cURL` example or directly by going to the right place in the documentation, you should see what is expected from that sample. - -Each sample is expected to be **written in the respective SDK language**. - -There is **one exception** to this rule. -When the sampleId finishes with `_md`, it means it is expected to be written in markdown format. - -### Example - -JavaScript sample id: -```yaml - get_one_index_1: |- - client.getIndex('movies').show() -``` -JavaScript sample id with _md extension: -![javascript sample file](../public/misc/yaml-js-example.png) - -## Add your sample files to the documentation - -Access the following file -`.vuepress/code-samples/sdks.json` - -And add your sample file to the list: -```json -[ - … - { - "language": "sdk-language", - "label": "sdk-label", - "url": "url to yaml file" - } -] -``` - -The `language` key expect a [supported language for the code highlight](https://meta.stackexchange.com/a/335336). - -The `label` key is the name of the tab. While `label` and `language` could have been the same, it created some conflict (i.e: `bash` and `cURL`). - -The `url` is the raw link to access your sample file. It should look like this: -`https://raw.githubusercontent.com/[PROJECT]/[REPO]/.code-samples.meilisearch.yaml` - -### Development mode - -When the documentation is running in development mode: `yarn dev`, the fetching is only done on the local sample file that contains the `cURL` examples. - - -### Report page - -When building the website using `yarn build`, we generate a file reporting the missing code sample IDs in the different SDKs. This file is called `missing-samples.report.md` and is located at the root of the `.vuepress/code-samples` directory. - -You can access it using the `/sample-report` route. - diff --git a/.vuepress/code-samples/client.js b/.vuepress/code-samples/client.js deleted file mode 100644 index ef49a746a9..0000000000 --- a/.vuepress/code-samples/client.js +++ /dev/null @@ -1,10 +0,0 @@ -import CodeSamples from './components/codeSamples' -import Vuex from 'vuex' -import store from './store' - -export default function (ctx) { - const { Vue } = ctx - Vue.use(Vuex) - Vue.mixin({ store: store }) - Vue.component('CodeSamples', CodeSamples) -} diff --git a/.vuepress/code-samples/components/codeSamples.vue b/.vuepress/code-samples/components/codeSamples.vue deleted file mode 100644 index 1db3b2b11c..0000000000 --- a/.vuepress/code-samples/components/codeSamples.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/.vuepress/code-samples/fetch-utils.js b/.vuepress/code-samples/fetch-utils.js deleted file mode 100644 index 0d66f08dbc..0000000000 --- a/.vuepress/code-samples/fetch-utils.js +++ /dev/null @@ -1,56 +0,0 @@ -const chalk = require('chalk') -const fs = require('fs') -const yaml = require('js-yaml') -const path = require('path') - -/* - * Convert YAML string to Js object - * Throw a precise error on parsing fail. - */ -function sampleYamlToJs(body, sdk) { - try { - return yaml.safeLoad(body) - } catch (e) { - throw new Error(`The sample file of ${sdk.label} SDK cannot be converted to JSON - SDK: ${sdk.label}, - url: ${sdk.url} - - ${e.stack}`) - } -} - -/* - * Pretty console log function - */ -const log = (msg, color = 'FFB4E1', label = 'CODE-SAMPLE-FETCHER') => { - console.log(`\n${chalk.reset.inverse.bold.hex(color)(` ${label} `)} ${msg}`) -} - -const logInFile = (msg) => { - fs.appendFileSync( - path.join(__dirname, 'missing-samples-report.md'), - msg + '\n' - ) -} - -const initLogFile = () => { - fs.writeFileSync(path.join(__dirname, 'missing-samples-report.md'), '# Code samples state\n') -} - -/* - * Writes file in JSON format - */ -function samplesToFiles(samples) { - fs.writeFileSync( - path.join(__dirname, 'generated-samples.json'), - JSON.stringify(samples, null, 2) - ) -} - -module.exports = { - log, - logInFile, - samplesToFiles, - sampleYamlToJs, - initLogFile, -} diff --git a/.vuepress/code-samples/fetch.js b/.vuepress/code-samples/fetch.js deleted file mode 100644 index b5ccb24ee1..0000000000 --- a/.vuepress/code-samples/fetch.js +++ /dev/null @@ -1,106 +0,0 @@ -const sdks = require('./sdks.json') -const bent = require('bent') -const { log, logInFile, samplesToFiles, sampleYamlToJs, initLogFile } = require('./fetch-utils') -const fs = require('fs') - -/* - * Fetches only cURL samples from local directory - */ -function readLocalSample() { - const cURLPath = `${process.cwd()}/.code-samples.meilisearch.yaml` - const curlSamples = fs.readFileSync(cURLPath, 'utf-8') - return [ - { - samples: sampleYamlToJs(curlSamples, { - url: cURLPath, - label: 'cURL', - }), - language: 'bash', - label: 'cURL', - }, - ] -} - -function fetchLocalSample(options, ctx) { - log('Fetching local file...') - const sample = readLocalSample() - log('Fetched local cURL file.') - samplesToFiles(sample) - log('Json sample file created.') -} - -/** - * Fetches all yaml file based on a list of SDK repositories URL's - */ -async function requestSamples() { - const fetchPromises = sdks.map(async (sdk) => { - try { - const body = await bent(sdk.url, 'GET', 'string')() - return { - samples: sampleYamlToJs(body, sdk), - language: sdk.language, - label: sdk.label, - cacheableTab: sdk.cacheableTab, - ignoreInSamplesReport: sdk.ignoreInSamplesReport, - } - } catch (e) { - // Crashes are not thrown. File will be ignored and warning raised - log( - `Warning: the sample file could not be fetched - SDK: ${sdk.label}, - url: ${sdk.url} - - ${e.stack}`, - '#FF0000' - ) - } - }) - return await Promise.all(fetchPromises) -} - -async function testPresenceOfSamples(languageSamples) { - const rawTemplate = fs.readFileSync(`${process.cwd()}/.vuepress/public/sample-template.yaml`, 'utf-8') - const template = sampleYamlToJs(rawTemplate, { label: 'template', url: 'local' }) - const allSampleIds = Object.keys(template) - - let titles = '| Sample ids |' - let tableStructure = '| -- |' - const lines = [] - - const relevantLanguageSamples = languageSamples.filter(sdk => !sdk.ignoreInSamplesReport) - relevantLanguageSamples.map(sdk => { - titles = titles += `${sdk.label} |` - tableStructure += '--|' - }) - - allSampleIds.map((sampleId) => { - let line = `| \`${sampleId}\` |` - - relevantLanguageSamples.map(sdk => { - if (Object.keys(sdk.samples).includes(sampleId)) { - line += '✅ |' - } else { - line += '❌ |' - } - }) - lines.push(line) - }) - - logInFile('\n') - logInFile(titles) - logInFile(tableStructure) - logInFile(lines.join('\n')) -} - -async function fetchRemoteSamples() { - initLogFile() - log('Fetching remote sample files...') - const samples = (await requestSamples()).filter((sample) => sample) - samplesToFiles(samples) - testPresenceOfSamples(samples) -} - -module.exports = { - fetchRemoteSamples, - fetchLocalSample, -} diff --git a/.vuepress/code-samples/index.js b/.vuepress/code-samples/index.js deleted file mode 100644 index 46e21a18bc..0000000000 --- a/.vuepress/code-samples/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const path = require('path') -const renderSamples = require('./render') -const { fetchRemoteSamples, fetchLocalSample } = require('./fetch') - -module.exports = (options, context) => { - return { - async ready() { - // To try the code-sample generation in local mode, please comment out the if condition but leave its content. - if (context.isProd) { - await fetchRemoteSamples() - } - }, - name: 'fetch-sample-files', - define() { - // To try the code-sample generation in local mode, please comment out the whole if condition. - if (!context.isProd) { - fetchLocalSample() - } - const samples = require('./generated-samples.json') - return { - CODE_SAMPLES: renderSamples(samples), - } - }, - enhanceAppFiles: [path.resolve(__dirname, './client.js')], - additionalPages: [ - { - path: '/sample-report/', - filePath: path.resolve(__dirname, 'missing-samples-report.md'), - frontmatter: { - pageClass: 'sample-report-class', // see `.vuepress/styles/index.styl - }, - }, - ], - } -} diff --git a/.vuepress/code-samples/missing-samples-report.md b/.vuepress/code-samples/missing-samples-report.md deleted file mode 100644 index 6db5764465..0000000000 --- a/.vuepress/code-samples/missing-samples-report.md +++ /dev/null @@ -1,164 +0,0 @@ -# Code samples state - - -| Sample ids |cURL |JS |Python |PHP |Java |Ruby |Go |C# |Rust |Swift |Dart | -| -- |--|--|--|--|--|--|--|--|--|--|--| -| `get_one_index_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `list_all_indexes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `create_an_index_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_an_index_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `delete_an_index_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_one_document_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_documents_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `add_or_replace_documents_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `add_or_update_documents_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `delete_all_documents_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `delete_one_document_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `delete_documents_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `search_post_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_all_tasks_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_task_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_all_tasks_paginating_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_all_tasks_paginating_2` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_one_key_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_all_keys_1` |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ | -| `create_a_key_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_a_key_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `delete_a_key_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_synonyms_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_synonyms_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_synonyms_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_stop_words_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_stop_words_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_stop_words_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_ranking_rules_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_ranking_rules_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_ranking_rules_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_distinct_attribute_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_distinct_attribute_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_distinct_attribute_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_searchable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_searchable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_searchable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_filterable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_filterable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_filterable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_displayed_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_displayed_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_displayed_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_index_stats_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_indexes_stats_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_health_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `get_version_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `distinct_attribute_guide_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `field_properties_guide_searchable_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `field_properties_guide_displayed_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `filtering_guide_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `filtering_guide_2` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `filtering_guide_3` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `filtering_guide_nested_1` |✅ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `search_parameter_guide_query_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `search_parameter_guide_offset_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `search_parameter_guide_limit_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `search_parameter_guide_hitsperpage_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `search_parameter_guide_page_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `search_parameter_guide_retrieve_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `search_parameter_guide_crop_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `search_parameter_guide_highlight_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `search_parameter_guide_show_matches_position_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_add_documents_md` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_search_md` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_check_task_status` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_update_stop_words` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_synonyms` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_update_displayed_attributes` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_communicating_with_a_protected_instance` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_update_ranking_rules` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_update_searchable_attributes` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_add_meteorites` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_configure_settings` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_geo_radius` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_geo_point` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_sorting` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `getting_started_filtering` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `faceted_search_update_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `faceted_search_filter_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `faceted_search_facets_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `faceted_search_walkthrough_filter_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `add_movies_json_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `post_dump_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `phrase_search_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `sorting_guide_update_sortable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `sorting_guide_update_ranking_rules_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `sorting_guide_sort_parameter_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `sorting_guide_sort_parameter_2` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `sorting_guide_sort_nested_1` |✅ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `get_sortable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `update_sortable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `reset_sortable_attributes_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `search_parameter_guide_sort_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `geosearch_guide_filter_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `geosearch_guide_filter_usage_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `geosearch_guide_filter_usage_2` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `geosearch_guide_sort_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `geosearch_guide_sort_usage_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `geosearch_guide_sort_usage_2` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `authorization_header_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `security_guide_create_key_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `security_guide_list_keys_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `security_guide_update_key_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `security_guide_delete_key_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `security_guide_search_key_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `primary_field_guide_create_index_primary_key` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `primary_field_guide_add_document_primary_key` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `primary_field_guide_update_document_primary_key` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ | -| `tenant_token_guide_search_no_sdk_1` |✅ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `tenant_token_guide_generate_sdk_1` |❌ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ | -| `tenant_token_guide_search_sdk_1` |❌ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ | -| `tenant_token_guide_fragment_rules_1` |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `tenant_token_guide_fragment_key_1` |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `tenant_token_guide_fragment_expiry_1` |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `get_typo_tolerance_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |❌ |❌ | -| `update_typo_tolerance_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |❌ |❌ | -| `reset_typo_tolerance_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |❌ |❌ | -| `typo_tolerance_guide_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |❌ |❌ | -| `typo_tolerance_guide_2` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |❌ |❌ | -| `typo_tolerance_guide_3` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |❌ |❌ | -| `typo_tolerance_guide_4` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |❌ |❌ | -| `updating_guide_check_version_new_authorization_header` |✅ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `updating_guide_check_version_old_authorization_header` |✅ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `updating_guide_get_displayed_attributes_old_authorization_header` |✅ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `updating_guide_reset_displayed_attributes_old_authorization_header` |✅ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `updating_guide_create_dump` |✅ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `getting_started_typo_tolerance` |✅ |❌ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ |✅ | -| `get_pagination_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ | -| `update_pagination_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ | -| `reset_pagination_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ | -| `get_faceting_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ | -| `update_faceting_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ | -| `reset_faceting_settings_1` |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |✅ |❌ |✅ | -| `synonyms_guide_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `getting_started_faceting` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `getting_started_pagination` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `getting_started_front_end_integration_md` |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | -| `search_parameter_guide_matching_strategy_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `search_parameter_guide_matching_strategy_2` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `date_guide_index_1` |✅ |✅ |✅ |✅ |❌ |✅ |❌ |❌ |✅ |❌ |✅ | -| `date_guide_filterable_attributes_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `date_guide_filter_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `date_guide_sortable_attributes_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `date_guide_sort_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |❌ |✅ |❌ |✅ | -| `async_guide_filter_by_date_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `async_guide_canceled_by_1` |✅ |✅ |✅ |✅ |❌ |✅ |❌ |✅ |✅ |❌ |❌ | -| `async_guide_multiple_filters_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `async_guide_filter_by_ids_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `async_guide_filter_by_statuses_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `async_guide_filter_by_types_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `async_guide_filter_by_index_uids_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `cancel_tasks_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `delete_tasks_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `swap_indexes_1` |✅ |✅ |✅ |✅ |❌ |✅ |✅ |✅ |✅ |❌ |✅ | -| `get_something_1` |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ |❌ | diff --git a/.vuepress/code-samples/render.js b/.vuepress/code-samples/render.js deleted file mode 100644 index 48680f8a45..0000000000 --- a/.vuepress/code-samples/render.js +++ /dev/null @@ -1,52 +0,0 @@ -const vuepressmd = require('@vuepress/markdown')() - -function codeBlockWrapper(sample, language) { - // remove if the text is `This code sample has not been added yet :(` - return `\`\`\` ${language}\n${sample}\n\`\`\`` -} - -function renderCodeSample({ sampleBody, sampleId, language }) { - if (!sampleId.match(/.*_md$/)) { - sampleBody = codeBlockWrapper(sampleBody, language) - } - const htmlRender = vuepressmd.render(sampleBody) - return htmlRender.html -} - -module.exports = function (fetchedSamples) { - /** This reduce creates an object containing all samples-id with a list of the samples in the different languages - ex: codeSamples = { - create_index_1 : [ - { languages: "bash", code: "`$ curl -X GET 'http://localhost:7700/indexes", label: "curl" }, - { languages: "javascript", code: "client.createIndex('movie')", label: "javascript" } - ] - } - **/ - return fetchedSamples.reduce((allSamples, sampleSet) => { - const { samples, language, label, cacheableTab, ignoreInSamplesReport } = sampleSet - - for (const sampleId in samples) { - const sampleBody = samples[sampleId] - - if (sampleBody) { - const previousSamples = allSamples[sampleId] || [] - - allSamples[sampleId] = [ - ...previousSamples, - { - language, // language identifier. Ex: csharp - label, // label appearing on the tab - cacheableTab, // Wether the tab can be set as preferred tab in the local storage - ignoreInSamplesReport, // Wether to log if code-samples are missing in their file - code: renderCodeSample({ // render in HTML - sampleBody, - sampleId, - language, // code block language ex: ```javascript ```` - }), - }, - ] - } - } - return allSamples - }, {}) -} diff --git a/.vuepress/code-samples/sdks.json b/.vuepress/code-samples/sdks.json deleted file mode 100644 index f985563daf..0000000000 --- a/.vuepress/code-samples/sdks.json +++ /dev/null @@ -1,97 +0,0 @@ -[ - { - "language": "bash", - "cacheableTab": true, - "label": "cURL", - "url": "https://raw.githubusercontent.com/meilisearch/documentation/main/.code-samples.meilisearch.yaml" - }, - { - "language": "javascript", - "cacheableTab": true, - "label": "JS", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-js/main/.code-samples.meilisearch.yaml" - }, - { - "language": "python", - "cacheableTab": true, - "label": "Python", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-python/main/.code-samples.meilisearch.yaml" - }, - { - "language": "php", - "cacheableTab": true, - "label": "PHP", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-php/main/.code-samples.meilisearch.yaml" - }, - { - "language": "java", - "cacheableTab": true, - "label": "Java", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-java/main/.code-samples.meilisearch.yaml" - }, - { - "language": "ruby", - "cacheableTab": true, - "label": "Ruby", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-ruby/main/.code-samples.meilisearch.yaml" - }, - { - "language": "go", - "cacheableTab": true, - "label": "Go", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-go/main/.code-samples.meilisearch.yaml" - }, - { - "language": "csharp", - "cacheableTab": true, - "label": "C#", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-dotnet/main/.code-samples.meilisearch.yaml" - }, - { - "language": "rust", - "cacheableTab": true, - "label": "Rust", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-rust/main/.code-samples.meilisearch.yaml" - }, - { - "language": "swift", - "cacheableTab": true, - "label": "Swift", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-swift/main/.code-samples.meilisearch.yaml" - }, - { - "language": "dart", - "cacheableTab": true, - "label": "Dart", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-dart/main/.code-samples.meilisearch.yaml" - }, - { - "language": "javascript", - "cacheableTab": false, - "ignoreInSamplesReport": true, - "label": "Vanilla JS", - "comment_not_used_field": "This scope is `instant-meilisearch` and not meilisearch-js. We cannot name if `instant-meilisearch` because we neet to stay consistent with `Vue` and `React` naming", - "url": "https://raw.githubusercontent.com/meilisearch/instant-meilisearch/main/.code-samples.meilisearch.yaml" - }, - { - "language": "javascript", - "cacheableTab": false, - "ignoreInSamplesReport": true, - "label": "React", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-react/main/.code-samples.meilisearch.yaml" - }, - { - "language": "javascript", - "cacheableTab": false, - "ignoreInSamplesReport": true, - "label": "Vue.js", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-vue/main/.code-samples.meilisearch.yaml" - }, - { - "language": "javascript", - "cacheableTab": false, - "ignoreInSamplesReport": true, - "label": "Vue3.js", - "url": "https://raw.githubusercontent.com/meilisearch/meilisearch-vue/main/.code-samples-vue-3.meilisearch.yaml" - } -] diff --git a/.vuepress/code-samples/store.js b/.vuepress/code-samples/store.js deleted file mode 100644 index 5ef0df33ce..0000000000 --- a/.vuepress/code-samples/store.js +++ /dev/null @@ -1,33 +0,0 @@ -import Vue from 'vue' -import Vuex from 'vuex' - -Vue.use(Vuex) - -const DEFAULT_LABEL = 'cURL' -const STORAGE_KEY = 'preferredTab' - -const initialTab = () => { - if (typeof window !== 'undefined') { - return localStorage.getItem(STORAGE_KEY) || DEFAULT_LABEL - } else { - return DEFAULT_LABEL - } -} -export default new Vuex.Store({ - state: { - // Uses the stored tab in the local storage - // if it does not exists, default to `cURL` - preferredTab: initialTab(), - }, - mutations: { - changePreferredTab(state, tab) { - // Adds the preferred tab to the local storage - if (typeof window !== 'undefined') { - localStorage.setItem(STORAGE_KEY, tab) - } - - // Updates the tab. It will reflect on all code-samples tabs - state.preferredTab = tab - }, - }, -}) diff --git a/.vuepress/components/MovieGif.vue b/.vuepress/components/MovieGif.vue deleted file mode 100644 index 33d3393e20..0000000000 --- a/.vuepress/components/MovieGif.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - - diff --git a/.vuepress/components/RouteHighlighter.vue b/.vuepress/components/RouteHighlighter.vue deleted file mode 100644 index 8a8f346dc5..0000000000 --- a/.vuepress/components/RouteHighlighter.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - - - diff --git a/.vuepress/components/linkButton.vue b/.vuepress/components/linkButton.vue deleted file mode 100644 index 2e7b9ddbdd..0000000000 --- a/.vuepress/components/linkButton.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/.vuepress/config-path-checker/README.md b/.vuepress/config-path-checker/README.md deleted file mode 100644 index 1c12c54fb4..0000000000 --- a/.vuepress/config-path-checker/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Config path checker - -This local plugin checks inside the routing of `config.js` every chosen predicate. - -These are the current predicates: - -### Parent's paths must contains a trailing HTML extension - -This predicate only applies to elements that have children. - -For example: - -```js - { - title: 'Settings', - path: '/reference/api/settings.html', // Must contain an html extension - collapsable: false, - children: [ - { - title: 'All Settings', - path: '/reference/api/settings', // Should not contain an html extension - }, - '/reference/api/displayed_attributes', - ], - } -``` diff --git a/.vuepress/config-path-checker/find-and-check.js b/.vuepress/config-path-checker/find-and-check.js deleted file mode 100644 index 225ba5dc07..0000000000 --- a/.vuepress/config-path-checker/find-and-check.js +++ /dev/null @@ -1,46 +0,0 @@ -const { isObject } = require('./utils') -const { addError } = require('./result-report') -const path = require('path') - -// Check if the path validates the predicates -function checkPathValidity(parentPath, elem) { - // Check for a trailing html extension - if (parentPath.slice(-5) !== '.html') { - const origin = (elem && elem.title) ? `section ${elem.title}` : 'config.json' - addError.call(this, { - type: 'error', - errMsg: `In ${origin} the path is missing the trailing html extension`, - fileUrl: path.join(process.cwd(), '/.vuepress/config.js'), - fullText: `path: '${parentPath}'`, - path: parentPath, - }) - } -} - -function findParentPath(element) { - // If the element is not an object it cannot contain a `path` key - if (isObject(element)) { - // Will only check the path of the current element if it has childs. - if (element.path && element.children) { - checkPathValidity.call(this, element.path, element) - } - if (element.children) { - findChilds.call(this, element.children) - } - } -} - -// Crawl inside elements to find childs -function findChilds(element) { - if (Array.isArray(element)) { - element.map((child) => findParentPath.call(this, child)) - } else if (isObject(element)) { - findParentPath.call(this, element) - } -} - -module.exports = { - checkPathValidity, - findParentPath, - findChilds, -} diff --git a/.vuepress/config-path-checker/index.js b/.vuepress/config-path-checker/index.js deleted file mode 100644 index f2766a4502..0000000000 --- a/.vuepress/config-path-checker/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const chalk = require('chalk') -const path = require('path') -const { displayReport, createReportResult } = require('./result-report') -const { isObject } = require('./utils') -const { findChilds } = require('./find-and-check') - -const defaultOptions = { - exitLevel: 'warn', -} - -const log = (msg, color = 'blue', label = 'CONFIG-PATH-CHECKER') => - console.log(`\n${chalk.reset.inverse.bold[color](` ${label} `)} ${msg}`) - -module.exports = (opt = {}) => { - const relatifConfigPath = path.relative(__dirname, './.vuepress/config.js') - const config = require(relatifConfigPath) - const options = { ...defaultOptions, ...opt } - const result = { - warning: createReportResult({ - msgFn(r) { - return `${r.list.length} warning was found` - }, - type: 'warn', - }), - error: createReportResult({ - msgFn(r) { - return `${r.list.length} missing trailing html extension` - }, - type: 'error', - }), - } - - return { - name: 'check-config-paths', - extendCli(cli) { - cli - .command( - 'check-config-paths', - 'Checks for trailing html extension in vuepress paths with childs' - ) - .action(() => { - const sidebar = config.themeConfig.sidebar - // Output information to distinguish with check-md - log('Checking for missing trailing html extensions in parent\'s path...') - if (isObject(sidebar)) { - Object.keys(sidebar).map((key) => { - findChilds.call(result, sidebar[key]) - }) - } - displayReport(result, options) - }) - }, - } -} diff --git a/.vuepress/config-path-checker/result-report.js b/.vuepress/config-path-checker/result-report.js deleted file mode 100644 index 0e4e2d0822..0000000000 --- a/.vuepress/config-path-checker/result-report.js +++ /dev/null @@ -1,107 +0,0 @@ -const chalk = require('chalk') -const fs = require('fs') -const configFile = fs.readFileSync('./.vuepress/config.js', 'utf-8').split('\n') -const LOG_LEVELS = { - none: 0, - info: 1, - warn: 2, - error: 3, -} - -function createReportResult({ type, msgFn }) { - return { - type, - list: [], - get msg() { - return msgFn(this) - }, - } -} - -function convertErrMsg(obj) { - return ( - `\n${ - obj.type === 'error' - ? chalk.red(obj.msg) - : obj.type === 'warn' - ? chalk.yellow(obj.msg) - : obj.msg - }\n\n` + - obj.list - .map( - (item) => - ` ${chalk.red(item.errMsg)}: ${item.fullText} ${chalk.gray( - `(${item.fileUrl}:${item.line}:${item.column})` - )}` - ) - .join('\n') + - '\n' - ) -} - -function displayReport(result, options) { - const errorLevels = [] - - Object.keys(result).forEach((k) => { - /** @type {ReportResult} */ - const item = result[k] - if (!item.list.length) { - return - } - - const level = LOG_LEVELS[item.type] - errorLevels.push(level) - if (level > LOG_LEVELS.none) { - console[item.type](convertErrMsg(item)) - } - }) - - // should not exit if exitLevel is none - const exitLevel = LOG_LEVELS[options.exitLevel.toLowerCase()] - if ( - exitLevel !== LOG_LEVELS.none && - errorLevels.find((level) => level >= exitLevel) - ) { - console.error(chalk.red('Checking failed\n')) - process.exit(1) - } else { - console.info(chalk.green('Checking passed\n')) - } -} - -function getLineAndColumn(path) { - const found = configFile.reduce((acc, curr, index) => { - // regex to match word path and its associated path on the same line - const regex = new RegExp('path.*' + path + '[^/].*', 'g') - const found = curr.match(regex) - if (!(found == null)) { - return [...acc, { line: curr, index }] - } - return acc - }, []) - // I will only take the first matched path to reduce complexity of code - return { - line: found[0].index, - column: found[0].line.indexOf(path), - } -} - -function addError({ path, errMsg, fileUrl, fullText }) { - const { line, column } = getLineAndColumn(path) - - this.error.list.push({ - type: 'error', - errMsg, - fileUrl, - fullText, - line, - column, - }) -} - -module.exports = { - createReportResult, - displayReport, - getLineAndColumn, - addError, -} diff --git a/.vuepress/config-path-checker/utils.js b/.vuepress/config-path-checker/utils.js deleted file mode 100644 index b44ed1eea8..0000000000 --- a/.vuepress/config-path-checker/utils.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - isObject: function (element) { - if (!Array.isArray(element) && element instanceof Object) { - return true - } - return false - }, -} diff --git a/.vuepress/config.js b/.vuepress/config.js deleted file mode 100644 index 7beb576d80..0000000000 --- a/.vuepress/config.js +++ /dev/null @@ -1,604 +0,0 @@ -const ogprefix = 'og: http://ogp.me/ns#' -module.exports = { - title: 'Meilisearch Documentation v1.1', - description: 'Open source Instant Search Engine', - theme: 'default-prefers-color-scheme', - themeConfig: { - docsRepo: 'meilisearch/documentation', - docsBranch: 'main', - editLinks: true, - logo: '/logo.svg', - sidebarDepth: 1, - smoothScroll: true, - - nav: [ - { text: 'Learn', link: '/learn/getting_started/quick_start' }, - { text: 'Reference', link: '/reference/api/overview' }, - { text: 'FAQ', link: '/faq' }, - { - text: 'Integrations', - items: [ - { - text: 'SDKs', - items: [ - { text: '.NET', link: 'https://github.com/meilisearch/meilisearch-dotnet' }, - { text: 'Dart', link: 'https://github.com/meilisearch/meilisearch-dart' }, - { text: 'Golang', link: 'https://github.com/meilisearch/meilisearch-go' }, - { text: 'Java', link: 'https://github.com/meilisearch/meilisearch-java' }, - { text: 'JavaScript', link: 'https://github.com/meilisearch/meilisearch-js' }, - { text: 'PHP', link: 'https://github.com/meilisearch/meilisearch-php' }, - { text: 'Python', link: 'https://github.com/meilisearch/meilisearch-python' }, - { text: 'Ruby', link: 'https://github.com/meilisearch/meilisearch-ruby' }, - { text: 'Rust', link: 'https://github.com/meilisearch/meilisearch-rust' }, - { text: 'Swift', link: 'https://github.com/meilisearch/meilisearch-swift' }, - ], - }, - { - text: 'Frameworks', - items: [ - { text: 'Rails', link: 'https://github.com/meilisearch/meilisearch-rails' }, - { text: 'Laravel', link: 'https://github.com/laravel/scout' }, - { text: 'Symfony', link: 'https://github.com/meilisearch/meilisearch-symfony' }, - ], - }, - { - text: 'Front-end tools', - items: [ - { text: 'instant-meilisearch', link: 'https://github.com/meilisearch/instant-meilisearch' }, - { text: 'docs-searchbar.js', link: 'https://github.com/meilisearch/docs-searchbar.js' }, - ], - }, - { - text: 'Plugins', - items: [ - { text: 'Gatsby', link: 'https://github.com/meilisearch/gatsby-plugin-meilisearch/' }, - { text: 'Vuepress', link: 'https://github.com/meilisearch/vuepress-plugin-meilisearch' }, - { text: 'Strapi', link: 'https://github.com/meilisearch/strapi-plugin-meilisearch/' }, - { text: 'Firebase', link: 'https://github.com/meilisearch/firestore-meilisearch' }, - ], - }, - { - text: 'DevOps tools', - items: [ - { text: 'Kubernetes', link: 'https://github.com/meilisearch/meilisearch-kubernetes' }, - { text: 'DigitalOcean', link: 'https://github.com/meilisearch/meilisearch-digitalocean' }, - { text: 'GCP', link: 'https://github.com/meilisearch/meilisearch-gcp' }, - { text: 'AWS', link: 'https://github.com/meilisearch/meilisearch-aws' }, - ], - }, - ], - }, - { - text: 'More Meilisearch', - items: [ - { text: 'GitHub', link: 'https://github.com/meilisearch/meilisearch' }, - { text: 'Discord', link: 'https://discord.gg/meilisearch' }, - { text: 'Blog', link: 'https://blog.meilisearch.com/' }, - { text: 'Awesome Meilisearch', link: 'https://github.com/meilisearch/awesome-meilisearch' }, - { text: 'meilisearch.com', link: 'https://meilisearch.com' }, - ], - }, - ], - sidebar: { - '/learn/': [ - { - title: '🔎 What is Meilisearch?', - path: '/learn/what_is_meilisearch/overview.html', - collapsable: false, - sidebarDepth: 0, - children: [ - { - title: 'Overview', - path: '/learn/what_is_meilisearch/overview', - }, - '/learn/what_is_meilisearch/features', - '/learn/what_is_meilisearch/philosophy', - '/learn/what_is_meilisearch/sdks', - '/learn/what_is_meilisearch/comparison_to_alternatives', - '/learn/what_is_meilisearch/telemetry', - '/learn/what_is_meilisearch/search_preview', - '/learn/what_is_meilisearch/language', - '/learn/what_is_meilisearch/contact', - ], - }, - { - title: '🚀 Getting started', - path: '/learn/getting_started/quick_start.html', - collapsable: false, - children: [ - '/learn/getting_started/installation', - '/learn/getting_started/supported_os', - '/learn/getting_started/quick_start', - { - title: 'Meilisearch 101', - path: '/learn/getting_started/filtering_and_sorting.html', - collapsable: false, - children: [ - '/learn/getting_started/filtering_and_sorting', - '/learn/getting_started/customizing_relevancy', - '/learn/getting_started/getting_ready_for_production', - ], - }, - ], - }, - { - title: '💡 Core concepts', - path: '/learn/core_concepts/documents.html', - collapsable: false, - children: [ - '/learn/core_concepts/documents', - '/learn/core_concepts/indexes', - '/learn/core_concepts/relevancy', - '/learn/core_concepts/primary_key', - ], - }, - { - title: '⚙️ Configuration', - collapsable: false, - path: '/learn/configuration/instance_options.html', - children: [ - { - title: 'Configure Meilisearch at launch', - path: '/learn/configuration/instance_options', - }, - { - title: 'Index settings', - collapsable: false, - path: '/learn/configuration/settings.html', - children: [ - { - title: 'Overview', - path: '/learn/configuration/settings', - }, - '/learn/configuration/distinct', - '/learn/configuration/displayed_searchable_attributes', - '/learn/configuration/synonyms', - '/learn/configuration/typo_tolerance', - ], - }, - ], - }, - { - title: '🔐 Security and permissions', - collapsable: false, - path: '/learn/security/master_api_keys.html', - children: [ - '/learn/security/master_api_keys', - '/learn/security/tenant_tokens', - ], - }, - { - title: '🔢 Update and migration', - path: '/learn/update_and_migration/updating.html', - collapsable: false, - children: [ - { - title: 'Updating Meilisearch', - path: '/learn/update_and_migration/updating', - }, - { - title: 'Migrating from Algolia', - path: '/learn/update_and_migration/algolia_migration', - }, - '/learn/update_and_migration/versioning', - '/learn/update_and_migration/previous_docs_version', - ], - }, - { - title: '📚 Advanced topics', - path: '/learn/advanced/asynchronous_operations.html', - collapsable: false, - children: [ - '/learn/advanced/asynchronous_operations', - '/learn/advanced/filtering', - '/learn/advanced/faceted_search', - '/learn/advanced/geosearch', - '/learn/advanced/pagination', - '/learn/advanced/sorting', - '/learn/advanced/working_with_dates', - { - title: 'Data backup', - collapsable: false, - children: [ - { - title: 'Snapshots vs dumps', - path: '/learn/advanced/snapshots_vs_dumps', - }, - { - title: 'Dumps', - path: '/learn/advanced/dumps', - }, - { - title: 'Snapshots', - path: '/learn/advanced/snapshots', - }, - ], - }, - { - title: 'Inner workings', - collapsable: false, - children: [ - '/learn/advanced/concat', - '/learn/advanced/datatypes', - '/learn/advanced/indexing', - '/learn/advanced/known_limitations', - '/learn/advanced/prefix', - '/learn/advanced/storage', - '/learn/advanced/tokenization', - ], - }, - ], - }, - { - title: '📕 Cookbooks', - path: '/learn/cookbooks/running_production.html', - collapsable: false, - children: [ - { - title: 'Run in production', - path: '/learn/cookbooks/running_production', - }, - { - title: 'Use with Postman', - path: '/learn/cookbooks/postman_collection', - }, - { - title: 'Use with Docker', - path: '/learn/cookbooks/docker', - }, - { - title: 'Add a search bar to your docs', - path: '/learn/cookbooks/search_bar_for_docs', - }, - { - title: 'Set up HTTP/2 and SSL', - path: '/learn/cookbooks/http2_ssl', - }, - { - title: 'Deployment', - collapsable: false, - sidebarDepth: 0, - children: [ - { - title: 'Deploy on AWS', - path: '/learn/cookbooks/aws', - }, - { - title: 'Deploy on Azure', - path: '/learn/cookbooks/azure', - }, - { - title: 'Deploy on GCP', - path: '/learn/cookbooks/gcp', - }, - { - title: 'Deploy on DigitalOcean', - path: '/learn/cookbooks/digitalocean_droplet', - }, - { - title: 'Deploy on Railway', - path: '/learn/cookbooks/railway', - }, - { - title: 'Deploy on Koyeb', - path: '/learn/cookbooks/koyeb', - }, - { - title: 'Deploy on Qovery', - path: '/learn/cookbooks/qovery', - }, - ], - }, - ], - }, - { - title: '🧪 Experimental', - path: '/learn/experimental/metrics.html', - collapsable: false, - children: [ - '/learn/experimental/metrics', - ], - }, - { - title: '👐 Contributing', - path: '/learn/contributing/overview.html', - collapsable: false, - children: [ - { - title: 'Overview', - path: '/learn/contributing/overview', - }, - { - title: 'Contributing to the docs', - path: '/learn/contributing/contributing_to_docs', - }, - ], - }, - ], - '/reference/': [ - { - title: '📒 API reference', - path: '/reference/api/overview.html', - collapsable: false, - children: [ - { - title: 'Overview', - path: '/reference/api/overview', - }, - '/reference/api/indexes', - '/reference/api/documents', - '/reference/api/search', - '/reference/api/multi_search', - '/reference/api/tasks', - '/reference/api/keys', - '/reference/api/settings', - '/reference/api/stats', - '/reference/api/health', - '/reference/api/version', - '/reference/api/dump', - ], - }, - { - title: '❌ Errors', - path: '/reference/errors/overview.html', - collapsable: false, - children: [ - { - title: 'Status codes and Meilisearch errors', - path: '/reference/errors/overview', - }, - { - title: 'Error codes', - path: '/reference/errors/error_codes', - }, - ], - }, - ], - }, - }, - plugins: [ - [ - 'check-md', - { - pattern: '**/*.md', - strictExt: true, - ignoreFilePattern: ['document_structure'], - ignoreHashPattern: ['actions-2', 'primary-key-2', 'query-parameters-2', 'query-parameters-3', 'body-2', 'body-3', 'phrase-search-2'], - exitLevel: 'warn', - }, - ], - ['sitemap', { hostname: 'https://docs.meilisearch.com' }], - ['seo', {}], - 'img-lazy', - // Because colors can not be set through the settings of the plugin - // Change are done in .vuepress/styles/palette.styl - '@bidoubiwa/vuepress-plugin-element-tabs', - ['vuepress-plugin-container', { type: 'note' }], - [require('./config-path-checker')], - [require('./custom-markdown-rules')], - [require('./code-samples')], - [ - 'vuepress-plugin-code-copy', - { - color: '#FF5CAA', - staticIcon: true, - }, - ], - [ - 'meilisearch', - { - hostUrl: 'https://ms-5894428564fa-173.lon.meilisearch.io', - apiKey: - '06UKvqod16fff6018934c85a4d393534b1b96cd6c3a5ee492bcd4a4e720e26fb24ef1cbb', - indexUid: 'docs', - placeholder: 'Press \'s\' or \'/\' to search', - enableDarkMode: 'auto', // Default: false - }, - ], - [ - 'vuepress-plugin-zooming', - { - selector: '.theme-default-content img', - delay: 1000, - options: { - bgColor: 'black', - zIndex: 10000, - }, - }, - ], - ], - head: [ - ['link', { rel: 'icon', href: '/favicon-32x32.png' }], - ['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }], - ['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com' }], - ['link', { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800&display=swap' }], - ['meta', { charset: 'utf-8' }], - [ - 'meta', - { name: 'viewport', content: 'width=device-width, initial-scale=1' }, - ], - [ - 'meta', - { - property: 'google-site-verification', - content: 'u0OYrst4u5F16t0Vh4-EkO_sWE38Pp9aT7idfr0Ar9c', - }, - ], - [ - 'meta', - { - prefix: ogprefix, - property: 'og:title', - content: 'Meilisearch Documentation', - }, - ], - ['meta', { prefix: ogprefix, property: 'og:type', content: 'website' }], - [ - 'meta', - { - prefix: ogprefix, - property: 'og:url', - content: 'http://docs.meilisearch.com', - }, - ], - [ - 'meta', - { - prefix: ogprefix, - property: 'og:image', - content: - 'https://res.cloudinary.com/meilisearch/image/upload/v1582134509/og-image_dlbsnb_vmbpxo.png', - }, - ], - [ - 'meta', - { - prefix: ogprefix, - property: 'og:image-secure-url', - content: - 'https://res.cloudinary.com/meilisearch/image/upload/v1582134509/og-image_dlbsnb_vmbpxo.png', - }, - ], - [ - 'meta', - { - prefix: ogprefix, - property: 'og:image-image-type', - content: 'image/png', - }, - ], - ['meta', { prefix: ogprefix, property: 'og:image-height', content: '630' }], - ['meta', { prefix: ogprefix, property: 'og:locale', content: 'en_GB' }], - [ - 'meta', - { - prefix: ogprefix, - property: 'og:site-name', - content: 'Meilisearch Documentation', - }, - ], - [ - 'meta', - { property: 'twitter:title', content: 'Meilisearch Documentation' }, - ], - [ - 'meta', - { - property: 'twitter:description', - content: 'The official documentation of Meilisearch', - }, - ], - [ - 'meta', - { - property: 'twitter:image', - content: - 'https://res.cloudinary.com/meilisearch/image/upload/v1582134509/og-image_dlbsnb_vmbpxo.png', - }, - ], - [ - 'meta', - { - property: 'twitter:card', - content: 'summary_large_image', - }, - ], - [ - 'meta', - { - property: 'twitter:image:alt', - content: 'Next generation search API', - }, - ], - ['meta', { property: 'twitter:site', content: '@meilisearch' }], - [ - 'script', - {}, - ` - window.$crisp=[]; - window.CRISP_WEBSITE_ID="38a71dd2-729c-4970-b061-3e1db1c1eb20"; - (function() { - var d=document; - var s=d.createElement("script"); - s.src="https://client.crisp.chat/l.js"; - s.async=1; - d.getElementsByTagName("head")[0].appendChild(s); - })(); - `, - ], - [ - 'script', - {}, - ` - (function(h,o,t,j,a,r){ - h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; - h._hjSettings={hjid:2013731,hjsv:6}; - a=o.getElementsByTagName('head')[0]; - r=o.createElement('script');r.async=1; - r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; - a.appendChild(r); - })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - `, - ], - [ - 'script', - { - src: 'https://cdn.usefathom.com/script.js', - spa: 'auto', - site: 'WIMXMDAA', - defer: true, - }, - ], - [ - 'script', - { - src: 'https://thrilling-thirtyeight.meilisearch.com/script.js', - spa: 'auto', - site: 'QNBPJXIV', - defer: true, - }, - ], - [ - 'script', - {}, - ` - (function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement("script") - ;r.type="text/javascript" - ;r.integrity="sha384-girahbTbYZ9tT03PWWj0mEVgyxtZoyDF9KVZdL+R53PP5wCY0PiVUKq0jeRlMx9M" - ;r.crossOrigin="anonymous";r.async=true - ;r.src="https://cdn.amplitude.com/libs/amplitude-7.2.1-min.gz.js" - ;r.onload=function(){if(!e.amplitude.runQueuedFunctions){ - console.log("[Amplitude] Error: could not load SDK")}} - ;var i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i) - ;function s(e,t){e.prototype[t]=function(){ - this._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}} - var o=function(){this._q=[];return this} - ;var a=["add","append","clearAll","prepend","set","setOnce","unset"] - ;for(var u=0;u ({ - chainMarkdown(config) { - config.options - .linkify(true) // Autoconvert URL-like text to links - .breaks(true) // Convert '\n' in paragraphs into
- }, -}) diff --git a/.vuepress/docs-scraper/docs-scraper.config.json b/.vuepress/docs-scraper/docs-scraper.config.json deleted file mode 100644 index 77896479c4..0000000000 --- a/.vuepress/docs-scraper/docs-scraper.config.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "index_uid": "docs", - "sitemap_urls": ["https://docs.meilisearch.com/sitemap.xml"], - "start_urls": ["https://docs.meilisearch.com"], - "selectors": { - "lvl0": { - "selector": ".sidebar-heading.open", - "global": true, - "default_value": "Documentation" - }, - "lvl1": ".theme-default-content h1", - "lvl2": ".theme-default-content h2", - "lvl3": ".theme-default-content h3", - "lvl4": ".theme-default-content h4", - "lvl5": ".theme-default-content h5", - "text": ".theme-default-content p, .theme-default-content li, .theme-default-content td" - }, - "strip_chars": " .,;:#", - "scrap_start_urls": true, - "custom_settings": { - "synonyms": { - "relevancy": ["relevant", "relevance"], - "relevant": ["relevancy", "relevance"], - "relevance": ["relevancy", "relevant"] - } - } -} diff --git a/.vuepress/enhanceApp.js b/.vuepress/enhanceApp.js deleted file mode 100644 index 1204447566..0000000000 --- a/.vuepress/enhanceApp.js +++ /dev/null @@ -1,22 +0,0 @@ -export default ({ router }) => { - // Replaces the underscores (_) in the anchors on error_codes to hypens (-) - // example: - // before: /reference/errors/error_codes.html#dump_not_found - // after: /reference/errors/error_codes.html#dump-not-found - router.beforeEach((to, from, next) => { - const { fullPath } = to - - // matches error_codes anchors that contains underscore instead of hypens - const matches = fullPath.match(/\/reference\/errors\/error_codes\.html#([^-]+)$/) - if (matches && matches[1]) { - const underscoreAnchor = matches[1] - const hypenAnchor = matches[1].replace(/_/g, '-') - const newUrl = fullPath.replace(underscoreAnchor, hypenAnchor) - - // redirects to newUrl - next({ path: newUrl }) - } else { - next() - } - }) -} diff --git a/.vuepress/public/_redirects b/.vuepress/public/_redirects deleted file mode 100644 index a6b03d79d9..0000000000 --- a/.vuepress/public/_redirects +++ /dev/null @@ -1,212 +0,0 @@ -# Redirects from old site to new -/guides / -/guides/introduction /learn/getting_started/quick_start.html -/guides/introduction/quick_start_guide.html /learn/getting_started/quick_start.html -/guides/introduction/whats_next.html /learn/getting_started/quick_start.html -/guides/main_concepts /learn/core_concepts/documents.html -/guides/main_concepts/indexes.html /learn/core_concepts/indexes.html -/guides/main_concepts/documents.html /learn/core_concepts/documents.html -/guides/main_concepts/search.html /learn/what_is_meilisearch/features.html -/guides/main_concepts/relevancy.html /learn/core_concepts/relevancy.html -/guides/advanced_guides/installation.html /learn/getting_started/installation.html -/guides/advanced_guides/configuration.html /learn/configuration/instance_options.html -/guides/advanced_guides/search_parameters.html /reference/api/search.html -/guides/advanced_guides/filtering.html /learn/advanced/filtering.html -/guides/advanced_guides/faceted_search.html /learn/advanced/faceted_search.html -/guides/advanced_guides/authentication.html /learn/security/master_api_keys.html -/guides/advanced_guides/asynchronous_updates.html /learn/advanced/asynchronous_operations.html -/guides/advanced_guides/web_interface.html /learn/what_is_meilisearch/search_preview.html -/guides/advanced_guides/datatypes.html /learn/advanced/datatypes.html -/guides/advanced_guides/settings.html /learn/configuration/settings.html -/guides/advanced_guides/synonyms.html /learn/configuration/synonyms.html -/guides/advanced_guides/stop_words.html /reference/api/settings.html -/guides/advanced_guides/distinct.html /learn/configuration/distinct.html -/guides/advanced_guides/snapshots_and_dumps.html /learn/advanced/snapshots_vs_dumps.html -/guides/advanced_guides/field_properties.html /learn/configuration/displayed_searchable_attributes.html -/guides/advanced_guides/typotolerance.html /learn/configuration/typo_tolerance.html -/guides/advanced_guides/prefix.html /learn/advanced/prefix.html -/guides/advanced_guides/concat.html /learn/advanced/concat.html -/guides/advanced_guides/bucket_sort.html /learn/core_concepts/relevancy.html#behavior -/guides/advanced_guides/known_limitations.html /learn/advanced/known_limitations.html -/guides/advanced_guides/tokenization.html /learn/advanced/tokenization.html -/references /reference/api/overview.html -/references/indexes.html /reference/api/indexes.html -/references/documents.html /reference/api/documents.html -/references/search.html /reference/api/search.html -/references/updates.html /reference/api/tasks.html -/references/keys.html /reference/api/keys.html -/references/settings.html /reference/api/settings.html -/references/synonyms.html /reference/api/settings.html#synonyms -/references/stop_words.html /reference/api/settings.html#stop-words -/references/ranking_rules.html /reference/api/settings.html#ranking-rules -/references/attributes_for_faceting.html /reference/api/settings.html#filterable-attributes -/references/distinct_attribute.html /reference/api/settings.html#distinct-attribute -/references/searchable_attributes.html /reference/api/settings.html#searchable-attributes -/references/displayed_attributes.html /reference/api/settings.html#displayed-attributes -/references/stats.html /reference/api/stats.html -/references/health.html /reference/api/health.html -/references/version.html /reference/api/version.html -/references/dumps.html /reference/api/dumps.html -/resources /learn/cookbooks/running_production.html -/resources/about_storage.html /learn/advanced/storage.html -/resources/sdks.html /learn/what_is_meilisearch/sdks.html -/resources/comparison_to_alternatives.html /learn/what_is_meilisearch/comparison_to_alternatives.html -/resources/postman_collection.html /learn/cookbooks/postman_collection.html -/resources/contact.html /learn/what_is_meilisearch/contact.html -/resources/tutorials /learn/getting_started/quick_start.html -/running-production /learn/cookbooks/running_production.html -/resources/howtos /learn/cookbooks/running_production.html -/instant-search-react-app https://blog.meilisearch.com/instant-search-react-app/ -/resources/howtos/digitalocean_droplet.html /learn/cookbooks/digitalocean_droplet.html -/resources/howtos/search_bar_for_docs.html /learn/cookbooks/search_bar_for_docs.html -/http2-ssl /learn/cookbooks/http2_ssl.html - -# Move language -/learn/advanced/language.html /learn/what_is_meilisearch/language.html - -# Move installation -/reference/features/installation.html /learn/getting_started/installation.html - -# Rename tutorials to getting started -/learn/tutorials /learn/getting_started/quick_start.html -/learn/tutorials/getting_started.html /learn/getting_started/quick_start.html -/learn/tutorials/whats_next.html /learn/getting_started/quick_start.html#what-s-next - -# Move FAQ and Open API -/reference/open-api /open-api-readme - -# Group filters and facets content -/reference/api/attributes_for_faceting.html /reference/api/settings.html -/reference/features/filtering.html /learn/advanced/filtering.html -/reference/features/faceted_search.html /learn/advanced/faceted_search.html - -# Rename Asynchronous updates to Asynchronous operations -/learn/advanced/asynchronous_updates.html /learn/advanced/asynchronous_operations.html - -# Rename Updates to Tasks -/reference/api/updates.html /reference/api/tasks.html - -# Move under the hood articles to /learn -/reference/under_the_hood/concat.html /learn/advanced/concat.html -/reference/under_the_hood/datatypes.html /learn/advanced/datatypes.html -/reference/under_the_hood/indexation.html /learn/advanced/indexing.html -/reference/under_the_hood/prefix.html /learn/advanced/prefix.html -/reference/under_the_hood/storage.html /learn/advanced/storage.html -/reference/under_the_hood/tokenization.html /learn/advanced/tokenization.html -/reference/under_the_hood/typotolerance.html /learn/configuration/typo_tolerance.html - -# Bucket sort -/reference/under_the_hood/bucket_sort.html /learn/core_concepts/relevancy.html#behavior - -# Move updating Meilisearch -/create/how_to/updating.html /learn/update_and_migration/updating.html - -# Move guides (filtering, sorting, geosearch) to /learn -/reference/features/filtering_and_faceted_search.html /learn/advanced/filtering_and_faceted_search.html -/reference/features/geosearch.html /learn/advanced/geosearch.html -/reference/features/sorting.html /learn/advanced/sorting.html - -# Remove Create section -/create/how_to/meilisearch_react.html https://blog.meilisearch.com/instant-search-react-app/ -/create/how_to/aws.html /learn/cookbooks/aws.html -/create/how_to/gcp.html /learn/cookbooks/gcp.html -/create/how_to/qovery.html /learn/cookbooks/qovery.html -/create/how_to/digitalocean_droplet.html /learn/cookbooks/digitalocean_droplet.html -/create/how_to/http2_ssl.html /learn/cookbooks/http2_ssl.html -/create/how_to/running_production.html /learn/cookbooks/running_production.html -/create/how_to/search_bar_for_docs.html /learn/cookbooks/search_bar_for_docs.html -/create/how_to/postman_collection.html /learn/cookbooks/postman_collection.html -/create/how_to/ /learn/cookbooks/running_production.html - -# Move Snapshots and Dumps guide -/reference/features/snapshots.html /learn/advanced/snapshots.html -/reference/features/dumps.html /learn/advanced/dumps.html - -# New errors page -/errors /reference/errors/error_codes.html - -# Rename Authentication guide -/reference/features/authentication.html /learn/security/master_api_keys.html - -# Move Security guide -/reference/features/security.html /learn/security/master_api_keys.html - -# Remove reference/features/stopwords -/reference/features/stop_words.html /reference/api/settings.html - -# Move Known limitations guide -/reference/features/known_limitations.html /learn/advanced/known_limitations.html - -# Move and rename Web interface/Search preview -/reference/featues/web_interface.html /learn/what_is_meilisearch/search_preview.html - -# Move Language guide -/reference/features/language.html /learn/what_is_meilisearch/language.html - -# Move settings, configuration, distinct, field properties, synonyms -/reference/features/configuration.html /learn/configuration/instance_options.html -/reference/features/distinct.html /learn/configuration/distinct.html -/reference/features/field_properties.html /learn/configuration/displayed_searchable_attributes.html -/reference/features/synonyms.html /learn/configuration/synonyms.html -/reference/features/settings.html /learn/configuration/settings.html - -# Remove search parameters feature reference -/reference/features/search_parameters.html /reference/api/search.html - -# Remove Feature reference -/reference/features/ /reference/api/overview.html - -# Remove What's next page -/learn/getting_started/whats_next.html /learn/getting_started/quick_start.html - -# Remove Getting Started README.md -/learn/getting_started/ /learn/getting_started/quick_start.html - -# Remove READMEs -/learn/what_is_melisearch/ /learn/what_is_meilisearch/overview.html -/learn/core_concepts/ /learn/core_concepts/documents.html -/learn/advanced/ /learn/advanced/asynchronous_operations.html -/learn/cookbooks/ /learn/cookbooks/running_production.html -/learn/contributing/ /learn/contributing/overview.html -/reference/api/ /reference/api/overview.html -/learn/ /learn/getting_started/quick_start.html -/reference/ /reference/api/overview.html - -# Create new security and permissions section -/learn/advanced/security.html /learn/security/master_api_keys.html - -# remove typo tolerance -/learn/advanced/typotolerance.html /learn/configuration/typo_tolerance.html - -# Move all settings to one page -/reference/api/displayed_attributes.html /reference/api/settings.html#displayed-attributes -/reference/api/distinct_attribute.html /reference/api/settings.html#distinct-attribute -/reference/api/faceting.html /reference/api/settings.html#faceting -/reference/api/filterable_attributes.html /reference/api/settings.html#filterable-attributes -/reference/api/pagination.html /reference/api/settings.html#pagination -/reference/api/ranking_rules.html /reference/api/settings.html#ranking-rules -/reference/api/searchable_attributes.html /reference/api/settings.html#searchable-attributes -/reference/api/sortable_attributes.html /reference/api/settings.html#sortable-attributes -/reference/api/stop_words.html /reference/api/settings.html#stop-words -/reference/api/synonyms.html /reference/api/settings.html#synonyms -/reference/api/typo_tolerance.html /reference/api/settings.html#typo-tolerance - -# Rename indexation to indexing -/learn/advanced/indexation.html /learn/advanced/indexing.html - -# Remove autobatching -/learn/experimental/auto-batching.html /learn/core_concepts/documents.html - -# New errors page -/reference/api/error_codes.html /reference/errors/error_codes.html - -# New "Update and migration" section -/learn/getting_started/algolia_migration.html /learn/update_and_migration/algolia_migration.html -/learn/advanced/updating.html /learn/update_and_migration/updating.html - -# Move faceting to a new guide -/learn/advanced/filtering_and_faceted_search.html#faceted-search /learn/advanced/faceted_search.html - -# Rename filtering guide -/learn/advanced/filtering_and_faceted_search.html /learn/advanced/filtering.html - diff --git a/.vuepress/public/digitalocean/created-droplet.png b/.vuepress/public/digitalocean/created-droplet.png deleted file mode 100644 index 949ecb14b3..0000000000 Binary files a/.vuepress/public/digitalocean/created-droplet.png and /dev/null differ diff --git a/.vuepress/public/digitalocean/creating-droplet.png b/.vuepress/public/digitalocean/creating-droplet.png deleted file mode 100644 index d5595b44ba..0000000000 Binary files a/.vuepress/public/digitalocean/creating-droplet.png and /dev/null differ diff --git a/.vuepress/public/doc-version.png b/.vuepress/public/doc-version.png deleted file mode 100644 index d178b9b08e..0000000000 Binary files a/.vuepress/public/doc-version.png and /dev/null differ diff --git a/.vuepress/public/faceted-search/multi-search.gif b/.vuepress/public/faceted-search/multi-search.gif deleted file mode 100644 index 6228d0767c..0000000000 Binary files a/.vuepress/public/faceted-search/multi-search.gif and /dev/null differ diff --git a/.vuepress/public/favicon-16x16.png b/.vuepress/public/favicon-16x16.png deleted file mode 100644 index ee91f0af3d..0000000000 Binary files a/.vuepress/public/favicon-16x16.png and /dev/null differ diff --git a/.vuepress/public/favicon-32x32.png b/.vuepress/public/favicon-32x32.png deleted file mode 100644 index 456c20e4a3..0000000000 Binary files a/.vuepress/public/favicon-32x32.png and /dev/null differ diff --git a/.vuepress/public/logo.svg b/.vuepress/public/logo.svg deleted file mode 100644 index 13fb60f2b5..0000000000 --- a/.vuepress/public/logo.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/.vuepress/public/misc/yaml-js-example.png b/.vuepress/public/misc/yaml-js-example.png deleted file mode 100644 index 7b27ce2326..0000000000 Binary files a/.vuepress/public/misc/yaml-js-example.png and /dev/null differ diff --git a/.vuepress/public/movie-gifs/truemen.jpg b/.vuepress/public/movie-gifs/truemen.jpg deleted file mode 100644 index 74d5089484..0000000000 Binary files a/.vuepress/public/movie-gifs/truemen.jpg and /dev/null differ diff --git a/.vuepress/public/movie-gifs/trumen-fast.gif b/.vuepress/public/movie-gifs/trumen-fast.gif deleted file mode 100644 index 6bd39309ef..0000000000 Binary files a/.vuepress/public/movie-gifs/trumen-fast.gif and /dev/null differ diff --git a/.vuepress/public/movie-gifs/trumen-fast.mp4 b/.vuepress/public/movie-gifs/trumen-fast.mp4 deleted file mode 100644 index 4b7427f61d..0000000000 Binary files a/.vuepress/public/movie-gifs/trumen-fast.mp4 and /dev/null differ diff --git a/.vuepress/public/movie-gifs/trumen-fast.webm b/.vuepress/public/movie-gifs/trumen-fast.webm deleted file mode 100644 index e8c05a71f0..0000000000 Binary files a/.vuepress/public/movie-gifs/trumen-fast.webm and /dev/null differ diff --git a/.vuepress/public/ranking-rules/new_house.png b/.vuepress/public/ranking-rules/new_house.png deleted file mode 100644 index a5839e2d64..0000000000 Binary files a/.vuepress/public/ranking-rules/new_house.png and /dev/null differ diff --git a/.vuepress/public/ranking-rules/words.png b/.vuepress/public/ranking-rules/words.png deleted file mode 100644 index e903cc321e..0000000000 Binary files a/.vuepress/public/ranking-rules/words.png and /dev/null differ diff --git a/.vuepress/public/react-guide/decat_before.png b/.vuepress/public/react-guide/decat_before.png deleted file mode 100644 index ff76f2e709..0000000000 Binary files a/.vuepress/public/react-guide/decat_before.png and /dev/null differ diff --git a/.vuepress/public/react-guide/decatlon.png b/.vuepress/public/react-guide/decatlon.png deleted file mode 100644 index a54d13a9ce..0000000000 Binary files a/.vuepress/public/react-guide/decatlon.png and /dev/null differ diff --git a/.vuepress/public/search-synonyms-typo.gif b/.vuepress/public/search-synonyms-typo.gif deleted file mode 100644 index d7d2a7cd9f..0000000000 Binary files a/.vuepress/public/search-synonyms-typo.gif and /dev/null differ diff --git a/.vuepress/public/tuto-searchbar-for-docs/docs-searchbar-example.png b/.vuepress/public/tuto-searchbar-for-docs/docs-searchbar-example.png deleted file mode 100644 index b4ace25ab4..0000000000 Binary files a/.vuepress/public/tuto-searchbar-for-docs/docs-searchbar-example.png and /dev/null differ diff --git a/.vuepress/styles/index.styl b/.vuepress/styles/index.styl deleted file mode 100644 index e7719441f4..0000000000 --- a/.vuepress/styles/index.styl +++ /dev/null @@ -1,268 +0,0 @@ -@import url('https://rsms.me/inter/inter.css'); - -html -body - font-family: 'Inter', sans-serif; - - -// # text color in light -h1 { - color: $accentColor; -} - -// ## and ### text color in light -h2, h3, { - font-family: "Poppins"; - color: $titlesColor; -} - -// ## and ### text color in dark -@media (prefers-color-scheme: dark) { - h2, h3 { - color: $titlesDarkColor; - } -} - -// Text color in code samples -.theme-default-content pre code, .theme-default-content pre[class*='language-'] code, -.theme-default-content code .token.punctuation { - color: $preTextColor !important; -} - -// Remove unwanted padding from headers -h1 > a.header-anchor, h2 > a.header-anchor, h3 > a.header-anchor { - padding-right: 0; -} - -// Remove underlines of links -body a { - text-decoration: none !important; -} - -// Change hover color of links -a:hover { - color: $linkHoverColor; -} - -// Dropdown from navbar -body > .nav-link:hover, body > .dropdown-title:hover - color: $accentColor; - - - -/* -* TABS -* -* Changes the color the code sample tabs -* The tabs are created using the plugin: vuepress-plugin-element-tabs -* -*/ - -.el-tabs - .el-tabs__item - padding 0 15px; - -// Non active -.el-tabs--border-card>.el-tabs__header { - color: $accentColor; -} - -// Active tabs -.el-tabs__item.is-active - color: $accentColor !important; - -.el-tabs__item:not(.is-disabled):hover - color: $accentColor !important; - -.el-tabs--border-card>.el-tabs__header { - border-radius: 0px 8px !important; - background-color: #E9E5ED !important; -} -.el-tabs__item.is-active { - border-radius: 0px 8px !important; -} - - -@media (prefers-color-scheme: dark) { - .el-tabs--border-card>.el-tabs__header { - color: $accentDarkColor; - background-color: #11071D !important; - border: 1px solid $bgDarkColor !important; - } - - .el-tabs__item.is-active { - color: $accentDarkColor !important; - background-color: #170E23 !important; - border-right: 1px solid #251D30 !important; - border-left: 1px solid #251D30 !important; - } - - // wrapper arround the code in tabs - .el-tabs { - background-color: #170E23 !important; - border: 1px solid #251D30 !important; - border-radius: 8px; - } - // Content of code - .extra-class > pre { - background-color: #11071D !important; - } -} - -.el-tabs--border-card - background-color: $codeBgColor; - -// None-active tabs on hover -.el-tabs__item:not(.is-disabled):hover - color: $accentColor !important; - -// Shadow border when going from tab to tab using the arrows of the keyboard -.el-tabs__item:focus.is-active.is-focus:not(:active) { - box-shadow: 0 0 2px 2px $accentDarkColor inset !important; -} - -/* -* -* END TABS -*/ - - -// Tips/Warning/Error blocks -.custom-block - .custom-block-title - font-weight 600; - margin-bottom -0.4rem; - &.note - padding .1rem 1.5rem; - border-left-width .5rem; - border-left-style solid; - margin 1rem 0 - &.note - background-color rgba(79, 85, 227, 0.1); - border-color #4f55e3; - -.custom-block.tip - .custom-block-title - a - color var(--badgeTipColor) - -// Clipboard logo -.code-copy - position: sticky; - left: 0px; - svg { - right: -6px; - bottom: -6px !important; - } - - - -{$contentClass} a code - color $accentColor; - -/* -** -** Docs searchbar styling (search experience) -*/ - - -.dsb-cursor .docs-searchbar-suggestion--content { - background-color: rgba(black, 10%) !important; -} - - -.docs-searchbar-suggestion--highlight { - background-color: rgba(0,0,0,0) !important; - color: $accentColor !important; -} - -// Color when hovering on focussing a hit -.meilisearch-search-wrapper .meilisearch-autocomplete .dsb-suggestion.dsb-cursor .docs-searchbar-suggestion:not(.suggestion-layout-simple) .docs-searchbar-suggestion--content { - background-color: #F1F1F9 !important; // Hover and focus over hits -} - - // TODO: change the color of the borders with: #655678 - -@media (prefers-color-scheme: light) { - .docs-searchbar-suggestion--subcategory-column-text { - color: #492E6C !important; - } - .meilisearch-autocomplete .docs-searchbar-suggestion--category-header { - color: #492E6C !important; - background-color: #E1E0EE !important; - } -} - -@media (prefers-color-scheme: dark) { - #meilisearch-search-input { - background-color: #11071D !important; - } - - .meilisearch-autocomplete .docs-searchbar-suggestion--category-header { - background-color: #11071D !important; - } - - .docs-searchbar-suggestion--highlight { - background-color: rgba(0,0,0,0) !important; - color: $accentColor !important; - } - .meilisearch-search-wrapper div[data-ds-theme="dark"] - .meilisearch-autocomplete .dsb-dropdown-menu [class^=dsb-dataset-], - .meilisearch-search-wrapper div[data-ds-theme="dark"] - .meilisearch-autocomplete .docs-searchbar-suggestion { - background-color: $bgDarkColor !important; - } - - .dsb-dataset-1, .dsb-dropdown-menu{ - background-color: $bgDarkColor !important; - border: 1px solid $bgDarkColor; - } - - .meilisearch-search-wrapper .meilisearch-autocomplete .dsb-suggestion.dsb-cursor .docs-searchbar-suggestion:not(.suggestion-layout-simple) .docs-searchbar-suggestion--content { - background-color: #2A2234 !important; // Hover and focus over hits - } - - // TODO: change the color of the borders with: #655678 -} - -.sample-report-class table thead{ - background-color: $bgColor; - position: sticky !important; - top: 0px !important; - } - -@media (prefers-color-scheme: light) { - .sample-report-class table thead{ - background-color: $bgColor; - position: sticky !important; - top: 0px !important; - } -} - -@media (prefers-color-scheme: dark) { - .sample-report-class table thead{ - background-color: $bgDarkColor; - position: sticky !important; - top: 0px !important; - } -} - - -.sample-report-class .theme-default-content{ - max-width: 100%; -} - -.sample-report-class table { - position: relative; - display: table; -} - -.sample-report-class thead{ - position: sticky !important; - top: 0px !important; -} - -.sample-report-class header { - display: none; -} - diff --git a/.vuepress/styles/palette.styl b/.vuepress/styles/palette.styl deleted file mode 100644 index 1011e2e558..0000000000 --- a/.vuepress/styles/palette.styl +++ /dev/null @@ -1,57 +0,0 @@ -$contentClass = '.theme-default-content' -// All variable that can impact the color of the documentation can be found here: -// https://github.com/tolking/vuepress-theme-default-prefers-color-scheme/blob/master/styles/palette.styl - -// Color of links () across the documentation -$accentColor = #FF5CAA -$linkHoverColor = #D94E91 -$accentDarkColor = #FF85BF - -// for ##, ###, #### headers -$titlesColor = #4F55E3 -$titlesDarkColor = #7B80EA - -// Text color of code samples. Same both in light and dark mode -$preTextColor ?= #FAFBFE - -// Color of text throughout the documentation -$textColor = #261A59 -$textDarkColor = #FAFBFE - -// Background color of documentation -$bgColor = #f9f8ff -$bgDarkColor = #1D1428 - -// Background of code block with 3 backticks ``` -$codeBgLightColor = #282c34 -$codeBgColor ?= #FAFBFE - -// Color of borders -$borderColor = #E9E5ED -$borderDarkColor = #352A43 - -// Border of tables for example the `response body` inside the API references -$tableBorderColor = #dfe2e5 -$tableBorderDarkColor = $borderDarkColor - -// Color of background of code inside simple ticks `` -// Remove `?` to apply color -$miniCodeBgColor ?= rgba(27,31,35,0.05) -$miniCodeBgDarkColor ?= rgba(255,255,255,0.1) - - -// BADGES: note, warning, etc.. - -$tipBgColor = rgba(66, 185, 131, 0.1) -$tipBgDarkColor = rgba(66, 185, 131, 0.1) - -$warningColor = darken(#e7c000, 30%) -$warningDarkColor ?= $warningColor - -$warningBgColor = rgba(255, 229, 100, 0.3) -$warningBgDarkColor = rgba(185, 174, 119, 0.2) - -$dropdownBgDarkColor = #333a3e // Usefull when updating doc-searchbar - -$tableStripeBgColor = #EDEEF7 -$tableStripeBgDarkColor = #423553 diff --git a/README.markdown b/README.md similarity index 72% rename from README.markdown rename to README.md index 5c2d11525e..bfcdb94d8e 100644 --- a/README.markdown +++ b/README.md @@ -1,6 +1,6 @@

- - + +

Meilisearch Documentation

@@ -9,13 +9,14 @@
Website | Roadmap | Blog | - Documentation | - FAQ | + Documentation | + FAQ | Discord - + This repository is the documentation for the **open-source search engine API [Meilisearch](https://github.com/meilisearch/meilisearch)**. @@ -23,14 +24,13 @@ This repository is the documentation for the **open-source search engine API [Me Hey, thank you so much for wanting to contribute! If you'd like to help improve this documentation, we'd love to have you! -For more information, see the [contributing overview](/learn/contributing/overview.md). - +For more information, see the [contributing overview](/learn/contributing/overview.mdx). ## Contact Feel free to contact us about any questions you may have: -- Join our [Slack community](https://slack.meilisearch.com/). +- Join our [Discord community](https://discord.gg/meilisearch). - Open an [issue](https://github.com/meilisearch/documentation/issues)! Any suggestion or feedback is highly appreciated. Thank you for your support! diff --git a/.vuepress/public/books.json b/assets/datasets/books.json similarity index 99% rename from .vuepress/public/books.json rename to assets/datasets/books.json index 7f6d311cb8..663e6c5901 100644 --- a/.vuepress/public/books.json +++ b/assets/datasets/books.json @@ -142,4 +142,4 @@ "format": "Hardcover", "rating": 4 } -] +] \ No newline at end of file diff --git a/.vuepress/public/meteorites.json b/assets/datasets/meteorites.json similarity index 100% rename from .vuepress/public/meteorites.json rename to assets/datasets/meteorites.json diff --git a/.vuepress/public/movies.json b/assets/datasets/movies.json similarity index 100% rename from .vuepress/public/movies.json rename to assets/datasets/movies.json diff --git a/.vuepress/public/restaurants.json b/assets/datasets/restaurants.json similarity index 100% rename from .vuepress/public/restaurants.json rename to assets/datasets/restaurants.json diff --git a/.vuepress/public/videogames.json b/assets/datasets/videogames.json similarity index 100% rename from .vuepress/public/videogames.json rename to assets/datasets/videogames.json diff --git a/.vuepress/public/aws/01.launch-instances.png b/assets/images/aws/01.launch-instances.png similarity index 100% rename from .vuepress/public/aws/01.launch-instances.png rename to assets/images/aws/01.launch-instances.png diff --git a/.vuepress/public/aws/02.select-ami.png b/assets/images/aws/02.select-ami.png similarity index 100% rename from .vuepress/public/aws/02.select-ami.png rename to assets/images/aws/02.select-ami.png diff --git a/.vuepress/public/aws/03.size-and-specs.png b/assets/images/aws/03.size-and-specs.png similarity index 100% rename from .vuepress/public/aws/03.size-and-specs.png rename to assets/images/aws/03.size-and-specs.png diff --git a/.vuepress/public/aws/04.instance-details.png b/assets/images/aws/04.instance-details.png similarity index 100% rename from .vuepress/public/aws/04.instance-details.png rename to assets/images/aws/04.instance-details.png diff --git a/.vuepress/public/aws/05.storage.png b/assets/images/aws/05.storage.png similarity index 100% rename from .vuepress/public/aws/05.storage.png rename to assets/images/aws/05.storage.png diff --git a/.vuepress/public/aws/06.tags.png b/assets/images/aws/06.tags.png similarity index 100% rename from .vuepress/public/aws/06.tags.png rename to assets/images/aws/06.tags.png diff --git a/.vuepress/public/aws/07.security.png b/assets/images/aws/07.security.png similarity index 100% rename from .vuepress/public/aws/07.security.png rename to assets/images/aws/07.security.png diff --git a/.vuepress/public/aws/08.key-pair.png b/assets/images/aws/08.key-pair.png similarity index 100% rename from .vuepress/public/aws/08.key-pair.png rename to assets/images/aws/08.key-pair.png diff --git a/.vuepress/public/aws/09.launch.png b/assets/images/aws/09.launch.png similarity index 100% rename from .vuepress/public/aws/09.launch.png rename to assets/images/aws/09.launch.png diff --git a/.vuepress/public/aws/10.enjoy.png b/assets/images/aws/10.enjoy.png similarity index 100% rename from .vuepress/public/aws/10.enjoy.png rename to assets/images/aws/10.enjoy.png diff --git a/.vuepress/public/aws/11.domain.png b/assets/images/aws/11.domain.png similarity index 100% rename from .vuepress/public/aws/11.domain.png rename to assets/images/aws/11.domain.png diff --git a/.vuepress/public/azure/01.azure-deploy-button.png b/assets/images/azure/01.azure-deploy-button.png similarity index 100% rename from .vuepress/public/azure/01.azure-deploy-button.png rename to assets/images/azure/01.azure-deploy-button.png diff --git a/.vuepress/public/azure/02.azure-output.png b/assets/images/azure/02.azure-output.png similarity index 100% rename from .vuepress/public/azure/02.azure-output.png rename to assets/images/azure/02.azure-output.png diff --git a/.vuepress/public/crates-io-demo.gif b/assets/images/crates-io-demo.gif similarity index 100% rename from .vuepress/public/crates-io-demo.gif rename to assets/images/crates-io-demo.gif diff --git a/.vuepress/public/digitalocean/add-domain.png b/assets/images/digitalocean/add-domain.png similarity index 100% rename from .vuepress/public/digitalocean/add-domain.png rename to assets/images/digitalocean/add-domain.png diff --git a/.vuepress/public/digitalocean/add-ssh-key.png b/assets/images/digitalocean/add-ssh-key.png similarity index 100% rename from .vuepress/public/digitalocean/add-ssh-key.png rename to assets/images/digitalocean/add-ssh-key.png diff --git a/.vuepress/public/digitalocean/add-tags.png b/assets/images/digitalocean/add-tags.png similarity index 100% rename from .vuepress/public/digitalocean/add-tags.png rename to assets/images/digitalocean/add-tags.png diff --git a/.vuepress/public/digitalocean/copy-ip.png b/assets/images/digitalocean/copy-ip.png similarity index 100% rename from .vuepress/public/digitalocean/copy-ip.png rename to assets/images/digitalocean/copy-ip.png diff --git a/.vuepress/public/digitalocean/create-droplet.png b/assets/images/digitalocean/create-droplet.png similarity index 100% rename from .vuepress/public/digitalocean/create-droplet.png rename to assets/images/digitalocean/create-droplet.png diff --git a/.vuepress/public/digitalocean/create.png b/assets/images/digitalocean/create.png similarity index 100% rename from .vuepress/public/digitalocean/create.png rename to assets/images/digitalocean/create.png diff --git a/.vuepress/public/digitalocean/domain.png b/assets/images/digitalocean/domain.png similarity index 100% rename from .vuepress/public/digitalocean/domain.png rename to assets/images/digitalocean/domain.png diff --git a/.vuepress/public/digitalocean/droplet-name.png b/assets/images/digitalocean/droplet-name.png similarity index 100% rename from .vuepress/public/digitalocean/droplet-name.png rename to assets/images/digitalocean/droplet-name.png diff --git a/.vuepress/public/digitalocean/marketplace.png b/assets/images/digitalocean/marketplace.png similarity index 100% rename from .vuepress/public/digitalocean/marketplace.png rename to assets/images/digitalocean/marketplace.png diff --git a/.vuepress/public/digitalocean/select-plan.png b/assets/images/digitalocean/select-plan.png similarity index 100% rename from .vuepress/public/digitalocean/select-plan.png rename to assets/images/digitalocean/select-plan.png diff --git a/.vuepress/public/digitalocean/select-region.png b/assets/images/digitalocean/select-region.png similarity index 100% rename from .vuepress/public/digitalocean/select-region.png rename to assets/images/digitalocean/select-region.png diff --git a/.vuepress/public/digitalocean/test-meili.png b/assets/images/digitalocean/test-meili.png similarity index 100% rename from .vuepress/public/digitalocean/test-meili.png rename to assets/images/digitalocean/test-meili.png diff --git a/.vuepress/public/document_structure.svg b/assets/images/document_structure.svg similarity index 100% rename from .vuepress/public/document_structure.svg rename to assets/images/document_structure.svg diff --git a/.vuepress/public/faceted-search/conjunctive-and-disjunctive-facets.gif b/assets/images/faceted-search/conjunctive-and-disjunctive-facets.gif similarity index 100% rename from .vuepress/public/faceted-search/conjunctive-and-disjunctive-facets.gif rename to assets/images/faceted-search/conjunctive-and-disjunctive-facets.gif diff --git a/.vuepress/public/faceted-search/conjunctive-factes.gif b/assets/images/faceted-search/conjunctive-factes.gif similarity index 100% rename from .vuepress/public/faceted-search/conjunctive-factes.gif rename to assets/images/faceted-search/conjunctive-factes.gif diff --git a/.vuepress/public/faceted-search/disjunctive_facets.gif b/assets/images/faceted-search/disjunctive_facets.gif similarity index 100% rename from .vuepress/public/faceted-search/disjunctive_facets.gif rename to assets/images/faceted-search/disjunctive_facets.gif diff --git a/.vuepress/public/faceted-search/facets-ecommerce.png b/assets/images/faceted-search/facets-ecommerce.png similarity index 100% rename from .vuepress/public/faceted-search/facets-ecommerce.png rename to assets/images/faceted-search/facets-ecommerce.png diff --git a/.vuepress/public/gcp/01.compute-engine.png b/assets/images/gcp/01.compute-engine.png similarity index 100% rename from .vuepress/public/gcp/01.compute-engine.png rename to assets/images/gcp/01.compute-engine.png diff --git a/.vuepress/public/gcp/02.image-info.png b/assets/images/gcp/02.image-info.png similarity index 100% rename from .vuepress/public/gcp/02.image-info.png rename to assets/images/gcp/02.image-info.png diff --git a/.vuepress/public/gcp/03.import-image.png b/assets/images/gcp/03.import-image.png similarity index 100% rename from .vuepress/public/gcp/03.import-image.png rename to assets/images/gcp/03.import-image.png diff --git a/.vuepress/public/gcp/04.create-instance.png b/assets/images/gcp/04.create-instance.png similarity index 100% rename from .vuepress/public/gcp/04.create-instance.png rename to assets/images/gcp/04.create-instance.png diff --git a/.vuepress/public/gcp/05.machine-configuration.png b/assets/images/gcp/05.machine-configuration.png similarity index 100% rename from .vuepress/public/gcp/05.machine-configuration.png rename to assets/images/gcp/05.machine-configuration.png diff --git a/.vuepress/public/gcp/06.boot-disk.png b/assets/images/gcp/06.boot-disk.png similarity index 100% rename from .vuepress/public/gcp/06.boot-disk.png rename to assets/images/gcp/06.boot-disk.png diff --git a/.vuepress/public/gcp/07.instance-running.png b/assets/images/gcp/07.instance-running.png similarity index 100% rename from .vuepress/public/gcp/07.instance-running.png rename to assets/images/gcp/07.instance-running.png diff --git a/.vuepress/public/gcp/08.domain.png b/assets/images/gcp/08.domain.png similarity index 100% rename from .vuepress/public/gcp/08.domain.png rename to assets/images/gcp/08.domain.png diff --git a/.vuepress/public/postman/create_index.png b/assets/images/postman/create_index.png similarity index 100% rename from .vuepress/public/postman/create_index.png rename to assets/images/postman/create_index.png diff --git a/.vuepress/public/postman/edit.png b/assets/images/postman/edit.png similarity index 100% rename from .vuepress/public/postman/edit.png rename to assets/images/postman/edit.png diff --git a/.vuepress/public/postman/import.png b/assets/images/postman/import.png similarity index 100% rename from .vuepress/public/postman/import.png rename to assets/images/postman/import.png diff --git a/.vuepress/public/postman/set_token.png b/assets/images/postman/set_token.png similarity index 100% rename from .vuepress/public/postman/set_token.png rename to assets/images/postman/set_token.png diff --git a/.vuepress/public/postman/set_variables.png b/assets/images/postman/set_variables.png similarity index 100% rename from .vuepress/public/postman/set_variables.png rename to assets/images/postman/set_variables.png diff --git a/.vuepress/public/postman/url.png b/assets/images/postman/url.png similarity index 100% rename from .vuepress/public/postman/url.png rename to assets/images/postman/url.png diff --git a/.vuepress/public/railway/public-url.png b/assets/images/railway/public-url.png similarity index 100% rename from .vuepress/public/railway/public-url.png rename to assets/images/railway/public-url.png diff --git a/.vuepress/public/ranking-rules/belgium.png b/assets/images/ranking-rules/belgium.png similarity index 100% rename from .vuepress/public/ranking-rules/belgium.png rename to assets/images/ranking-rules/belgium.png diff --git a/.vuepress/public/ranking-rules/knight.png b/assets/images/ranking-rules/knight.png similarity index 100% rename from .vuepress/public/ranking-rules/knight.png rename to assets/images/ranking-rules/knight.png diff --git a/.vuepress/public/ranking-rules/new_road.png b/assets/images/ranking-rules/new_road.png similarity index 100% rename from .vuepress/public/ranking-rules/new_road.png rename to assets/images/ranking-rules/new_road.png diff --git a/.vuepress/public/ranking-rules/vogli3.png b/assets/images/ranking-rules/vogli3.png similarity index 100% rename from .vuepress/public/ranking-rules/vogli3.png rename to assets/images/ranking-rules/vogli3.png diff --git a/.vuepress/public/search_preview/default.png b/assets/images/search_preview/default.png similarity index 100% rename from .vuepress/public/search_preview/default.png rename to assets/images/search_preview/default.png diff --git a/.vuepress/public/search_preview/multiple_indexes.png b/assets/images/search_preview/multiple_indexes.png similarity index 100% rename from .vuepress/public/search_preview/multiple_indexes.png rename to assets/images/search_preview/multiple_indexes.png diff --git a/.vuepress/public/search_preview/no_documents.png b/assets/images/search_preview/no_documents.png similarity index 100% rename from .vuepress/public/search_preview/no_documents.png rename to assets/images/search_preview/no_documents.png diff --git a/.vuepress/public/tuto-searchbar-for-docs/docxtemplater-searchbar-demo.gif b/assets/images/tuto-searchbar-for-docs/docxtemplater-searchbar-demo.gif similarity index 100% rename from .vuepress/public/tuto-searchbar-for-docs/docxtemplater-searchbar-demo.gif rename to assets/images/tuto-searchbar-for-docs/docxtemplater-searchbar-demo.gif diff --git a/.vuepress/public/tuto-searchbar-for-docs/vuepress-plugin-example.png b/assets/images/tuto-searchbar-for-docs/vuepress-plugin-example.png similarity index 100% rename from .vuepress/public/tuto-searchbar-for-docs/vuepress-plugin-example.png rename to assets/images/tuto-searchbar-for-docs/vuepress-plugin-example.png diff --git a/.vuepress/public/tuto-searchbar-for-docs/vuepress-searchbar-demo.gif b/assets/images/tuto-searchbar-for-docs/vuepress-searchbar-demo.gif similarity index 100% rename from .vuepress/public/tuto-searchbar-for-docs/vuepress-searchbar-demo.gif rename to assets/images/tuto-searchbar-for-docs/vuepress-searchbar-demo.gif diff --git a/assets/images/updating/update-button.png b/assets/images/updating/update-button.png new file mode 100644 index 0000000000..fd925e1c74 Binary files /dev/null and b/assets/images/updating/update-button.png differ diff --git a/assets/images/updating/update-in-progress.png b/assets/images/updating/update-in-progress.png new file mode 100644 index 0000000000..d541016f9b Binary files /dev/null and b/assets/images/updating/update-in-progress.png differ diff --git a/.vuepress/public/postman/meilisearch-collection.json b/assets/misc/meilisearch-collection-postman.json similarity index 99% rename from .vuepress/public/postman/meilisearch-collection.json rename to assets/misc/meilisearch-collection-postman.json index 9cd56d6764..3d61864bb8 100644 --- a/.vuepress/public/postman/meilisearch-collection.json +++ b/assets/misc/meilisearch-collection-postman.json @@ -2113,4 +2113,4 @@ "value": "books" } ] -} \ No newline at end of file +} diff --git a/assets/meilisearch-logo-dark.svg b/assets/repo/meilisearch-logo-dark.svg similarity index 100% rename from assets/meilisearch-logo-dark.svg rename to assets/repo/meilisearch-logo-dark.svg diff --git a/assets/meilisearch-logo-light.svg b/assets/repo/meilisearch-logo-light.svg similarity index 100% rename from assets/meilisearch-logo-light.svg rename to assets/repo/meilisearch-logo-light.svg diff --git a/bors.toml b/bors.toml deleted file mode 100644 index 83ac41bbe1..0000000000 --- a/bors.toml +++ /dev/null @@ -1,9 +0,0 @@ -status = [ - 'check-links', - 'check-style', - 'check-builds (14)', - 'check-builds (16)', - 'vale' -] -# 1 hour timeout -timeout-sec = 3600 diff --git a/config/sidebar-footer.json b/config/sidebar-footer.json new file mode 100644 index 0000000000..89f51f7327 --- /dev/null +++ b/config/sidebar-footer.json @@ -0,0 +1,12 @@ +[ + { + "source": "resources/faq.mdx", + "label": "FAQ", + "slug": "faq" + }, + { + "to": "/", + "label": "Back to meilisearch.com", + "slug": "landing" + } +] \ No newline at end of file diff --git a/config/sidebar-learn.json b/config/sidebar-learn.json new file mode 100644 index 0000000000..ac58c45afc --- /dev/null +++ b/config/sidebar-learn.json @@ -0,0 +1,397 @@ +[ + { + "title": "What is Meilisearch", + "slug": "what_is_meilisearch", + "routes": [ + { + "source": "learn/what_is_meilisearch/overview.mdx", + "label": "Overview", + "slug": "overview" + }, + { + "source": "learn/what_is_meilisearch/features.mdx", + "label": "Features", + "slug": "features" + }, + { + "source": "learn/what_is_meilisearch/philosophy.mdx", + "label": "Philosophy", + "slug": "philosophy" + }, + { + "source": "learn/what_is_meilisearch/sdks.mdx", + "label": "Official SDKs/libraries", + "slug": "sdks" + }, + { + "source": "learn/what_is_meilisearch/comparison_to_alternatives.mdx", + "label": "Comparison to alternatives", + "slug": "comparison_to_alternatives" + }, + { + "source": "learn/what_is_meilisearch/telemetry.mdx", + "label": "Telemetry", + "slug": "telemetry" + }, + { + "source": "learn/what_is_meilisearch/search_preview.mdx", + "label": "Search preview", + "slug": "search_preview" + }, + { + "source": "learn/what_is_meilisearch/language.mdx", + "label": "Language", + "slug": "language" + } + ] + }, + { + "title": "Getting started", + "slug": "getting_started", + "routes": [ + { + "source": "learn/getting_started/installation.mdx", + "label": "Installation", + "slug": "installation" + }, + { + "source": "learn/getting_started/quick_start.mdx", + "label": "Quick start", + "slug": "quick_start" + } + ] + }, + { + "title": "Meilisearch 101", + "slug": "getting_started", + "routes": [ + { + "source": "learn/meilisearch_101/filtering_and_sorting.mdx", + "label": "Filtering and sorting", + "slug": "filtering_and_sorting" + }, + { + "source": "learn/meilisearch_101/customizing_relevancy.mdx", + "label": "Customizing relevancy", + "slug": "customizing_relevancy" + }, + { + "source": "learn/meilisearch_101/getting_ready_for_production.mdx", + "label": "Getting ready for production", + "slug": "getting_ready_for_production" + } + ] + }, + { + "title": "Core concepts", + "slug": "core_concepts", + "routes": [ + { + "source": "learn/core_concepts/documents.mdx", + "label": "Documents", + "slug": "documents" + }, + { + "source": "learn/core_concepts/indexes.mdx", + "label": "Indexes", + "slug": "indexes" + }, + { + "source": "learn/core_concepts/relevancy.mdx", + "label": "Relevancy", + "slug": "relevancy" + }, + { + "source": "learn/core_concepts/primary_key.mdx", + "label": "Primary key", + "slug": "primary_key" + } + ] + }, + { + "title": "Configuration", + "slug": "configuration", + "routes": [ + { + "source": "learn/configuration/instance_options.mdx", + "label": "Configure Meilisearch at launch", + "slug": "instance_options" + } + ] + }, + { + "title": "Index settings", + "slug": "configuration", + "routes": [ + { + "source": "learn/index_settings/overview.mdx", + "label": "Overview", + "slug": "settings" + }, + { + "source": "learn/index_settings/distinct.mdx", + "label": "Distinct attribute", + "slug": "distinct" + }, + { + "source": "learn/index_settings/displayed_searchable_attributes.mdx", + "label": "Displayed searchable attributes", + "slug": "displayed_searchable_attributes" + }, + { + "source": "learn/index_settings/synonyms.mdx", + "label": "Synonyms", + "slug": "synonyms" + }, + { + "source": "learn/index_settings/typo_tolerance.mdx", + "label": "Typo tolerance", + "slug": "typo_tolerance" + } + ] + }, + { + "title": "Security and permissions", + "slug": "security", + "routes": [ + { + "source": "learn/security/master_api_keys.mdx", + "label": "Master key and API keys", + "slug": "master_api_keys" + }, + { + "source": "learn/security/tenant_tokens.mdx", + "label": "Multitenancy and tenant tokens", + "slug": "tenant_tokens" + } + ] + }, + { + "title": "Update and migration", + "slug": "update_and_migration", + "routes": [ + { + "source": "learn/update_and_migration/algolia_migration.mdx", + "label": "Migrating from Algolia", + "slug": "algolia_migration" + }, + { + "source": "learn/update_and_migration/previous_docs_version.mdx", + "label": "Accessing previous docs versions", + "slug": "previous_docs_version" + }, + { + "source": "learn/update_and_migration/updating.mdx", + "label": "Updating Meilisearch", + "slug": "updating" + }, + { + "source": "learn/update_and_migration/versioning.mdx", + "label": "Versioning policy", + "slug": "versioning" + } + ] + }, + { + "title": "Advanced topics", + "slug": "advanced", + "routes": [ + { + "source": "learn/advanced/asynchronous_operations.mdx", + "label": "Tasks and asynchronous operations", + "slug": "asynchronous_operations" + }, + { + "source": "learn/advanced/filtering.mdx", + "label": "Filtering", + "slug": "filtering" + }, + { + "source": "learn/advanced/faceted_search.mdx", + "label": "Faceted search", + "slug": "faceted_search" + }, + { + "source": "learn/advanced/geosearch.mdx", + "label": "Geosearch", + "slug": "geosearch" + }, + { + "source": "learn/advanced/pagination.mdx", + "label": "Search result pagination", + "slug": "pagination" + }, + { + "source": "learn/advanced/sorting.mdx", + "label": "Sorting", + "slug": "sorting" + }, + { + "source": "learn/advanced/working_with_dates.mdx", + "label": "Working with dates", + "slug": "working_with_dates" + } + ] + }, + { + "title": "Data backup", + "slug": "advanced", + "routes": [ + { + "source": "learn/data_backup/snapshots_vs_dumps.mdx", + "label": "Snapshots vs dumps", + "slug": "snapshots_vs_dumps" + }, + { + "source": "learn/data_backup/dumps.mdx", + "label": "Dumps", + "slug": "dumps" + }, + { + "source": "learn/data_backup/snapshots.mdx", + "label": "Snapshots", + "slug": "snapshots" + } + ] + }, + { + "title": "Inner workings", + "slug": "advanced", + "routes": [ + { + "source": "learn/inner_workings/concat.mdx", + "label": "Concatenate and split queries", + "slug": "concat" + }, + { + "source": "learn/inner_workings/datatypes.mdx", + "label": "Data types", + "slug": "datatypes" + }, + { + "source": "learn/inner_workings/indexing.mdx", + "label": "Indexing and performance", + "slug": "indexing" + }, + { + "source": "learn/inner_workings/known_limitations.mdx", + "label": "Known limitations", + "slug": "known_limitations" + }, + { + "source": "learn/inner_workings/prefix.mdx", + "label": "Prefix search", + "slug": "prefix" + }, + { + "source": "learn/inner_workings/storage.mdx", + "label": "Storage", + "slug": "storage" + }, + { + "source": "learn/inner_workings/tokenization.mdx", + "label": "Tokenization", + "slug": "tokenization" + } + ] + }, + { + "title": "Cookbooks", + "slug": "cookbooks", + "routes": [ + { + "source": "learn/cookbooks/running_production.mdx", + "label": "Run in production", + "slug": "running_production" + }, + { + "source": "learn/cookbooks/postman_collection.mdx", + "label": "Use with Postman", + "slug": "postman_collection" + }, + { + "source": "learn/cookbooks/docker.mdx", + "label": "Use with Docker", + "slug": "docker" + }, + { + "source": "learn/cookbooks/search_bar_for_docs.mdx", + "label": "Add a search bar to your docs", + "slug": "search_bar_for_docs" + }, + { + "source": "learn/cookbooks/http2_ssl.mdx", + "label": "Set up HTTP/2 SSL", + "slug": "http2_ssl" + } + ] + }, + { + "title": "Deployment", + "slug": "cookbooks", + "routes": [ + { + "source": "learn/deployment/aws.mdx", + "label": "Deploy on AWS", + "slug": "aws" + }, + { + "source": "learn/deployment/azure.mdx", + "label": "Deploy on Azure", + "slug": "azure" + }, + { + "source": "learn/deployment/digitalocean.mdx", + "label": "Deploy on DigitalOcean", + "slug": "digitalocean" + }, + { + "source": "learn/deployment/gcp.mdx", + "label": "Deploy on GCP", + "slug": "gcp" + }, + { + "source": "learn/deployment/koyeb.mdx", + "label": "Deploy on Koyeb", + "slug": "koyeb" + }, + { + "source": "learn/deployment/qovery.mdx", + "label": "Deploy on Qovery", + "slug": "qovery" + }, + { + "source": "learn/deployment/railway.mdx", + "label": "Deploy on Railway", + "slug": "railway" + } + ] + }, + { + "title": "Experimental", + "slug": "experimental", + "routes": [ + { + "source": "learn/experimental/metrics.mdx", + "label": "Metrics", + "slug": "metrics" + } + ] + }, + { + "title": "Contributing", + "slug": "contributing", + "routes": [ + { + "source": "learn/contributing/overview.mdx", + "label": "Overview", + "slug": "overview" + }, + { + "source": "learn/contributing/contributing_docs.mdx", + "label": "Contributing to our documentation", + "slug": "contributing_docs" + } + ] + } +] \ No newline at end of file diff --git a/config/sidebar-reference.json b/config/sidebar-reference.json new file mode 100644 index 0000000000..36c163d7de --- /dev/null +++ b/config/sidebar-reference.json @@ -0,0 +1,84 @@ +[ + { + "title": "API reference", + "slug": "api", + "routes": [ + { + "source": "reference/api/overview.mdx", + "label": "Overview", + "slug": "overview" + }, + { + "source": "reference/api/indexes.mdx", + "label": "Indexes", + "slug": "indexes" + }, + { + "source": "reference/api/documents.mdx", + "label": "Documents", + "slug": "documents" + }, + { + "source": "reference/api/search.mdx", + "label": "Search", + "slug": "search" + }, + { + "source": "reference/api/multi_search.mdx", + "label": "Multi-search", + "slug": "multi_search" + }, + { + "source": "reference/api/tasks.mdx", + "label": "Tasks", + "slug": "tasks" + }, + { + "source": "reference/api/keys.mdx", + "label": "Keys", + "slug": "keys" + }, + { + "source": "reference/api/settings.mdx", + "label": "Settings", + "slug": "settings" + }, + { + "source": "reference/api/stats.mdx", + "label": "Stats", + "slug": "stats" + }, + { + "source": "reference/api/health.mdx", + "label": "Health", + "slug": "health" + }, + { + "source": "reference/api/version.mdx", + "label": "Version", + "slug": "version" + }, + { + "source": "reference/api/dump.mdx", + "label": "Dumps", + "slug": "dump" + } + ] + }, + { + "title": "Errors", + "slug": "errors", + "routes": [ + { + "source": "reference/errors/overview.mdx", + "label": "Overview", + "slug": "overview" + }, + { + "source": "reference/errors/error_codes.mdx", + "label": "Error codes", + "slug": "error_codes" + } + ] + } +] \ No newline at end of file diff --git a/docs-scraper.config.json b/docs-scraper.config.json new file mode 100644 index 0000000000..915273d141 --- /dev/null +++ b/docs-scraper.config.json @@ -0,0 +1,51 @@ +{ + "index_uid": "production", + "start_urls": [ + "https://www.meilisearch.com/docs" + ], + "sitemap_urls": [ + "https://www.meilisearch.com/sitemap.xml" + ], + "selectors": { + "lvl0": { + "selector": "#sidebar-list .sidebar-link[data-active=true] ~ .sidebar-category", + "global": true, + "default_value": "Documentation" + }, + "lvl1": { + "selector": ".docs-main h1", + "global": true + }, + "lvl2": ".docs-main h2", + "lvl3": ".docs-main h3", + "lvl4": ".docs-main h4", + "lvl5": ".docs-main h5", + "text": ".docs-main p, .docs-main li, .docs-main td" + }, + "strip_chars": " .,;:#", + "scrap_start_urls": true, + "custom_settings": { + "searchableAttributes": [ + "*" + ], + "synonyms": { + "relevancy": [ + "relevant", + "relevance" + ], + "relevant": [ + "relevancy", + "relevance" + ], + "relevance": [ + "relevancy", + "relevant" + ] + } + }, + "min_indexed_level": 2, + "selectors_exclude": [ + "#page-navigation", + "#feedback" + ] +} diff --git a/home.mdx b/home.mdx new file mode 100644 index 0000000000..86c22d327c --- /dev/null +++ b/home.mdx @@ -0,0 +1,45 @@ +--- +title: Meilisearch Documentation +description: Everything you need to use Meilisearch. +--- + +# Documentation + +Learn how to use Meilisearch in your projects by exploring our guides and API reference. + + + Quick start New here? Check out our quick start guide to learn how to set up Meilisearch, add data, and make your first search. + + ), + size: 4, + link: '/docs/learn/getting_started/quick_start' + }, + { + icon: 'custom', + content:'Consult the Meilisearch API reference.', + size: 1, + link: '/docs/reference/api/overview' + }, + { + content: 'Looking for SDK documentation? Check out this list of official Meilisearch libraries.', + icon: 'cube', + size: 3, + link: '/docs/learn/what_is_meilisearch/sdks' + }, + { + content: 'Announcing Meilisearch Cloud: the best way to add Meilisearch to your project', + icon: 'cloud', + size: 2, + link: 'https://cloud.meilisearch.com/register' + }, + { + content: + 'For more tips, tutorials, and information about our company, take a look at the Meilisearch blog.', + icon: 'openSource', + size: 2, + link: 'https://blog.meilisearch.com' + } +]} /> diff --git a/index.md b/index.md deleted file mode 100644 index f8f4dc634c..0000000000 --- a/index.md +++ /dev/null @@ -1,20 +0,0 @@ -# Meilisearch Documentation - -Welcome to the Meilisearch documentation. Here you'll find everything you need to learn and create with our **lightning fast search engine**. - -[](/learn/getting_started/quick_start.md) - -Looking for SDK documentation? Check out [this list of official Meilisearch libraries](/learn/what_is_meilisearch/sdks.md) or use the Integrations dropdown menu at the top of the screen for quick access. - -## Meilisearch news - -**Announcing Meilisearch Cloud:** [register now](https://cloud.meilisearch.com/register) or [log in here](https://cloud.meilisearch.com/login) if you already have an account. - -**We just raised a 15M Series A! 🥳** Check out the [TechCrunch exclusive](https://techcrunch.com/2022/10/10/meilisearch-lands-15m-investment-to-grow-its-search-as-a-service-business/), or learn more [on our blog](https://blog.meilisearch.com/meilisearch-series-a/). - -## Open-source - -Meilisearch and its documentation are both completely open source. You can **support the project by starring** [our main GitHub repository](https://github.com/meilisearch/meilisearch). In addition, all documentation pages are editable—just use the handy "Edit this page" button in the bottom left corner. Happy searching 🔎 - -Star diff --git a/learn/advanced/asynchronous_operations.md b/learn/advanced/asynchronous_operations.mdx similarity index 80% rename from learn/advanced/asynchronous_operations.md rename to learn/advanced/asynchronous_operations.mdx index 2990f9ed10..726f01888a 100644 --- a/learn/advanced/asynchronous_operations.md +++ b/learn/advanced/asynchronous_operations.mdx @@ -1,7 +1,5 @@ --- - -sidebarDepth: 2 - +sidebarDepth: 3 --- # Tasks and asynchronous operations @@ -34,7 +32,7 @@ When an API request triggers an asynchronous process, Meilisearch creates a task Tasks are objects containing information that allow you to track their progress and troubleshoot problems when things go wrong. -A [task object](/reference/api/tasks.md#task-object) includes data not present in the original request, such as when the request was enqueued, the type of request, and an error code when the task fails: +A [task object](/reference/api/tasks#task-object) includes data not present in the original request, such as when the request was enqueued, the type of request, and an error code when the task fails: ```json { @@ -55,11 +53,11 @@ A [task object](/reference/api/tasks.md#task-object) includes data not present i } ``` -For a comprehensive description of each task object field, consult the [task API reference](/reference/api/tasks.md). +For a comprehensive description of each task object field, consult the [task API reference](/reference/api/tasks). #### Summarized task objects -When you make an API request for an asynchronous operation, Meilisearch returns a [summarized version](/reference/api/tasks.md#summarized-task-object) of the full `task` object. +When you make an API request for an asynchronous operation, Meilisearch returns a [summarized version](/reference/api/tasks#summarized-task-object) of the full `task` object. ```json { @@ -71,7 +69,7 @@ When you make an API request for an asynchronous operation, Meilisearch returns } ``` -Use the summarized task's `taskUid` to [track the progress of a task](/reference/api/tasks.md#get-one-task). +Use the summarized task's `taskUid` to [track the progress of a task](/reference/api/tasks#get-one-task). #### Task `status` @@ -89,20 +87,24 @@ Some task types are not associated with a particular index but apply to the enti Meilisearch considers the following task types as global: -- [`dumpCreation`](/reference/api/tasks.md#dumpcreation) -- [`taskCancelation`](/reference/api/tasks.md#taskcancelation) -- [`taskDeletion`](/reference/api/tasks.md#taskdeletion) -- [`indexSwap`](/reference/api/tasks.md#indexswap) -- [`snapshotCreation`](/reference/api/tasks.md#snapshotcreation) +- [`dumpCreation`](/reference/api/tasks#dumpcreation) +- [`taskCancelation`](/reference/api/tasks#taskcancelation) +- [`taskDeletion`](/reference/api/tasks#taskdeletion) +- [`indexSwap`](/reference/api/tasks#indexswap) +- [`snapshotCreation`](/reference/api/tasks#snapshotcreation) -::: note + In a protected instance, your API key must have access to all indexes (`"indexes": [*]`) to view global tasks. -::: + ### Task queue After creating a task, Meilisearch places it in a queue. Enqueued tasks are processed one at a time, following the order in which they were requested. + +When the task queue reaches its limit (about 10GiB), it will throw a `no_space_left_on_device` error. Users will need to delete tasks using the [delete tasks endpoint](/reference/api/tasks#delete-tasks) to continue write operations. + + #### Task queue priority Meilisearch considers certain tasks high-priority and always places them at the front of the queue. @@ -120,27 +122,27 @@ All other tasks are processed in the order they were enqueued. When you make a [request for an asynchronous operation](#which-operations-are-asynchronous), Meilisearch processes all tasks following the same steps: -1. Meilisearch creates a task, puts it in the task queue, and returns a [summarized `task` object](/learn/advanced/asynchronous_operations.md#summarized-task-objects). Task `status` set to `enqueued` +1. Meilisearch creates a task, puts it in the task queue, and returns a [summarized `task` object](/learn/advanced/asynchronous_operations#summarized-task-objects). Task `status` set to `enqueued` 2. When your task reaches the front of the queue, Meilisearch begins working on it. Task `status` set to `processing` 3. Meilisearch finishes the task. Status set to `succeeded` if task was successfully processed, or `failed` if there was an error ### Canceling and deleting tasks -You can cancel a task while it is `enqueued` or `processing` by using [the cancel tasks endpoint](/reference/api/tasks.md#cancel-tasks). Doing so changes a task's `status` to `canceled`. +You can cancel a task while it is `enqueued` or `processing` by using [the cancel tasks endpoint](/reference/api/tasks#cancel-tasks). Doing so changes a task's `status` to `canceled`. -Meilisearch does not automatically delete tasks once their status is `succeeded`, `failed`, or `canceled`. These tasks remain visible in [the task list](/reference/api/tasks.md#get-tasks). To delete them, use the [delete tasks route](/reference/api/tasks.md#delete-tasks). +Meilisearch does not automatically delete tasks once their status is `succeeded`, `failed`, or `canceled`. These tasks remain visible in [the task list](/reference/api/tasks#get-tasks). To delete them, use the [delete tasks route](/reference/api/tasks#delete-tasks). -::: note + **Terminating a Meilisearch instance in the middle of an asynchronous operation is completely safe** and will never adversely affect the database. Tasks are not canceled when you terminate a Meilisearch instance. Meilisearch discards all progress made on `processing` tasks and resets them to `enqueued`. Task handling proceeds as normal once the instance is relaunched. -::: + #### Examples -Suppose you add a new document to your instance using the [add documents endpoint](/reference/api/documents.md#add-or-replace-documents) and receive a `taskUid` in response. +Suppose you add a new document to your instance using the [add documents endpoint](/reference/api/documents#add-or-replace-documents) and receive a `taskUid` in response. -When you query the [get task endpoint](/reference/api/tasks.md#get-one-task) using this value, you see that it has been `enqueued`: +When you query the [get task endpoint](/reference/api/tasks#get-one-task) using this value, you see that it has been `enqueued`: ```json { @@ -208,13 +210,13 @@ Had the task failed, the response would have included a detailed `error` object: } ``` -If the task had been [canceled](/reference/api/tasks.md#cancel-tasks) while it was `enqueued` or `processing`, it would have the `canceled` status and a non-`null` value for the `canceledBy` field. +If the task had been [canceled](/reference/api/tasks#cancel-tasks) while it was `enqueued` or `processing`, it would have the `canceled` status and a non-`null` value for the `canceledBy` field. -After a task has been [deleted](/reference/api/tasks.md#delete-tasks), trying to access it returns a [`task_not_found`](/reference/errors/error_codes.md#task-not-found) error. +After a task has been [deleted](/reference/api/tasks#delete-tasks), trying to access it returns a [`task_not_found`](/reference/errors/error_codes#task-not-found) error. ## Filtering tasks -Querying the [get tasks endpoint](/reference/api/tasks.md#get-tasks) returns all tasks that have not been deleted. Use query parameters to filter tasks based on `uid`, `status`, `type`, `indexUid`, `canceledBy`, or date. Separate multiple values with a comma (`,`). +Querying the [get tasks endpoint](/reference/api/tasks#get-tasks) returns all tasks that have not been deleted. Use query parameters to filter tasks based on `uid`, `status`, `type`, `indexUid`, `canceledBy`, or date. Separate multiple values with a comma (`,`). ### Filter by `uid` @@ -264,9 +266,9 @@ This filter accepts dates formatted according to [RFC 3339](https://www.ietf.org The above code sample will return all tasks `enqueued` **after** 11:49:53:00 on 11 Oct 2020. -::: note + Date filters are equivalent to `<` or `>` operations and do not include the specified value. It is not possible to perform `≤` or `≥` operations with a task date filter. -::: + ### Combine filters diff --git a/learn/advanced/faceted_search.md b/learn/advanced/faceted_search.mdx similarity index 86% rename from learn/advanced/faceted_search.md rename to learn/advanced/faceted_search.mdx index a015dba30e..68fe49e31d 100644 --- a/learn/advanced/faceted_search.md +++ b/learn/advanced/faceted_search.mdx @@ -1,7 +1,5 @@ --- - -sidebarDepth: 2 - +sidebarDepth: 3 --- # Faceted search @@ -10,7 +8,7 @@ You can use Meilisearch filters to build faceted search interfaces. This type of Facets are common in ecommerce sites like Amazon. When users search for products, they are presented with a list of results and a list of facets which you can see on the sidebar in the image below: -![Meilisearch demo for an ecommerce website displaying faceting UI](/faceted-search/facets-ecommerce.png) +![Meilisearch demo for an ecommerce website displaying faceting UI](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/faceted-search/facets-ecommerce.png) Faceted search interfaces often have a count of how many results belong to each facet. This gives users a visual clue of the range of results available for each facet. @@ -20,13 +18,13 @@ Meilisearch does not differentiate between facets and filters. Facets are a spec ## Configuring and using facets -Like any other filter, you must add any attributes you want to use as facets to the [`filterableAttributes`](/reference/api/settings.md#filterable-attributes) list in an index's settings. Once you have configured `filterableAttributes`, you can search for facets with [the `facets` search parameter](/reference/api/search.md#facets). +Like any other filter, you must add any attributes you want to use as facets to the [`filterableAttributes`](/reference/api/settings#filterable-attributes) list in an index's settings. Once you have configured `filterableAttributes`, you can search for facets with [the `facets` search parameter](/reference/api/search#facets). -::: warning + Synonyms don't apply to facets. If you have `SF` and `San Francisco` set as synonyms, faceting by `SF` and `San Francisco` will show you different results. -::: + -Suppose you have a books dataset containing the following fields: +Suppose you have a books dataset containing the following fields: ```json { @@ -120,9 +118,9 @@ The following response shows the facet distribution when searching for `classics `facetDistribution` contains an object for every attribute passed to the `facets` parameter. Each object contains the different values for that attribute and the count of matching documents with that value. Meilisearch does not return empty facets: if there are no results for the Arabic language, it will not be present in `facetDistribution`. -::: note -By default, `facets` returns a maximum of 100 facet values for each faceted field. You can change this value using the `maxValuesPerFacet` property of the [`faceting` index settings](/reference/api/settings.md#faceting). -::: + +By default, `facets` returns a maximum of 100 facet values for each faceted field. You can change this value using the `maxValuesPerFacet` property of the [`faceting` index settings](/reference/api/settings#faceting). + ### Facet stats @@ -130,9 +128,9 @@ When using the `facets` parameter, Meilisearch results include a `facetStats` ob `facetStats` is useful when creating UI components such as range sliders. These allow users to refine their search by selecting from a range of facet values. -::: note + Meilisearch ignores numeric strings like `"21"` when computing `facetStats`. -::: + The following response shows the lowest and highest book ratings when searching for `"classic"`: @@ -165,7 +163,7 @@ With conjunctive facets, when a user selects `English` from the `language` facet The GIF below shows how the facet count for `genres` updates to only include books that meet **all three conditions**. -![Selecting English books with 'Fiction' and 'Literature' as 'genres' for the books dataset](/faceted-search/conjunctive-factes.gif) +![Selecting English books with 'Fiction' and 'Literature' as 'genres' for the books dataset](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/faceted-search/conjunctive-factes.gif) ### Disjunctive facets @@ -179,7 +177,7 @@ With disjunctive facets, when a user selects `Fiction`, and `Literature`, Meilis The GIF below shows the `books` dataset with disjunctive facets. Notice how the facet count for `genres` updates based on the selection. -![Selecting 'Fiction' and 'Literature' as 'genres' for the books dataset](/faceted-search/disjunctive_facets.gif) +![Selecting 'Fiction' and 'Literature' as 'genres' for the books dataset](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/faceted-search/disjunctive_facets.gif) ### Combining conjunctive and disjunctive facets @@ -205,4 +203,4 @@ The user can combine these two filter expressions in one by wrapping them in par The GIF below shows the `books` dataset with conjunctive and disjunctive facets. Notice how the facet count for each facet updates based on the selection. -![Selecting 'Fiction' and 'Literature' as 'genres' for English books](/faceted-search/conjunctive-and-disjunctive-facets.gif) +![Selecting 'Fiction' and 'Literature' as 'genres' for English books](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/faceted-search/conjunctive-and-disjunctive-facets.gif) diff --git a/learn/advanced/filtering.md b/learn/advanced/filtering.mdx similarity index 92% rename from learn/advanced/filtering.md rename to learn/advanced/filtering.mdx index 6873cfae53..c4b2f5064d 100644 --- a/learn/advanced/filtering.md +++ b/learn/advanced/filtering.mdx @@ -1,7 +1,5 @@ --- - -sidebarDepth: 2 - +sidebarDepth: 4 --- # Filtering @@ -39,21 +37,21 @@ If you want to filter results based on the `director` and `genres` attributes, y **This step is mandatory and cannot be done at search time**. Updating `filterableAttributes` requires Meilisearch to re-configure your index, which will take an amount of time proportionate to your dataset size and complexity. -::: note + By default, `filterableAttributes` is empty. Filters do not work without first explicitly adding attributes to the `filterableAttributes` list. -::: + ### Filters and data types Filters work with numeric and string values. Empty fields or fields containing an empty array will be ignored. -Filters do not work with [`NaN`](https://en.wikipedia.org/wiki/NaN) and infinite values such as `inf` and `-inf` as they are [not supported by JSON](https://en.wikipedia.org/wiki/JSON#Data_types). It is possible to filter infinite and `NaN` values if you parse them as strings, except when handling [`_geo` fields](/learn/advanced/geosearch.md#preparing-documents-for-location-based-search). +Filters do not work with [`NaN`](https://en.wikipedia.org/wiki/NaN) and infinite values such as `inf` and `-inf` as they are [not supported by JSON](https://en.wikipedia.org/wiki/JSON#Data_types). It is possible to filter infinite and `NaN` values if you parse them as strings, except when handling [`_geo` fields](/learn/advanced/geosearch#preparing-documents-for-location-based-search). We recommend homogeneous typing across fields, especially when dealing with large numbers. This is because Meilisearch does not enforce a specific schema when indexing data, the filtering engine will try to coerce the type of `value`. This can lead to undefined behavior when big floats are coerced into integers and reciprocally. ## Filter basics -Once you have designated certain attributes as `filterableAttributes`, you can use [the `filter` search parameter](/reference/api/search.md#filter) to filter your search according to those attributes. The `filter` search parameter refines search results by selecting documents matching the given filter and running the search query only on those documents. +Once you have designated certain attributes as `filterableAttributes`, you can use [the `filter` search parameter](/reference/api/search#filter) to filter your search according to those attributes. The `filter` search parameter refines search results by selecting documents matching the given filter and running the search query only on those documents. `filter` expects a **filter expression** containing one or more **conditions**. A filter expression can be written as a string, array, or mix of both. @@ -109,9 +107,9 @@ The following expression returns all action movies: genres = action ``` -::: note + The equality operator does not return any results for `null` and empty arrays. -::: + #### Inequality @@ -228,9 +226,9 @@ genres = horror OR genres = comedy Meilisearch reads string expressions from left to right. You can use parentheses to ensure expressions are correctly parsed. -::: note + Filtering on string values is case-insensitive. -::: + For instance, if you want your results to only include `comedy` and `horror` movies released after March 1995, the parentheses in the following query are mandatory: @@ -246,9 +244,9 @@ genres = horror OR (genres = comedy AND release_date > 795484800) Translated into English, the above expression will only return comedies released after March 1995 or horror movies regardless of their `release_date`. -::: note + When creating an expression with a field name or value identical to a filter operator such as `AND` or `NOT`, you must wrap it in quotation marks: `title = "NOT" OR title = "AND"`. -::: + #### Creating filter expressions with arrays @@ -316,11 +314,11 @@ Suppose that your `movie_ratings` dataset contains several movies in the followi ] ``` -::: warning -[Synonyms](/learn/configuration/synonyms.md) don't apply to filters. Meaning, if you have `SF` and `San Francisco` set as synonyms, filtering by `SF` and `San Francisco` will show you different results. -::: + +[Synonyms](/learn/configuration/synonyms) don't apply to filters. Meaning, if you have `SF` and `San Francisco` set as synonyms, filtering by `SF` and `San Francisco` will show you different results. + -After adding `director`, `release_date`, and `genres` to the [`filterableAttributes` index setting](//reference/api/settings.md#filterable-attributes), you can use them for filtering. +After adding `director`, `release_date`, and `genres` to the [`filterableAttributes` index setting](//reference/api/settings#filterable-attributes), you can use them for filtering. The following code sample returns `Avengers` movies released after 18 March 1995: @@ -348,7 +346,7 @@ If your documents contain `_geo` data, you can filter results according to their -[Read more about filtering results with `_geoRadius` and `_geoBoundingBox` in our geosearch guide.](/learn/advanced/geosearch.md#filtering-results-with-georadius-and-geoboundingbox) +[Read more about filtering results with `_geoRadius` and `_geoBoundingBox` in our geosearch guide.](/learn/advanced/geosearch#filtering-results-with-georadius-and-geoboundingbox) ### Filtering by nested fields @@ -356,4 +354,4 @@ Use dot notation to filter results based on a document's nested fields. The foll -[You can read more about nested fields in our guide on data types.](/learn/advanced/datatypes.md) +[You can read more about nested fields in our guide on data types.](/learn/advanced/datatypes) \ No newline at end of file diff --git a/learn/advanced/geosearch.md b/learn/advanced/geosearch.mdx similarity index 86% rename from learn/advanced/geosearch.md rename to learn/advanced/geosearch.mdx index 5f3dab4b68..0f1a30fdd3 100644 --- a/learn/advanced/geosearch.md +++ b/learn/advanced/geosearch.mdx @@ -1,10 +1,14 @@ +--- +sidebarDepth: 3 +--- + # Geosearch Meilisearch allows you to filter and sort results based on their geographic location. This can be useful when you only want results within a specific area or when sorting results based on their distance from a specific location. -::: danger `_geo` field in v0.27, v0.28, and v0.29 +_geo field in v0.27, v0.28, and v0.29}> Due to Meilisearch allowing malformed `_geo` fields in the above-mentioned versions, please ensure the `_geo` field follows the correct format. -::: + ## Preparing documents for location-based search @@ -94,9 +98,9 @@ Our restaurant dataset looks like this once we add geopositioning data: ] ``` -::: warning -Trying to index a dataset with one or more documents containing badly formatted `_geo` values will cause Meilisearch to throw an [`invalid_document_geo_field`](/reference/errors/error_codes.md#invalid-document-geo-field) error. In this case, the update will fail and no documents will be added or modified. -::: + +Trying to index a dataset with one or more documents containing badly formatted `_geo` values will cause Meilisearch to throw an [`invalid_document_geo_field`](/reference/errors/error_codes#invalid-document-geo-field) error. In this case, the update will fail and no documents will be added or modified. + ### Using `_geo` with CSV @@ -121,11 +125,11 @@ In order to filter results based on their location, you must add the `_geo` attr Meilisearch will rebuild your index whenever you update `filterableAttributes`. Depending on the size of your dataset, this might take a considerable amount of time. -[You can read more about configuring `filterableAttributes` in our dedicated filtering guide.](/learn/advanced/filtering.md#configuring-filters) +[You can read more about configuring `filterableAttributes` in our dedicated filtering guide.](/learn/advanced/filtering#configuring-filters) ### Usage -Use the [`filter` search parameter](/reference/api/search.md#filter) along with `_geoRadius` or `_geoBoundingBox`. These are special filter rules that ensure Meilisearch only returns results located within a specific geographic area. +Use the [`filter` search parameter](/reference/api/search#filter) along with `_geoRadius` or `_geoBoundingBox`. These are special filter rules that ensure Meilisearch only returns results located within a specific geographic area. ### `_geoRadius` @@ -149,7 +153,7 @@ _geoBoundingBox([{lat}, {lng}], [{lat}, {lng}]) ### Examples -Using our example dataset, we can search for places to eat near the center of Milan with `_geoRadius`: +Using our example dataset, we can search for places to eat near the center of Milan with `_geoRadius`: @@ -208,9 +212,9 @@ It is also possible to combine `_geoRadius` and `_geoBoundingBox` with other fil The above command will only work if you have previously added `type` to `filterableAttributes`. -::: warning -`_geo`, `_geoDistance`, and `_geoPoint` are not valid filter rules. Trying to use any of them with the `filter` search parameter will result in an [`invalid_search_filter`](/reference/errors/error_codes.md#invalid-search-filter) error. -::: + +`_geo`, `_geoDistance`, and `_geoPoint` are not valid filter rules. Trying to use any of them with the `filter` search parameter will result in an [`invalid_search_filter`](/reference/errors/error_codes#invalid-search-filter) error. + ## Sorting results with `_geoPoint` @@ -224,11 +228,11 @@ Before using geosearch for sorting, you must add the `_geo` attribute to the `so Note that Meilisearch will rebuild your index whenever you update `sortableAttributes`. Depending on the size of your dataset, this might take a considerable amount of time. -[You can read more about configuring `sortableAttributes` in our dedicated sorting guide.](/learn/advanced/sorting.md#configuring-meilisearch-for-sorting-at-search-time) +[You can read more about configuring `sortableAttributes` in our dedicated sorting guide.](/learn/advanced/sorting#configuring-meilisearch-for-sorting-at-search-time) ### Usage -First, ensure your documents contain valid geolocation data and that you have added the `_geo` attribute to the `sortableAttributes` list. Then, you can use the [`sort` search parameter](/reference/api/search.md#sort) along with `_geoPoint`, a special sorting function, to order results based on their distance from a geographic location. +First, ensure your documents contain valid geolocation data and that you have added the `_geo` attribute to the `sortableAttributes` list. Then, you can use the [`sort` search parameter](/reference/api/search#sort) along with `_geoPoint`, a special sorting function, to order results based on their distance from a geographic location. ``` _geoPoint(0.0, 0.0):asc @@ -236,13 +240,13 @@ _geoPoint(0.0, 0.0):asc `_geoPoint` requires two floating point numbers indicating a location's latitude and longitude. You must also specify whether the sort should be ascending (`asc`) or descending (`desc`). Ascending sort will prioritize results closer to the specified location, while descending sort will put the most distant results first. -If either `lat` or `lng` is invalid or missing, Meilisearch will return an [`invalid_search_sort`](/reference/errors/error_codes.md#invalid-search-sort) error. An error will also be thrown if you fail to indicate a sorting order. +If either `lat` or `lng` is invalid or missing, Meilisearch will return an [`invalid_search_sort`](/reference/errors/error_codes#invalid-search-sort) error. An error will also be thrown if you fail to indicate a sorting order. -[You can read more about sorting in our dedicated guide.](/learn/advanced/sorting.md#sorting-results-at-search-time) +[You can read more about sorting in our dedicated guide.](/learn/advanced/sorting#sorting-results-at-search-time) -::: warning -`_geo`, `_geoDistance`, and `_geoRadius` are not valid `sort` values. Trying to use any of them with the `sort` search parameter will result in an [`invalid_search_sort`](/reference/errors/error_codes.md#invalid-search-sort) error. -::: + +`_geo`, `_geoDistance`, and `_geoRadius` are not valid `sort` values. Trying to use any of them with the `sort` search parameter will result in an [`invalid_search_sort`](/reference/errors/error_codes#invalid-search-sort) error. + ### Examples @@ -250,7 +254,7 @@ The `_geoPoint` sorting function can be used like any other sorting rule. We can -With our restaurants dataset, the results look like this: +With our restaurants dataset, the results look like this: ```json [ @@ -340,7 +344,7 @@ By default, Meilisearch emphasizes relevant sorting over exhaustive sorting. Thi Since `_geoPoint` is part of the `sort` search parameter, its weight when ranking results is controlled by the position of the `"sort"` rule in the `rankingRules` array. -[You can read more about the `"sort"` ranking rule and how to customize it in our dedicated sorting guide.](/learn/advanced/sorting.md#sorting-and-custom-ranking-rules) +[You can read more about the `"sort"` ranking rule and how to customize it in our dedicated sorting guide.](/learn/advanced/sorting#sorting-and-custom-ranking-rules) ## Finding the distance between a document and a `_geoPoint` @@ -363,8 +367,8 @@ When using `_geoPoint`, all returned documents will contain one extra field: `_g ] ``` -::: warning + Using `_geoRadius` filter will not cause results to include `_geoDistance`. `_geoDistance` will only be computed in a returned document if the query uses `_geoPoint` and the `sort` search parameter. -::: + diff --git a/learn/advanced/pagination.md b/learn/advanced/pagination.mdx similarity index 92% rename from learn/advanced/pagination.md rename to learn/advanced/pagination.mdx index 26494c35f3..db36a6bab0 100644 --- a/learn/advanced/pagination.md +++ b/learn/advanced/pagination.mdx @@ -8,9 +8,9 @@ In this guide, we discuss two different approaches to pagination supported by Me There are many UI patterns that help your users navigate through search results. One common and efficient solution in Meilisearch is using `offset` and `limit` to create interfaces centered around ["Previous" and "Next" buttons](#previous-and-next-buttons). -Other solutions, such as [creating a page selector](/learn/advanced/pagination.md#numbered-page-selectors) allowing users to jump to any search results page, make use of `hitsPerPage` and `page` to obtain the exhaustive total number of matched documents. These tend to be less efficient and may result in decreased performance. +Other solutions, such as [creating a page selector](/learn/advanced/pagination#numbered-page-selectors) allowing users to jump to any search results page, make use of `hitsPerPage` and `page` to obtain the exhaustive total number of matched documents. These tend to be less efficient and may result in decreased performance. -Whatever UI pattern you choose, there is a limited maximum number of search results Meilisearch will return for any given query. You can use [the `maxTotalHits` index setting](/reference/api/settings.md#pagination) to configure this, but be aware that higher limits will negatively impact search performance. +Whatever UI pattern you choose, there is a limited maximum number of search results Meilisearch will return for any given query. You can use [the `maxTotalHits` index setting](/reference/api/settings#pagination) to configure this, but be aware that higher limits will negatively impact search performance. ## "Previous" and "Next" buttons @@ -37,7 +37,7 @@ To implement this interface in a website or application, we make our queries wit #### `limit` and `offset` -"Previous" and "Next" buttons can be implemented using the [`limit`](/reference/api/search.md#limit) and [`offset`](/reference/api/search.md#offset) search parameters. +"Previous" and "Next" buttons can be implemented using the [`limit`](/reference/api/search#limit) and [`offset`](/reference/api/search#offset) search parameters. `limit` sets the size of a page. If you set `limit` to `10`, Meilisearch's response will contain a maximum of 10 search results. `offset` skips a number of search results. If you set `offset` to `20`, Meilisearch's response will skip the first 20 search results. @@ -152,7 +152,7 @@ Calculating the total amount of search results for a query is a resource-intensi By default, Meilisearch queries only return `estimatedTotalHits`. This value is likely to change as a user navigates search results and should not be used to create calculate the number of search result pages. -When your query contains either [`hitsPerPage`](/reference/api/search.md#number-of-results-per-page), [`page`](/reference/api/search.md#page), or both these search parameters, Meilisearch returns `totalHits` and `totalPages` instead of `estimatedTotalHits`. `totalHits` contains the exhaustive number of results for that query, and `totalPages` contains the exhaustive number of pages of search results for the same query: +When your query contains either [`hitsPerPage`](/reference/api/search#number-of-results-per-page), [`page`](/reference/api/search#page), or both these search parameters, Meilisearch returns `totalHits` and `totalPages` instead of `estimatedTotalHits`. `totalHits` contains the exhaustive number of results for that query, and `totalPages` contains the exhaustive number of pages of search results for the same query: ```json { @@ -197,9 +197,9 @@ const results = await index.search( ); ``` -::: note + `hitsPerPage` and `page` take precedence over `offset` and `limit`. If a query contains either `hitsPerPage` or `page`, any values passed to `offset` and `limit` are ignored. -::: + #### Create a numbered page list diff --git a/learn/advanced/sorting.md b/learn/advanced/sorting.mdx similarity index 91% rename from learn/advanced/sorting.md rename to learn/advanced/sorting.mdx index 2d6f55af46..3b2e3de6ea 100644 --- a/learn/advanced/sorting.md +++ b/learn/advanced/sorting.mdx @@ -1,12 +1,15 @@ +--- +sidebarDepth: 3 +--- # Sorting By default, Meilisearch focuses on ordering results according to their relevancy. You can alter this sorting behavior so users can decide at search time what type of results they want to see first. This can be useful in many situations, such as when a user wants to see the cheapest products available in a webshop. -::: tip -Sorting at search time can be particularly effective when combined with [placeholder searches](/reference/api/search.md#placeholder-search). -::: + +Sorting at search time can be particularly effective when combined with [placeholder searches](/reference/api/search#placeholder-search). + ## Configuring Meilisearch for sorting at search time @@ -14,27 +17,27 @@ To allow your users to sort results at search time you must: 1. Decide which attributes you want to use for sorting 2. Add those attributes to the `sortableAttributes` index setting -3. Update Meilisearch's [ranking rules](/learn/core_concepts/relevancy.md) (optional) +3. Update Meilisearch's [ranking rules](/learn/core_concepts/relevancy) (optional) -::: note + Meilisearch sorts strings in lexicographic order based on their byte values. For example, `á`, which has a value of 225, will be sorted after `z`, which has a value of 122. Uppercase letters are sorted as if they were lowercase. They will still appear uppercase in search results. -::: + ### Select attributes for sorting Meilisearch allows you to sort results based on document fields. Only fields containing numbers, strings, arrays of numeric values, and arrays of string values can be used for sorting. -::: warning + If a field has values of different types across documents, Meilisearch will give precedence to numbers over strings. This means documents with numeric field values will be ranked higher than those with string values. This can lead to unexpected behavior when sorting, so we strongly recommend you only allow sorting at query time on fields containing the same type of value. -::: + ### Adding attributes to `sortableAttributes` -After you have decided which fields you will allow your users to sort on, you must add their attributes to the [`sortableAttributes` index setting](/reference/api/settings.md#sortable-attributes). +After you have decided which fields you will allow your users to sort on, you must add their attributes to the [`sortableAttributes` index setting](/reference/api/settings#sortable-attributes). `sortableAttributes` accepts an array of strings, each corresponding to one attribute. Note that the attribute order in `sortableAttributes` has no impact on sorting. @@ -107,7 +110,7 @@ If you are using this dataset in a webshop, you might want to allow your users t ### Customize ranking rule order (optional) -When users sort results at search time, [Meilisearch's ranking rules](/learn/core_concepts/relevancy.md) are set up so the top matches emphasize relevant results over sorting order. You might need to alter this behavior depending on your application's needs. +When users sort results at search time, [Meilisearch's ranking rules](/learn/core_concepts/relevancy) are set up so the top matches emphasize relevant results over sorting order. You might need to alter this behavior depending on your application's needs. This is the default configuration of Meilisearch's ranking rules: @@ -134,7 +137,7 @@ If your users care more about finding cheaper books than they care about finding ## Sorting results at search time -After configuring `sortableAttributes`, you can use the [`sort` search parameter](/reference/api/search.md#sort) to control the sorting order of your search results. +After configuring `sortableAttributes`, you can use the [`sort` search parameter](/reference/api/search#sort) to control the sorting order of your search results. ### Using `sort` @@ -257,7 +260,7 @@ Use dot notation to sort results based on a document's nested fields. The follow ## Sorting and custom ranking rules -There is a lot of overlap between sorting and configuring [custom ranking rules](/learn/core_concepts/relevancy.md#custom-rules), as both can greatly influence which results a user will see first. +There is a lot of overlap between sorting and configuring [custom ranking rules](/learn/core_concepts/relevancy#custom-rules), as both can greatly influence which results a user will see first. Sorting is most useful when you want your users to be able to alter the order of returned results at query time. For example, webshop users might want to order results by price depending on what they are searching and to change whether they see the most expensive or the cheapest products first. @@ -293,7 +296,7 @@ Queries using `_geoPoint` will always include a `geoDistance` field containing t ] ``` -[You can read more about location-based sorting in our geosearch guide.](/learn/advanced/geosearch.md#sorting-results-with-geopoint) +[You can read more about location-based sorting in our geosearch guide.](/learn/advanced/geosearch#sorting-results-with-geopoint) ### Example diff --git a/learn/advanced/working_with_dates.md b/learn/advanced/working_with_dates.mdx similarity index 87% rename from learn/advanced/working_with_dates.md rename to learn/advanced/working_with_dates.mdx index 57b5578f87..f67e2bbbb0 100644 --- a/learn/advanced/working_with_dates.md +++ b/learn/advanced/working_with_dates.mdx @@ -55,17 +55,17 @@ game = { }; ``` -:::tip + When preparing your dataset, it can be useful to leave the original date and time fields in your documents intact. In the example above, we keep the `release_date` field because it is more readable than the raw `release_timestamp`. -::: + -After adding a numeric timestamp to all documents, [index your data](/reference/api/documents.md#add-or-replace-documents) as usual. The example below adds a videogame dataset to a `games` index: +After adding a numeric timestamp to all documents, [index your data](/reference/api/documents#add-or-replace-documents) as usual. The example below adds a videogame dataset to a `games` index: ## Filtering by timestamp -To filter search results based on their timestamp, add your document's timestamp field to the list of [`filterableAttributes`](/reference/api/settings.md#update-filterable-attributes): +To filter search results based on their timestamp, add your document's timestamp field to the list of [`filterableAttributes`](/reference/api/settings#update-filterable-attributes): @@ -75,7 +75,7 @@ Once you have configured `filterableAttributes`, you can filter search results b ## Sorting by timestamp -To sort search results chronologically, add your document's timestamp field to the list of [`sortableAttributes`](/reference/api/settings.md#update-sortable-attributes): +To sort search results chronologically, add your document's timestamp field to the list of [`sortableAttributes`](/reference/api/settings#update-sortable-attributes): diff --git a/learn/configuration/instance_options.md b/learn/configuration/instance_options.mdx similarity index 74% rename from learn/configuration/instance_options.md rename to learn/configuration/instance_options.mdx index b2279d33d8..ad55502998 100644 --- a/learn/configuration/instance_options.md +++ b/learn/configuration/instance_options.mdx @@ -1,12 +1,12 @@ --- -sidebarDepth: 2 +sidebarDepth: 3 --- # Configure Meilisearch at launch You can configure Meilisearch at launch with **command-line options**, **environment variables**, or a **configuration file**. -These startup options affect your entire Meilisearch instance, not just a single index. For settings that affect search within a single index, see [index settings](/learn/configuration/settings.md). +These startup options affect your entire Meilisearch instance, not just a single index. For settings that affect search within a single index, see [index settings](/learn/configuration/settings). ## Command-line options and flags @@ -32,8 +32,8 @@ The above flag disables analytics for the Meilisearch instance and does not acce To configure a Meilisearch instance using environment variables, set the environment variable prior to launching the instance. If you are unsure how to do this, read more about [setting and listing environment variables](https://linuxize.com/post/how-to-set-and-list-environment-variables-in-linux/), or [use a command-line option](#command-line-options-and-flags) instead. -:::: tabs -::: tab UNIX + + ```sh export MEILI_DB_PATH=./meilifiles @@ -41,9 +41,9 @@ export MEILI_HTTP_ADDR=localhost:7700 ./meilisearch ``` -::: + -::: tab Windows + ```sh set MEILI_DB_PATH=./meilifiles @@ -51,8 +51,8 @@ set MEILI_HTTP_ADDR=127.0.0.1:7700 ./meilisearch ``` -::: -:::: + + In the previous example, `./meilisearch` is the command that launches a Meilisearch instance, while `MEILI_DB_PATH` and `MEILI_HTTP_ADDR` are environment variables that modify this instance's behavior. @@ -91,16 +91,16 @@ If the `Config file path` is anything other than `"none"`, it means that a confi You can override the default location of the configuration file using the `MEILI_CONFIG_FILE_PATH` environment variable or the `--config-file-path` CLI option: -:::: tabs -::: tab CLI + + ```sh ./meilisearch --config-file-path="./config.toml" ``` -::: + -::: tab Environment variable + UNIX: @@ -116,8 +116,8 @@ set MEILI_CONFIG_FILE_PATH="./config.toml" ./meilisearch ``` -::: -:::: + + ### Configuration file formatting @@ -127,74 +127,75 @@ You can configure any environment variable or CLI option using a configuration f import_dump = "./example.dump" ``` -::: warning + Specifying the `config_file_path` option within the configuration file will throw an error. This is the only configuration option that cannot be set within a configuration file. -::: + ## All instance options ### Configuration file path -**Environment variable**: `MEILI_CONFIG_FILE_PATH` -**CLI option**: `--config-file-path` -**Default**: `./config.toml` +**Environment variable**: `MEILI_CONFIG_FILE_PATH`
+**CLI option**: `--config-file-path`
+**Default**: `./config.toml`
**Expected value**: a filepath Designates the location of the configuration file to load at launch. -::: warning + Specifying this option in the configuration file itself will throw an error (assuming Meilisearch is able to find your configuration file). -::: + ### Database path -**Environment variable**: `MEILI_DB_PATH` -**CLI option**: `--db-path` -**Default value**: `"data.ms/"` +**Environment variable**: `MEILI_DB_PATH`
+**CLI option**: `--db-path`
+**Default value**: `"data.ms/"`
**Expected value**: a filepath Designates the location where database files will be created and retrieved. ### Environment -**Environment variable**: `MEILI_ENV` -**CLI option**: `--env` -**Default value**: `development` +**Environment variable**: `MEILI_ENV`
+**CLI option**: `--env`
+**Default value**: `development`
**Expected value**: `production` or `development` + Configures the instance's environment. Value must be either `production` or `development`. `production`: -- Setting a [master key](/learn/security/master_api_keys.md) of at least 16 bytes is **mandatory**. If no master key is provided or if it is under 16 bytes, Meilisearch will suggest a secure autogenerated master key -- The [search preview interface](/learn/what_is_meilisearch/search_preview.md) is disabled +- Setting a [master key](/learn/security/master_api_keys) of at least 16 bytes is **mandatory**. If no master key is provided or if it is under 16 bytes, Meilisearch will suggest a secure autogenerated master key +- The [search preview interface](/learn/what_is_meilisearch/search_preview) is disabled `development`: -- Setting a [master key](/learn/security/master_api_keys.md) is **optional**. If no master key is provided or if it is under 16 bytes, Meilisearch will suggest a secure autogenerated master key +- Setting a [master key](/learn/security/master_api_keys) is **optional**. If no master key is provided or if it is under 16 bytes, Meilisearch will suggest a secure autogenerated master key - Search preview is enabled -::: tip + When the server environment is set to `development`, providing a master key is not mandatory. This is useful when debugging and prototyping, but dangerous otherwise since API routes are unprotected. -::: + ### HTTP address & port binding -**Environment variable**: `MEILI_HTTP_ADDR` -**CLI option**: `--http-addr` -**Default value**: `"localhost:7700"` +**Environment variable**: `MEILI_HTTP_ADDR`
+**CLI option**: `--http-addr`
+**Default value**: `"localhost:7700"`
**Expected value**: an HTTP address and port + Sets the HTTP address and port Meilisearch will use. ### Master key - -**Environment variable**: `MEILI_MASTER_KEY` -**CLI option**: `--master-key` -**Default value**: `None` +**Environment variable**: `MEILI_MASTER_KEY`
+**CLI option**: `--master-key`
+**Default value**: `None`
**Expected value**: a UTF-8 string of at least 16 bytes -Sets the instance's master key, automatically protecting all routes except [`GET /health`](/reference/api/health.md). This means you will need a valid API key to access all other endpoints. +Sets the instance's master key, automatically protecting all routes except [`GET /health`](/reference/api/health). This means you will need a valid API key to access all other endpoints. When `--env` is set to `production`, providing a master key is mandatory. If none is given, or it is under 16 bytes, Meilisearch will throw an error and refuse to launch. @@ -202,39 +203,39 @@ When `--env` is set to `development`, providing a master key is optional. If non If you do not supply a master key in `production` or `development` environments or it is under 16 bytes, Meilisearch will suggest a secure autogenerated master key you can use when restarting your instance. -[Learn more about Meilisearch's use of security keys.](/learn/security/master_api_keys.md) +[Learn more about Meilisearch's use of security keys.](/learn/security/master_api_keys) ### Disable analytics -::: warning + 🚩 This option does not take any values. Assigning a value will throw an error. 🚩 -::: + -**Environment variable**: `MEILI_NO_ANALYTICS` +**Environment variable**: `MEILI_NO_ANALYTICS`
**CLI option**: `--no-analytics` Deactivates Meilisearch's built-in telemetry when provided. -Meilisearch automatically collects data from all instances that do not opt out using this flag. All gathered data is used solely for the purpose of improving Meilisearch, and can be [deleted at any time](/learn/what_is_meilisearch/telemetry.md#how-to-delete-all-collected-data). +Meilisearch automatically collects data from all instances that do not opt out using this flag. All gathered data is used solely for the purpose of improving Meilisearch, and can be [deleted at any time](/learn/what_is_meilisearch/telemetry#how-to-delete-all-collected-data). -[Read more about our policy on data collection](/learn/what_is_meilisearch/telemetry.md), or take a look at [the comprehensive list of all data points we collect](/learn/what_is_meilisearch/telemetry.md#exhaustive-list-of-all-collected-data). +[Read more about our policy on data collection](/learn/what_is_meilisearch/telemetry), or take a look at [the comprehensive list of all data points we collect](/learn/what_is_meilisearch/telemetry#exhaustive-list-of-all-collected-data). ### Dump directory -**Environment variable**: `MEILI_DUMP_DIR` -**CLI option**: `--dump-dir` -**Default value**: `dumps/` +**Environment variable**: `MEILI_DUMP_DIR`
+**CLI option**: `--dump-dir`
+**Default value**: `dumps/`
**Expected value**: a filepath pointing to a valid directory Sets the directory where Meilisearch will create dump files. -[Learn more about creating dumps](/reference/api/dump.md). +[Learn more about creating dumps](/reference/api/dump). ### Import dump -**Environment variable**: `MEILI_IMPORT_DUMP` -**CLI option**: `--import-dump` -**Default value**: none +**Environment variable**: `MEILI_IMPORT_DUMP`
+**CLI option**: `--import-dump`
+**Default value**: none
**Expected value**: a filepath pointing to a `.dump` file Imports the dump file located at the specified path. Path must point to a `.dump` file. If a database already exists, Meilisearch will throw an error and abort launch. @@ -243,11 +244,11 @@ Meilisearch will only launch once the dump data has been fully indexed. The time ### Ignore missing dump -::: warning + 🚩 This option does not take any values. Assigning a value will throw an error. 🚩 -::: + -**Environment variable**: `MEILI_IGNORE_MISSING_DUMP` +**Environment variable**: `MEILI_IGNORE_MISSING_DUMP`
**CLI option**: `--ignore-missing-dump` Prevents Meilisearch from throwing an error when `--import-dump` does not point to a valid dump file. Instead, Meilisearch will start normally without importing any dump. @@ -256,11 +257,11 @@ This option will trigger an error if `--import-dump` is not defined. ### Ignore dump if DB exists -::: warning + 🚩 This option does not take any values. Assigning a value will throw an error. 🚩 -::: + -**Environment variable**: `MEILI_IGNORE_DUMP_IF_DB_EXISTS` +**Environment variable**: `MEILI_IGNORE_DUMP_IF_DB_EXISTS`
**CLI option**: `--ignore-dump-if-db-exists` Prevents a Meilisearch instance with an existing database from throwing an error when using `--import-dump`. Instead, the dump will be ignored and Meilisearch will launch using the existing database. @@ -269,9 +270,9 @@ This option will trigger an error if `--import-dump` is not defined. ### Log level -**Environment variable**: `MEILI_LOG_LEVEL` -**CLI option**: `--log-level` -**Default value**: `'INFO'` +**Environment variable**: `MEILI_LOG_LEVEL`
+**CLI option**: `--log-level`
+**Default value**: `'INFO'`
**Expected value**: one of `ERROR`, `WARN`, `INFO`, `DEBUG`, `TRACE`, OR `OFF` Defines how much detail should be present in Meilisearch's logs. @@ -287,9 +288,9 @@ Meilisearch currently supports five log levels, listed in order of increasing ve ### Max indexing memory -**Environment variable**: `MEILI_MAX_INDEXING_MEMORY` -**CLI option**: `--max-indexing-memory` -**Default value**: 2/3 of the available RAM +**Environment variable**: `MEILI_MAX_INDEXING_MEMORY`
+**CLI option**: `--max-indexing-memory`
+**Default value**: 2/3 of the available RAM
**Expected value**: an integer (`104857600`) or a human readable size (`'100Mb'`) Sets the maximum amount of RAM Meilisearch can use when indexing. By default, Meilisearch uses no more than two thirds of available memory. @@ -298,15 +299,15 @@ The value must either be given in bytes or explicitly state a base unit: `10737 It is possible that Meilisearch goes over the exact RAM limit during indexing. In most contexts and machines, this should be a negligible amount with little to no impact on stability and performance. -::: danger + Setting `--max-indexing-memory` to a value bigger than or equal to your machine's total memory is likely to cause your instance to crash. -::: + ### Max indexing threads -**Environment variable**: `MEILI_MAX_INDEXING_THREADS` -**CLI option**: `--max-indexing-threads` -**Default value**: half of the available threads +**Environment variable**: `MEILI_MAX_INDEXING_THREADS`
+**CLI option**: `--max-indexing-threads`
+**Default value**: half of the available threads
**Expected value**: an integer Sets the maximum number of threads Meilisearch can use during indexing. By default, the indexer avoids using more than half of a machine's total processing units. This ensures Meilisearch is always ready to perform searches, even while you are updating an index. @@ -315,24 +316,24 @@ If `--max-indexing-threads` is higher than the real number of cores available in In single-core machines, Meilisearch has no choice but to use the only core available for indexing. This may lead to a degraded search experience during indexing. -::: danger + Avoid setting `--max-indexing-threads` to the total of your machine's processor cores. Though doing so might speed up indexing, it is likely to severely impact search experience. -::: + ### Payload limit size -**Environment variable**: `MEILI_HTTP_PAYLOAD_SIZE_LIMIT` -**CLI option**: `--http-payload-size-limit` -**Default value**: `104857600` (~100MB) +**Environment variable**: `MEILI_HTTP_PAYLOAD_SIZE_LIMIT`
+**CLI option**: `--http-payload-size-limit`
+**Default value**: `104857600` (~100MB)
**Expected value**: an integer -Sets the maximum size of [accepted payloads](/learn/core_concepts/documents.md#dataset-format). Value must be given in bytes or explicitly stating a base unit. For example, the default value can be written as `107374182400`, `'107.7Gb'`, or `'107374 Mb'`. +Sets the maximum size of [accepted payloads](/learn/core_concepts/documents#dataset-format). Value must be given in bytes or explicitly stating a base unit. For example, the default value can be written as `107374182400`, `'107.7Gb'`, or `'107374 Mb'`. ### Schedule snapshot creation -**Environment variable**: `MEILI_SCHEDULE_SNAPSHOT` -**CLI option**: `--schedule-snapshot` -**Default value**: disabled if not present, `86400` if present without a value +**Environment variable**: `MEILI_SCHEDULE_SNAPSHOT`
+**CLI option**: `--schedule-snapshot`
+**Default value**: disabled if not present, `86400` if present without a value
**Expected value**: `None` or an integer Activates scheduled snapshots. Snapshots are disabled by default. @@ -341,26 +342,26 @@ It is possible to use `--schedule-snapshot` without a value. If `--schedule-snap For more control over snapshot scheduling, pass an integer representing the interval in seconds between each snapshot. When `--schedule-snapshot=3600`, Meilisearch takes a new snapshot every hour. -::: note + When using the configuration file, it is also possible to explicitly pass a boolean value to `schedule_snapshot`. Meilisearch takes a new snapshot every 24 hours when `schedule_snapshot=true`, and takes no snapshots when `schedule_snapshot=false`. -::: + -[Learn more about snapshots](/learn/advanced/snapshots.md). +[Learn more about snapshots](/learn/advanced/snapshots). ### Snapshot destination -**Environment variable**: `MEILI_SNAPSHOT_DIR` -**CLI option**: `--snapshot-dir` -**Default value**: `snapshots/` +**Environment variable**: `MEILI_SNAPSHOT_DIR`
+**CLI option**: `--snapshot-dir`
+**Default value**: `snapshots/`
**Expected value**: a filepath pointing to a valid directory Sets the directory where Meilisearch will store snapshots. ### Import snapshot -**Environment variable**: `MEILI_IMPORT_SNAPSHOT` -**CLI option**: `--import-snapshot` -**Default value**: `None` +**Environment variable**: `MEILI_IMPORT_SNAPSHOT`
+**CLI option**: `--import-snapshot`
+**Default value**: `None`
**Expected value**: a filepath pointing to a snapshot file Launches Meilisearch after importing a previously-generated snapshot at the given filepath. @@ -374,11 +375,11 @@ This behavior can be modified with the [`--ignore-snapshot-if-db-exists`](#ignor ### Ignore missing snapshot -::: warning + 🚩 This option does not take any values. Assigning a value will throw an error. 🚩 -::: + -**Environment variable**: `MEILI_IGNORE_MISSING_SNAPSHOT` +**Environment variable**: `MEILI_IGNORE_MISSING_SNAPSHOT`
**CLI option**: `--ignore-missing-snapshot` Prevents a Meilisearch instance from throwing an error when [`--import-snapshot`](#import-snapshot) does not point to a valid snapshot file. @@ -387,11 +388,11 @@ This command will throw an error if `--import-snapshot` is not defined. ### Ignore snapshot if DB exists -::: warning + 🚩 This option does not take any values. Assigning a value will throw an error. 🚩 -::: + -**Environment variable**: `MEILI_IGNORE_SNAPSHOT_IF_DB_EXISTS` +**Environment variable**: `MEILI_IGNORE_SNAPSHOT_IF_DB_EXISTS`
**CLI option**: `--ignore-snapshot-if-db-exists` Prevents a Meilisearch instance with an existing database from throwing an error when using `--import-snapshot`. Instead, the snapshot will be ignored and Meilisearch will launch using the existing database. @@ -402,18 +403,18 @@ This command will throw an error if `--import-snapshot` is not defined. #### SSL authentication path -**Environment variable**: `MEILI_SSL_AUTH_PATH` -**CLI option**: `--ssl-auth-path` -**Default value**: `None` +**Environment variable**: `MEILI_SSL_AUTH_PATH`
+**CLI option**: `--ssl-auth-path`
+**Default value**: `None`
**Expected value**: a filepath Enables client authentication in the specified path. #### SSL certificates path -**Environment variable**: `MEILI_SSL_CERT_PATH` -**CLI option**: `--ssl-cert-path` -**Default value**: `None` +**Environment variable**: `MEILI_SSL_CERT_PATH`
+**CLI option**: `--ssl-cert-path`
+**Default value**: `None`
**Expected value**: a filepath pointing to a valid SSL certificate Sets the server's SSL certificates. @@ -422,9 +423,9 @@ Value must be a path to PEM-formatted certificates. The first certificate should #### SSL key path -**Environment variable**: `MEILI_SSL_KEY_PATH` -**CLI option**: `--ssl-key-path` -**Default value**: `None` +**Environment variable**: `MEILI_SSL_KEY_PATH`
+**CLI option**: `--ssl-key-path`
+**Default value**: `None`
**Expected value**: a filepath pointing to a valid SSL key file Sets the server's SSL key files. @@ -433,9 +434,9 @@ Value must be a path to an RSA private key or PKCS8-encoded private key, both in #### SSL OCSP path -**Environment variable**: `MEILI_SSL_OCSP_PATH` -**CLI option**: `--ssl-ocsp-path` -**Default value**: `None` +**Environment variable**: `MEILI_SSL_OCSP_PATH`
+**CLI option**: `--ssl-ocsp-path`
+**Default value**: `None`
**Expected value**: a filepath pointing to a valid OCSP certificate Sets the server's OCSP file. _Optional_ @@ -444,12 +445,12 @@ Reads DER-encoded OCSP response from OCSPFILE and staple to certificate. #### SSL require auth -::: warning + 🚩 This option does not take any values. Assigning a value will throw an error. 🚩 -::: + -**Environment variable**: `MEILI_SSL_REQUIRE_AUTH` -**CLI option**: `--ssl-require-auth` +**Environment variable**: `MEILI_SSL_REQUIRE_AUTH`
+**CLI option**: `--ssl-require-auth`
**Default value**: `None` Makes SSL authentication mandatory. @@ -458,24 +459,24 @@ Sends a fatal alert if the client does not complete client authentication. #### SSL resumption -::: warning + 🚩 This option does not take any values. Assigning a value will throw an error. 🚩 -::: + -**Environment variable**: `MEILI_SSL_RESUMPTION` -**CLI option**: `--ssl-resumption` +**Environment variable**: `MEILI_SSL_RESUMPTION`
+**CLI option**: `--ssl-resumption`
**Default value**: `None` Activates SSL session resumption. #### SSL tickets -::: warning + 🚩 This option does not take any values. Assigning a value will throw an error. 🚩 -::: + -**Environment variable**: `MEILI_SSL_TICKETS` -**CLI option**: `--ssl-tickets` +**Environment variable**: `MEILI_SSL_TICKETS`
+**CLI option**: `--ssl-tickets`
**Default value**: `None` Activates SSL tickets. diff --git a/learn/configuration/settings.md b/learn/configuration/settings.md deleted file mode 100644 index e3b73ceba4..0000000000 --- a/learn/configuration/settings.md +++ /dev/null @@ -1,17 +0,0 @@ -# Index settings - -The table below shows the **index-level settings** available in Meilisearch. - -| Name | Type | Default value | Description | -| :----------------------------------------------------------------------------- | :--------------- | :----------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------- | -| **[`displayedAttributes`](/reference/api/settings.md#displayed-attributes)** | Array of strings | All attributes: `["*"]` | Fields displayed in the returned documents | -| **[`distinctAttribute`](/reference/api/settings.md#distinct-attribute)** | String | `null` | Search returns documents with distinct (different) values of the given field | -| **[`faceting`](/reference/api/settings.md#faceting)** | Object | [Default object](/reference/api/settings.md#faceting-object) | Faceting settings | -| **[`filterableAttributes`](/reference/api/settings.md#filterable-attributes)** | Array of strings | Empty | Attributes to use as filters and facets | -| **[`pagination`](/reference/api/settings.md#pagination)** | Object | [Default object](/reference/api/settings.md#pagination-object) | Pagination settings | -| **[`rankingRules`](/reference/api/settings.md#ranking-rules)** | Array of strings | `["words",`
`"typo",`
`"proximity",`
`"attribute",`
`"sort",`
`"exactness"]` | List of ranking rules in order of importance | -| **[`searchableAttributes`](/reference/api/settings.md#searchable-attributes)** | Array of strings | All attributes: `["*"]` | Fields in which to search for matching query words sorted by order of importance | -| **[`sortableAttributes`](/reference/api/settings.md#sortable-attributes)** | Array of strings | Empty | Attributes to use when sorting search results | -| **[`stopWords`](/reference/api/settings.md#stop-words)** | Array of strings | Empty | List of words ignored by Meilisearch when present in search queries | -| **[`synonyms`](/reference/api/settings.md#synonyms)** | Object | Empty | List of associated words treated similarly | -| **[`typoTolerance`](/reference/api/settings.md#typo-tolerance)** | Object | [Default object](/reference/api/settings.md#typo-tolerance-object) | Typo tolerance settings | diff --git a/learn/contributing/contributing_to_docs.md b/learn/contributing/contributing_docs.mdx similarity index 78% rename from learn/contributing/contributing_to_docs.md rename to learn/contributing/contributing_docs.mdx index f8a0946214..8b604c9145 100644 --- a/learn/contributing/contributing_to_docs.md +++ b/learn/contributing/contributing_docs.mdx @@ -1,6 +1,10 @@ +--- +sidebarDepth: 3 +--- + # Contributing to our documentation -This documentation website is hosted in a [public GitHub repository](https://github.com/meilisearch/documentation). It is built with [VuePress](https://vuepress.github.io), written in [MarkDown](https://www.markdownguide.org/getting-started/), and deployed on [Netlify](https://www.netlify.com). +This documentation website is hosted in a [public GitHub repository](https://github.com/meilisearch/documentation). It is built with [Next.js](https://nextjs.com), written in [MDX](https://mdxjs.com), and deployed on [Vercel](https://www.vercel.com). ## Our documentation philosophy @@ -11,13 +15,27 @@ Our documentation aims to be: - **Thorough**: the documentation website should contain all information anyone needs to use Meilisearch - **Open source**: this is a resource by Meilisearch users, for Meilisearch users +## Documentation repository and local development + +The Meilisearch documentation repository only stores the content of the docs website. Because the code that makes up the website lives in another repository, **it is not possible to run a local copy of the documentation**. + +### Handling images and other static assets + +When contributing content to the Meilisearch docs, store screenshots, images, GIFs, and videos in the relevant directory under `/assets`. + +The build process does not currently support static assets with relative paths. When adding them to a document, make sure the asset URL points to the raw GitHub file address: + +```markdown +\!\[Image description\]\(https://raw.githubusercontent.com/meilisearch/documentation/[branch_name]/assets/images/[guide_name]/diagram.png\) +``` + ## How to contribute? ### Issues The maintainers of Meilisearch's documentation use [GitHub Issues](https://github.com/meilisearch/documentation/issues/new) to track tasks. Helpful issues include: -- Bug reports detailing technical issues with this website +- Notify the docs team about content that is inaccurate, outdated, or confusing - Requests for new features such as versioning or an embedded console - Requests for new content such as new guides and tutorials @@ -104,70 +122,3 @@ Our only major requirement for PR contributions is that the author responds to c Once you've opened a PR on this repo, one of our team members will stop by shortly to review it. If your PR is approved, nothing further is required from you. However, **if in seven days you have not responded to a request for further changes or more information, we will consider the PR abandoned and close it**. If this happens to you and you think there has been some mistake, please let us know and we will try to rectify the situation. - -## Local development - -### Requirements - -- [Node version](https://nodejs.org/en/) >= v14 and <= v16 - -### Installing and running the docs - -```bash -# Clone the repository -git clone git@github.com:meilisearch/documentation.git meilisearch-documentation - -# Open the newly created directory -cd meilisearch-documentation - -# Install dependencies -yarn install - -# Run Meilisearch documentation on http://localhost:8080 -yarn dev -``` - -### Testing - -A complete test can be done using the following command: - -```bash -yarn test -``` - -The tests are triggered on build and on any pull request to main. - -#### Checking dead links - -Check for broken or dead links before submitting a pull request using: - -```bash -yarn check-links -``` - -#### Checking styling - -Run the following command to check for any styling errors like extra spaces or lines in `*.vue`, `*.js`, and `*.md` files: - -```bash -yarn style -``` - -### Handling images and other assets - -Screenshots, images, GIFs, and video demonstrations should be placed in a relevant folder under `.vuepress/public/` and then referenced from any markdown file a using relative link. For example, if you create the file `.vuepress/public/my_cool_guide/my_cool_image.png`, you would embed it in your document using - -```md -![A description of my cool image](/my_cool_guide/my_cool_image.png) -``` - -### Deployment - -The documentation is deployed as a static website. The main branch is automatically deployed at [https://docs.meilisearch.com](https://docs.meilisearch.com). - -You can build the static website using the following command: - -```bash -yarn build -# The website is now available in .vuepress/dist and you can serve it using any webserver. -``` diff --git a/learn/contributing/overview.md b/learn/contributing/overview.mdx similarity index 85% rename from learn/contributing/overview.md rename to learn/contributing/overview.mdx index 82da246192..a1a07d2415 100644 --- a/learn/contributing/overview.md +++ b/learn/contributing/overview.mdx @@ -2,10 +2,10 @@ There are many ways to contribute to Meilisearch directly, such as: -- [Contributing to the documentation](/learn/contributing/contributing_to_docs.md) -- Contributing to the [main engine](https://github.com/meilisearch/meilisearch/blob/main/CONTRIBUTING.md) +- [Contributing to the documentation](/learn/contributing/contributing_docs) +- Contributing to the [main engine](https://github.com/meilisearch/meilisearch/blob/main/CONTRIBUTING) - Contributing to [our integrations](https://github.com/meilisearch/integration-guides) - - [Creating an integration](https://github.com/meilisearch/integration-guides/blob/main/resources/build-integration.md) + - [Creating an integration](https://github.com/meilisearch/integration-guides/blob/main/resources/build-integration) - Creating written or video content (tutorials, blog posts, etc.) - Voting on our [public roadmap](https://roadmap.meilisearch.com/tabs/5-ideas) diff --git a/learn/cookbooks/docker.md b/learn/cookbooks/docker.mdx similarity index 93% rename from learn/cookbooks/docker.md rename to learn/cookbooks/docker.mdx index 117a09bd2b..74d0c4dc12 100644 --- a/learn/cookbooks/docker.md +++ b/learn/cookbooks/docker.mdx @@ -14,9 +14,9 @@ docker pull getmeili/meilisearch:v1.1 Meilisearch deploys a new Docker image with every release of the engine. Each image is tagged with the corresponding Meilisearch version, indicated in the above example by the text following the `:` symbol. You can see [the full list of available Meilisearch Docker images](https://hub.docker.com/r/getmeili/meilisearch/tags#!) on Docker Hub. -::: warning + The `latest` tag will always download the most recent Meilisearch release. Meilisearch advises against using it, as it might result in different machines running different images if significant time passes between setting up each one of them. -::: + ## Run Meilisearch with Docker @@ -31,7 +31,7 @@ docker run -it --rm \ ### Configure Meilisearch -Meilisearch accepts a number of instance options during launch. You can configure these in two ways: environment variables and CLI arguments. Note that some options are only available as CLI arguments—[consult our configuration reference for more details](/learn/configuration/instance_options.md). +Meilisearch accepts a number of instance options during launch. You can configure these in two ways: environment variables and CLI arguments. Note that some options are only available as CLI arguments—[consult our configuration reference for more details](/learn/configuration/instance_options). #### Passing instance options with environment variables @@ -78,7 +78,7 @@ The example above uses `$(pwd)/meili_data`, which is a directory in the host mac ### Generating dumps and updating Meilisearch -To export a dump, [use the create dump endpoint as described in our dumps guide](/learn/advanced/dumps.md). Once the task is complete, you can access the dump file in `/meili_data/dumps` inside the volume you passed with `-v`. +To export a dump, [use the create dump endpoint as described in our dumps guide](/learn/advanced/dumps). Once the task is complete, you can access the dump file in `/meili_data/dumps` inside the volume you passed with `-v`. To import a dump, use Meilisearch's `--import-dump` command-line option and specify the path to the dump file. Make sure the path points to a volume reachable by Docker: @@ -92,11 +92,11 @@ docker run -it --rm \ Note that exporting and importing dumps require using command-line arguments. [For more information on how to run Meilisearch with CLI options and Docker, refer to this guide's relevant section.](#passing-instance-options-with-cli-arguments) -::: warning + If you are storing your data in a persistent volume as instructed in [the data persistency section](#data-persistency), you must delete `/meili_data/data.ms` in that volume before importing a dump. -::: + -Use dumps to migrate data between different Meilisearch releases. [Read more about updating Meilisearch in our dedicated guide.](/learn/update_and_migration/updating.md) +Use dumps to migrate data between different Meilisearch releases. [Read more about updating Meilisearch in our dedicated guide.](/learn/update_and_migration/updating) ### Snapshots @@ -122,4 +122,4 @@ docker run -it --rm \ meilisearch --import-snapshot /meili_data/snapshots/data.ms.snapshot ``` -Use snapshots for backup or when migrating data between two Meilisearch instances of the same version. [Read more about snapshots in our guide.](/learn/advanced/snapshots.md) +Use snapshots for backup or when migrating data between two Meilisearch instances of the same version. [Read more about snapshots in our guide.](/learn/advanced/snapshots) diff --git a/learn/cookbooks/http2_ssl.md b/learn/cookbooks/http2_ssl.mdx similarity index 100% rename from learn/cookbooks/http2_ssl.md rename to learn/cookbooks/http2_ssl.mdx diff --git a/learn/cookbooks/postman_collection.md b/learn/cookbooks/postman_collection.md deleted file mode 100644 index 223f6190ac..0000000000 --- a/learn/cookbooks/postman_collection.md +++ /dev/null @@ -1,38 +0,0 @@ -# Postman collection for Meilisearch - -Are you tired of using the `curl` command in your terminal to test Meilisearch? It can be tedious to re-write every route when wanting to try out an API. - -Postman is a platform that lets you create HTTP requests you can easily reuse and share with everyone. We provide a Postman collection containing all the routes of the Meilisearch API! 🚀 - -::: note -If you don't have Postman already, you can [download it here](https://www.postman.com/downloads/). -It's free and available on many OS distributions. -::: - -## Import the collection - -Once you have downloaded the [Postman collection](/postman/meilisearch-collection.json), you need to import it into Postman. - -![The "Import" button](/postman/import.png) - -## Edit the configuration - -![Selecting "Edit" from the overflow menu](/postman/edit.png) - -Set the "Token" if needed (set to `masterKey` by default): - -![The "Token" field set to masterKey and "Type" to Bearer Token in the "Authorization" tab.](/postman/set_token.png) - -Set `url` (set to Meilisearch's local port by default) and `indexUID` (set to `indexUID` by default): - -![Setting the "url" to http://localhost:7700/ and "indexUID" to indexUId in the Variables tab.](/postman/set_variables.png) - -The `url` and `indexUID` variables are used in all the collection routes, like in this one: - -![Highlighting {{url}} and {{indexUID}}](/postman/url.png) - -## Start to use it! - -You can now [run your Meilisearch instance](/learn/getting_started/quick_start.md#setup-and-installation) and create your first index: - -![The "Send" button](/postman/create_index.png) diff --git a/learn/cookbooks/postman_collection.mdx b/learn/cookbooks/postman_collection.mdx new file mode 100644 index 0000000000..33accfd97f --- /dev/null +++ b/learn/cookbooks/postman_collection.mdx @@ -0,0 +1,37 @@ +# Postman collection for Meilisearch + +Are you tired of using the `curl` command in your terminal to test Meilisearch? It can be tedious to re-write every route when wanting to try out an API. + +Postman is a platform that lets you create HTTP requests you can easily reuse and share with everyone. We provide a Postman collection containing all the routes of the Meilisearch API! 🚀 + + +If you don't have Postman already, you can [download it here](https://www.postman.com/downloads/). It's free and available on many OS distributions. + + +## Import the collection + +Once you have downloaded the [Postman collection](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/misc/meilisearch-collection-postman.json), you need to import it into Postman. + +![The "Import" button](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/postman/import.png) + +## Edit the configuration + +![Selecting "Edit" from the overflow menu](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/postman/edit.png) + +Set the "Token" if needed (set to `masterKey` by default): + +![The "Token" field set to masterKey and "Type" to Bearer Token in the "Authorization" tab.](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/postman/set_token.png) + +Set `url` (set to Meilisearch's local port by default) and `indexUID` (set to `indexUID` by default): + +![Setting the "url" to http://localhost:7700/ and "indexUID" to indexUId in the Variables tab.](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/postman/set_variables.png) + +The `url` and `indexUID` variables are used in all the collection routes, like in this one: + +![Highlighting {{url}} and {{indexUID}}](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/postman/url.png) + +## Start to use it! + +You can now [run your Meilisearch instance](/learn/getting_started/quick_start#setup-and-installation) and create your first index: + +![The "Send" button](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/postman/create_index.png) diff --git a/learn/cookbooks/running_production.md b/learn/cookbooks/running_production.mdx similarity index 89% rename from learn/cookbooks/running_production.md rename to learn/cookbooks/running_production.mdx index 127723c956..089f2515bd 100644 --- a/learn/cookbooks/running_production.md +++ b/learn/cookbooks/running_production.mdx @@ -4,30 +4,10 @@ Hopefully, you already know that [Meilisearch](https://github.com/meilisearch/meilisearch) is a powerful and fast open-source search engine built in [Rust](https://www.rust-lang.org). It was designed to provide users with a very useful and customizable search experience including out-of-the-box features such as typo-tolerance, filtering, and synonyms for any kind of project. -Running a Meilisearch instance for testing purposes is incredibly easy and can be done in [many ways](/learn/getting_started/quick_start.md): using Docker, Homebrew, Aptitude, binaries, a simple `curl`, or even the source code. If you are new to Meilisearch, we suggest that you take a tour around the documentation. +Running a Meilisearch instance for testing purposes is incredibly easy and can be done in [many ways](/learn/getting_started/quick_start): using Docker, Homebrew, Aptitude, binaries, a simple `curl`, or even the source code. If you are new to Meilisearch, we suggest that you take a tour around the documentation. Using Meilisearch on your own machine for your weekend project is fun, let's agree on that. However, you may want to go live and deploy a project in production, to take it to the next level. What steps and details would you need to **deploy Meilisearch in production** and ensure it is **safe and ready to use**? -## Content of this article - -[Step 1: Install Meilisearch](/learn/cookbooks/running_production.md#step-1-install-meilisearch) - -[Step 2: Create system user](/learn/cookbooks/running_production.md#step-2-create-system-user) - -[Step 3: Create a configuration file](/learn/cookbooks/running_production.md#step-3-create-a-configuration-file) - -[Step 4: Run Meilisearch as a service](/learn/cookbooks/running_production.md#step-4-run-meilisearch-as-a-service) - -+ [4.1. Create a service file](/learn/cookbooks/running_production.md#_4-1-create-a-service-file) -+ [4.2. Enable and start service](/learn/cookbooks/running_production.md#_4-2-enable-and-start-service) - -[Step 5: Secure and finish your setup](/learn/cookbooks/running_production.md#step-5-secure-and-finish-your-setup) - -+ [5.1. Creating a reverse proxy with Nginx](/learn/cookbooks/running_production.md#_5-1-creating-a-reverse-proxy-with-nginx) -+ [5.2. Set up SSL/TLS for your Meilisearch](/learn/cookbooks/running_production.md#_5-2-set-up-ssl-tls-for-your-meilisearch) - -[Conclusion](/learn/cookbooks/running_production.md#conclusion) - ## Get your Meilisearch ready for production For this tutorial, we will be using a Debian 10 server, running on DigitalOcean. You can easily try it on your own, with plans starting at $5/month. And if you want some credits to start running your Meilisearch and are not already registered on DigitalOcean, you can get $100 for free using [this referral link](https://m.do.co/c/7c67bd97e101). @@ -37,9 +17,9 @@ For this tutorial, we will be using a Debian 10 server, running on DigitalOcean. + An up-to-date server that runs Debian 10 + An ssh key pair to connect to that machine -::: tip + Learn how to connect via SSH to your [DigitalOcean droplet](https://www.digitalocean.com/docs/droplets/how-to/connect-with-ssh/) or any [Linux or Windows server](https://phoenixnap.com/kb/ssh-to-connect-to-remote-server-linux-or-windows) -::: + ## Step 1: Install Meilisearch @@ -56,7 +36,7 @@ apt install curl -y curl -L https://install.meilisearch.com | sh ``` -The different Meilisearch installation options are detailed in [this guide](/learn/getting_started/quick_start.md#setup-and-installation). +The different Meilisearch installation options are detailed in [this guide](/learn/getting_started/quick_start#setup-and-installation). **There are many different ways to get Meilisearch running on your machine.** As an open-source project, you can always compile the latest stable release of Meilisearch from its source code to ensure the binary uses your architecture in the best possible way. @@ -64,6 +44,12 @@ You can always check the latest Meilisearch stable version, and get Meilisearch **[Latest Meilisearch Stable Version](https://github.com/meilisearch/meilisearch/releases/latest)** +Give the binary execute permission using: + +```bash +chmod +x meilisearch +``` + Meilisearch is finally installed and ready to use. To make it accessible from everywhere in your system, move the binary file into your system binaries folder: ```bash @@ -109,9 +95,9 @@ chmod 750 /var/lib/meilisearch In Linux environments, a `service` is a process that can be launched when the operating system is booting and which will keep running in the background. One of its biggest advantages is making your program available at any moment. Even if some execution problems or crashes occur, the service will be restarted and your program will be run again. -::: note + If you are new to services and `systemd`, you can learn more about the basics of Linux services [here](https://www.hostinger.com/tutorials/manage-and-list-services-in-linux/). -::: + In Debian and other Linux distributions, `systemd` allows you to create and manage your own custom services. In order to make sure that Meilisearch will always respond to your requests, you can build your own service. This way, you will ensure its availability in case of a crash or in case of system reboot. If any of these occur, `systemd` will automatically restart Meilisearch. @@ -119,7 +105,7 @@ In Debian and other Linux distributions, `systemd` allows you to create and mana Service files are text files that tell your operating system how to run your program, and when. They live in the `/etc/systemd/system` directory, and your system will load them at boot time. In this case, let's use a very simple service file that will run Meilisearch on port `7700`. -To run Meilisearch in a production environment, use the `--env` flag. Set a master key of at least 16 bytes using the `--master-key` option. When you launch an instance for the first time, Meilisearch creates two default API keys: [`Default Search API Key` and `Default Admin API Key`](/learn/security/master_api_keys.md#using-default-api-keys-for-authorization). With the `Default Admin API Key`, you can control who can access or create new documents, indexes, or change the configuration. +To run Meilisearch in a production environment, use the `--env` flag. Set a master key of at least 16 bytes using the `--master-key` option. When you launch an instance for the first time, Meilisearch creates two default API keys: [`Default Search API Key` and `Default Admin API Key`](/learn/security/master_api_keys#using-default-api-keys-for-authorization). With the `Default Admin API Key`, you can control who can access or create new documents, indexes, or change the configuration. Remember to choose a safe and random key and avoid exposing it in publicly accessible applications. You can change the master key with the following command: @@ -141,9 +127,9 @@ WantedBy=multi-user.target EOF ``` -::: tip -For more information on Meilisearch security and API keys see the [security docs](/learn/security/master_api_keys.md). You can check our [quick start](/learn/getting_started/quick_start.md#setup-and-installation) guide for more information on how to get Meilisearch up and running. -::: + +For more information on Meilisearch security and API keys see the [security docs](/learn/security/master_api_keys). You can check our [quick start](/learn/getting_started/quick_start#setup-and-installation) guide for more information on how to get Meilisearch up and running. + As for now, it is not time yet to expose your Meilisearch instance to the external world. To keep running it safely inside your own environment, make it available locally at `local`. This means that only programs running on your machine are allowed to make requests to your Meilisearch instance. @@ -182,9 +168,9 @@ It's time to safely make your brand new Meilisearch available to be requested fr A reverse proxy is basically an application that will handle every communication between the outside world and your internal applications. Nginx will receive external HTTP requests and redirect them to Meilisearch. When Meilisearch has done its amazing job, it will communicate its response to Nginx, which will then transfer the latter to the user who originally sent the request. This is a common way to isolate and protect any application by adding a robust, secure, and fast gate-keeper such as Nginx, one of the safest and most efficient tools available online, and of course, open-source! -::: tip + Reverse proxies are very useful regarding security, performance, scalability, and logging concerns. If you are new to Reverse proxies, you may enjoy this article explaining the why and the how of [reverse proxies](https://www.keycdn.com/support/nginx-reverse-proxy). -::: + Configuring Nginx as a proxy server is really simple. First of all, install it on your machine. @@ -223,11 +209,11 @@ systemctl enable nginx systemctl restart nginx ``` -Meilisearch is now up, deployed in a production environment, using a safe API key, and being served by a Reverse Proxy Nginx. You should now be able to send requests to your server from the outside world. Open your web browser and visit: (). The IP address is the same you used to connect to your machine via SSH in Step 1. +Meilisearch is now up, deployed in a production environment, using a safe API key, and being served by a Reverse Proxy Nginx. You should now be able to send requests to your server from the outside world. Open your web browser and visit: (http://your-ip-address). The IP address is the same you used to connect to your machine via SSH in Step 1. -::: note + If you want to learn more about using Nginx as a Reverse Proxy, see [this dedicated documentation](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/). -::: + The only remaining problem is that Meilisearch processes requests via HTTP without any additional security. The content that is being transmitted over HTTP could easily be read or modified by attackers, and someone could get full or partial access to your data. In order to prevent this to happen, it's important to use the HTTPS, which will enable you to use a SSL/TLS certificate, and securely transmit data. @@ -237,10 +223,10 @@ SSL will let the user or client establish an authenticated connection to Meilise In most cases, when enabling SSL, you may want to use your own domain name (or a sub-domain). The first step you need to follow is to register your own domain name and change the DNS records. To make your domain name point to your newly installed Meilisearch server, you just need to add an `A record` pointing to the IP address used to connect to your own server. This process is simple and fast but can vary for every domain name provider. Thus, we will not cover that process in this article. -::: tip + When you register a domain name and add an `A record`, you should be automatically able to request Meilisearch directly by using that domain name. -To illustrate this, if you had registered your domain name `example.com`, requesting indexes would be done at -::: +To illustrate this, if you had registered your domain name `example.com`, requesting indexes would be done at http://example.com/indexes + Once your domain name has been set up, you are ready to configure SSL/TLS and use HTTPS. You have two different options to achieve this goal. The first one is using [Certbot](https://certbot.eff.org/), an amazing, free, and very easy to use tool. If you already have SSL certificates issued from a `Certificate Authority or CA` for your domain name, the second option covers the steps you need to follow. Then, you will be ready to use Meilisearch safely in production! diff --git a/learn/cookbooks/search_bar_for_docs.md b/learn/cookbooks/search_bar_for_docs.mdx similarity index 89% rename from learn/cookbooks/search_bar_for_docs.md rename to learn/cookbooks/search_bar_for_docs.mdx index daf6b4fb38..55c846286d 100644 --- a/learn/cookbooks/search_bar_for_docs.md +++ b/learn/cookbooks/search_bar_for_docs.mdx @@ -1,11 +1,5 @@ # Integrate a relevant search bar to your documentation -You might have noticed the search bar in this documentation. - -![Meilisearch docs search bar updating results for 'faq'](/tuto-searchbar-for-docs/vuepress-searchbar-demo.gif) - -And you are probably wanting the same for your own documentation! - This tutorial will guide you through the steps of building a relevant and powerful search bar for your documentation 🚀 1. [Run a Meilisearch Instance](#run-a-meilisearch-instance) @@ -23,16 +17,16 @@ curl -L https://install.meilisearch.com | sh ./meilisearch --master-key=MASTER_KEY ``` -We provide a few [other installation methods](/learn/getting_started/quick_start.md#setup-and-installation). +We provide a few [other installation methods](/learn/getting_started/quick_start#setup-and-installation). Meilisearch is open-source and can run either on your server or on any cloud provider. -::: note + The host URL and the API key you will provide in the next steps correspond to the credentials of this Meilisearch instance. In the example above, the host URL is `http://localhost:7700` and the API key is `MASTER_KEY`. -::: + ## Scrape your content @@ -84,13 +78,13 @@ The `docs-content` class is the main container of the textual content in this ex All searchable `lvl` elements outside this main documentation container (for instance, in a sidebar) must be `global` selectors. They will be globally picked up and injected to every document built from your page. If you use VuePress for your documentation, you can check out the [configuration file](https://github.com/meilisearch/documentation/blob/main/.vuepress/docs-scraper/docs-scraper.config.json) we use in production. -In our case, the main container is `theme-default-content` and the selector the titles and subtitles are `h1`, `h2`... +In our case, the main container is `theme-default-content` and the selector titles and subtitles are `h1`, `h2`... -::: tip + More [optional fields are available](https://github.com/meilisearch/docs-scraper#all-the-config-file-settings) to fit your needs. -::: + ### Run the scraper @@ -105,22 +99,22 @@ docker run -t --rm \ getmeili/docs-scraper:latest pipenv run ./docs_scraper config.json ``` -::: note + If you don't want to use Docker, here are [other ways to run the scraper](https://github.com/meilisearch/docs-scraper#installation-and-usage). -::: + `` should be the **absolute** path of your configuration file defined at [the previous step](#configuration-file). The API key should have the permissions to add documents into your Meilisearch instance. In a production environment, we recommend providing the `Default Admin API Key` as it has enough permissions to perform such requests. -_More about [Meilisearch security](/learn/security/master_api_keys.md)._ +_More about [Meilisearch security](/learn/security/master_api_keys)._ -::: tip + We recommend running the scraper at each new deployment of your documentation, [as we do for the Meilisearch's one](https://github.com/meilisearch/documentation/blob/main/.github/workflows/deploy.yml). -::: + ## Integrate the search bar @@ -130,29 +124,21 @@ If your documentation is not a VuePress application, you can directly go to [thi If you use VuePress for your documentation, we provide a [Vuepress plugin](https://github.com/meilisearch/vuepress-plugin-meilisearch). This plugin is used in production in the Meilisearch documentation. -![Search bar demo for 'synon' using the Vuepress plugin](/tuto-searchbar-for-docs/vuepress-plugin-example.png) - In your VuePress project: -:::: tabs - -::: tab yarn - + + ```bash yarn add vuepress-plugin-meilisearch ``` + -::: - -::: tab npm - + ```bash npm install vuepress-plugin-meilisearch ``` - -::: - -:::: + + In your `config.js` file: @@ -176,18 +162,18 @@ The `hostUrl` and the `apiKey` fields are the credentials of the Meilisearch ins These three fields are mandatory, but more [optional fields are available](https://github.com/meilisearch/vuepress-plugin-meilisearch#customization) to customize your search bar. -::: warning + -Since the configuration file is public, we strongly recommend providing a key that can only access [the search endpoint](/reference/api/search.md) , such as the `Default Search API Key`, in a production environment. -Read more about [Meilisearch security](/learn/security/master_api_keys.md). +Since the configuration file is public, we strongly recommend providing a key that can only access [the search endpoint](/reference/api/search) , such as the `Default Search API Key`, in a production environment. +Read more about [Meilisearch security](/learn/security/master_api_keys). -::: + ### For all kinds of documentation If you don't use VuePress for your documentation, we provide a [front-end SDK](https://github.com/meilisearch/docs-searchbar.js) to integrate a powerful and relevant search bar to any documentation website. -![Docxtemplater search bar updating results for 'html'](/tuto-searchbar-for-docs/docxtemplater-searchbar-demo.gif) +![Docxtemplater search bar updating results for 'html'](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/tuto-searchbar-for-docs/docxtemplater-searchbar-demo.gif) _[Docxtemplater](https://docxtemplater.com/) search bar demo_ ```html @@ -217,23 +203,23 @@ The `hostUrl` and the `apiKey` fields are the credentials of the Meilisearch ins `indexUid` is the index identifier in your Meilisearch instance in which your website content is stored. It has been defined in the [config file](#configuration-file). `inputSelector` is the `id` attribute of the HTML search input tag. -::: warning + We strongly recommend providing a `Default Search API Key` in a production environment, which is enough to perform search requests. -Read more about [Meilisearch security](/learn/security/master_api_keys.md). +Read more about [Meilisearch security](/learn/security/master_api_keys). -::: + The default behavior of this library fits perfectly for a documentation search bar, but you might need [some customizations](https://github.com/meilisearch/docs-searchbar.js#customization). -::: note + For more concrete examples, you can check out this [basic HTML file](https://github.com/meilisearch/docs-searchbar.js/blob/main/playgrounds/html/index.html) or [this more advanced Vue file](https://github.com/meilisearch/vuepress-plugin-meilisearch/blob/main/MeiliSearchBox.vue). -::: + ## What's next? -At this point you should have a working search engine on your website, congrats! 🎉 -You can check [this tutorial](/learn/cookbooks/running_production.md) if you now want to run Meilisearch in production! +At this point, you should have a working search engine on your website, congrats! 🎉 +You can check [this tutorial](/learn/cookbooks/running_production) if you now want to run Meilisearch in production! diff --git a/learn/core_concepts/documents.md b/learn/core_concepts/documents.mdx similarity index 73% rename from learn/core_concepts/documents.md rename to learn/core_concepts/documents.mdx index 16695174c7..e8e32502f9 100644 --- a/learn/core_concepts/documents.md +++ b/learn/core_concepts/documents.mdx @@ -1,10 +1,14 @@ +--- +sidebarDepth: 3 +--- + # Documents -A document is an object composed of one or more fields. Each field consists of an **attribute** and its associated **value**. Documents function as containers for organizing data, and are the basic building blocks of a Meilisearch database. To search for a document, you must first add it to an [index](/learn/core_concepts/indexes.md). +A document is an object composed of one or more fields. Each field consists of an **attribute** and its associated **value**. Documents function as containers for organizing data, and are the basic building blocks of a Meilisearch database. To search for a document, you must first add it to an [index](/learn/core_concepts/indexes). ## Structure -![Diagram illustration Meilisearch's document structure](/document_structure.svg =573x400) +![Diagram illustration Meilisearch's document structure](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/document_structure.svg) ### Important terms @@ -18,41 +22,41 @@ A document is an object composed of one or more fields. Each field consists of a A field is a set of two data items linked together: an attribute and a value. Documents are made up of fields. -An attribute functions a bit like a variable in most programming languages. It is a name that allows you to store, access, and describe some data. That data is the attribute's value. In the case of strings, a value **[can contain at most 65535 positions](/learn/advanced/known_limitations.md#maximum-number-of-words-per-attribute)**. Words exceeding the 65535 position limit will be ignored. +An attribute functions a bit like a variable in most programming languages. It is a name that allows you to store, access, and describe some data. That data is the attribute's value. In the case of strings, a value **[can contain at most 65535 positions](/learn/advanced/known_limitations#maximum-number-of-words-per-attribute)**. Words exceeding the 65535 position limit will be ignored. Every field has a data type dictated by its value. Every value must be a valid [JSON data type](https://www.w3schools.com/js/js_json_datatypes.asp). -If a field contains an object, Meilisearch flattens it during indexing using dot notation and brings the object's keys and values to the root level of the document itself. This flattened object is only an intermediary representation—you will get the original structure upon search. You can read more about this in our [dedicated guide](/learn/advanced/datatypes.md#objects). +If a field contains an object, Meilisearch flattens it during indexing using dot notation and brings the object's keys and values to the root level of the document itself. This flattened object is only an intermediary representation—you will get the original structure upon search. You can read more about this in our [dedicated guide](/learn/advanced/datatypes#objects). -With [ranking rules](/learn/core_concepts/relevancy.md#ranking-rules), you can decide which fields are more relevant than others. For example, you may decide recent movies should be more relevant than older ones. You can also designate certain fields as displayed or searchable. +With [ranking rules](/learn/core_concepts/relevancy#ranking-rules), you can decide which fields are more relevant than others. For example, you may decide recent movies should be more relevant than older ones. You can also designate certain fields as displayed or searchable. ### Displayed and searchable fields By default, all fields in a document are both displayed and searchable. Displayed fields are contained in each matching document, while searchable fields are searched for matching query words. -You can modify this behavior using the [update settings endpoint](/reference/api/settings.md#update-settings), or the respective update endpoints for [displayed attributes](/reference/api/settings.md#update-displayed-attributes), and [searchable attributes](/reference/api/settings.md#update-searchable-attributes) so that a field is: +You can modify this behavior using the [update settings endpoint](/reference/api/settings#update-settings), or the respective update endpoints for [displayed attributes](/reference/api/settings#update-displayed-attributes), and [searchable attributes](/reference/api/settings#update-searchable-attributes) so that a field is: - Searchable but not displayed - Displayed but not searchable - Neither displayed nor searchable -In the latter case, the field will be completely ignored during search. However, it will still be [stored](/learn/configuration/displayed_searchable_attributes.md#data-storing) in the document. +In the latter case, the field will be completely ignored during search. However, it will still be [stored](/learn/configuration/displayed_searchable_attributes#data-storing) in the document. -To learn more, refer to our [displayed and searchable attributes guide](/learn/configuration/displayed_searchable_attributes.md). +To learn more, refer to our [displayed and searchable attributes guide](/learn/configuration/displayed_searchable_attributes). ## Primary field -The primary field is a special field that must be present in all documents. Its attribute is the [primary key](/learn/core_concepts/primary_key.md#primary-key-2) and its value is the [document id](/learn/core_concepts/primary_key.md#document-id). If you try to [index a document](/learn/getting_started/quick_start.md#add-documents) that's missing a primary key or possessing the wrong primary key for a given index, it will cause an error and no documents will be added. +The primary field is a special field that must be present in all documents. Its attribute is the [primary key](/learn/core_concepts/primary_key#primary-key-2) and its value is the [document id](/learn/core_concepts/primary_key#document-id). If you try to [index a document](/learn/getting_started/quick_start#add-documents) that's missing a primary key or possessing the wrong primary key for a given index, it will cause an error and no documents will be added. -To learn more, refer to the [primary key explanation](/learn/core_concepts/primary_key.md). +To learn more, refer to the [primary key explanation](/learn/core_concepts/primary_key). ## Upload -By default, Meilisearch limits the size of all payloads—and therefore document uploads—to 100MB. You can [change the payload size limit](/learn/configuration/instance_options.md#payload-limit-size) at runtime using the `http-payload-size-limit` option. +By default, Meilisearch limits the size of all payloads—and therefore document uploads—to 100MB. You can [change the payload size limit](/learn/configuration/instance_options#payload-limit-size) at runtime using the `http-payload-size-limit` option. -Meilisearch uses a lot of RAM when indexing documents. Be aware of your [RAM availability](https://docs.meilisearch.com/faq.html#what-are-the-recommended-requirements-for-hosting-a-meilisearch-instance) as you increase your batch size as this could cause Meilisearch to crash. +Meilisearch uses a lot of RAM when indexing documents. Be aware of your [RAM availability](/faq#what-are-the-recommended-requirements-for-hosting-a-meilisearch-instance) as you increase your batch size as this could cause Meilisearch to crash. -When using the [add new documents endpoint](/reference/api/documents.md#add-or-update-documents), ensure: +When using the [add new documents endpoint](/reference/api/documents#add-or-update-documents), ensure: - The payload format is correct. There are no extraneous commas, mismatched brackets, missing quotes, etc. - All documents are sent in an array, even if there is only one document @@ -108,7 +112,7 @@ The above JSON document would look like this in NDJSON: #### CSV -CSV files express data as a sequence of values separated by a delimiter character. By default, Meilisearch uses a single comma (`,`) as the delimiter. You can use the `csvDelimiter` query parameter with the [add or update documents](/reference/api/documents.md#add-or-update-documents) or [add or replace documents](/reference/api/documents.md#add-or-replace-documents) endpoints to set a different character. Any [rules that apply to formatting CSV](https://datatracker.ietf.org/doc/html/rfc4180) also apply to Meilisearch documents. +CSV files express data as a sequence of values separated by a delimiter character. By default, Meilisearch uses a single comma (`,`) as the delimiter. You can use the `csvDelimiter` query parameter with the [add or update documents](/reference/api/documents#add-or-update-documents) or [add or replace documents](/reference/api/documents#add-or-replace-documents) endpoints to set a different character. Any [rules that apply to formatting CSV](https://datatracker.ietf.org/doc/html/rfc4180) also apply to Meilisearch documents. Meilisearch will only accept CSV documents when it receives the `text/csv` content-type header. @@ -123,12 +127,16 @@ The above JSON document would look like this in CSV: Since CSV does not support arrays or nested objects, `cast` cannot be converted to CSV. -::: note + If you don't specify the data type for an attribute, it will default to `:string`. -::: + ### Auto-batching + +Auto-batching has been disabled for document addition and deletion in v1.1.1. See [this GitHub issue](https://github.com/meilisearch/meilisearch/issues/3664) for more details. + + Auto-batching combines consecutive document addition and deletion requests into a single batch and processes them together while respecting the order. This significantly speeds up the indexing process. Meilisearch batches document addition and deletion requests when they: @@ -138,7 +146,7 @@ Meilisearch batches document addition and deletion requests when they: Tasks within the same batch share the same values for `startedAt`, `finishedAt`, and `duration`. -If a task fails due to an invalid document, it will be removed from the batch. The rest of the batch will still process normally. If an [`internal`](/reference/errors/overview.md#errors) error occurs, the whole batch will fail and all tasks within it will share the same `error` object. +If a task fails due to an invalid document, it will be removed from the batch. The rest of the batch will still process normally. If an [`internal`](/reference/errors/overview#errors) error occurs, the whole batch will fail and all tasks within it will share the same `error` object. #### Auto-batching and task cancelation diff --git a/learn/core_concepts/indexes.md b/learn/core_concepts/indexes.mdx similarity index 73% rename from learn/core_concepts/indexes.md rename to learn/core_concepts/indexes.mdx index 983cb8de02..6a06602a7e 100644 --- a/learn/core_concepts/indexes.md +++ b/learn/core_concepts/indexes.mdx @@ -1,3 +1,7 @@ +--- +sidebarDepth: 3 +--- + # Indexes An index is a group of documents with associated settings. It is comparable to a table in `SQL` or a collection in MongoDB. @@ -24,7 +28,7 @@ If you try to add documents or settings to an index that does not already exist, ### Explicit index creation -You can explicitly create an index using the [create index endpoint](/reference/api/indexes.md#create-an-index). Once created, you can add documents using the [add documents endpoint](/reference/api/documents.md#add-or-update-documents). +You can explicitly create an index using the [create index endpoint](/reference/api/indexes#create-an-index). Once created, you can add documents using the [add documents endpoint](/reference/api/documents#add-or-update-documents). While implicit index creation is more convenient, requiring only a single API request, **explicit index creation is considered safer for production**. This is because implicit index creation bundles multiple actions into a single task. If one action completes successfully while the other fails, the problem can be difficult to diagnose. @@ -48,9 +52,9 @@ Every index has a primary key: a required attribute that must be present in all The primary key serves to identify each document, such that two documents in an index can never be completely identical. If you add two documents with the same value for the primary key, they will be treated as the same document: one will overwrite the other. If you try adding documents, and even a single one is missing the primary key, none of the documents will be stored. -You can set the primary key for an index or let it be inferred by Meilisearch. Read more about [setting the primary key](/learn/core_concepts/primary_key.md#setting-the-primary-key). +You can set the primary key for an index or let it be inferred by Meilisearch. Read more about [setting the primary key](/learn/core_concepts/primary_key#setting-the-primary-key). -[Learn more about the primary field](/learn/core_concepts/primary_key.md) +[Learn more about the primary field](/learn/core_concepts/primary_key) ## Index settings @@ -69,77 +73,77 @@ You can customize the following index settings: - [Synonyms](#synonyms) - [Typo tolerance](#typo-tolerance) -To change index settings, use the [update settings endpoint](/reference/api/settings.md#update-settings) or any of the child routes. +To change index settings, use the [update settings endpoint](/reference/api/settings#update-settings) or any of the child routes. ### Displayed and searchable attributes By default, every document field is searchable and displayed in response to search queries. However, you can choose to set some fields as non-searchable, non-displayed, or both. -You can update these field attributes using the [update settings endpoint](/reference/api/settings.md#update-settings), or the respective endpoints for [displayed attributes](/reference/api/settings.md#update-displayed-attributes) and [searchable attributes](/reference/api/settings.md#update-searchable-attributes). +You can update these field attributes using the [update settings endpoint](/reference/api/settings#update-settings), or the respective endpoints for [displayed attributes](/reference/api/settings#update-displayed-attributes) and [searchable attributes](/reference/api/settings#update-searchable-attributes). -[Learn more about displayed and searchable attributes.](/learn/configuration/displayed_searchable_attributes.md) +[Learn more about displayed and searchable attributes.](/learn/configuration/displayed_searchable_attributes) ### Distinct attribute If your dataset contains multiple similar documents, you may want to return only one on search. Suppose you have numerous black jackets in different sizes in your `costumes` index. Setting `costume_name` as the distinct attribute will mean Meilisearch will not return more than one black jacket with the same `costume_name`. -Designate the distinct attribute using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update distinct attribute endpoint](/reference/api/settings.md#update-distinct-attribute). **You can only set one field as the distinct attribute per index.** +Designate the distinct attribute using the [update settings endpoint](/reference/api/settings#update-settings) or the [update distinct attribute endpoint](/reference/api/settings#update-distinct-attribute). **You can only set one field as the distinct attribute per index.** -[Learn more about distinct attributes.](/learn/configuration/distinct.md) +[Learn more about distinct attributes.](/learn/configuration/distinct) ### Faceting -Facets are a specific use-case of filters in Meilisearch: whether something is a facet or filter depends on your UI and UX design. Like filters, you need to add your facets to [`filterableAttributes`](/reference/api/settings.md#update-filterable-attributes), then make a search query using the [`filter` search parameter](/reference/api/search.md#filter). +Facets are a specific use-case of filters in Meilisearch: whether something is a facet or filter depends on your UI and UX design. Like filters, you need to add your facets to [`filterableAttributes`](/reference/api/settings#update-filterable-attributes), then make a search query using the [`filter` search parameter](/reference/api/search#filter). -By default, Meilisearch returns `100` facet values for each faceted field. You can change this using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update faceting settings endpoint](/reference/api/settings.md#update-faceting-settings). +By default, Meilisearch returns `100` facet values for each faceted field. You can change this using the [update settings endpoint](/reference/api/settings#update-settings) or the [update faceting settings endpoint](/reference/api/settings#update-faceting-settings). -[Learn more about faceting.](/learn/advanced/faceted_search.md) +[Learn more about faceting.](/learn/advanced/faceted_search) ### Filterable attributes Filtering allows you to refine your search based on different categories. For example, you could search for all movies of a certain `genre`: `Science Fiction`, with a `rating` above `8`. -Before filtering on any document attribute, you must add it to `filterableAttributes` using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update filterable attributes endpoint](/reference/api/settings.md#update-filterable-attributes). Then, make a search query using the [`filter` search parameter](/reference/api/search.md#filter). +Before filtering on any document attribute, you must add it to `filterableAttributes` using the [update settings endpoint](/reference/api/settings#update-settings) or the [update filterable attributes endpoint](/reference/api/settings#update-filterable-attributes). Then, make a search query using the [`filter` search parameter](/reference/api/search#filter). -[Learn more about filtering.](/learn/advanced/filtering.md) +[Learn more about filtering.](/learn/advanced/filtering) ### Pagination -To protect your database from malicious scraping, Meilisearch only returns up to `1000` results for a search query. You can change this limit using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update pagination settings endpoint](/reference/api/settings.md#update-pagination-settings). +To protect your database from malicious scraping, Meilisearch only returns up to `1000` results for a search query. You can change this limit using the [update settings endpoint](/reference/api/settings#update-settings) or the [update pagination settings endpoint](/reference/api/settings#update-pagination-settings). -[Learn more about pagination.](/learn/advanced/pagination.md) +[Learn more about pagination.](/learn/advanced/pagination) ### Ranking rules Meilisearch uses ranking rules to sort matching documents so that the most relevant documents appear at the top. All indexes are created with the same built-in ranking rules executed in default order. The order of these rules matters: the first rule has the most impact, and the last rule has the least. -You can alter this order or define custom ranking rules to return certain results first. This can be done using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update ranking rules endpoint](/reference/api/settings.md#update-ranking-rules). +You can alter this order or define custom ranking rules to return certain results first. This can be done using the [update settings endpoint](/reference/api/settings#update-settings) or the [update ranking rules endpoint](/reference/api/settings#update-ranking-rules). -[Learn more about ranking rules.](/learn/core_concepts/relevancy.md) +[Learn more about ranking rules.](/learn/core_concepts/relevancy) ### Sortable attributes By default, Meilisearch orders results according to their relevancy. You can alter this sorting behavior to show certain results first. -Add the attributes you'd like to sort by to `sortableAttributes` using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update sortable attributes endpoint](/reference/api/settings.md#update-sortable-attributes). You can then use the [`sort` search parameter](/reference/api/search.md#sort) to sort your results in ascending or descending order. +Add the attributes you'd like to sort by to `sortableAttributes` using the [update settings endpoint](/reference/api/settings#update-settings) or the [update sortable attributes endpoint](/reference/api/settings#update-sortable-attributes). You can then use the [`sort` search parameter](/reference/api/search#sort) to sort your results in ascending or descending order. -[Learn more about sorting.](/learn/advanced/sorting.md) +[Learn more about sorting.](/learn/advanced/sorting) ### Stop words -Your dataset may contain words you want to ignore during search because, for example, they don't add semantic value or occur too frequently (for instance, `the` or `of` in English). You can add these words to the [stop words list](/reference/api/settings.md#stop-words) and Meilisearch will ignore them during search. +Your dataset may contain words you want to ignore during search because, for example, they don't add semantic value or occur too frequently (for instance, `the` or `of` in English). You can add these words to the [stop words list](/reference/api/settings#stop-words) and Meilisearch will ignore them during search. -Change your index's stop words list using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update stop words endpoint](/reference/api/settings.md#update-stop-words). In addition to improving relevancy, designating common words as stop words greatly improves performance. +Change your index's stop words list using the [update settings endpoint](/reference/api/settings#update-settings) or the [update stop words endpoint](/reference/api/settings#update-stop-words). In addition to improving relevancy, designating common words as stop words greatly improves performance. -[Learn more about stop words.](/reference/api/settings.md#stop-words) +[Learn more about stop words.](/reference/api/settings#stop-words) ### Synonyms Your dataset may contain words with similar meanings. For these, you can define a list of synonyms: words that will be treated as the same or similar for search purposes. Words set as synonyms won't always return the same results due to factors like typos and splitting the query. -Since synonyms are defined for a given index, they won't apply to any other index on the same Meilisearch instance. You can create your list of synonyms using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update synonyms endpoint](/reference/api/settings.md#update-synonyms). +Since synonyms are defined for a given index, they won't apply to any other index on the same Meilisearch instance. You can create your list of synonyms using the [update settings endpoint](/reference/api/settings#update-settings) or the [update synonyms endpoint](/reference/api/settings#update-synonyms). -[Learn more about synonyms.](/learn/configuration/synonyms.md) +[Learn more about synonyms.](/learn/configuration/synonyms) ### Typo tolerance @@ -150,9 +154,9 @@ Typo tolerance is a built-in feature that helps you find relevant results even w - Disable typos on specific words - Disable typos on specific document attributes -You can update the typo tolerance settings using the [update settings endpoint](/reference/api/settings.md#update-settings) or the [update typo tolerance endpoint](/reference/api/settings.md#update-typo-tolerance-settings). +You can update the typo tolerance settings using the [update settings endpoint](/reference/api/settings#update-settings) or the [update typo tolerance endpoint](/reference/api/settings#update-typo-tolerance-settings). -[Learn more about typo tolerance.](/learn/configuration/typo_tolerance.md) +[Learn more about typo tolerance.](/learn/configuration/typo_tolerance) ## Swapping indexes @@ -166,4 +170,4 @@ Once swapped, your users will still be making search requests to the `movies` in Swapping indexes is an atomic transaction: **either all indexes are successfully swapped, or none are**. -For more information, see the [swap indexes endpoint](/reference/api/indexes.md#swap-indexes). +For more information, see the [swap indexes endpoint](/reference/api/indexes#swap-indexes). diff --git a/learn/core_concepts/primary_key.md b/learn/core_concepts/primary_key.mdx similarity index 95% rename from learn/core_concepts/primary_key.md rename to learn/core_concepts/primary_key.mdx index 6f034cfcaa..f39e511fe5 100644 --- a/learn/core_concepts/primary_key.md +++ b/learn/core_concepts/primary_key.mdx @@ -1,8 +1,12 @@ +--- +sidebarDepth: 3 +--- + # Primary key ## Primary field -An [index](/learn/core_concepts/indexes.md) in Meilisearch is a collection of [documents](/learn/core_concepts/documents.md). Documents are composed of fields, each field containing an attribute and a value. +An [index](/learn/core_concepts/indexes) in Meilisearch is a collection of [documents](/learn/core_concepts/documents). Documents are composed of fields, each field containing an attribute and a value. The primary field is a special field that must be present in all documents. Its attribute is the **[primary key](#primary-key-2)** and its value is the **[document id](#document-id)**. It uniquely identifies each document in an index, ensuring that **it is impossible to have two exactly identical documents** present in the same index. @@ -121,7 +125,7 @@ The code below adds a document to the `books` index and sets `reference_number` ### Changing your primary key with the update index endpoint -The primary key cannot be changed while documents are present in the index. To change the primary key of an index that already contains documents, you must therefore [delete all documents](/reference/api/documents.md#delete-all-documents) from that index, [change the primary key](/reference/api/indexes.md#update-an-index), then [add them](/reference/api/documents.md#add-or-replace-documents) again. +The primary key cannot be changed while documents are present in the index. To change the primary key of an index that already contains documents, you must therefore [delete all documents](/reference/api/documents#delete-all-documents) from that index, [change the primary key](/reference/api/indexes#update-an-index), then [add them](/reference/api/documents#add-or-replace-documents) again. The code below updates the primary key to `title`: diff --git a/learn/core_concepts/relevancy.md b/learn/core_concepts/relevancy.mdx similarity index 79% rename from learn/core_concepts/relevancy.md rename to learn/core_concepts/relevancy.mdx index 8f36783fce..b77295b487 100644 --- a/learn/core_concepts/relevancy.md +++ b/learn/core_concepts/relevancy.mdx @@ -1,3 +1,6 @@ +--- +sidebarDepth: 4 +--- # Relevancy @@ -11,13 +14,13 @@ In order to ensure relevant results, search responses are sorted based on a set ### Behavior -Each index possesses a list of ranking rules stored as an array in the [settings object](/reference/api/settings.md). This array is **fully customizable**, meaning you can **delete existing rules, add new ones, and reorder them as needed**. +Each index possesses a list of ranking rules stored as an array in the [settings object](/reference/api/settings). This array is **fully customizable**, meaning you can **delete existing rules, add new ones, and reorder them as needed**. Meilisearch uses a [bucket sort](https://en.wikipedia.org/wiki/Bucket_sort) algorithm to rank documents whenever a search query is made. The first ranking rule applies to all documents, while each subsequent rule is only applied to documents considered equal under the previous rule as a tiebreaker. -**The order in which ranking rules are applied matters.** The first rule in the array has the most impact, and the last rule has the least. Our default configuration meets most standard needs, but [you can change it](/reference/api/settings.md#update-ranking-rules). +**The order in which ranking rules are applied matters.** The first rule in the array has the most impact, and the last rule has the least. Our default configuration meets most standard needs, but [you can change it](/reference/api/settings#update-ranking-rules). -Deleting a rule means that Meilisearch will no longer sort results based on that rule. For example, **if you delete the [typo ranking rule](/learn/core_concepts/relevancy.md#_2-typo), documents with typos will still be considered during search**, but they will no longer be sorted by increasing number of typos. +Deleting a rule means that Meilisearch will no longer sort results based on that rule. For example, **if you delete the [typo ranking rule](/learn/core_concepts/relevancy#_2-typo), documents with typos will still be considered during search**, but they will no longer be sorted by increasing number of typos. ### Built-in rules @@ -34,17 +37,17 @@ Meilisearch contains six built-in ranking rules in the following order: ] ``` -Depending on your needs, you might want to change this order. To do so, you can use the [update settings endpoint](/reference/api/settings.md#update-settings) or [update ranking rules endpoint](/reference/api/settings.md#update-ranking-rules). +Depending on your needs, you might want to change this order. To do so, you can use the [update settings endpoint](/reference/api/settings#update-settings) or [update ranking rules endpoint](/reference/api/settings#update-ranking-rules). #### 1. Words Results are sorted by **decreasing number of matched query terms**. Returns documents that contain all query terms first. -::: note + The `words` rule works from right to left. Therefore, the order of the query string impacts the order of results. For example, if someone were to search `batman dark knight`, the `words` rule would rank documents containing all three terms first, documents containing only `batman` and `dark` second, and documents containing only `batman` third. -::: + #### 2. Typo @@ -56,7 +59,7 @@ Results are sorted by **increasing distance between matched query terms**. Retur #### 4. Attribute -Results are sorted according to the **[attribute ranking order](/learn/core_concepts/relevancy.md#attribute-ranking-order)**. Returns documents that contain query terms in more important attributes first. +Results are sorted according to the **[attribute ranking order](/learn/core_concepts/relevancy#attribute-ranking-order)**. Returns documents that contain query terms in more important attributes first. Also, note the documents with attributes containing the query words at the beginning of the attribute will be considered more relevant than documents containing the query words at the end of the attributes. @@ -64,9 +67,9 @@ Also, note the documents with attributes containing the query words at the begin Results are sorted **according to parameters decided at query time**. When the `sort` ranking rule is in a higher position, sorting is exhaustive: results will be less relevant but follow the user-defined sorting order more closely. When `sort` is in a lower position, sorting is relevant: results will be very relevant but might not always follow the order defined by the user. -::: note -Differently from other ranking rules, sort is only active for queries containing the [`sort` search parameter](/reference/api/search.md#sort). If a search request does not contain `sort`, or if its value is invalid, this rule will be ignored. -::: + +Differently from other ranking rules, sort is only active for queries containing the [`sort` search parameter](/reference/api/search#sort). If a search request does not contain `sort`, or if its value is invalid, this rule will be ignored. + #### 6. Exactness @@ -74,11 +77,11 @@ Results are sorted by **the similarity of the matched words with the query words #### Examples -:::: tabs + -::: tab Typo + -![Demonstrating the typo ranking rule by searching for 'vogli'](/ranking-rules/vogli3.png) +![Demonstrating the typo ranking rule by searching for 'vogli'](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/ranking-rules/vogli3.png) ### Typo @@ -87,39 +90,39 @@ Results are sorted by **the similarity of the matched words with the query words The `typo` rule sorts the results by increasing number of typos on matched query words. -::: + -::: tab Proximity -![Demonstrating the proximity ranking rule by searching for 'new road'](/ranking-rules/new_road.png) + +![Demonstrating the proximity ranking rule by searching for 'new road'](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/ranking-rules/new_road.png) ### Proximity The reason why `Creature` is listed before `Mississippi Grind` is because of the `proximity` rule. The smallest **distance** between the matching words in `creature` is smaller than the smallest **distance** between the matching words in `Mississippi Grind`. The `proximity` rule sorts the results by increasing distance between matched query terms. -::: + -::: tab Attribute -![Demonstrating the attribute ranking rule by searching for 'belgium'](/ranking-rules/belgium.png) + +![Demonstrating the attribute ranking rule by searching for 'belgium'](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/ranking-rules/belgium.png) ### Attribute `If It's Tuesday, This must be Belgium` is the first document because the matched word `Belgium` is found in the `title` attribute and not the `overview`. -The `attribute` rule sorts the results by [attribute importance](/learn/core_concepts/relevancy.md#attribute-ranking-order). +The `attribute` rule sorts the results by [attribute importance](/learn/core_concepts/relevancy#attribute-ranking-order). -::: + -::: tab Exactness -![Demonstrating the exactness ranking rule by searching for 'Knight'](/ranking-rules/knight.png) + +![Demonstrating the exactness ranking rule by searching for 'Knight'](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/ranking-rules/knight.png?raw=true) ### Exactness `Knight Moves` is displayed before `Knights of Badassdom`. `Knight` is exactly the same as the search query `Knight` whereas there is a letter of difference between `Knights` and the search query `Knight`. -::: + -:::: + ### Custom rules @@ -133,7 +136,7 @@ To add a custom ranking rule, you have to communicate the attribute name followe **The attribute must have either a numeric or a string value** in all of the documents contained in that index. -You can add this rule to the existing list of ranking rules using the [update settings endpoint](/reference/api/settings.md#update-settings) or [update ranking rules endpoint](/reference/api/settings.md#update-ranking-rules). +You can add this rule to the existing list of ranking rules using the [update settings endpoint](/reference/api/settings#update-settings) or [update ranking rules endpoint](/reference/api/settings#update-ranking-rules). #### Example @@ -151,7 +154,7 @@ The following example will create a rule that makes movies with a good rank more movie_ranking:desc ``` -To add a rule to the existing ranking rule, you have to add the rule to the existing ordered rules array using the [settings route](/reference/api/settings.md#update-ranking-rules), +To add a rule to the existing ranking rule, you have to add the rule to the existing ordered rules array using the [settings route](/reference/api/settings#update-ranking-rules), ```json [ @@ -168,7 +171,7 @@ To add a rule to the existing ranking rule, you have to add the rule to the exis ### Sorting and custom ranking rules -Meilisearch allows users to define [sorting order at query time](/learn/advanced/sorting.md) by using the [`sort` search parameter](/reference/api/search.md#sort). There is some overlap between sorting and custom ranking rules, but the two do have different uses. +Meilisearch allows users to define [sorting order at query time](/learn/advanced/sorting) by using the [`sort` search parameter](/reference/api/search#sort). There is some overlap between sorting and custom ranking rules, but the two do have different uses. In general, `sort` will be most useful when you want to allow users to define what type of results they want to see first. A good use-case for `sort` is creating a webshop interface where customers can sort products by descending or ascending product price. @@ -201,7 +204,7 @@ The automatically generated attribute ranking order will be `["a", "b", "c"]`. I The attribute ranking order will be updated to `["a", "b", "c", "d"]`. In other words, when Meilisearch encounters new attributes in subsequently indexed documents, they are added to the bottom of the attribute ranking order. -The attribute ranking order can also be set manually. For a more detailed look at this subject, see [the searchable attributes list](/learn/configuration/displayed_searchable_attributes.md#the-searchableattributes-list). +The attribute ranking order can also be set manually. For a more detailed look at this subject, see [the searchable attributes list](/learn/configuration/displayed_searchable_attributes#the-searchableattributes-list). ### Example @@ -215,6 +218,6 @@ The attribute ranking order can also be set manually. For a more detailed look a With the above attribute ranking order, matching words found in the `title` field would have a higher impact on relevancy than the same words found in `overview` or `release_date`. If you searched "1984", for example, results like Michael Radford's film "1984" would be ranked higher than movies released in the year 1984. -:::note + The `attribute` rule's position in [`rankingRules`](#built-in-rules) determines how the results are sorted. Meaning, **if `attribute` is at the bottom of the ranking rules list, it will have almost no impact on your search results.** -::: + diff --git a/learn/advanced/dumps.md b/learn/data_backup/dumps.mdx similarity index 85% rename from learn/advanced/dumps.md rename to learn/data_backup/dumps.mdx index 3f65be5d5a..b46cc5eda7 100644 --- a/learn/advanced/dumps.md +++ b/learn/data_backup/dumps.mdx @@ -8,11 +8,11 @@ Creating a dump is also referred to as exporting it, whereas launching Meilisear ## Creating a dump -To create a dump of your dataset, use the [create a dump endpoint](/reference/api/dump.md#create-a-dump): +To create a dump of your dataset, use the [create a dump endpoint](/reference/api/dump#create-a-dump): -The above code triggers a dump creation process. It also returns a [summarized task object](/learn/advanced/asynchronous_operations.md#summarized-task-objects) that you can use to check the status of your dump. +The above code triggers a dump creation process. It also returns a [summarized task object](/learn/advanced/asynchronous_operations#summarized-task-objects) that you can use to check the status of your dump. ```json { @@ -50,25 +50,25 @@ This command should return an object with detailed information about the dump op The dump creation process is an asynchronous task that takes time proportional to the size of your dataset. All indexes of the current instance are exported along with their documents and settings and saved as a single `.dump` file. -After dump creation is finished—when `status` is `succeeded`—the dump file is added to the dump directory. By default, this folder is named `dumps` and can be found in the same directory as your Meilisearch binary. You can customize [this using the `--dump-dir` configuration option](/learn/configuration/instance_options.md#dump-directory). **If the dump directory does not already exist when the dump creation process is called, Meilisearch will create it.** +After dump creation is finished—when `status` is `succeeded`—the dump file is added to the dump directory. By default, this folder is named `dumps` and can be found in the same directory as your Meilisearch binary. You can customize [this using the `--dump-dir` configuration option](/learn/configuration/instance_options#dump-directory). **If the dump directory does not already exist when the dump creation process is called, Meilisearch will create it.** If a dump file is visible in the file system, the dump process was successfully completed. **Meilisearch will never create a partial dump file**, even if you interrupt an instance while it is generating a dump. ## Importing a dump -Import dumps by launching a Meilisearch instance [with the `--import-dump` configuration option](/learn/configuration/instance_options.md#import-dump). +Import dumps by launching a Meilisearch instance [with the `--import-dump` configuration option](/learn/configuration/instance_options#import-dump). During a dump import, all indexes contained in the indicated `.dump` file are imported along with their associated documents and settings. Any existing index with the same `uid` as an index in the dump file will be overwritten. While a dump is being imported, the API is not available to the task queue. As a result, no read or write operations can be performed until the importing process is complete. -::: note + We do not recommend using dumps to migrate from a new Meilisearch version to an older one. For example, you can import a dump from Meilisearch v0.21 into v0.22 without any problems. Importing a dump generated in v0.22 into a v0.21 instance, however, can lead to unexpected behavior. -::: + -Once you have exported a dump you can use the resulting `.dump` file to [launch Meilisearch with the `--import-dump` configuration option](/learn/configuration/instance_options.md#import-dump). +Once you have exported a dump you can use the resulting `.dump` file to [launch Meilisearch with the `--import-dump` configuration option](/learn/configuration/instance_options#import-dump). As the data contained in the dump needs to be indexed, the process will take some time to complete. Only when the dump has been fully imported will the Meilisearch server start, after which you can begin searching through your data. @@ -78,4 +78,4 @@ As the data contained in the dump needs to be indexed, the process will take som ## Use cases -Dumps are used to restore your database after [updating Meilisearch](/learn/update_and_migration/updating.md) or to copy your database to other Meilisearch instances without having to worry about their respective versions. For more on this subject, see a [comparison of snapshots and dumps](/learn/advanced/snapshots_vs_dumps.md). +Dumps are used to restore your database after [updating Meilisearch](/learn/update_and_migration/updating) or to copy your database to other Meilisearch instances without having to worry about their respective versions. For more on this subject, see a [comparison of snapshots and dumps](/learn/advanced/snapshots_vs_dumps). diff --git a/learn/advanced/snapshots.md b/learn/data_backup/snapshots.mdx similarity index 89% rename from learn/advanced/snapshots.md rename to learn/data_backup/snapshots.mdx index 4237dab586..ed814ca2ad 100644 --- a/learn/advanced/snapshots.md +++ b/learn/data_backup/snapshots.mdx @@ -6,7 +6,7 @@ Since databases are bound to the Meilisearch version that created them and snaps ## Creating snapshots -To create snapshots, use the [`--schedule-snapshot` configuration option](/learn/configuration/instance_options.md#schedule-snapshot-creation): +To create snapshots, use the [`--schedule-snapshot` configuration option](/learn/configuration/instance_options#schedule-snapshot-creation): ```bash meilisearch --schedule-snapshot @@ -14,7 +14,7 @@ meilisearch --schedule-snapshot By default, Meilisearch creates snapshots in a directory called `snapshots/` at the root of your Meilisearch. -The destination can be modified with [`--snapshot-dir`](/learn/configuration/instance_options.md#snapshot-destination): +The destination can be modified with [`--snapshot-dir`](/learn/configuration/instance_options#snapshot-destination): ```bash meilisearch --schedule-snapshot --snapshot-dir mySnapShots/ @@ -24,7 +24,7 @@ Now snapshots are created in `mySnapShots/` directory. The first snapshot is created on launching Meilisearch. After that, snapshots are created routinely on a set interval until you deactivate snapshots by ending the Meilisearch instance. By default, one snapshot is taken every 24 hours. -The interval between each new snapshot can be modified by providing an integer to [`--schedule-snapshot`](/learn/configuration/instance_options.md#schedule-snapshot-creation): +The interval between each new snapshot can be modified by providing an integer to [`--schedule-snapshot`](/learn/configuration/instance_options#schedule-snapshot-creation): ```bash meilisearch --schedule-snapshot=3600 @@ -34,7 +34,7 @@ After running the above code, a snapshot is created every hour (3600 seconds). During snapshot creation, old snapshots are **automatically overwritten**. This means only the most recent snapshot should be present in the folder at any given time. -[More about snapshots flags and environment variables](/learn/configuration/instance_options.md#schedule-snapshot-creation) +[More about snapshots flags and environment variables](/learn/configuration/instance_options#schedule-snapshot-creation) ## Starting from a snapshot @@ -53,16 +53,16 @@ Take note that whenever you launch Meilisearch from a snapshot, it will **stop p 1. A database already exists, meaning you have a non-empty `data.ms` folder in the same directory as your Meilisearch binary 2. No snapshot is found at the given path -In both cases, **this behavior is [configurable](/learn/configuration/instance_options.md#ignore-missing-snapshot)**. +In both cases, **this behavior is [configurable](/learn/configuration/instance_options#ignore-missing-snapshot)**. If you don't want Meilisearch to throw an error when finding that a database already exists, you can add the following flag: `--ignore-snapshot-if-db-exists=true`. When using this flag, Meilisearch will use the existing database to start an instance instead of throwing an error. The snapshot will be ignored. If you do not want Meilisearch to throw an error when there is no snapshot at the given path, you can add the following flag: `--ignore-missing-snapshot`. Meilisearch will then continue its process and not import any snapshot. -When starting from a snapshot, chances are that you already have an existing database. **For security reasons, a database is never overwritten**. To load a snapshot when an existing database is present, you will have to manually delete the existing database. By default, this is the contents of the `data.ms` folder (unless you [changed the path](/learn/configuration/instance_options.md#database-path)) which is located in the same folder as your Meilisearch binary. +When starting from a snapshot, chances are that you already have an existing database. **For security reasons, a database is never overwritten**. To load a snapshot when an existing database is present, you will have to manually delete the existing database. By default, this is the contents of the `data.ms` folder (unless you [changed the path](/learn/configuration/instance_options#database-path)) which is located in the same folder as your Meilisearch binary. The simplest way to delete your database is with the terminal command `rm -rf data.ms`, after which you should be able to start Meilisearch with a snapshot. -[[More about snapshots flags and environment variables]](/learn/configuration/instance_options.md#schedule-snapshot-creation) +[[More about snapshots flags and environment variables]](/learn/configuration/instance_options#schedule-snapshot-creation) ## Use cases diff --git a/learn/advanced/snapshots_vs_dumps.md b/learn/data_backup/snapshots_vs_dumps.mdx similarity index 93% rename from learn/advanced/snapshots_vs_dumps.md rename to learn/data_backup/snapshots_vs_dumps.mdx index 2423edaf20..7e3f283f1d 100644 --- a/learn/advanced/snapshots_vs_dumps.md +++ b/learn/data_backup/snapshots_vs_dumps.mdx @@ -16,11 +16,11 @@ Dumps export Meilisearch data in a way that is not bound to a specific Meilisear **Importing a dump requires Meilisearch to re-index all your documents.** This process requires a significant amount of time and memory proportional to the size of the database. -::: note + We do not recommend using dumps from a new Meilisearch version to import an older version. For example, you can import a dump from Meilisearch v0.21 into v0.22 without any problems. Importing a dump generated in v0.22 into a v0.21 instance, however, can lead to unexpected behavior. -::: + ## Conclusion @@ -29,4 +29,4 @@ To summarize: - Snapshots are highly efficient, but not portable between different versions of Meilisearch - Dumps are portable between different Meilisearch versions, but not very efficient -For more information, have a look at the documentation guides for [snapshots](/learn/advanced/snapshots.md) and [dumps](/learn/advanced/dumps.md). +For more information, have a look at the documentation guides for [snapshots](/learn/advanced/snapshots) and [dumps](/learn/advanced/dumps). diff --git a/learn/cookbooks/aws.md b/learn/deployment/aws.mdx similarity index 82% rename from learn/cookbooks/aws.md rename to learn/deployment/aws.mdx index e02798878a..5c0e05e2e5 100644 --- a/learn/cookbooks/aws.md +++ b/learn/deployment/aws.mdx @@ -1,7 +1,5 @@ --- - -sidebarDepth: 2 - +sidebarDepth: 3 --- # Deploy a Meilisearch instance on Amazon Web Services (AWS) @@ -16,7 +14,7 @@ The following guide will walk you through every step to deploy Meilisearch in an After logging into your [AWS Console](https://aws.amazon.com/console), navigate to the "Compute" service. Then go to "EC2", and finally open your "Instances" console. -![Page titled 'Instances'. Text in center of screen: You do not have any instances in this region](/aws/01.launch-instances.png) +![Page titled 'Instances'. Text in center of screen: You do not have any instances in this region](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/01.launch-instances.png) In the top-right corner, click on the "Launch instances" button to start the process of configuring your Meilisearch instance. @@ -24,7 +22,7 @@ In the top-right corner, click on the "Launch instances" button to start the pro You will now select which AMI or system Image to use to run your instance. Type `meilisearch` in the search bar and select the "Community AMIs" tab on the left sidebar. -![Page titled: 'Step 1: Choose an Amazon Machine Image (AMI)'](/aws/02.select-ami.png) +![Page titled: 'Step 1: Choose an Amazon Machine Image (AMI)'](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/02.select-ami.png) Click on "Select" (right side of the screen) to confirm your choice. @@ -32,13 +30,13 @@ Click on "Select" (right side of the screen) to confirm your choice. Select the specifications of the server you want Meilisearch to run on. -![Page titled: 'Step 2: Choose an Instance Type'. Selecting the free tier eligible instance type](/aws/03.size-and-specs.png) +![Page titled: 'Step 2: Choose an Instance Type'. Selecting the free tier eligible instance type](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/03.size-and-specs.png) We recommend prioritizing memory allocation for better Meilisearch performance. -::: tip + The free tier is sufficient for tests or prototypes, but not recommended for large datasets. -::: + Once you've made your choice, click on "Next: Configure instance details" to continue. @@ -46,7 +44,7 @@ Once you've made your choice, click on "Next: Configure instance details" to con Here you can specify [details of your Instance](https://docs.aws.amazon.com/efs/latest/ug/gs-step-one-create-ec2-resources.html). Since **this section is not required to run Meilisearch**, we won't cover it in this guide. -![Page titled 'Step 3: Configure Instance Details'. Important: You can launch multiple instances from the same AMI, request Spot instances to take advantage of lower pricing, and assign access management role to the instance.](/aws/04.instance-details.png) +![Page titled 'Step 3: Configure Instance Details'. Important: You can launch multiple instances from the same AMI, request Spot instances to take advantage of lower pricing, and assign access management role to the instance.](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/04.instance-details.png) Click "Next: Add Storage" to keep going. @@ -54,9 +52,9 @@ Click "Next: Add Storage" to keep going. Choose the storage **device** and **size** for your Meilisearch instance. -![Page titled 'Step 4: Add Storage'. Text at bottom of screen: Free tier eligible users can get up to 30GB of EBS General Purpose (SSD) or Magnetic storage.](/aws/05.storage.png) +![Page titled 'Step 4: Add Storage'. Text at bottom of screen: Free tier eligible users can get up to 30GB of EBS General Purpose (SSD) or Magnetic storage.](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/05.storage.png) -The amount of storage space required can [vary drastically](/learn/advanced/storage.md#measured-disk-usage) depending on the data you plan to index. In this example, we will use 25 GiB, which is more than enough for most small datasets (< 1 million documents). We have the "Volume Type" set to "General Purpose SSD (gp2)". +The amount of storage space required can [vary drastically](/learn/advanced/storage#measured-disk-usage) depending on the data you plan to index. In this example, we will use 25 GiB, which is more than enough for most small datasets (< 1 million documents). We have the "Volume Type" set to "General Purpose SSD (gp2)". When you're ready, click on "Next: Add Tags" to continue. @@ -64,7 +62,7 @@ When you're ready, click on "Next: Add Tags" to continue. Tags are used to identify your resources in AWS. **They are not required by Meilisearch**. -![Page titled 'Step 5: Add Tags'. Text in center of screen: Make sure your IAM policy includes permissions to create tags. ](/aws/06.tags.png) +![Page titled 'Step 5: Add Tags'. Text in center of screen: Make sure your IAM policy includes permissions to create tags. ](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/06.tags.png) Click on "Next: Configure Security Groups". @@ -76,7 +74,7 @@ For your Meilisearch instance to communicate with the outside world, it is very - Click on "Add rule" and select "HTTP" from the drop-down menu. This will open the HTTP port (80) - Click on "Add rule" and select "HTTPS" from the drop-down menu. This will open the HTTPS port (443) -![Page titled 'Step 6: Configure Security group'. Warning: Rules with sources of 0.0.0.0/0 allow all IP addresses to access your instance. We recommend setting security group rules to allow access from known IP addresses only.](/aws/07.security.png) +![Page titled 'Step 6: Configure Security group'. Warning: Rules with sources of 0.0.0.0/0 allow all IP addresses to access your instance. We recommend setting security group rules to allow access from known IP addresses only.](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/07.security.png) By default, opened ports accept inbound traffic from any origin. If you prefer to restrict the IP addresses that are allowed to request your Meilisearch instance, go to the "Source" column and select the "Custom" option. The "Source" is set to "Anywhere" by default. @@ -90,7 +88,7 @@ Once you have reviewed your instance configuration, there is one last step befor Click on "Launch" and a pop-up window will ask you to select a **key pair**. This key pair is very important as it will be your private key to access the instance via SSH, which is required to [configure your Meilisearch instance in a production environment](#part-2-configure-production-settings). -![A popup titled: "Select an existing key pair or create a new key pair". Inside the popup, there is a form that allows you to configure key pairs. It also contains a warning: "Download and store your private key file in a secure accessible location. You cannot download it again once it has been created"](/aws/08.key-pair.png) +![A popup titled: "Select an existing key pair or create a new key pair". Inside the popup, there is a form that allows you to configure key pairs. It also contains a warning: "Download and store your private key file in a secure accessible location. You cannot download it again once it has been created"](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/08.key-pair.png) If you have an existing Key Pair, you can use that. Otherwise, select the option "Create a new key pair" and give it a name. Then, click on "Download Key Pair" and store this file somewhere safe. @@ -100,17 +98,17 @@ Once you've downloaded your key pair (and only then), click on "Launch Instances Your instance may take a minute or two to get up and running (see the "Instance state" column). -![AWS dashboard showing an active instance](/aws/09.launch.png) +![AWS dashboard showing an active instance](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/09.launch.png) -Once the "Instance state" is "Running", use your web browser to navigate to the "Public IPv4 address" or the "Public IPv4 DNS" displayed in your AWS instances dashboard. You should see the Meilisearch [search preview](/learn/what_is_meilisearch/search_preview.md). +Once the "Instance state" is "Running", use your web browser to navigate to the "Public IPv4 address" or the "Public IPv4 DNS" displayed in your AWS instances dashboard. You should see the Meilisearch [search preview](/learn/what_is_meilisearch/search_preview). -![Meilisearch search preview allowing users to search an example dataset](/aws/10.enjoy.png) +![Meilisearch search preview allowing users to search an example dataset](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/10.enjoy.png) Your Meilisearch instance is now ready to use! Keep in mind that your Meilisearch instance is currently running in a _development environment_, which is unsafe for production usage. If you want to set up a _production environment_, continue to the [next section](#part-2-configure-production-settings). -Otherwise, if you want to get started creating indexes and adding documents, don't hesitate to check out our [getting started guide](/learn/getting_started/quick_start.md) or [API reference](/reference/api/overview.md). +Otherwise, if you want to get started creating indexes and adding documents, don't hesitate to check out our [getting started guide](/learn/getting_started/quick_start) or [API reference](/reference/api/overview). And of course, **enjoy**! @@ -122,7 +120,7 @@ Configuring your Meilisearch instance in a production environment is not just st If you want to use your own domain name (or sub-domain), add an `A record` in your domain name provider account. Otherwise, **you can skip this step**. -![An interface for editing DNS records with "Type": A, "Name": my-aws-instance, "IPv4 address": 35.180.61.104, and "TTL": Auto](/aws/11.domain.png) +![An interface for editing DNS records with "Type": A, "Name": my-aws-instance, "IPv4 address": 35.180.61.104, and "TTL": Auto](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/aws/11.domain.png) Your domain name should now be linked to your Meilisearch instance. Run a health check to verify that your instance is running and your DNS is well configured: diff --git a/learn/cookbooks/azure.md b/learn/deployment/azure.mdx similarity index 90% rename from learn/cookbooks/azure.md rename to learn/deployment/azure.mdx index d91a3240ed..8cd1fbcbe2 100644 --- a/learn/cookbooks/azure.md +++ b/learn/deployment/azure.mdx @@ -6,9 +6,9 @@ _The following is a guest post by Christopher Maneu, Data Engineering Lead Advoc In this tutorial, we will see how to deploy a Meilisearch instance on Azure, and also some considerations for hosting a production Meilisearch instance on Azure. -::: tip + If you don't yet have an Azure subscription, you can [create one here](https://azure.microsoft.com/free/). With the Azure Free tier, you can run a Meilisearch instance for free for at least 12 months. -::: + ## One-click deploy @@ -16,7 +16,7 @@ You can deploy a Meilisearch instance via the official [Meilisearch Docker image [![Deploy To Azure](https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/1-CONTRIBUTION-GUIDE/images/deploytoazure.svg?sanitize=true)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fcmaneu%2Fmeilisearch-on-azure%2Fmain%2Fmain.json). -![The Azure portal prompting for information to deploy Meilisearch](/azure/01.azure-deploy-button.png) +![The Azure portal prompting for information to deploy Meilisearch](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/azure/01.azure-deploy-button.png) When clicking this button, you'll be redirected to the Azure Portal and asked a few questions: @@ -24,21 +24,21 @@ When clicking this button, you'll be redirected to the Azure Portal and asked a - "Environment": The name of the environment you want to deploy to, like `dev` (for development) or `prod` (for production). This setting has no effect on the type of resources deployed. It's just for convenience - "Application Name": The name of your application. This name should be **unique across all Azure customers**. The URL where your application is deployed will contain this value - "Location": This is the resources' location. For reasons out of scope of this documentation, this parameter is different from the _Region_ one. By default, it is set to `eastus`, but you can type any Azure location (like `francecentral`, `westeurope`, or `japaneast`) -- "`Meilisearch_apikey`": This will be the [master key](/learn/security/master_api_keys.md) of your Meilisearch instance. While we generate a random key by default, we encourage you to set your own key +- "`Meilisearch_apikey`": This will be the [master key](/learn/security/master_api_keys) of your Meilisearch instance. While we generate a random key by default, we encourage you to set your own key Once you have filled in these fields, click the "Review + create" button and then the "Create" button. -::: warning + By default, the instance created is on a Standard plan. This will incur costs in your subscription. You can change it to a Free tier later, or by editing the Infrastructure as Code ([see below](#what-is-happening-with-this-one-click-button)). -::: + After a few minutes, the deployment will be complete. You'll be able to access your instance URL by clicking on the "Outputs" tabs on the left. -![The Azure portal showing information about your Meilisearch deployment](/azure/02.azure-output.png) +![The Azure portal showing information about your Meilisearch deployment](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/azure/02.azure-output.png) -::: tip + While Meilisearch is usually exposed on port `7700`, this deployment will expose your instance on port `433`. An SSL certificate will be generated and managed for you by Azure. -::: + ### What is happening with this one-click button? @@ -59,9 +59,9 @@ The one-click button creates a storage with the "LRS" redundancy option. That me By default, there is no automatic backup of your index. If you want to use Azure Backup capabilities to achieve this result, you can look at [Azure File Share Backup](https://docs.microsoft.com/azure/backup/azure-file-share-backup-overview). -::: tip -Meilisearch has snapshot and dump features that can help improve your backup capabilities. See [Data Backup documentation](/learn/advanced/snapshots_vs_dumps.md) for more information. -::: + +Meilisearch has snapshot and dump features that can help improve your backup capabilities. See [Data Backup documentation](/learn/advanced/snapshots_vs_dumps) for more information. + ### Always-on diff --git a/learn/cookbooks/digitalocean_droplet.md b/learn/deployment/digitalocean.mdx similarity index 71% rename from learn/cookbooks/digitalocean_droplet.md rename to learn/deployment/digitalocean.mdx index 3631046a4a..c90e29a91b 100644 --- a/learn/cookbooks/digitalocean_droplet.md +++ b/learn/deployment/digitalocean.mdx @@ -1,7 +1,5 @@ --- - -sidebarDepth: 2 - +sidebarDepth: 3 --- # Deploy a Meilisearch instance on DigitalOcean @@ -14,7 +12,7 @@ DigitalOcean Droplets are Linux-based virtual machines in which you can run your Once you log in to your DigitalOcean account, click the green "Create" button at the top-right of the page and select "Droplets". -![Selecting "Droplets" from the "Create" dropdown](/digitalocean/create.png) +![Selecting "Droplets" from the "Create" dropdown](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/create.png) [Refer to DigitalOcean's documentation to learn more about creating and configuring Droplets.](https://docs.digitalocean.com/tutorials/droplets/) @@ -22,25 +20,25 @@ Once you log in to your DigitalOcean account, click the green "Create" button at Select the region where you want to deploy your Droplet. Remember, the closer you are to your users, the better their search experience with Meilisearch will be. -![Selecting the London data center region](/digitalocean/select-region.png) +![Selecting the London data center region](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/select-region.png) ### 3. Select Meilisearch image By default, DigitalOcean displays the "OS" tab. Select the "Marketplace" tab, search for "Meilisearch", and select the image. -![Search results for 'Meilisearch' in Marketplace](/digitalocean/marketplace.png) +![Search results for 'Meilisearch' in Marketplace](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/marketplace.png) ### 4. Choose Droplet size This is where you choose the amount of RAM, storage, and CPU cores your Droplet will have. Select your plan based on your needs. Memory-optimized options will give you better results when working with big datasets. -![Selecting the plan based on your usage](/digitalocean/select-plan.png) +![Selecting the plan based on your usage](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/select-plan.png) ### 5. Choose an authentication method You can either use SSH keys or a password to access your Droplet. We recommend using SSH keys as they are more secure. -![Selecting SSH keys for authentication](/digitalocean/add-ssh-key.png) +![Selecting SSH keys for authentication](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/add-ssh-key.png) Select the SSH keys you want to add to your Droplet. If you don't have a key, [follow DigitalOcean's instructions on how to create one](https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/to-account/). @@ -48,25 +46,25 @@ Select the SSH keys you want to add to your Droplet. If you don't have a key, [f Here you can select the name that will be visible everywhere in your DigitalOcean account. Droplets can only contain alphanumeric characters, dashes, and periods. -![Adding 'meilisearch-droplet-name' as the hostname](/digitalocean/droplet-name.png) +![Adding 'meilisearch-droplet-name' as the hostname](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/droplet-name.png) Tags are great for managing resources. They are custom labels you assign to droplets. Tags can contain letters, numbers, colons, dashes, and underscores. You can use multiple tags for a single resource. Try naming tags based on a droplet's function. -![The search bar, meilisearch, and search-team tags](/digitalocean/add-tags.png) +![The search bar, meilisearch, and search-team tags](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/add-tags.png) ### 7. Click on "Create Droplet" -![The "Create Droplet" button](/digitalocean/create-droplet.png) +![The "Create Droplet" button](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/create-droplet.png) ### 8. Test Meilisearch Once created, click on the Droplet's public IP address to copy it: -![meilisearch-droplet-name instance's IP: 165.227.56.77](/digitalocean/copy-ip.png) +![meilisearch-droplet-name instance's IP: 165.227.56.77](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/copy-ip.png) Paste it into your browser. If you can access the search preview, Meilisearch is ready to use. -![Meilisearch search preview](/digitalocean/test-meili.png) +![Meilisearch search preview](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/test-meili.png) ## Part 2: Configure production settings in your Meilisearch Droplet @@ -76,11 +74,11 @@ To configure Meilisearch for **production** on a DigitalOcean Droplet, [use SSH If you want to use your own domain, click the "Create" button and select "Domain/DNS". -![Selecting Domain/DNS from the Create menu](/digitalocean/domain.png) +![Selecting Domain/DNS from the Create menu](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/domain.png) Type in your domain name in the "Enter domain field" and click "Add Domain". -![Domains tab on the Networking page](/digitalocean/add-domain.png) +![Domains tab on the Networking page](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/digitalocean/add-domain.png) This should work out of the box. Your domain name should now be linked to your Meilisearch instance. Use `curl` to access it and verify DNS has been properly configured: @@ -116,9 +114,9 @@ ssh root@DIGITAL_OCEAN_IP_ADDRESS Type `yes` and press Enter to accept the authentication process. -::: note + The above command is not required if you are using the Droplet Console. -::: + A script will run automatically, asking for your settings and desired configuration. If you want to run this script again anytime, you can do so by using the following command: diff --git a/learn/cookbooks/gcp.md b/learn/deployment/gcp.mdx similarity index 86% rename from learn/cookbooks/gcp.md rename to learn/deployment/gcp.mdx index 33f2e94228..244e9f11c5 100644 --- a/learn/cookbooks/gcp.md +++ b/learn/deployment/gcp.mdx @@ -1,7 +1,5 @@ --- - -sidebarDepth: 2 - +sidebarDepth: 3 --- # Deploy a Meilisearch instance on Google Cloud Platform (GCP) Compute Engine @@ -16,11 +14,11 @@ The following guide will walk you through every step to deploy Meilisearch in a - Navigate to "Compute Engine" -> "Images" -![Page titled 'Images'](/gcp/01.compute-engine.png) +![Page titled 'Images'](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/gcp/01.compute-engine.png) - Click on "[+] CREATE IMAGE" -![Adding image name(permanent), source, and cloud storage file](/gcp/02.image-info.png) +![Adding image name(permanent), source, and cloud storage file](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/gcp/02.image-info.png) - Give it a name (`meilisearch-example`) @@ -38,31 +36,31 @@ meilisearch-image/meilisearch-v1.0.2-debian-10.vmdk - Click on "Create". You may have to wait up to 6 minutes while the Meilisearch custom image imports to your account -![meilisearch-example successfully imported](/gcp/03.import-image.png) +![meilisearch-example successfully imported](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/gcp/03.import-image.png) ### 2. Create a new GCP Compute Engine instance from the imported image - Open the tab "Images" and click on the name of the image that you just imported, and click on the "[+] Create instance" button -![The meilisearch-v-X-X-X instance](/gcp/04.create-instance.png) +![The meilisearch-v-X-X-X instance](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/gcp/04.create-instance.png) - Give your instance a name - In the "Machine configuration" section, make sure to pick a "Machine type" with enough memory to run Meilisearch according to your needs. More memory means faster searching -![Selecting the 'E2' series and 'e2-medium (2 vCPU, 4 GB memory)' machine type](/gcp/05.machine-configuration.png) +![Selecting the 'E2' series and 'e2-medium (2 vCPU, 4 GB memory)' machine type](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/gcp/05.machine-configuration.png) - In the "Boot disk" section, click the "Change" button - From the "Custom images" tab, select the image that you just imported in the previous steps (meilisearch-vX-X-X) from the drop down menu. Don't forget to set the "Size" of the disk to an amount corresponding to your needs. When you are done, click on "Select" -![Selecting the 'Balanced persistent disk' Boot disk type and 10GB Size](/gcp/06.boot-disk.png) +![Selecting the 'Balanced persistent disk' Boot disk type and 10GB Size](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/gcp/06.boot-disk.png) - In the "Firewall" section, make sure to check the "Allow HTTP traffic" and "Allow HTTPS traffic" boxes so that your Meilisearch instance can communicate with the internet - Finally, click on the "Create" button. After a minute or two, your Meilisearch instance should be up and running -![The meilisearch-gcp-test instance running successfully](/gcp/07.instance-running.png) +![The meilisearch-gcp-test instance running successfully](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/gcp/07.instance-running.png) You can check that your instance is running correctly by copying and pasting the "External IP" address provided by GCP into your browser, or by typing the following command on your terminal: @@ -84,7 +82,7 @@ Configuring your Meilisearch instance in a production environment is not just st If you want to use a custom domain name (or sub-domain), add an `A record` in your domain name provider account. Otherwise, you can skip this step. -![The my-gcp-instance domain](/gcp/08.domain.png) +![The my-gcp-instance domain](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/gcp/08.domain.png) Your domain name should now be linked to your Meilisearch instance. Run a health check to verify that your instance is running and your DNS is well configured: diff --git a/learn/cookbooks/koyeb.md b/learn/deployment/koyeb.mdx similarity index 98% rename from learn/cookbooks/koyeb.md rename to learn/deployment/koyeb.mdx index a5d7a17d0b..1221b87fe1 100644 --- a/learn/cookbooks/koyeb.md +++ b/learn/deployment/koyeb.mdx @@ -24,16 +24,16 @@ You can for instance run the following command from the terminal to generate a s python -c 'import os,base64; print(base64.urlsafe_b64encode(os.urandom(32)).decode())' ``` -::: warning + Using a master key is optional but strongly recommended when running in production. If you launch without a master key, your Meilisearch instance will be unprotected and publicly accessible. -::: + ### Test Meilisearch Copy the public URL (for example, `https://meili-myorg.koyeb.app`) from the [Koyeb control panel](https://app.koyeb.com) and paste it in your browser. -You should land on the Meilisearch [search preview](/learn/what_is_meilisearch/search_preview.md), where you are asked to enter your master key. +You should land on the Meilisearch [search preview](/learn/what_is_meilisearch/search_preview), where you are asked to enter your master key. -You are now ready to [create your first index](/learn/getting_started/quick_start.md)! +You are now ready to [create your first index](/learn/getting_started/quick_start)! **Enjoy**! diff --git a/learn/cookbooks/qovery.md b/learn/deployment/qovery.mdx similarity index 98% rename from learn/cookbooks/qovery.md rename to learn/deployment/qovery.mdx index 61e381bfa1..69c682b0fc 100644 --- a/learn/cookbooks/qovery.md +++ b/learn/deployment/qovery.mdx @@ -1,3 +1,7 @@ +--- +sidebarDepth: 3 +--- + # Deploy a Meilisearch instance on Qovery [Qovery](https://www.qovery.com) is a fully-managed cloud platform that runs on your AWS, DigitalOcean, or Scaleway account where you can host static sites, backend APIs, databases, cron jobs, and all your other apps in one place. diff --git a/learn/cookbooks/railway.md b/learn/deployment/railway.mdx similarity index 88% rename from learn/cookbooks/railway.md rename to learn/deployment/railway.mdx index 803437a4bf..53c976f3f8 100644 --- a/learn/cookbooks/railway.md +++ b/learn/deployment/railway.mdx @@ -38,18 +38,18 @@ openssl rand -base64 48 | head -c32 which in this case will generate a 32-character long string. -::: warning + Setting a master key is optional, but without it, your server will accept unidentified requests, which can affect your usage quota on the server. If you need some protection in production, we strongly recommend setting a master key. -::: + ### Test Meilisearch Copy the public URL (for example, `meilisearch-production-up.railway.app`) of your project from your [Railway account dashboard](https://railway.app/dashboard) and paste it into your browser. -![Railway dashboard](/railway/public-url.png) +![Railway dashboard](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/railway/public-url.png) -You should land on the Meilisearch [search preview](/learn/what_is_meilisearch/search_preview.md), where you will be asked to enter your master key. +You should land on the Meilisearch [search preview](/learn/what_is_meilisearch/search_preview), where you will be asked to enter your master key. -You are now ready to [create your first index](/learn/getting_started/quick_start.md)! +You are now ready to [create your first index](/learn/getting_started/quick_start)! **Enjoy**! diff --git a/learn/experimental/metrics.md b/learn/experimental/metrics.mdx similarity index 96% rename from learn/experimental/metrics.md rename to learn/experimental/metrics.mdx index e79c7a95ee..12b79d7c0c 100644 --- a/learn/experimental/metrics.md +++ b/learn/experimental/metrics.mdx @@ -6,8 +6,8 @@ The `/metrics` endpoint exposes data compatible with [Prometheus](https://promet Are you using this feature? Meilisearch wants to hear from you! Tell us about your experience in the [GitHub discussion](https://github.com/meilisearch/product/discussions/625). All feedback is useful and helps make Meilisearch better and easier-to-use. -::: warning + `/metrics` is an experimental feature. Experimental features are unstable: their API might significantly change and become incompatible between releases. Meilisearch does not recommend using experimental features in a production environment. Meilisearch makes experimental features available with the expectation they will become stable in future releases. However, it is not possible to guarantee when and if this will happen. -::: + \ No newline at end of file diff --git a/learn/getting_started/installation.md b/learn/getting_started/installation.mdx similarity index 59% rename from learn/getting_started/installation.md rename to learn/getting_started/installation.mdx index 91880bb0d9..7b598d66a2 100644 --- a/learn/getting_started/installation.md +++ b/learn/getting_started/installation.mdx @@ -1,13 +1,19 @@ -# Installation +--- +sidebarDepth: 3 +--- -You can install Meilisearch locally or deploy it over a cloud service. This guide covers each option in detail. +# Installation and operating systems -## Local installation +## Installation -:::: tabs +You can install Meilisearch locally or deploy it over a cloud service. -::: tab cURL -Download the **latest stable release** of Meilisearch with **cURL**. +### Local installation + + + + +Download the **latest stable release** of Meilisearch with **cURL**.
Launch Meilisearch to start the server. @@ -19,10 +25,10 @@ curl -L https://install.meilisearch.com | sh ./meilisearch ``` -::: +
-::: tab Homebrew -Download the **latest stable release** of Meilisearch with **[Homebrew](https://brew.sh/)**, a package manager for MacOS. + +Download the **latest stable release** of Meilisearch with **[Homebrew](https://brew.sh/)**, a package manager for MacOS.
Launch Meilisearch to start the server. @@ -34,10 +40,10 @@ brew update && brew install meilisearch meilisearch ``` -::: +
-::: tab Docker -When using **Docker**, you can run [any available tag](https://hub.docker.com/r/getmeili/meilisearch/tags). + +When using **Docker**, you can run [any available tag](https://hub.docker.com/r/getmeili/meilisearch/tags).
These commands launch the **latest stable release** of Meilisearch. @@ -54,12 +60,12 @@ docker run -it --rm \ # Use ${pwd} instead of $(pwd) in PowerShell ``` -You can learn more about [using Meilisearch with Docker in our dedicated guide](/learn/cookbooks/docker.md). -::: +You can learn more about [using Meilisearch with Docker in our dedicated guide](/learn/cookbooks/docker). +
-::: tab APT + -Download the **latest stable release** of Meilisearch with **APT**. +Download the **latest stable release** of Meilisearch with **APT**.
Launch Meilisearch to start the server. @@ -74,11 +80,11 @@ sudo apt update && sudo apt install meilisearch meilisearch ``` -::: +
-::: tab Source + -Meilisearch is written in `Rust`. To compile it, [install the Rust toolchain](https://www.rust-lang.org/tools/install). +Meilisearch is written in `Rust`. To compile it, [install the Rust toolchain](https://www.rust-lang.org/tools/install).
If the Rust toolchain is already installed, clone the repository on your local system and change it to your working directory. @@ -87,7 +93,7 @@ git clone https://github.com/meilisearch/meilisearch cd meilisearch ``` -Choose the release you want to use. You can find the full list [here](https://github.com/meilisearch/meilisearch/releases). +Choose the release you want to use. You can find the full list [here](https://github.com/meilisearch/meilisearch/releases).
In the cloned repository, run the following command to access the most recent version of Meilisearch: @@ -108,9 +114,9 @@ cargo build --release ./target/release/meilisearch ``` -::: +
-::: tab Windows + To install Meilisearch on Windows, you can: @@ -121,30 +127,54 @@ To install Meilisearch on Windows, you can: To learn more about the Windows command prompt, follow this [introductory guide](https://www.makeuseof.com/tag/a-beginners-guide-to-the-windows-command-line/). -::: + -::: tab Direct download + -If none of the other installation options work for you, you can always download the Meilisearch binary directly on GitHub. +If none of the other installation options work for you, you can always download the Meilisearch binary directly on GitHub.
Go to the [latest Meilisearch release](https://github.com/meilisearch/meilisearch/releases/latest), scroll down to "Assets", and select the binary corresponding to your operating system. -::: +
-:::: +
-## Meilisearch Cloud +### Meilisearch Cloud [Meilisearch Cloud](https://www.meilisearch.com/pricing) is one of the easiest way to get started with Meilisearch. The Build plan allows you to index up to 100k documents and perform 10k search requests per month for free! -## Cloud deploy +### Cloud deploy To deploy Meilisearch on a cloud service, follow one of our dedicated guides: -- [AWS](/learn/cookbooks/aws.md) -- [Azure](/learn/cookbooks/azure.md) -- [DigitalOcean](/learn/cookbooks/digitalocean_droplet.md) -- [GCP](/learn/cookbooks/gcp.md) -- [Koyeb](/learn/cookbooks/koyeb.md) -- [Qovery](/learn/cookbooks/qovery.md) -- [Railway](/learn/cookbooks/railway.md) +- [AWS](/learn/cookbooks/aws) +- [Azure](/learn/cookbooks/azure) +- [DigitalOcean](/learn/cookbooks/digitalocean) +- [GCP](/learn/cookbooks/gcp) +- [Koyeb](/learn/cookbooks/koyeb) +- [Qovery](/learn/cookbooks/qovery) +- [Railway](/learn/cookbooks/railway) + +## Supported operating systems + +This section lists operating systems Meilisearch officially supports and tests with every new release. Meilisearch binaries might still run in unsupported environments. + +If the provided [binaries](/learn/getting_started/installation#local-installation) do not work on your operating system, try building Meilisearch [from source](#local-installation). If compilation fails, Meilisearch is not compatible with your machine. + +### Linux + +The Meilisearch binary works on all Linux distributions with `amd64/x86_64` or `aarch64/arm64` architecture using glibc 2.27 and later. You can check your glibc version using: + +``` +ldd --version +``` + +### macOS + +The Meilisearch binary works with macOS 12 and later with `amd64` or `arm64` architecture. + +### Windows + +The Meilisearch binary works on Windows Server 2022 and later. + +It is likely the Meilisearch binary also works with Windows OS 10 and later. However, due to the differences between Windows OS and Windows Server, Meilisearch does not officially support Windows OS. diff --git a/learn/getting_started/quick_start.md b/learn/getting_started/quick_start.mdx similarity index 74% rename from learn/getting_started/quick_start.md rename to learn/getting_started/quick_start.mdx index 4dd545d97a..cf8d44a00e 100644 --- a/learn/getting_started/quick_start.md +++ b/learn/getting_started/quick_start.mdx @@ -5,7 +5,7 @@ This quick start will walk you through setting up Meilisearch, adding documents, You will need: - A [command line](https://www.learnenough.com/command-line-tutorial#sec-running_a_terminal) for installation -- Some way to interact with Meilisearch afterwards (for example, [cURL](https://curl.se) or one of our [SDKs](/learn/what_is_meilisearch/sdks.md)) +- Some way to interact with Meilisearch afterwards (for example, [cURL](https://curl.se) or one of our [SDKs](/learn/what_is_meilisearch/sdks)) Let's get started! @@ -21,11 +21,11 @@ curl -L https://install.meilisearch.com | sh ./meilisearch ``` -You have the option to install Meilisearch locally or deploy it over a cloud service. Learn more about the other installation options in our [installation guide](/learn/getting_started/installation.md). +You have the option to install Meilisearch locally or deploy it over a cloud service. Learn more about the other installation options in our [installation guide](/learn/getting_started/installation). -::: note -If you started Meilisearch with a master key or using Meilisearch Cloud, you will need to add the [`-H Authorization: Bearer API_KEY` header](/reference/api/overview.md#authorization) to all your curl commands. -::: + +If you started Meilisearch with a master key or using Meilisearch Cloud, you will need to add the [`-H Authorization: Bearer API_KEY` header](/reference/api/overview#authorization) to all your curl commands. + ### Running Meilisearch @@ -49,23 +49,23 @@ Congratulations! You're ready to move on to the next step! ## Add documents -For this quick start, we will be using a collection of movies as our dataset. To follow along, first click this link to download the file: movies.json. Then, move the downloaded file into your working directory. +For this quick start, we will be using a collection of movies as our dataset. To follow along, first click this link to download the file: movies.json. Then, move the downloaded file into your working directory. Open a new terminal window and run the following command: -Meilisearch stores data in the form of discrete records, called [documents](/learn/core_concepts/documents.md). Documents are grouped into collections, called [indexes](/learn/core_concepts/indexes.md). +Meilisearch stores data in the form of discrete records, called [documents](/learn/core_concepts/documents). Documents are grouped into collections, called [indexes](/learn/core_concepts/indexes). -::: note -Meilisearch currently only accepts data in JSON, NDJSON, and CSV formats. You can read more about this in our [documents guide](/learn/core_concepts/documents.md#dataset-format). -::: + +Meilisearch currently only accepts data in JSON, NDJSON, and CSV formats. You can read more about this in our [documents guide](/learn/core_concepts/documents#dataset-format). + -The previous command added documents from `movies.json` to a new index called `movies` and set `id` as the primary key. If it isn't set manually, Meilisearch [infers](/learn/core_concepts/primary_key.md#meilisearch-guesses-your-primary-key) it from your dataset. +The previous command added documents from `movies.json` to a new index called `movies` and set `id` as the primary key. If it isn't set manually, Meilisearch [infers](/learn/core_concepts/primary_key#meilisearch-guesses-your-primary-key) it from your dataset. -Every index must have a [primary key](/learn/core_concepts/primary_key.md#primary-field), an attribute shared across all documents in that index. If you try adding documents to an index and even a single one is missing the primary key, none of the documents will be stored. +Every index must have a [primary key](/learn/core_concepts/primary_key#primary-field), an attribute shared across all documents in that index. If you try adding documents to an index and even a single one is missing the primary key, none of the documents will be stored. -Meilisearch combines consecutive document requests into a single batch and processes them together. This process is called [auto-batching](/learn/core_concepts/documents.md#auto-batching), and it significantly speeds up indexing. After adding documents, you should receive a response like this: +Meilisearch combines consecutive document requests into a single batch and processes them together. This process is called [auto-batching](/learn/core_concepts/documents#auto-batching), and it significantly speeds up indexing. After adding documents, you should receive a response like this: ```json { @@ -77,9 +77,9 @@ Meilisearch combines consecutive document requests into a single batch and proce } ``` -Most database operations in Meilisearch are [asynchronous](/learn/advanced/asynchronous_operations.md). This means that rather than being processed instantly, **API requests are added to a queue and processed at a later time**. +Most database operations in Meilisearch are [asynchronous](/learn/advanced/asynchronous_operations). This means that rather than being processed instantly, **API requests are added to a queue and processed at a later time**. -Use the returned `taskUid` to [check the status](/reference/api/tasks.md) of your documents: +Use the returned `taskUid` to [check the status](/reference/api/tasks) of your documents: @@ -143,33 +143,33 @@ In the above code sample, the parameter `q` represents the search query. The doc } ``` -By default, Meilisearch only returns the first 20 results for a search query. This can be changed using the [`limit` parameter](/reference/api/search.md#limit). +By default, Meilisearch only returns the first 20 results for a search query. This can be changed using the [`limit` parameter](/reference/api/search#limit). -To search on multiple indexes at the same time with a single request, use the [`/multi-search` endpoint.](/reference/api/multi_search.md) +To search on multiple indexes at the same time with a single request, use the [`/multi-search` endpoint.](/reference/api/multi_search) ## Search preview Meilisearch offers a browser-based search preview where you can search through a selected index. You can access it any time Meilisearch is running at `http://localhost:7700`. -![Meilisearch's search preview showing the movies index](/search_preview/default.png) +![Meilisearch's search preview showing the movies index](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/search_preview/default.png) -For security reasons, the search preview is only available in [development mode.](/learn/configuration/instance_options.md#environment) +For security reasons, the search preview is only available in [development mode.](/learn/configuration/instance_options#environment) If you have multiple indexes, you can switch between them using the indexes dropdown. -![Meilisearch's search preview indicating the indexes dropdown in the upper right corner](/search_preview/multiple_indexes.png) +![Meilisearch's search preview indicating the indexes dropdown in the upper right corner](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/search_preview/multiple_indexes.png) ## Customization At this point, you can configure your entire Meilisearch instance, customize your indexes, and refine your results using: -- [Environment variables](/learn/configuration/instance_options.md#environment-variables) and [command-line options](/learn/configuration/instance_options.md#command-line-options-and-flags) +- [Environment variables](/learn/configuration/instance_options#environment-variables) and [command-line options](/learn/configuration/instance_options#command-line-options-and-flags) -- A [configuration file](/learn/configuration/instance_options.md#configuration-file) +- A [configuration file](/learn/configuration/instance_options#configuration-file) -- [Index settings](/reference/api/settings.md) +- [Index settings](/reference/api/settings) -- [Search parameters](/reference/api/search.md#search-parameters) +- [Search parameters](/reference/api/search#search-parameters) ## Front-end integration @@ -190,17 +190,17 @@ You should now have a working front-end search interface 🚀🔥 The Meilisearch API is unprotected by default, making all routes publicly accessible. You can set a master key of at least 16 bytes to protect your instance from unauthorized use: -:::: tabs + -::: tab CLI + ```bash ./meilisearch --master-key="MASTER_KEY" ``` -::: + -::: tab Environment variable + UNIX: @@ -216,16 +216,15 @@ set MEILI_MASTER_KEY="MASTER_KEY" ./meilisearch ``` -::: - -:::: + + When you launch your Meilisearch instance with a master key, two things happen: -- Your Meilisearch instance is now protected. Aside from the [get health endpoint](/reference/api/health.md), all subsequent API requests must include a valid API key for [authorization](/reference/api/overview.md#authorization) -- Two [default API keys](/learn/security/master_api_keys.md#using-default-api-keys-for-authorization) are automatically generated +- Your Meilisearch instance is now protected. Aside from the [get health endpoint](/reference/api/health), all subsequent API requests must include a valid API key for [authorization](/reference/api/overview#authorization) +- Two [default API keys](/learn/security/master_api_keys#using-default-api-keys-for-authorization) are automatically generated -Here's how to use the master key you set to [get all keys](/reference/api/keys.md#get-all-keys): +Here's how to use the master key you set to [get all keys](/reference/api/keys#get-all-keys): @@ -233,14 +232,14 @@ The master key should only be used for retrieving and managing API keys. For reg -::: warning -Accessing the `/keys` route without setting a master key will return an [error](/reference/errors/error_codes.md#missing-master-key). -::: + +Accessing the `/keys` route without setting a master key will return an [error](/reference/errors/error_codes#missing-master-key). + -To learn more about key management, refer to our [dedicated guide](/learn/security/master_api_keys.md). +To learn more about key management, refer to our [dedicated guide](/learn/security/master_api_keys). ## What's next? You now know all the basics: how to install Meilisearch, create an index, add documents, check the status of an asynchronous task, and perform a search. -To keep going, continue to the [Meilisearch 101](/learn/getting_started/filtering_and_sorting.md) for a guided overview of the main features, or check out the [API references](/reference/api/overview.md) to dive right in! +To keep going, continue to the [Meilisearch 101](/learn/getting_started/filtering_and_sorting) for a guided overview of the main features, or check out the [API references](/reference/api/overview) to dive right in! diff --git a/learn/getting_started/supported_os.md b/learn/getting_started/supported_os.md deleted file mode 100644 index ecae25877d..0000000000 --- a/learn/getting_started/supported_os.md +++ /dev/null @@ -1,23 +0,0 @@ -# Supported operating systems - -This page lists operating systems Meilisearch officially supports and tests with every new release. Meilisearch binaries might still run in unsupported environments. Refer to the [changelog](https://github.com/meilisearch/MeiliSearch/releases) for more information on operating system support changes. - -If the provided [binaries](/learn/getting_started/installation.md#local-installation) don't work for you, try building Meilisearch from source. If compilation fails, Meilisearch is not compatible with your machine. - -## Linux - -The Meilisearch binary works on all Linux distributions with `amd64/x86_64` or `aarch64/arm64` architecture using glibc 2.27 and later. You can check your glibc version using: - -``` -ldd --version -``` - -## macOS - -The Meilisearch binary works with macOS 12 and later with `amd64` or `arm64` architecture. - -## Windows - -The Meilisearch binary works on Windows Server 2022 and later. - -It is likely the Meilisearch binary also works with Windows OS 10 and later. However, due to the differences between Windows OS and Windows Server, Meilisearch does not officially support Windows OS. diff --git a/learn/configuration/displayed_searchable_attributes.md b/learn/index_settings/displayed_searchable_attributes.mdx similarity index 78% rename from learn/configuration/displayed_searchable_attributes.md rename to learn/index_settings/displayed_searchable_attributes.mdx index fc32dfdea4..d7ad970afa 100644 --- a/learn/configuration/displayed_searchable_attributes.md +++ b/learn/index_settings/displayed_searchable_attributes.mdx @@ -2,14 +2,14 @@ By default, whenever a document is added to Meilisearch, all new attributes found in it are automatically added to two lists: -- [`displayedAttributes`](/learn/configuration/displayed_searchable_attributes.md#displayed-fields): Attributes whose fields are displayed in documents -- [`searchableAttributes`](/learn/configuration/displayed_searchable_attributes.md#the-searchableattributes-list): Attributes whose values are searched for matching query words +- [`displayedAttributes`](/learn/configuration/displayed_searchable_attributes#displayed-fields): Attributes whose fields are displayed in documents +- [`searchableAttributes`](/learn/configuration/displayed_searchable_attributes#the-searchableattributes-list): Attributes whose values are searched for matching query words -By default, every field in a document is **displayed** and **searchable**. These properties can be modified in the [settings](/reference/api/settings.md). +By default, every field in a document is **displayed** and **searchable**. These properties can be modified in the [settings](/reference/api/settings). ## Displayed fields -The fields whose attributes are added to the [`displayedAttributes` list](/reference/api/settings.md#displayed-attributes) are **displayed in each matching document**. +The fields whose attributes are added to the [`displayedAttributes` list](/reference/api/settings#displayed-attributes) are **displayed in each matching document**. Documents returned upon search contain only displayed fields. If a field attribute is not in the displayed-attribute list, the field won't be added to the returned documents. @@ -29,18 +29,18 @@ When you perform a search, all searchable fields are checked for matching query Non-searchable fields are most useful for internal information that's not relevant to the search experience, such as URLs, sales numbers, or ratings used exclusively for sorting results. -::: tip + Even if you make a field non-searchable, it will remain [stored in the database](#data-storing) and can be made searchable again at a later time. -::: + ### The `searchableAttributes` list -Meilisearch uses an ordered list to determine which attributes are searchable. The order in which attributes appear in this list also determines their [impact on relevancy](/learn/core_concepts/relevancy.md#attribute-ranking-order), from most impactful to least. +Meilisearch uses an ordered list to determine which attributes are searchable. The order in which attributes appear in this list also determines their [impact on relevancy](/learn/core_concepts/relevancy#attribute-ranking-order), from most impactful to least. In other words, the `searchableAttributes` list serves two purposes: 1. It designates the fields that are searchable -2. It dictates the [attribute ranking order](/learn/core_concepts/relevancy.md#attribute-ranking-order) +2. It dictates the [attribute ranking order](/learn/core_concepts/relevancy#attribute-ranking-order) There are two possible modes for the `searchableAttributes` list. @@ -48,19 +48,19 @@ There are two possible modes for the `searchableAttributes` list. **By default, all attributes are automatically added to the `searchableAttributes` list in their order of appearance.** This means that the initial order will be based on the order of attributes in the first document indexed, with each new attribute found in subsequent documents added at the end of this list. -This default behavior is indicated by a `searchableAttributes` value of `["*"]`. To verify the current value of your `searchableAttributes` list, use the [get searchable attributes endpoint](/reference/api/settings.md#get-searchable-attributes). +This default behavior is indicated by a `searchableAttributes` value of `["*"]`. To verify the current value of your `searchableAttributes` list, use the [get searchable attributes endpoint](/reference/api/settings#get-searchable-attributes). -If you'd like to restore your searchable attributes list to this default behavior, [set `searchableAttributes` to an empty array `[]`](/reference/api/searchable_attributes.md#update-searchable-attributes) or use the [reset searchable attributes endpoint](/reference/api/settings.md#reset-searchable-attributes). +If you'd like to restore your searchable attributes list to this default behavior, [set `searchableAttributes` to an empty array `[]`](/reference/api/settings#update-searchable-attributes) or use the [reset searchable attributes endpoint](/reference/api/settings#reset-searchable-attributes). #### Manual -You may want to make some attributes non-searchable, or change the [attribute ranking order](/learn/core_concepts/relevancy.md#attribute-ranking-order) after documents have been indexed. To do so, place the attributes in the desired order and send the updated list using the [update searchable attributes endpoint](/reference/api/settings.md#update-searchable-attributes). +You may want to make some attributes non-searchable, or change the [attribute ranking order](/learn/core_concepts/relevancy#attribute-ranking-order) after documents have been indexed. To do so, place the attributes in the desired order and send the updated list using the [update searchable attributes endpoint](/reference/api/settings#update-searchable-attributes). -After manually updating the `searchableAttributes` list, **subsequent new attributes will no longer be automatically added** unless the settings are [reset](/reference/api/settings.md#reset-searchable-attributes). +After manually updating the `searchableAttributes` list, **subsequent new attributes will no longer be automatically added** unless the settings are [reset](/reference/api/settings#reset-searchable-attributes). -::: warning + Due to an implementation bug, manually updating `searchableAttributes` will change the displayed order of document fields in the JSON response. This behavior is inconsistent and will be fixed in a future release. -::: + #### Example diff --git a/learn/configuration/distinct.md b/learn/index_settings/distinct.mdx similarity index 89% rename from learn/configuration/distinct.md rename to learn/index_settings/distinct.mdx index 4b24353b91..036c2db422 100644 --- a/learn/configuration/distinct.md +++ b/learn/index_settings/distinct.mdx @@ -2,13 +2,13 @@ The distinct attribute is a special, user-designated field. It is most commonly used to prevent Meilisearch from returning a set of several similar documents, instead forcing it to return only one. -:::note + There can be only one `distinctAttribute` per index. Trying to set multiple fields as a `distinctAttribute` will return an error. -::: + The value of a field configured as a distinct attribute will always be unique among returned documents. This means **there will never be more than one occurrence of the same value** in the distinct attribute field among the returned documents. -When multiple documents have the same value for the distinct attribute, Meilisearch returns only the highest-ranked result after applying [ranking rules](/learn/core_concepts/relevancy.md#ranking-rules). If two or more documents are equivalent in terms of ranking, Meilisearch returns the first result according to its `internal_id`. +When multiple documents have the same value for the distinct attribute, Meilisearch returns only the highest-ranked result after applying [ranking rules](/learn/core_concepts/relevancy#ranking-rules). If two or more documents are equivalent in terms of ranking, Meilisearch returns the first result according to its `internal_id`. ## Example @@ -71,4 +71,4 @@ After setting the distinct attribute as shown above, querying for `lee leather j } ``` -For more in-depth information on distinct attribute, consult the [API reference](/reference/api/settings.md#distinct-attribute). +For more in-depth information on distinct attribute, consult the [API reference](/reference/api/settings#distinct-attribute). diff --git a/learn/index_settings/overview.mdx b/learn/index_settings/overview.mdx new file mode 100644 index 0000000000..ef0206e804 --- /dev/null +++ b/learn/index_settings/overview.mdx @@ -0,0 +1,17 @@ +# Index settings + +The table below shows the **index-level settings** available in Meilisearch. + +| Name | Type | Default value | Description | +| :----------------------------------------------------------------------------- | :--------------- | :----------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------- | +| **[`displayedAttributes`](/reference/api/settings#displayed-attributes)** | Array of strings | All attributes: `["*"]` | Fields displayed in the returned documents | +| **[`distinctAttribute`](/reference/api/settings#distinct-attribute)** | String | `null` | Search returns documents with distinct (different) values of the given field | +| **[`faceting`](/reference/api/settings#faceting)** | Object | [Default object](/reference/api/settings#faceting-object) | Faceting settings | +| **[`filterableAttributes`](/reference/api/settings#filterable-attributes)** | Array of strings | Empty | Attributes to use as filters and facets | +| **[`pagination`](/reference/api/settings#pagination)** | Object | [Default object](/reference/api/settings#pagination-object) | Pagination settings | +| **[`rankingRules`](/reference/api/settings#ranking-rules)** | Array of strings | `["words",`
`"typo",`
`"proximity",`
`"attribute",`
`"sort",`
`"exactness"]` | List of ranking rules in order of importance | +| **[`searchableAttributes`](/reference/api/settings#searchable-attributes)** | Array of strings | All attributes: `["*"]` | Fields in which to search for matching query words sorted by order of importance | +| **[`sortableAttributes`](/reference/api/settings#sortable-attributes)** | Array of strings | Empty | Attributes to use when sorting search results | +| **[`stopWords`](/reference/api/settings#stop-words)** | Array of strings | Empty | List of words ignored by Meilisearch when present in search queries | +| **[`synonyms`](/reference/api/settings#synonyms)** | Object | Empty | List of associated words treated similarly | +| **[`typoTolerance`](/reference/api/settings#typo-tolerance)** | Object | [Default object](/reference/api/settings#typo-tolerance-object) | Typo tolerance settings | diff --git a/learn/configuration/synonyms.md b/learn/index_settings/synonyms.mdx similarity index 77% rename from learn/configuration/synonyms.md rename to learn/index_settings/synonyms.mdx index a4a99abb3f..ddfa12626e 100644 --- a/learn/configuration/synonyms.md +++ b/learn/index_settings/synonyms.mdx @@ -1,16 +1,16 @@ # Synonyms -If multiple words have an equivalent meaning in your dataset, you can [create a list of synonyms](/reference/api/settings.md#update-synonyms). This will make your search results more relevant. +If multiple words have an equivalent meaning in your dataset, you can [create a list of synonyms](/reference/api/settings#update-synonyms). This will make your search results more relevant. Words set as synonyms won't always return the same results. With the default settings, the `movies` dataset should return 547 results for `great` and 66 for `fantastic`. Let's set them as synonyms: -With the new settings, searching for `great` returns 595 results and `fantastic` returns 423 results. This is due to various factors like [typos](/learn/configuration/typo_tolerance.md#minwordsizefortypos) and [splitting the query](/learn/advanced/concat.md#split-queries) to find relevant documents. The search for `great` will allow only one typo (for example, `create`) and take into account all variations of `great` (for instance, `greatest`) along with `fantastic`. +With the new settings, searching for `great` returns 595 results and `fantastic` returns 423 results. This is due to various factors like [typos](/learn/configuration/typo_tolerance#minwordsizefortypos) and [splitting the query](/learn/advanced/concat#split-queries) to find relevant documents. The search for `great` will allow only one typo (for example, `create`) and take into account all variations of `great` (for instance, `greatest`) along with `fantastic`. -::: warning + The number of search results may vary depending on changes to the `movies` dataset. -::: + ## Normalization @@ -43,11 +43,11 @@ phone => iphone A search for `phone` will return documents containing `iphone` as if they contained the word `phone`. -However, if you search for `iphone`, documents containing `phone` will be ranked lower in the results due to [the typo rule](/learn/core_concepts/relevancy.md#ranking-rules). +However, if you search for `iphone`, documents containing `phone` will be ranked lower in the results due to [the typo rule](/learn/core_concepts/relevancy#ranking-rules). #### Example -To create a one-way synonym list, this is the JSON syntax that should be [added to the settings](/reference/api/settings.md#update-synonyms). +To create a one-way synonym list, this is the JSON syntax that should be [added to the settings](/reference/api/settings#update-synonyms). ```json { @@ -69,7 +69,7 @@ When a search is done with one of these words, all synonyms will be considered a #### Example -To create a mutual association between four words, this is the JSON syntax that should be [added to the settings](/reference/api/settings.md#update-synonyms). +To create a mutual association between four words, this is the JSON syntax that should be [added to the settings](/reference/api/settings#update-synonyms). ```json { @@ -98,16 +98,16 @@ To create a mutual association between four words, this is the JSON syntax that ## Multi-word synonyms -Meilisearch treats multi-word synonyms as [phrases](/reference/api/search.md#phrase-search-2). +Meilisearch treats multi-word synonyms as [phrases](/reference/api/search#phrase-search-2). Take note that **multi-word phrases are treated differently** than associations between individual words. When a multi-word phrase is considered the synonym of another word or phrase, the **exact search query will always take precedence over its synonym(s)**. -::: note + Multi-word synonyms are limited to a maximum of **three words**. For example, although you could make `League of Legends` and `LOL` into synonyms, you could not do the same for `The Lord of the Rings` and `LOTR`. -::: + #### Example @@ -124,4 +124,4 @@ Suppose you set `San Francisco` and `SF` as synonyms with a [mutual association] } ``` -If you input `SF` as a search query, Meilisearch will also return results containing the phrase `San Francisco`. However, depending on the ranking rules, they might be considered less [relevant](/learn/core_concepts/relevancy.md) than those containing `SF`. The reverse is also true: if your query is `San Francisco`, documents containing `San Francisco` may rank higher than those containing `SF`. +If you input `SF` as a search query, Meilisearch will also return results containing the phrase `San Francisco`. However, depending on the ranking rules, they might be considered less [relevant](/learn/core_concepts/relevancy) than those containing `SF`. The reverse is also true: if your query is `San Francisco`, documents containing `San Francisco` may rank higher than those containing `SF`. diff --git a/learn/configuration/typo_tolerance.md b/learn/index_settings/typo_tolerance.mdx similarity index 87% rename from learn/configuration/typo_tolerance.md rename to learn/index_settings/typo_tolerance.mdx index 0a76c7087c..85a32b3c1c 100644 --- a/learn/configuration/typo_tolerance.md +++ b/learn/index_settings/typo_tolerance.mdx @@ -1,6 +1,10 @@ +--- +sidebarDepth: 3 +--- + # Typo tolerance -Typo tolerance helps users find relevant results even when their search queries contain spelling mistakes or typos, for example, typing `phnoe` instead of `phone`. You can [configure the typo tolerance feature for each index](/reference/api/settings.md#update-typo-tolerance-settings). +Typo tolerance helps users find relevant results even when their search queries contain spelling mistakes or typos, for example, typing `phnoe` instead of `phone`. You can [configure the typo tolerance feature for each index](/reference/api/settings#update-typo-tolerance-settings). ## Configuring typo tolerance @@ -29,15 +33,15 @@ When updating the `minWordSizeForTypos` object, keep in mind that: We recommend keeping the value of `oneTypo` between `2` and `8` and the value of `twoTypos` between `4` and `14`. If either value is too low, you may get a large number of false-positive results. On the other hand, if both values are set too high, many search queries may not benefit from typo tolerance. -::: note Typo tolerance: special cases + **Typo on the first character** Meilisearch considers a typo on a query's first character as two typos. **Concatenation** -When considering possible candidates for typo tolerance, Meilisearch will concatenate multiple search terms separated by a [space separator](/learn/advanced/datatypes.md#string). This is treated as one typo. For example, a search for `any way` would match documents containing `anyway`. +When considering possible candidates for typo tolerance, Meilisearch will concatenate multiple search terms separated by a [space separator](/learn/advanced/datatypes#string). This is treated as one typo. For example, a search for `any way` would match documents containing `anyway`. For more about typo calculations, [see below](#understanding-typo-calculations). -::: + ### `disableOnWords` @@ -47,13 +51,13 @@ You can disable typo tolerance for a list of query terms by adding them to `disa Meilisearch won't apply typo tolerance on the query term `Shrek` or `shrek` at search time to match documents. -::: note + `disableOnWords` is case insensitive. -::: + ### `disableOnAttributes` -You can disable typo tolerance for a specific [document attribute](/learn/core_concepts/documents.md) by adding it to `disableOnAttributes`. The code sample below disables typo tolerance for `title`: +You can disable typo tolerance for a specific [document attribute](/learn/core_concepts/documents) by adding it to `disableOnAttributes`. The code sample below disables typo tolerance for `title`: @@ -61,7 +65,7 @@ With the above settings, matches in the `title` attribute will not tolerate any ## Impact of typo tolerance on the `typo` ranking rule -The [`typo` ranking rule](/learn/core_concepts/relevancy.md#_2-typo) sorts search results by increasing number of typos on matched query words. Documents with 0 typos will rank highest, followed by those with 1 and then 2 typos. +The [`typo` ranking rule](/learn/core_concepts/relevancy#_2-typo) sorts search results by increasing number of typos on matched query words. Documents with 0 typos will rank highest, followed by those with 1 and then 2 typos. The presence or absence of the `typo` ranking rule has no impact on the typo tolerance setting. However, **[disabling the typo tolerance setting](#configuring-typo-tolerance) effectively also disables the `typo` ranking rule.** This is because all returned documents will contain `0` typos. diff --git a/learn/advanced/concat.md b/learn/inner_workings/concat.mdx similarity index 97% rename from learn/advanced/concat.md rename to learn/inner_workings/concat.mdx index c11ac430d3..f3224eb113 100644 --- a/learn/advanced/concat.md +++ b/learn/inner_workings/concat.mdx @@ -14,9 +14,9 @@ A search on `The news paper` will also search for the following concatenated que - `the newspaper` - `Thenewspaper` -::: warning + This concatenation is done on a **maximum of 3 words**. -::: + ## Split queries diff --git a/learn/advanced/datatypes.md b/learn/inner_workings/datatypes.mdx similarity index 91% rename from learn/advanced/datatypes.md rename to learn/inner_workings/datatypes.mdx index 46bc8d77ef..ee30b5849f 100644 --- a/learn/advanced/datatypes.md +++ b/learn/inner_workings/datatypes.mdx @@ -20,7 +20,7 @@ For Latin-based languages, there are two kinds of **space separators**: - **Soft spaces** (distance: 1): whitespaces, quotes, `'-' | '_' | '\'' | ':' | '/' | '\\' | '@' | '"' | '+' | '~' | '=' | '^' | '*' | '#'` - **Hard spaces** (distance: 8): `'.' | ';' | ',' | '!' | '?' | '(' | ')' | '[' | ']' | '{' | '}'| '|'` -Distance plays an essential role in determining whether documents are relevant since [one of the ranking rules is the **proximity** rule](/learn/core_concepts/relevancy.md). The proximity rule sorts the results by increasing distance between matched query terms. Then, two words separated by a soft space are closer and thus considered **more relevant** than two words separated by a hard space. +Distance plays an essential role in determining whether documents are relevant since [one of the ranking rules is the **proximity** rule](/learn/core_concepts/relevancy). The proximity rule sorts the results by increasing distance between matched query terms. Then, two words separated by a soft space are closer and thus considered **more relevant** than two words separated by a hard space. After the tokenizing process, each word is indexed and stored in the global dictionary of the corresponding index. @@ -55,9 +55,9 @@ When making a query on `Bruce Willis`, `002` will be the first document returned A numeric type (`integer`, `float`) is converted to a human-readable decimal number string representation. Numeric types can be searched as they are converted to strings. -You can add [custom ranking rules](/learn/core_concepts/relevancy.md#custom-rules) to create an ascending or descending sorting rule on a given attribute that has a numeric value in the documents. +You can add [custom ranking rules](/learn/core_concepts/relevancy#custom-rules) to create an ascending or descending sorting rule on a given attribute that has a numeric value in the documents. -You can also create [filters](/learn/advanced/filtering.md). The `>`, `>=`, `<`, `<=`, and `TO` relational operators apply only to numerical values. +You can also create [filters](/learn/advanced/filtering). The `>`, `>=`, `<`, `<=`, and `TO` relational operators apply only to numerical values. ## Boolean @@ -93,7 +93,7 @@ Will be processed as if all elements were arranged at the same level: "Bruce Willis. Vin Diesel. Kung Fu Panda." ``` -Once the above array has been flattened, it will be parsed exactly as explained in the [string example](/learn/advanced/datatypes.md#examples). +Once the above array has been flattened, it will be parsed exactly as explained in the [string example](/learn/advanced/datatypes#examples). ## Objects diff --git a/learn/advanced/indexing.md b/learn/inner_workings/indexing.mdx similarity index 85% rename from learn/advanced/indexing.md rename to learn/inner_workings/indexing.mdx index 06ec048e1e..b8e6a0f88f 100644 --- a/learn/advanced/indexing.md +++ b/learn/inner_workings/indexing.mdx @@ -4,7 +4,7 @@ Adding new documents to an index is a multi-threaded and memory-intensive operat ## RAM -By default, our indexer uses the `sysinfo` Rust library to calculate a machine's total memory size. Meilisearch then adapts its behavior so indexing uses a maximum two thirds of available resources. Alternatively, you can use the [`--max-indexing-memory`](/learn/configuration/instance_options.md#max-indexing-memory) instance option to manually control the maximum amount of RAM Meilisearch can consume. +By default, our indexer uses the `sysinfo` Rust library to calculate a machine's total memory size. Meilisearch then adapts its behavior so indexing uses a maximum two thirds of available resources. Alternatively, you can use the [`--max-indexing-memory`](/learn/configuration/instance_options#max-indexing-memory) instance option to manually control the maximum amount of RAM Meilisearch can consume. It is important to prevent Meilisearch from using all available memory during indexing. If that happens, there are two negative consequences: @@ -22,7 +22,7 @@ Memory overconsumption can still happen in two cases: In machines with multi-core processors, the indexer avoids using more than half of the available processing units. For example, if your machine has twelve cores, the indexer will try to use six of them at most. This ensures Meilisearch is always ready to perform searches, even while you are updating an index. -You can override Meilisearch's default threading limit by using the [`--max-indexing-threads`](/learn/configuration/instance_options.md#max-indexing-threads) instance option. Allowing Meilisearch to use all processor cores for indexing might negatively impact your users' search experience. +You can override Meilisearch's default threading limit by using the [`--max-indexing-threads`](/learn/configuration/instance_options#max-indexing-threads) instance option. Allowing Meilisearch to use all processor cores for indexing might negatively impact your users' search experience. Multi-threading is unfortunately not possible in machines with only one processor core. @@ -34,11 +34,11 @@ If you encounter performance issues during indexing, we recommend trying the fol - Indexing is a memory-intensive and multi-threaded operation. This means **the more memory and processor cores available, the faster Meilisearch will index new documents**. When trying to improve indexing speed, using a machine with more processor cores is more effective than increasing RAM. -- **Bigger HTTP payloads are processed more quickly than smaller payloads**. For example, adding the same 100,000 documents in two batches of 50,000 documents will be quicker than adding them in four batches of 25,000 documents. By default, Meilisearch sets the maximum payload size to 100MB, but [you can change this value if necessary](/learn/configuration/instance_options.md#payload-limit-size). That said, **the bigger the payload is, the higher the memory consumption will be**. An instance may crash if it requires more RAM than is currently available in a machine. +- **Bigger HTTP payloads are processed more quickly than smaller payloads**. For example, adding the same 100,000 documents in two batches of 50,000 documents will be quicker than adding them in four batches of 25,000 documents. By default, Meilisearch sets the maximum payload size to 100MB, but [you can change this value if necessary](/learn/configuration/instance_options#payload-limit-size). That said, **the bigger the payload is, the higher the memory consumption will be**. An instance may crash if it requires more RAM than is currently available in a machine. - **Meilisearch should not be your main database**. The more documents you add, the longer will indexing and search take, so you should only index documents you want to retrieve when searching. -- By default, all document fields are searchable. We strongly recommend changing this by [updating the `searchableAttributes` list](/reference/api/settings.md#update-searchable-attributes) so it only contains fields you want to search in. The fewer fields Meilisearch needs to index, the faster the indexing process. +- By default, all document fields are searchable. We strongly recommend changing this by [updating the `searchableAttributes` list](/reference/api/settings#update-searchable-attributes) so it only contains fields you want to search in. The fewer fields Meilisearch needs to index, the faster the indexing process. ```json [ @@ -59,7 +59,7 @@ If you encounter performance issues during indexing, we recommend trying the fol - If you have a multilingual dataset, create a separate index for each language. -- When creating a new index, first [configure its settings](/reference/api/settings.md) and only then add your documents. Following this order will significantly reduce indexing time. +- When creating a new index, first [configure its settings](/reference/api/settings) and only then add your documents. Following this order will significantly reduce indexing time. - Since indexing speed is tightly connected to the size of your payload, using lightweight dataset formats such as CSV and NDJSON can lead to increased performance. diff --git a/learn/advanced/known_limitations.md b/learn/inner_workings/known_limitations.mdx similarity index 88% rename from learn/advanced/known_limitations.md rename to learn/inner_workings/known_limitations.mdx index 74b4e8b873..3383a03901 100644 --- a/learn/advanced/known_limitations.md +++ b/learn/inner_workings/known_limitations.mdx @@ -1,20 +1,20 @@ # Known limitations -Currently, Meilisearch has a number of known limitations. Some of these limitations are the result of intentional design trade-offs, while others can be attributed to [LMDB](/learn/advanced/storage.md), the key-value store that Meilisearch uses under the hood. +Currently, Meilisearch has a number of known limitations. Some of these limitations are the result of intentional design trade-offs, while others can be attributed to [LMDB](/learn/advanced/storage), the key-value store that Meilisearch uses under the hood. -This guide covers hard limits that cannot be altered. Meilisearch also has some default limits that _can_ be changed, such as a [default payload limit of 100MB](/learn/configuration/instance_options.md#payload-limit-size) and a [default search limit of 20 hits](/reference/api/search.md#limit). +This guide covers hard limits that cannot be altered. Meilisearch also has some default limits that _can_ be changed, such as a [default payload limit of 100MB](/learn/configuration/instance_options#payload-limit-size) and a [default search limit of 20 hits](/reference/api/search#limit). ## Maximum number of query words -**Limitation:** The maximum number of terms taken into account for each [search query](/reference/api/search.md#query-q) is 10. If a search query includes more than 10 words, all words after the 10th will be ignored. +**Limitation:** The maximum number of terms taken into account for each [search query](/reference/api/search#query-q) is 10. If a search query includes more than 10 words, all words after the 10th will be ignored. -**Explanation:** Queries with many search terms can lead to long response times. This goes against our goal of providing a [fast search-as-you-type experience](/learn/what_is_meilisearch/philosophy.md#front-facing-search). +**Explanation:** Queries with many search terms can lead to long response times. This goes against our goal of providing a [fast search-as-you-type experience](/learn/what_is_meilisearch/philosophy#front-facing-search). ## Maximum number of document fields **Limitation:** Documents have a soft maximum of 1000 fields. -**Explanation:** There is no limit on how many fields a document can have. However, documents with more than 1000 fields may cause the [ranking rules](/learn/core_concepts/relevancy.md#ranking-rules) to stop working, leading to undefined behavior. +**Explanation:** There is no limit on how many fields a document can have. However, documents with more than 1000 fields may cause the [ranking rules](/learn/core_concepts/relevancy#ranking-rules) to stop working, leading to undefined behavior. ## Maximum number of words per attribute @@ -37,9 +37,9 @@ If your query is `Hello, World`: - `,` takes the position `8` of the attribute - `World` takes the position `9` of the attribute -::: note -`,` takes 8 positions as it is a hard separator. You can read more about word separators in our [article about data types](/learn/advanced/datatypes.md#string). -::: + +`,` takes 8 positions as it is a hard separator. You can read more about word separators in our [article about data types](/learn/advanced/datatypes#string). + If your query is `Hello - World`: @@ -47,9 +47,9 @@ If your query is `Hello - World`: - `-` takes the position `1` of the attribute - `World` takes the position `2` of the attribute -::: note -`-` takes 1 position as it is a soft separator. You can read more about word separators in our [article about data types](/learn/advanced/datatypes.md#string). -::: + +`-` takes 1 position as it is a soft separator. You can read more about word separators in our [article about data types](/learn/advanced/datatypes#string). + ## Maximum number of attributes per document @@ -61,7 +61,7 @@ If your query is `Hello - World`: **Limitation:** Meilisearch can receive a maximum of 1024 API requests at the exact same time. Requests exceeding this limit will cause Meilisearch to thrown an internal error. -**Explanation:** This limit applies only to receiving requests, not to processing or adding them to the Tasks queue. It is set by [LMDB](/learn/advanced/storage.md#lmdb), Meilisearch's storage engine. +**Explanation:** This limit applies only to receiving requests, not to processing or adding them to the Tasks queue. It is set by [LMDB](/learn/advanced/storage#lmdb), Meilisearch's storage engine. ## Maximum number of documents in an index @@ -105,7 +105,7 @@ user = 1 OR user = 2 […] OR user = 1500 OR user = 1501 […] OR user = 2000 OR **Limitation:** By default, Meilisearch returns up to 1000 documents per search. -**Explanation:** Meilisearch limits the maximum amount of returned search results to protect your database from malicious scraping. You may change this by using the `maxTotalHits` property of the [pagination index settings](/reference/api/settings.md#pagination-object). `maxTotalHits` only applies to the [search route](/reference/api/search.md) and has no effect on the [get documents endpoint](/reference/api/documents.md#get-documents). +**Explanation:** Meilisearch limits the maximum amount of returned search results to protect your database from malicious scraping. You may change this by using the `maxTotalHits` property of the [pagination index settings](/reference/api/settings#pagination-object). `maxTotalHits` only applies to the [search route](/reference/api/search) and has no effect on the [get documents endpoint](/reference/api/documents#get-documents). ## Large datasets and internal errors diff --git a/learn/advanced/prefix.md b/learn/inner_workings/prefix.mdx similarity index 85% rename from learn/advanced/prefix.md rename to learn/inner_workings/prefix.mdx index 9dfb54aff3..10cc46043c 100644 --- a/learn/advanced/prefix.md +++ b/learn/inner_workings/prefix.mdx @@ -2,15 +2,15 @@ In Meilisearch, **you can perform a search with only a single letter as your query**. This is because we follow the philosophy of **prefix search**. -Prefix search is when document sorting starts by comparing the search query against the beginning of each word in your dataset. All documents with words that match the query term are added to the [bucket sort](https://en.wikipedia.org/wiki/Bucket_sort), before the [ranking rules](/learn/core_concepts/relevancy.md#ranking-rules) are applied sequentially. +Prefix search is when document sorting starts by comparing the search query against the beginning of each word in your dataset. All documents with words that match the query term are added to the [bucket sort](https://en.wikipedia.org/wiki/Bucket_sort), before the [ranking rules](/learn/core_concepts/relevancy#ranking-rules) are applied sequentially. In other words, prefix search means that it's not necessary to type a word in its entirety to find documents containing that word—you can just type the first one or two letters. Note that prefix search is only performed on the last word in a search query—prior words must be typed out fully in order to get accurate results. -::: note + Searching by prefix (rather than using complete words) has a significant impact on search time. The shorter the query term, the more possible matches in the dataset. -::: + ### Example @@ -34,8 +34,8 @@ response: - `show` -Meilisearch also handles typos while performing the prefix search. You can [read more about the typo rules on the dedicated page](/learn/configuration/typo_tolerance.md). +Meilisearch also handles typos while performing the prefix search. You can [read more about the typo rules on the dedicated page](/learn/configuration/typo_tolerance). -::: tip -We also [apply splitting and concatenating on search queries](/learn/advanced/concat.md). -::: + +We also [apply splitting and concatenating on search queries](/learn/advanced/concat). + diff --git a/learn/advanced/storage.md b/learn/inner_workings/storage.mdx similarity index 90% rename from learn/advanced/storage.md rename to learn/inner_workings/storage.mdx index d97acb151c..4bf8fb9421 100644 --- a/learn/advanced/storage.md +++ b/learn/inner_workings/storage.mdx @@ -6,7 +6,7 @@ Meilisearch is in many ways a database: it stores indexed documents along with t Meilisearch creates the database in the moment you first launch an instance. By default, you can find it inside a `data.ms` folder located in the same directory as the `meilisearch` binary. -The database location can change depending on a number of factors, such as whether you have configured a different database path with the [`--db-path` instance option](/learn/configuration/instance_options.md#database-path), or if you're using an OS virtualization tool like [Docker](https://docker.com). +The database location can change depending on a number of factors, such as whether you have configured a different database path with the [`--db-path` instance option](/learn/configuration/instance_options#database-path), or if you're using an OS virtualization tool like [Docker](https://docker.com). ## LMDB @@ -38,30 +38,30 @@ Thus, if you run Meilisearch as a standalone program on a server, LMDB will use On the other hand, if you run Meilisearch along with other programs, the OS will manage memory based on everyone's need. This makes Meilisearch's memory usage quite flexible when used in development. -::: tip + **Virtual Memory != Real Memory** Virtual memory is the disk space a program requests from the OS. It is not the memory that the program will actually use. Meilisearch will always demand a certain amount of space to use as a [memory map](#memory-mapping). This space will be used as virtual memory, but the amount of real memory (RAM) used will be much smaller. -::: + ## Measured disk usage -The following measurements were taken using an 8.6 MB JSON dataset containing 19,553 documents. +The following measurements were taken using movies.jsonan 8.6 MB JSON dataset containing 19,553 documents. After indexed, the dataset size in LMDB is about 122MB. | Raw JSON | Meilisearch database size on disk | RAM usage | Virtual memory usage | -| -------- | --------------------------------- | -------------------- | ------------------- | -| 9.1 MB | 224 MB | ≃ 305 MB | 205 Gb (memory map) | +| :------- | :-------------------------------- | :-------- | :------------------- | +| 9.1 MB | 224 MB | ≃ 305 MB | 205 Gb (memory map) | This means the database is using **305 MB of RAM and 224 MB of disk space.** Note that [virtual memory](https://www.enterprisestorageforum.com/hardware/virtual-memory/) **refers only to disk space allocated by your computer for Meilisearch—it does not mean that it's actually in use by the database.** See [Memory Usage](#memory-usage) for more details. -::: warning + These metrics are highly dependent on the machine that is running Meilisearch. Running this test in significantly underpowered machines is likely to give different results. -::: + It is important to note that **there is no reliable way to predict the final size of a database**. This is true for just about any search engine on the market—we're just the only ones saying it out loud. diff --git a/learn/advanced/tokenization.md b/learn/inner_workings/tokenization.mdx similarity index 100% rename from learn/advanced/tokenization.md rename to learn/inner_workings/tokenization.mdx diff --git a/learn/getting_started/customizing_relevancy.md b/learn/meilisearch_101/customizing_relevancy.mdx similarity index 87% rename from learn/getting_started/customizing_relevancy.md rename to learn/meilisearch_101/customizing_relevancy.mdx index 819795808a..2e1d274aa7 100644 --- a/learn/getting_started/customizing_relevancy.md +++ b/learn/meilisearch_101/customizing_relevancy.mdx @@ -4,7 +4,7 @@ Meilisearch is designed to offer a great search experience out of the box, but s For this chapter, we will be using a collection of movies as our dataset. -To follow along, first click this link to download the file: movies.json. Then, move it into your working directory and run the following command: +To follow along, first click this link to download the file: movies.json. Then, move it into your working directory and run the following command: @@ -25,13 +25,13 @@ The order of the `rankingRules` array matters: the first rule has the most impac ] ``` -You can read more about each ranking rule and what it does in our [dedicated guide](/learn/core_concepts/relevancy.md#built-in-rules). +You can read more about each ranking rule and what it does in our [dedicated guide](/learn/core_concepts/relevancy#built-in-rules). In this example, we change the order of the ranking rules for the `movies` index by moving `exactness` to the top: -You can read more about ranking rules in our [dedicated guide](/learn/core_concepts/relevancy.md). +You can read more about ranking rules in our [dedicated guide](/learn/core_concepts/relevancy). ## Displayed attributes @@ -41,7 +41,7 @@ If you only want to display the `title`, `poster`, and `overview` for the `movie -You can read more about displayed attributes in our [dedicated guide](/learn/configuration/displayed_searchable_attributes.md#displayed-fields). +You can read more about displayed attributes in our [dedicated guide](/learn/configuration/displayed_searchable_attributes#displayed-fields). ## Distinct attribute @@ -79,11 +79,11 @@ Suppose you have an e-commerce dataset with an index on jackets. There are sever If you searched for `lee leather jacket` with the default settings, you would get all three documents. But if you set `product_id` as the `distinctAttribute`, Meilisearch will only return one of those jackets. -You can read more about the distinct attribute in our [dedicated guide](/learn/configuration/distinct.md). +You can read more about the distinct attribute in our [dedicated guide](/learn/configuration/distinct). ## Searchable attributes -[Documents](/learn/core_concepts/documents.md) in Meilisearch are composed of multiple fields. By default, Meilisearch looks for matches in every field, but the `searchableAttributes` array in the `settings` object allows you to change that. +[Documents](/learn/core_concepts/documents) in Meilisearch are composed of multiple fields. By default, Meilisearch looks for matches in every field, but the `searchableAttributes` array in the `settings` object allows you to change that. For example, if you search the `movies` index for `2012`, Meilisearch searches for `2012` in every field: the `title`, `overview`, `release_year`, and so on. If you just want to search in the `title` field: @@ -91,11 +91,11 @@ For example, if you search the `movies` index for `2012`, Meilisearch searches f Meilisearch will now only consider `title` during search, and you will see fewer results. -::: note + Meilisearch will still highlight matches in other fields, but they won’t be used to compute results. -::: + ### The order of `searchableAttributes` @@ -108,7 +108,7 @@ The order of the `searchableAttributes` array corresponds to the order of import ] ``` -With the above order, matching words found in the `overview` field will have a higher impact on relevancy than the same words found in `title`. You can read more about this in our [relevancy guide](/learn/core_concepts/relevancy.md#attribute-ranking-order). +With the above order, matching words found in the `overview` field will have a higher impact on relevancy than the same words found in `title`. You can read more about this in our [relevancy guide](/learn/core_concepts/relevancy#attribute-ranking-order). ## Stop words @@ -118,7 +118,7 @@ Meilisearch allows you to ignore certain words in your search queries by adding If you search for `the cat` after running the above command, Meilisearch will consider your search query to be `cat`, improving the speed and relevancy of your search. -You can read more about stop words in the [API reference](/reference/api/settings.md#stop-words). +You can read more about stop words in the [API reference](/reference/api/settings#stop-words). ## Synonyms @@ -128,7 +128,7 @@ The `synonyms` array lets you associate certain words in your dataset, telling M This will set `winnie` and `piglet` as synonyms. Searching for either won't always return the same results due to factors like typos and splitting the query. -You can read more about it in our [dedicated guide](/learn/configuration/synonyms.md). +You can read more about it in our [dedicated guide](/learn/configuration/synonyms). ## Typo tolerance @@ -147,13 +147,13 @@ Meilisearch accepts one typo for query terms containing `5` or more characters b The above code sample sets the minimum word size for one typo to `4` characters. If you search for `swaj` now, you should get some results. -You can read more about typo tolerance in our [dedicated guide](/learn/configuration/typo_tolerance.md). +You can read more about typo tolerance in our [dedicated guide](/learn/configuration/typo_tolerance). ## Faceting Meilisearch allows you to create faceted search interfaces, refining search results based on broad categories called facets. Like filters, you need to add the attributes you want to use as facets to `filterableAttributes`. -When creating a faceted search interface, it is helpful to display how results are distributed between the different categories. For example, a user might want to know how many of their results have a `genre` of `comedy` and how many have a `genre` of `horror`. Meilisearch supports this with [the `facets` search parameter](/reference/api/search.md#facets). +When creating a faceted search interface, it is helpful to display how results are distributed between the different categories. For example, a user might want to know how many of their results have a `genre` of `comedy` and how many have a `genre` of `horror`. Meilisearch supports this with [the `facets` search parameter](/reference/api/search#facets). Using the faceting settings, you can configure the maximum number of facet values returned for each facet. @@ -161,7 +161,7 @@ Suppose your results contain the following values for the `genres` facet: `Actio -You can read more about faceting in our [dedicated guide](/learn/advanced/faceted_search.md). +You can read more about faceting in our [dedicated guide](/learn/advanced/faceted_search). ## Pagination @@ -173,6 +173,6 @@ The code sample below sets this limit to 500: Now, users won't be able to access search results beyond 500. -You can read more about pagination in our [dedicated guide](/learn/advanced/pagination.md). +You can read more about pagination in our [dedicated guide](/learn/advanced/pagination). The next chapter tackles more advanced topics, including security and data backup. diff --git a/learn/getting_started/filtering_and_sorting.md b/learn/meilisearch_101/filtering_and_sorting.mdx similarity index 90% rename from learn/getting_started/filtering_and_sorting.md rename to learn/meilisearch_101/filtering_and_sorting.mdx index ad56aa735b..f166620df5 100644 --- a/learn/getting_started/filtering_and_sorting.md +++ b/learn/meilisearch_101/filtering_and_sorting.mdx @@ -1,8 +1,8 @@ # Filtering and sorting -Welcome to the Meilisearch 101! This guide aims to introduce you to the main features of Meilisearch as efficiently as possible. It assumes that you have completed the [Quick start](/learn/getting_started/quick_start.md) and already have a running Meilisearch instance. +Welcome to the Meilisearch 101! This guide aims to introduce you to the main features of Meilisearch as efficiently as possible. It assumes that you have completed the [Quick start](/learn/getting_started/quick_start) and already have a running Meilisearch instance. -This chapter uses a dataset of meteorites to demonstrate filtering, sorting, and geosearch. To follow along, first click this link to download the file: meteorites.json. Then, move it into your working directory and run the following command: +This chapter uses a dataset of meteorites to demonstrate filtering, sorting, and geosearch. To follow along, first click this link to download the file: meteorites.json. Then, move it into your working directory and run the following command: @@ -18,7 +18,7 @@ The `settings` object contains two arrays for this purpose: `filterableAttribute The above code sample adds `mass` and `_geo` to `filterableAttributes` and `sortableAttributes` setting you up for the next sections. -To learn more about the `settings` object and how to configure it, check out the [API reference](/reference/api/settings.md). +To learn more about the `settings` object and how to configure it, check out the [API reference](/reference/api/settings). ## Filtering @@ -51,7 +51,7 @@ Let's say you only want to view meteorites that weigh less than 200g: Filtering is intended to be combined with search queries to refine your results. -To learn more about filters and how to configure them, refer to our [dedicated guide](/learn/advanced/filtering.md). +To learn more about filters and how to configure them, refer to our [dedicated guide](/learn/advanced/filtering). ## Sorting @@ -87,7 +87,7 @@ You will see all meteorites weighing less than 200g sorted by increasing mass. T Sorting is intended to be combined with search queries to refine your results. -To learn more about sorting and how to configure it, refer to our [dedicated guide](/learn/advanced/sorting.md). +To learn more about sorting and how to configure it, refer to our [dedicated guide](/learn/advanced/sorting). ## Geosearch @@ -187,6 +187,6 @@ The following command sorts meteorites by how close they were to the Taj Mahal: This response returns an additional field, `_geoDistance`, representing the distance between the Taj Mahal and each meteorite in meters. -To learn more about geosearch and how to configure it, refer to our [dedicated guide](/learn/advanced/geosearch.md). +To learn more about geosearch and how to configure it, refer to our [dedicated guide](/learn/advanced/geosearch). The next chapter dives deeper into the `settings` object and how you can use it to fine-tune results. diff --git a/learn/getting_started/getting_ready_for_production.md b/learn/meilisearch_101/getting_ready_for_production.mdx similarity index 74% rename from learn/getting_started/getting_ready_for_production.md rename to learn/meilisearch_101/getting_ready_for_production.mdx index a45fcbcca8..f258f78e44 100644 --- a/learn/getting_started/getting_ready_for_production.md +++ b/learn/meilisearch_101/getting_ready_for_production.mdx @@ -4,7 +4,7 @@ This chapter will help you get ready to use Meilisearch in production by coverin ## Instance options -Meilisearch allows you to configure your entire instance through **[environment variables](/learn/configuration/instance_options.md#environment-variables)** before launch or **[command-line options](/learn/configuration/instance_options.md#command-line-options-and-flags)** at launch. +Meilisearch allows you to configure your entire instance through **[environment variables](/learn/configuration/instance_options#environment-variables)** before launch or **[command-line options](/learn/configuration/instance_options#command-line-options-and-flags)** at launch. Meilisearch has configuration options for many critical actions, such as: @@ -12,7 +12,7 @@ Meilisearch has configuration options for many critical actions, such as: - Starting Meilisearch in a development or production environment - Setting a master key to protect API endpoints -You can read about all of them in our [configuration guide](/learn/configuration/instance_options.md). +You can read about all of them in our [configuration guide](/learn/configuration/instance_options). ## Data backup @@ -22,20 +22,20 @@ Dumps export data in a raw unprocessed form and can be used to migrate your data Snapshots, on the other hand, are an exact copy of your database. The documents in a snapshot are already "indexed" and ready to go, therefore they import faster than dumps. However, as a result, **snapshots are not compatible between different versions of Meilisearch.** You can schedule snapshots at regular intervals and use them for rolling back data. -You can read more about [dumps](/learn/advanced/dumps.md) and [snapshots](/learn/advanced/snapshots.md) in their dedicated guides. +You can read more about [dumps](/learn/advanced/dumps) and [snapshots](/learn/advanced/snapshots) in their dedicated guides. ## Multitenancy and tenant tokens Multi-tenant indexes store data belonging to different users in one index. In such situations, users should only be able to search through their own documents. Meilisearch allows you to do this with tenant tokens. -Tenant tokens are small, short-lived packages of encrypted data that prove a user has access to a certain index. They contain security credentials and instructions on which documents the user is allowed to see within that index. You can generate tenant tokens using one of our [SDKs](/learn/security/tenant_tokens.md#generating-tenant-tokens-with-an-sdk) or [from scratch](/learn/security/tenant_tokens.md#generating-tenant-tokens-with-an-sdk). +Tenant tokens are small, short-lived packages of encrypted data that prove a user has access to a certain index. They contain security credentials and instructions on which documents the user is allowed to see within that index. You can generate tenant tokens using one of our [SDKs](/learn/security/tenant_tokens#generating-tenant-tokens-with-an-sdk) or [from scratch](/learn/security/tenant_tokens#generating-tenant-tokens-with-an-sdk). -You can read more about tenant tokens and how to generate them in our [dedicated guide](/learn/security/tenant_tokens.md). +You can read more about tenant tokens and how to generate them in our [dedicated guide](/learn/security/tenant_tokens). ## What's next Hopefully, these chapters have given you a basic introduction to Meilisearch and some of the things it can do. Once you get the hang of the basics, the possibilities are endless. To continue exploring Meilisearch, check out: -- [Advanced topics](/learn/advanced/asynchronous_operations.md) -- [API references](/reference/api/overview.md) -- [Configuration](/learn/configuration/instance_options.md) +- [Advanced topics](/learn/advanced/asynchronous_operations) +- [API references](/reference/api/overview) +- [Configuration](/learn/configuration/instance_options) diff --git a/learn/security/master_api_keys.md b/learn/security/master_api_keys.mdx similarity index 72% rename from learn/security/master_api_keys.md rename to learn/security/master_api_keys.mdx index 9cb1df7b1e..d05b0547f0 100644 --- a/learn/security/master_api_keys.md +++ b/learn/security/master_api_keys.mdx @@ -1,3 +1,7 @@ +--- +sidebarDepth: 3 +--- + # Master key and API keys This guide will teach you how to protect your Meilisearch instance by setting a master key and how to authorize requests using API keys. You will also learn how to use your master key to create, list, update, and delete API keys with granular permissions. @@ -8,24 +12,25 @@ This guide will teach you how to protect your Meilisearch instance by setting a To protect a Meilisearch instance from unauthorized use, you must supply a master key at launch. This master key must be at least 16 bytes, composed of valid UTF-8 characters. In a production environment, Meilisearch will throw an error and refuse to launch if no master key is provided or if it is under 16 bytes, Meilisearch will suggest a secure autogenerated master key. -::: warning -You need to set a master key to access the [`/keys`](/reference/api/keys.md) route. Otherwise, you will get a [`missing_master_key`](/reference/errors/error_codes.md#missing-master-key) error. -::: + +You need to set a master key to access the [`/keys`](/reference/api/keys) route. Otherwise, you will get a [`missing_master_key`](/reference/errors/error_codes#missing-master-key) error. + + +Setting up a master key can be done with either command-line options or environment variables. You can read more about [master key configuration in our instance configuration guide](/learn/configuration/instance_options#master-key). -Setting up a master key can be done with either command-line options or environment variables. You can read more about [master key configuration in our instance configuration guide](/learn/configuration/instance_options.md#master-key). + -:::: tabs -::: tab CLI + ```sh ./meilisearch --master-key="MASTER_KEY" ``` -::: + -::: tab Environment variable + -Linux/MacOS: +UNIX: ```sh export MEILI_MASTER_KEY="MASTER_KEY" @@ -39,16 +44,24 @@ set MEILI_MASTER_KEY="MASTER_KEY" ./meilisearch ``` -::: -:::: + + -Once you launch Meilisearch with a master key, all API endpoints except [the health endpoint](/reference/api/health.md#get-health) are automatically protected from unauthorized requests. + +You can use one of the following tools to generate a master key for your Meilisearch instance: +- [`uuidgen`](https://www.digitalocean.com/community/tutorials/workflow-command-line-basics-generating-uuids) +- [`openssl rand`](https://www.openssl.org/docs/man1.0.2/man1/rand.html) +- [`shasum`](https://www.commandlinux.com/man-page/man1/shasum.1.html) +- [randomkeygen.com](https://randomkeygen.com/) + + +Once you launch Meilisearch with a master key, all API endpoints except [the health endpoint](/reference/api/health#get-health) are automatically protected from unauthorized requests. From that point on, API requests must include the `Authorization` header to be successful. Read on to learn more. ## Communicating with a protected instance -After an instance is secured, only the [`GET /health` endpoint](/reference/api/health.md) will be publicly available. To access any other API endpoint, you must add a security key with suitable permissions to your request. +After an instance is secured, only the [`GET /health` endpoint](/reference/api/health) will be publicly available. To access any other API endpoint, you must add a security key with suitable permissions to your request. It is particularly important to protect an instance when dealing with sensitive data. You can use API keys to ensure only authorized people can search through an index containing medical records: @@ -58,13 +71,13 @@ It is particularly important to protect an instance when dealing with sensitive When you launch an instance for the first time, Meilisearch will automatically generate two API keys: `Default Search API Key` and `Default Admin API Key`. -As its name indicates, the `Default Search API Key` can only be used to access [the search route](/reference/api/search.md). +As its name indicates, the `Default Search API Key` can only be used to access [the search route](/reference/api/search). The second automatically-generated key, `Default Admin API Key`, has access to all API routes except `/keys`. You should avoid exposing the default admin key in publicly accessible code. -::: warning + Both default API keys have access to all indexes in an instance and do not have an expiry date. They can be [retrieved](#listing-api-keys), [modified](#updating-an-api-key), or [deleted](#deleting-an-api-key) the same way as user-created keys. -::: + ### Differences between the master key and API keys @@ -72,7 +85,7 @@ Meilisearch currently has two types of security keys: one master key and any num Though both types of keys help you protect your instance and your data, they serve distinct purposes and are managed in different ways. -API keys grant users access to a specific set of indexes, routes, and endpoints. You can also configure them to expire after a certain date. They can be configured by using the [`/keys` route](/reference/api/keys.md). +API keys grant users access to a specific set of indexes, routes, and endpoints. You can also configure them to expire after a certain date. They can be configured by using the [`/keys` route](/reference/api/keys). For most of your day-to-day operations, you should use API keys when communicating with a protected instance. @@ -86,11 +99,11 @@ Exposing your master key can give malicious users complete control over your Mei Meilisearch gives you fine-grained control over which users can access which indexes, endpoints, and routes. When protecting your instance with a master key, you can ensure only authorized users can carry out sensitive tasks such as adding documents or altering index settings. -You can access the [`/keys` route](/reference/api/keys.md) using the master key or an API key with access to the `keys.get`, `keys.create`, `keys.update`, or `keys.delete` actions. This `/keys` route allows you to [create](#creating-an-api-key), [update](#updating-an-api-key), [list](#listing-api-keys), and [delete](#deleting-an-api-key) API keys. +You can access the [`/keys` route](/reference/api/keys) using the master key or an API key with access to the `keys.get`, `keys.create`, `keys.update`, or `keys.delete` actions. This `/keys` route allows you to [create](#creating-an-api-key), [update](#updating-an-api-key), [list](#listing-api-keys), and [delete](#deleting-an-api-key) API keys. Though the default API keys are usually enough to manage the security needs of most applications, this might not be the case when dealing with privacy-sensitive data. In these situations, the fine-grained control offered by the `/keys` endpoint allows you to clearly decide who can access what information and for how long. -The [`key`](/reference/api/keys.md#key) field is generated by hashing the master key and the [`uid`](/reference/api/keys.md#uid). As a result, `key` values are deterministic between instances sharing the same configuration. Since the `key` field depends on the master key, it is not propagated to dumps and snapshots. If a malicious user ever gets access to your dumps or snapshots, they will not have access to your instance's API keys. +The [`key`](/reference/api/keys#key) field is generated by hashing the master key and the [`uid`](/reference/api/keys#uid). As a result, `key` values are deterministic between instances sharing the same configuration. Since the `key` field depends on the master key, it is not propagated to dumps and snapshots. If a malicious user ever gets access to your dumps or snapshots, they will not have access to your instance's API keys. It is, therefore, possible to determine the value of the `key` field by using the following command: @@ -126,19 +139,19 @@ For example, we can update the `Default Search API Key` and change its descripti } ``` -To update an API key, you must use the [update API key endpoint](/reference/api/keys.md#update-a-key), which can only be accessed with the master key or an API key with the `keys.update` action. +To update an API key, you must use the [update API key endpoint](/reference/api/keys#update-a-key), which can only be accessed with the master key or an API key with the `keys.update` action. Meilisearch supports partial updates with the `PATCH` route. This means your payload only needs to contain the data you want to update—in this case, `description`. ### Creating an API key -You can create API keys by using the [create key endpoint](/reference/api/keys.md#create-a-key). This endpoint is always protected and can only be accessed with the master key or an API key with the `keys.create` action. +You can create API keys by using the [create key endpoint](/reference/api/keys#create-a-key). This endpoint is always protected and can only be accessed with the master key or an API key with the `keys.create` action. Let's create a new API key so authorized users can search through out `patient_medical_records` index: -All [`/keys` endpoints](/reference/api/keys.md) are synchronous, so your key will be generated immediately: +All [`/keys` endpoints](/reference/api/keys) are synchronous, so your key will be generated immediately: ```json { @@ -162,11 +175,11 @@ It is good practice to always set an expiry date when creating a new API key. If ### Listing API keys -You can use the [list keys endpoint](/reference/api/keys.md) to obtain information on any active key in your Meilisearch instance. This is useful when you need an overview of existing keys and their permissions. +You can use the [list keys endpoint](/reference/api/keys) to obtain information on any active key in your Meilisearch instance. This is useful when you need an overview of existing keys and their permissions. -By default, [`GET /keys`](/reference/api/keys.md#get-all-keys) returns the 20 most recently created keys. You can change this using the [`limit`](/reference/api/keys.md#get-all-keys) query parameter. **Expired keys will appear in the response, but deleted keys will not**. As with creating, deleting, and updating API keys, you either need the master key or an API key with the `keys.get` action to access this endpoint. +By default, [`GET /keys`](/reference/api/keys#get-all-keys) returns the 20 most recently created keys. You can change this using the [`limit`](/reference/api/keys#get-all-keys) query parameter. **Expired keys will appear in the response, but deleted keys will not**. As with creating, deleting, and updating API keys, you either need the master key or an API key with the `keys.get` action to access this endpoint. -[`GET /keys/{key_or_uid}`](/reference/api/keys.md#get-one-key) returns information on a single key. `{key_or_uid}` should be replaced with the full `key` or `uid` value obtained during key creation. +[`GET /keys/{key_or_uid}`](/reference/api/keys#get-one-key) returns information on a single key. `{key_or_uid}` should be replaced with the full `key` or `uid` value obtained during key creation. We can query our instance to confirm which active keys can search our `patient_medical_records` index: @@ -229,7 +242,7 @@ We can query our instance to confirm which active keys can search our `patient_m ### Deleting an API key -If a key is no longer useful or has been compromised, you can use [delete key endpoint](/reference/api/keys.md#delete-a-key) to disable it before its expiry date. +If a key is no longer useful or has been compromised, you can use [delete key endpoint](/reference/api/keys#delete-a-key) to disable it before its expiry date. If we accidentally exposed our `Search patient records key`, we can delete it to prevent unauthorized parties from gaining access to our `patient_medical_records` index: @@ -237,7 +250,7 @@ If we accidentally exposed our `Search patient records key`, we can delete it to ### Expired keys -Once a key is past its `expiresAt` date, using it for API authorization will return an error. Expired keys will still be returned by the [list keys endpoint](/reference/api/keys.md#get-all-keys). +Once a key is past its `expiresAt` date, using it for API authorization will return an error. Expired keys will still be returned by the [list keys endpoint](/reference/api/keys#get-all-keys). ## Changing the master key @@ -249,16 +262,17 @@ To change the master key, first terminate your Meilisearch instance. Then relaun You can run an unprotected Meilisearch instance in the `development` environment without providing a master key: -:::: tabs -::: tab CLI + + + ```sh ./meilisearch --env development ``` -::: + -::: tab Environment variable + UNIX: @@ -274,9 +288,9 @@ set MEILI_ENV=development ./meilisearch ``` -::: -:::: + + ## Further security measures -API keys alone might not be enough to handle more complex situations such as multi-tenant indexes. If your application must manage several users and sensitive data, we recommend you [consider using tenant tokens](/learn/security/tenant_tokens.md). +API keys alone might not be enough to handle more complex situations such as multi-tenant indexes. If your application must manage several users and sensitive data, we recommend you [consider using tenant tokens](/learn/security/tenant_tokens). diff --git a/learn/security/tenant_tokens.md b/learn/security/tenant_tokens.mdx similarity index 92% rename from learn/security/tenant_tokens.md rename to learn/security/tenant_tokens.mdx index 6e11e64aaf..ad7ec73610 100644 --- a/learn/security/tenant_tokens.md +++ b/learn/security/tenant_tokens.mdx @@ -1,8 +1,12 @@ +--- +sidebarDepth: 3 +--- + # Multitenancy and tenant tokens In this guide you'll first learn what multitenancy is and how tenant tokens help managing complex applications and sensitive data. Then, you'll see how to generate and use tokens, whether with an official SDK or otherwise. The guide ends with a quick explanation of the main tenant token settings. -Tenant tokens are generated by using API keys. This article may be easier to follow if you have already read the [API keys guide](/learn/security/master_api_keys.md). +Tenant tokens are generated by using API keys. This article may be easier to follow if you have already read the [API keys guide](/learn/security/master_api_keys). ## What is multitenancy? @@ -16,7 +20,7 @@ Tenant tokens are small packages of encrypted data presenting proof a user can a To use tokens in Meilisearch, you only need to have a system for token generation in place. The quickest method to generate tenant tokens is [using one of our official SDKs](#generating-tenant-tokens-with-an-sdk). It is also possible to [generate a token from scratch](#generating-tenant-tokens-without-a-meilisearch-sdk). -Tenant tokens do not require you to configure any specific [instance options](/learn/configuration/instance_options.md) or [index settings](/learn/configuration/settings.md). They are also meant to be short-lived—Meilisearch does not store nor keeps track of generated tokens. +Tenant tokens do not require you to configure any specific [instance options](/learn/configuration/instance_options) or [index settings](/learn/configuration/settings). They are also meant to be short-lived—Meilisearch does not store nor keeps track of generated tokens. ## Generating tenant tokens with an SDK @@ -30,7 +34,7 @@ There are three important parameters to keep in mind when using an SDK to genera **Search rules** must be a JSON object specifying the restrictions that will be applied to search requests on a given index. It must contain at least one search rule. [To learn more about search rules, take a look at our tenant token payload reference.](#search-rules) -As its name indicates, **API key** must be a valid Meilisearch API key with access to [the search action](/reference/api/keys.md#actions-2). A tenant token will have access to the same indexes as the API key used when generating it. If no API key is provided, the SDK might be able to infer it automatically. +As its name indicates, **API key** must be a valid Meilisearch API key with access to [the search action](/reference/api/keys#actions-2). A tenant token will have access to the same indexes as the API key used when generating it. If no API key is provided, the SDK might be able to infer it automatically. **Expiration date** is optional when using an SDK. Tokens become invalid after their expiration date. Tokens without an expiration date will expire when their parent API key does. @@ -92,9 +96,9 @@ After signing the token, you can use it to make search queries in the same way y -::: note + The `curl` example presented here is only for illustration purposes. In production environments, you would likely send the token to the front-end of your application and query indexes from there. -::: + ### Generating a tenant token from scratch @@ -133,9 +137,9 @@ Once your token is ready, it can seamlessly replace API keys to authorize reques -::: note + The `curl` example presented here is only for illustration purposes. In production environments, you would likely send the token to the front-end of your application and query indexes from there. -::: + ## Tenant token payload reference @@ -161,7 +165,7 @@ Search rules are a set of instructions defining search parameters that will be e The object key must be an index name. You may use the `*` wildcard instead of a specific index name—in this case, search rules will be applied to all indexes. -The object value must consist of `search_parameter:value` pairs. Currently, **tenant tokens only support the `filter` [search parameter](/reference/api/search.md#filter)**. +The object value must consist of `search_parameter:value` pairs. Currently, **tenant tokens only support the `filter` [search parameter](/reference/api/search#filter)**. In this example, all queries across all indexes will only return documents whose `user_id` equals `1`: @@ -214,15 +218,15 @@ The previous rules can be combined in one tenant token: } ``` -::: danger + Because tenant tokens are generated in your application, Meilisearch cannot check if search rule filters are valid. Invalid search rules will only throw errors when they are used in a query. -Consult the search API reference for [more information on Meilisearch filter syntax](/reference/api/search.md#filter). -::: +Consult the search API reference for [more information on Meilisearch filter syntax](/reference/api/search#filter). + ### API key -Creating a token requires an API key with access to [the search action](/reference/api/keys.md#actions-2). A token has access to the same indexes and routes as the API key used to generate it. +Creating a token requires an API key with access to [the search action](/reference/api/keys#actions-2). A token has access to the same indexes and routes as the API key used to generate it. Since a master key is not an API key, **you cannot use a master key to create a tenant token**. @@ -230,11 +234,11 @@ For security reasons, we strongly recommend you avoid exposing the API key whene When using an official Meilisearch SDK, you may indicate which API key you wish to use when generating a token. Consult the documentation of the SDK you are using for more specific instructions. -::: note + If an API key expires, any tenant tokens created with it will become invalid. The same applies if the API key is deleted or regenerated due to a changed master key. -::: + -[You can read more about API keys in our dedicated guide.](/learn/security/master_api_keys.md) +[You can read more about API keys in our dedicated guide.](/learn/security/master_api_keys) ### Expiry date @@ -244,10 +248,10 @@ The expiry date must be a UNIX timestamp or `null`. Additionally, a token's expi Setting a token expiry date is optional, but recommended. A token without an expiry date never expires and can be used indefinitely as long as its parent API key remains valid. -::: danger -The only way to revoke a token without an expiry date is to [delete](/reference/api/keys.md#delete-a-key) its parent API key. + +The only way to revoke a token without an expiry date is to [delete](/reference/api/keys#delete-a-key) its parent API key. Changing an instance's master key forces Meilisearch to regenerate all API keys and will also render all existing tenant tokens invalid. -::: + When using an official Meilisearch SDK, you may indicate the expiry date when generating a token. Consult the documentation of the SDK you are using for more specific instructions. diff --git a/learn/update_and_migration/algolia_migration.md b/learn/update_and_migration/algolia_migration.mdx similarity index 91% rename from learn/update_and_migration/algolia_migration.md rename to learn/update_and_migration/algolia_migration.mdx index 72999a5080..52db26a482 100644 --- a/learn/update_and_migration/algolia_migration.md +++ b/learn/update_and_migration/algolia_migration.mdx @@ -1,8 +1,12 @@ +--- +sidebarDepth: 3 +--- + # Migrating from Algolia to Meilisearch This page aims to help current users of Algolia make the transition to Meilisearch. -For a high-level comparison of the two search companies and their products, see [our analysis of the search market](/learn/what_is_meilisearch/comparison_to_alternatives.md#meilisearch-vs-algolia). +For a high-level comparison of the two search companies and their products, see [our analysis of the search market](/learn/what_is_meilisearch/comparison_to_alternatives#meilisearch-vs-algolia). ## Overview @@ -16,18 +20,18 @@ The migration process consists of three steps: To help with the transition, we have also included a comparison of Meilisearch and Algolia's [API methods](#api-methods) and [front-end components](#front-end-components). -Before continuing, make sure you have both Meilisearch and Node.js installed and have access to a command-line terminal. If you're unsure how to install Meilisearch, see our [quick start](/learn/getting_started/quick_start.md). +Before continuing, make sure you have both Meilisearch and Node.js installed and have access to a command-line terminal. If you're unsure how to install Meilisearch, see our [quick start](/learn/getting_started/quick_start). -::: note + This guide was tested with the following package versions: -[`node.js`](https://nodejs.org/en/): `16.16` -[`algoliasearch`](https://www.npmjs.com/package/algoliasearch): `4.13` -[`meilisearch-js`](https://www.npmjs.com/package/meilisearch): `0.27.0` -[`meilisearch`](https://github.com/meilisearch/meilisearch): `0.28` +- [`node.js`](https://nodejs.org/en/): `16.16` +- [`algoliasearch`](https://www.npmjs.com/package/algoliasearch): `4.13` +- [`meilisearch-js`](https://www.npmjs.com/package/meilisearch): `0.27.0` +- [`meilisearch`](https://github.com/meilisearch/meilisearch): `0.28` -::: + ## Export your Algolia data @@ -61,7 +65,7 @@ npm install -s algoliasearch@4.13 meilisearch@0.25.1 ### Create Algolia client -You'll need your **Application ID** and **Admin API Key** to start the Algolia client. Both can be found in your [Algolia account](https://www.algolia.com/api-keys). +You'll need your **Application ID** and **Admin API Key** to start the Algolia client. Both can be found in your [Algolia account](https://www.algolia.com/account/api-keys). Paste the below code in `script.js`: @@ -98,7 +102,7 @@ The `batch` callback method is invoked on each batch of hits and the content is ### Create Meilisearch client -Create a Meilisearch client by passing the host URL and API key of your Meilisearch instance. The easiest option is to use the automatically generated [admin API key](/learn/security/master_api_keys.md#listing-api-keys). +Create a Meilisearch client by passing the host URL and API key of your Meilisearch instance. The easiest option is to use the automatically generated [admin API key](/learn/security/master_api_keys#listing-api-keys). ```js const { MeiliSearch } = require("meilisearch"); @@ -160,7 +164,7 @@ const BATCH_SIZE = 1000; Meilisearch's default settings are designed to deliver a fast and relevant search experience that works for most use-cases. -To customize your index settings, we recommend following [this guide](/learn/core_concepts/indexes.md#index-settings). To learn more about the differences between settings in Algolia and Meilisearch, read on. +To customize your index settings, we recommend following [this guide](/learn/core_concepts/indexes#index-settings). To learn more about the differences between settings in Algolia and Meilisearch, read on. ### Index settings vs. search parameters @@ -168,7 +172,7 @@ One of the key usage differences between Algolia and Meilisearch is how they app **In Algolia,** [API parameters](https://www.algolia.com/doc/api-reference/api-parameters/) is a flexible category that includes both index settings and search parameters. Many API parameters can be used both at indexing time—to set default behavior—or at search time—to override that behavior. -**In Meilisearch,** [index settings](/reference/api/settings.md) and [search parameters](/reference/api/search.md#search-parameters) are two distinct categories. Settings affect all searches on an index, while parameters affect the results of a single search. +**In Meilisearch,** [index settings](/reference/api/settings) and [search parameters](/reference/api/search#search-parameters) are two distinct categories. Settings affect all searches on an index, while parameters affect the results of a single search. Some Meilisearch parameters require index settings to be configured beforehand. For example, you must first configure the index setting `sortableAttributes` to use the search parameter `sort`. However, unlike in Algolia, an index setting can never be used as a parameter and vice versa. @@ -177,7 +181,7 @@ Some Meilisearch parameters require index settings to be configured beforehand. The below table compares Algolia's **API parameters** with the equivalent Meilisearch **setting** or **search parameter**. | Algolia | Meilisearch | -|-------------------------------------|----------------------------------------------------------------------------------| +| :---------------------------------- | :------------------------------------------------------------------------------- | | `query` | `q` | | `attributesToRetrieve` | `attributesToRetrieve` | | `filters` | `filter` | @@ -211,8 +215,8 @@ The below table compares Algolia's **API parameters** with the equivalent Meilis This section compares Algolia and Meilisearch's respective API methods, using JavaScript for reference. | Method | Algolia | Meilisearch | -|-----------------------|-------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------| -| Index Instantiation | `client.initIndex()`
Here, client is an Algolia instance. | `client.index()`
Here, client is a Meilisearch instance. | +| :-------------------- | :---------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- | +| Index Instantiation | `client.initIndex()`
Here, client is an Algolia instance. | `client.index()`
Here, client is a Meilisearch instance. | | Create Index | Algolia automatically creates an index the first time you add a record or settings. | The same applies to Meilisearch, but users can also create an index explicitly: `client.createIndex(string indexName)` | | Get All Indexes | `client.listIndices()` | `client.getIndexes()` | | Get Single Index | No method available | `client.getIndex(string indexName)` | diff --git a/learn/update_and_migration/previous_docs_version.md b/learn/update_and_migration/previous_docs_version.mdx similarity index 89% rename from learn/update_and_migration/previous_docs_version.md rename to learn/update_and_migration/previous_docs_version.mdx index 60a9287ebc..0afef2f47b 100644 --- a/learn/update_and_migration/previous_docs_version.md +++ b/learn/update_and_migration/previous_docs_version.mdx @@ -1,18 +1,22 @@ +--- +sidebarDepth: 4 +--- + # Accessing previous docs versions This documentation website only covers the latest stable release of Meilisearch. However, it is possible to view the documentation of previous Meilisearch versions stored in [our GitHub repository](https://github.com/meilisearch/documentation). -This guide shows you how to clone Meilisearch's documentation repository, fetch the content for a specific version, and read it in your local machine. +This guide shows you how to clone Meilisearch's documentation repository, fetch the content for a specific version, and read it on your local machine. -::: warning + While this guide's goal is to help users of old versions accomplish their bare minimum needs, it is not intended as a long-term solution or to encourage users to continue using outdated versions of Meilisearch. In almost every case, **it is better to upgrade to the latest Meilisearch version**. Depending on the version in question, the process of accessing old documentation may be difficult or error-prone. You have been warned! -::: + ## Prerequisites -To follow this guide, you should have some familiarity with the command line. Before beginning, make sure the following tools are installed in your machine: +To follow this guide, you should have some familiarity with the command line. Before beginning, make sure the following tools are installed on your machine: - [Git](https://git-scm.com/) - [Node v14](https://nodejs.org/en/) @@ -47,15 +51,15 @@ Visit the repository on GitHub to [view all documentation tags](https://github.c There are three different ways of accessing the documentation of previous Meilisearch releases depending on the version you checked out. -:::warning + The site search bar is not functional in local copies of the documentation website. -::: + -### v0.17 and above: run a local Vuepress server +### v0.17-v1.1: run a local Vuepress server #### Install dependencies -The Meilisearch documentation manages its dependencies with Yarn. Run the following command to install all required packages: +This version of the Meilisearch documentation manages its dependencies with Yarn. Run the following command to install all required packages: ```sh yarn install @@ -71,9 +75,9 @@ yarn dev Yarn will build the website from the markdown source files. Once the server is online, use your browser to navigate to `http://localhost:8080`. -:::warning -SDK code samples are not available in local copies of the documentation for Meilisearch v0.17 and above. -::: + +SDK code samples are not available in local copies of the documentation for Meilisearch v0.17 - v1.1. + ### v0.11-v0.16: run a simple Python server diff --git a/learn/update_and_migration/updating.md b/learn/update_and_migration/updating.mdx similarity index 67% rename from learn/update_and_migration/updating.md rename to learn/update_and_migration/updating.mdx index 522e46d8fa..8d80daebdd 100644 --- a/learn/update_and_migration/updating.md +++ b/learn/update_and_migration/updating.mdx @@ -1,26 +1,42 @@ --- -sidebarDepth: 2 +sidebarDepth: 3 --- # Update to the latest Meilisearch version -Currently, Meilisearch databases are only compatible with the version of Meilisearch used to create them. The following guide will walk you through using a [dump](/learn/advanced/dumps.md) to migrate an existing database from an older version of Meilisearch to the most recent one. +Currently, Meilisearch databases are only compatible with the version of Meilisearch used to create them. The following guide will walk you through using a [dump](/learn/advanced/dumps) to migrate an existing database from an older version of Meilisearch to the most recent one. If you're updating your Meilisearch instance on cloud platforms like DigitalOcean, AWS, or GCP, ensure that you can connect to your cloud instance via SSH. Depending on the user you are connecting with (root, admin, etc.), you may need to prefix some commands with `sudo`. If migrating to the latest version of Meilisearch will cause you to skip multiple versions, this may require changes to your codebase. [Refer to our version-specific update warnings for more details](#version-specific-warnings). -::: tip + If you are running Meilisearch as a `systemctl` service using v0.22 or above, try our [migration script](https://github.com/meilisearch/meilisearch-migration). -::: + -::: danger + This guide only works for versions v0.15 and above. If you are using an older version, please [contact support](https://discord.gg/meilisearch) for more information. -::: + -## Step 1: Export data +## Updating on Meilisearch Cloud -### Verify your database version +If you're using Meilisearch Cloud, you don't need to follow the rest of this guide. Clicking the "Update to `vX.Y.Z`" button on the dashboard will take care of the update for you. + +Click on the project you want to update. Look for the "Project overview" section at the top of the page. Once a new version of Meilisearch is available, you should see an update button next to the "Meilisearch version" field. + +![Button to update Meilisearch version to 1.0.2](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/updating/update-button.png) + +Clicking the button will open a pop-up warning. Once you agree to the update, the "Status" of your project will change from "running" to "updating". + +![Project update in progress](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/updating/update-in-progress.png) + +Once the project has been successfully updated, you will receive an email confirming the update and the "Status" will change back to "running". + +## Updating a local or deployed Meilisearch instance + +### Step 1: Export data + +#### Verify your database version First, verify the version of Meilisearch that's compatible with your database using the get version endpoint: @@ -36,21 +52,21 @@ The response should look something like this: } ``` -::: note + If you get the `missing_authorization_header` error, you might be using **v0.24 or below**. For each command, replace the `Authorization: Bearer` header with the `X-Meili-API-Key: API_KEY` header: -::: + -If your [`pkgVersion`](/reference/api/version.md#version-object) is 0.21 or above, you can jump to [creating the dump](#create-the-dump). If not, proceed to the next step. +If your [`pkgVersion`](/reference/api/version#version-object) is 0.21 or above, you can jump to [creating the dump](#create-the-dump). If not, proceed to the next step. -### Set all fields as displayed attributes +#### Set all fields as displayed attributes -::: note + If your dump was created in Meilisearch v0.21 or above, [skip this step](#create-the-dump). -::: + -When creating dumps using Meilisearch versions below v0.21, all fields must be [displayed](/learn/configuration/displayed_searchable_attributes.md#displayed-fields) in order to be saved in the dump. +When creating dumps using Meilisearch versions below v0.21, all fields must be [displayed](/learn/configuration/displayed_searchable_attributes#displayed-fields) in order to be saved in the dump. Start by verifying that all attributes are included in the displayed attributes list: @@ -73,17 +89,17 @@ This command returns an `updateId`. Use the get update endpoint to track the sta Once the status is `processed`, you're good to go. Repeat this process for all indexes, then move on to creating your dump. -### Create the dump +#### Create the dump -Before creating your dump, make sure that your [dump directory](/learn/configuration/instance_options.md#dump-directory) is somewhere accessible. By default, dumps are created in a folder called `dumps` at the root of your Meilisearch directory. +Before creating your dump, make sure that your [dump directory](/learn/configuration/instance_options#dump-directory) is somewhere accessible. By default, dumps are created in a folder called `dumps` at the root of your Meilisearch directory. **Cloud platforms** like DigitalOcean, AWS, and GCP are configured to store dumps in the `/var/opt/meilisearch/dumps` directory. If you're unsure where your Meilisearch directory is located, try this: -:::: tabs + -::: tab UNIX + ```bash which meilisearch @@ -95,9 +111,9 @@ It should return something like this: /absolute/path/to/your/meilisearch/directory ``` -::: + -::: tab Windows CMD + ```bash where meilisearch @@ -109,9 +125,9 @@ It should return something like this: /absolute/path/to/your/meilisearch/directory ``` -::: + -::: tab Windows PowerShell + ```bash (Get-Command meilisearch).Path @@ -123,13 +139,12 @@ It should return something like this: /absolute/path/to/your/meilisearch/directory ``` -::: + + -:::: - -::: danger `_geo` field in v0.27, v0.28, and v0.29 -Due to an error allowing malformed `_geo` fields in Meilisearch **v0.27, v0.28, and v0.29**, you might not be able to import your dump. Please ensure the `_geo` field follows the [correct format](/learn/advanced/geosearch.md#preparing-documents-for-location-based-search) before creating your dump. -::: +_geo field in v0.27, v0.28, and v0.29}> +Due to an error allowing malformed `_geo` fields in Meilisearch **v0.27, v0.28, and v0.29**, you might not be able to import your dump. Please ensure the `_geo` field follows the [correct format](/learn/advanced/geosearch#preparing-documents-for-location-based-search) before creating your dump. + You can then create a dump of your database: @@ -147,9 +162,9 @@ The server should return a response that looks like this: } ``` -Use the `taskUid` to [track the status](/reference/api/tasks.md#get-one-task) of your dump. Keep in mind that the process can take some time to complete. +Use the `taskUid` to [track the status](/reference/api/tasks#get-one-task) of your dump. Keep in mind that the process can take some time to complete. -::: note + The response will vary slightly depending on your version. For v0.27 and below, the response returns a dump `uid`. You can track the status of the dump using the get dumps status endpoint: ```sh @@ -158,26 +173,25 @@ The response will vary slightly depending on your version. For v0.27 and below, -H 'Authorization: Bearer API_KEY' # -H 'X-Meili-API-Key: API_KEY' for v0.24 or below ``` - -::: + Once the `dumpCreation` task shows `"status": "succeeded"`, you're ready to move on. -## Step 2: Prepare for migration +### Step 2: Prepare for migration -### Stop the Meilisearch instance +#### Stop the Meilisearch instance Stop your Meilisearch instance. -:::: tabs + -::: tab Local installation + If you're running Meilisearch locally, you can stop the program with `Ctrl + c`. -::: + -::: tab Cloud platforms + If you're running Meilisearch as a `systemctl` service, connect via SSH to your cloud instance and execute the following command to stop Meilisearch: @@ -187,64 +201,61 @@ systemctl stop meilisearch You may need to prefix the above command with `sudo` if you are not connected as root. -::: + + -:::: +#### Create a backup -### Create a backup - -Instead of deleting `data.ms`, we suggest creating a backup in case something goes wrong. `data.ms` should be at the root of the Meilisearch binary unless you chose [another location](/learn/configuration/instance_options.md#database-path). +Instead of deleting `data.ms`, we suggest creating a backup in case something goes wrong. `data.ms` should be at the root of the Meilisearch binary unless you chose [another location](/learn/configuration/instance_options#database-path). On **cloud platforms**, you will find the `data.ms` folder at `/var/lib/meilisearch/data.ms`. Move the binary of the current Meilisearch installation and database to the `/tmp` folder: -:::: tabs + -::: tab Local installation + ``` mv /path/to/your/meilisearch/directory/meilisearch/data.ms /tmp/ mv /path/to/your/meilisearch/directory/meilisearch /tmp/ ``` -::: + -::: tab Cloud platforms + ``` mv /usr/bin/meilisearch /tmp/ mv /var/lib/meilisearch/data.ms /tmp/ ``` -::: - -:::: + + -### Install the desired version of Meilisearch +#### Install the desired version of Meilisearch Install the latest version of Meilisearch using: -:::: tabs + -::: tab Local installation + ```bash curl -L https://install.meilisearch.com | sh ``` -::: + -::: tab Cloud platforms + ```sh # replace {meilisearch_version} with the version of your choice. Use the format: `vX.X.X` curl "https://github.com/meilisearch/meilisearch/releases/download/{meilisearch_version}/meilisearch-linux-amd64" --output meilisearch --location --show-error ``` -::: - -:::: + + Give execute permission to the Meilisearch binary: @@ -258,37 +269,36 @@ For **cloud platforms**, move the new Meilisearch binary to the `/usr/bin` direc mv meilisearch /usr/bin/meilisearch ``` -## Step 3: Import data +### Step 3: Import data -### Launch Meilisearch and import the dump +#### Launch Meilisearch and import the dump Execute the command below to import the dump at launch: -:::: tabs + -::: tab Local installation + ```bash # replace {dump_uid.dump} with the name of your dump file ./meilisearch --import-dump dumps/{dump_uid.dump} --master-key="MASTER_KEY" ``` -::: + -::: tab Cloud platforms + ```sh # replace {dump_uid.dump} with the name of your dump file meilisearch --db-path /var/lib/meilisearch/data.ms --import-dump "/var/opt/meilisearch/dumps/{dump_uid.dump}" ``` -::: - -:::: + + Importing a dump requires indexing all the documents it contains. Depending on the size of your dataset, this process can take a long time and cause a spike in memory usage. -### Restart Meilisearch as a service +#### Restart Meilisearch as a service If you're running a **cloud instance**, press `Ctrl`+`C` to stop Meilisearch once your dump has been correctly imported. Next, execute the following command to run the script to configure Meilisearch and restart it as a service: @@ -296,9 +306,9 @@ If you're running a **cloud instance**, press `Ctrl`+`C` to stop Meilisearch on meilisearch-setup ``` -If required, set `displayedAttributes` back to its previous value using the [update displayed attributes endpoint](/reference/api/settings.md#update-displayed-attributes). +If required, set `displayedAttributes` back to its previous value using the [update displayed attributes endpoint](/reference/api/settings#update-displayed-attributes). -## Conclusion +### Conclusion Now that your updated Meilisearch instance is up and running, verify that the dump import was successful and no data was lost. @@ -306,31 +316,30 @@ If everything looks good, then congratulations! You successfully migrated your d If something went wrong, you can always roll back to the previous version. Feel free to [reach out for help](https://discord.gg/meilisearch) if the problem continues. If you successfully migrated your database but are having problems with your codebase, be sure to check out our [version-specific warnings](#version-specific-warnings). -### Delete backup files or rollback (_optional_) +#### Delete backup files or rollback (_optional_) Delete the Meilisearch binary and `data.ms` folder created by the previous steps. Next, move the backup files back to their previous location using: -:::: tabs + -::: tab Local installation + ``` mv /tmp/meilisearch /path/to/your/meilisearch/directory/meilisearch mv /tmp/data.ms /path/to/your/meilisearch/directory/meilisearch/data.ms ``` -::: + -::: tab Cloud platforms + ``` mv /tmp/meilisearch /usr/bin/meilisearch mv /tmp/data.ms /var/lib/meilisearch/data.ms ``` -::: - -:::: + + For **cloud platforms** run the configuration script at the root of your Meilisearch directory: @@ -347,25 +356,24 @@ rm -r /tmp/data.ms You can also delete the dump file if desired: -:::: tabs + -::: tab Local installation + ``` rm /path/to/your/meilisearch/directory/meilisearch/dumps/{dump_uid.dump} ``` -::: + -::: tab Cloud platforms + ``` rm /var/opt/meilisearch/dumps/{dump_uid.dump} ``` -::: - -:::: + + ## Version-specific warnings @@ -375,3 +383,6 @@ After migrating to the most recent version of Meilisearch, your code-base may re - The `private` and `public` keys have been deprecated and replaced by two default API keys with similar permissions: `Default Admin API Key` and `Default Search API Key`. - The `updates` API has been replaced with the `tasks` API. - If you are **updating from v0.27 or below**, existing keys will have their `key` and `uid` fields regenerated. +- If you are **updating from v0.30 or below to v1.0 or above on a cloud platform**, replace `--dumps-dir` with `--dump-dir` in the following files: + - `/etc/systemd/system/meilisearch.service` + - `/var/opt/meilisearch/scripts/first-login/001-setup-prod.sh` diff --git a/learn/update_and_migration/versioning.md b/learn/update_and_migration/versioning.mdx similarity index 91% rename from learn/update_and_migration/versioning.md rename to learn/update_and_migration/versioning.mdx index 31b933580f..9a458621e2 100644 --- a/learn/update_and_migration/versioning.md +++ b/learn/update_and_migration/versioning.mdx @@ -10,9 +10,9 @@ Release versions follow the MAJOR.MINOR.PATCH format and adhere to the [Semantic - MINOR versions introduce new features that are backwards compatible - PATCH versions only contain high-priority bug fixes and security updates -::: warning + Prior to Meilisearch v1, MINOR versions also broke compatibility between releases. -::: + ### Release schedule @@ -34,4 +34,4 @@ When using an SDK, always consult its repository README, release description, an This Meilisearch documentation website follows the latest Meilisearch version. We do not maintain documentation for past releases. -It is possible to [access previous versions of the Meilisearch documentation website](/learn/update_and_migration/previous_docs_version.md), but the process and results are less than ideal. Users are strongly encouraged to always use the latest Meilisearch release. +It is possible to [access previous versions of the Meilisearch documentation website](/learn/update_and_migration/previous_docs_version), but the process and results are less than ideal. Users are strongly encouraged to always use the latest Meilisearch release. diff --git a/learn/what_is_meilisearch/comparison_to_alternatives.md b/learn/what_is_meilisearch/comparison_to_alternatives.mdx similarity index 84% rename from learn/what_is_meilisearch/comparison_to_alternatives.md rename to learn/what_is_meilisearch/comparison_to_alternatives.mdx index 9593f2cd51..9835bab24d 100644 --- a/learn/what_is_meilisearch/comparison_to_alternatives.md +++ b/learn/what_is_meilisearch/comparison_to_alternatives.mdx @@ -1,7 +1,5 @@ --- - -sidebarDepth: 2 - +sidebarDepth: 4 --- # Comparison to alternatives @@ -14,9 +12,9 @@ There are many search engines on the web, both open-source and otherwise. Decidi - Finally, we end this article with [an in-depth analysis of the broader search engine landscape](#a-quick-look-at-the-search-engine-landscape) -::: note + Please be advised that many of the search products described below are constantly evolving—just like Meilisearch. These are only our own impressions, and may not reflect recent changes. If something appears inaccurate, please don't hesitate to open an [issue or pull request](https://github.com/meilisearch/documentation). -::: + ## Comparison table @@ -24,8 +22,8 @@ Please be advised that many of the search products described below are constantl | | Meilisearch | Algolia | Typesense | Elasticsearch | |---|:----:|:----:|:-----:|:----:| -| Source code licensing | [MIT](https://choosealicense.com/licenses/mit/)
(Fully open-source) | Closed-source | [GPL-3](https://choosealicense.com/licenses/gpl-3.0/)
(Fully open-source) | SSPL
([Not open-source](https://opensource.org/node/1099)) | -| Built with | Rust
[Check out why we believe in Rust](https://www.abetterinternet.org/docs/memory-safety/). | C++ | C++ | Java | +| Source code licensing | [MIT](https://choosealicense.com/licenses/mit/)
(Fully open-source) | Closed-source | [GPL-3](https://choosealicense.com/licenses/gpl-3.0/)
(Fully open-source) | SSPL
([Not open-source](https://opensource.org/node/1099)) | +| Built with | Rust
[Check out why we believe in Rust](https://www.abetterinternet.org/docs/memory-safety/). | C++ | C++ | Java | | Data storage | Disk with Memory Mapping -- Not limited by RAM | Limited by RAM | Limited by RAM | Disk with RAM cache | ### Features @@ -46,13 +44,13 @@ Can't find a client you'd like us to support? [Submit your idea or vote for it]( | [Java client](https://github.com/meilisearch/meilisearch-java) | ✅ | ✅ | ✅ | ✅ | | [Swift client](https://github.com/meilisearch/meilisearch-swift) | ✅ | ✅ | ✅ | ❌ | | [.NET client](https://github.com/meilisearch/meilisearch-dotnet) | ✅ | ✅ | ✅ | ✅ | -| [Rust client](https://github.com/meilisearch/meilisearch-rust) | ✅ | ❌ | 🔶
WIP | ✅ | +| [Rust client](https://github.com/meilisearch/meilisearch-rust) | ✅ | ❌ | 🔶
WIP | ✅ | | [Go client](https://github.com/meilisearch/meilisearch-go) | ✅ | ✅ | ✅ | ✅ | | [Dart client](https://github.com/meilisearch/meilisearch-dart) | ✅ | ✅ | ✅ | ❌ | | [Symfony](https://github.com/meilisearch/meilisearch-symfony) | ✅ | ✅ | ✅ | ❌ | | [Django](https://roadmap.meilisearch.com/c/60-django) | ❌ | ✅ | ❌ | ❌ | -| [Rails](https://github.com/meilisearch/meilisearch-rails) | ✅ | ✅ | 🔶
WIP | ✅ || -| [Official Laravel Scout Support](https://github.com/laravel/scout) | ✅ | ✅ | ❌
Available as a standalone module | ❌
Available as a standalone module | +| [Rails](https://github.com/meilisearch/meilisearch-rails) | ✅ | ✅ | 🔶
WIP | ✅ || +| [Official Laravel Scout Support](https://github.com/laravel/scout) | ✅ | ✅ | ❌
Available as a standalone module | ❌
Available as a standalone module | | [UI Search Kit](https://github.com/meilisearch/instant-meilisearch) | ✅ | ✅ | ✅ | ✅ | | [Docsearch](https://github.com/meilisearch/docs-scraper) | ✅ | ✅ | ✅ | ❌ | | [Strapi](https://github.com/meilisearch/strapi-plugin-meilisearch) | ✅ | ✅ | ❌ | ❌ | @@ -74,9 +72,9 @@ Can't find a client you'd like us to support? [Submit your idea or vote for it]( | | Meilisearch | Algolia | Typesense | Elasticsearch | |---|:---:|:----:|:---:|:---:| -| Typo tolerant | ✅ | ✅ | ✅ | 🔶
Needs to be specified by fuzzy queries | -| Orderable ranking rules | ✅ | ✅ | 🔶
Field weight can be changed, but ranking rules order cannot be changed. | ❌| -| Custom ranking rules | ✅ | ✅ | ✅ | 🔶
Function score query | +| Typo tolerant | ✅ | ✅ | ✅ | 🔶
Needs to be specified by fuzzy queries | +| Orderable ranking rules | ✅ | ✅ | 🔶
Field weight can be changed, but ranking rules order cannot be changed. | ❌| +| Custom ranking rules | ✅ | ✅ | ✅ | 🔶
Function score query | | Query field weights | ✅ | ✅ | ✅ | ✅ | | Synonyms | ✅ | ✅ | ✅ | ✅ | | Stop words | ✅ | ✅ | ❌ | ✅ | @@ -88,7 +86,7 @@ Can't find a client you'd like us to support? [Submit your idea or vote for it]( | | Meilisearch | Algolia | Typesense | Elasticsearch | |---|:---:|:----:|:---:|:---:| | API Key Management | ✅ | ✅ | ✅ | ✅ | -| Tenant tokens & multi-tenant indexes | ✅
[Multitenancy support](/learn/security/tenant_tokens.md) | ✅ | ✅ | ✅
Role-based | +| Tenant tokens & multi-tenant indexes | ✅
[Multitenancy support](/learn/security/tenant_tokens) | ✅ | ✅ | ✅
Role-based | ##### Search @@ -98,24 +96,24 @@ Can't find a client you'd like us to support? [Submit your idea or vote for it]( | Multi-index search (Federated search) | ✅ | ✅ | ✅ | ✅ | | Exact phrase search | ✅ | ✅ | ✅ | ✅ | | Geo search | ✅ | ✅ | ✅ | ✅ | -| Sort by | ✅ | 🔶
Limited to one `sort_by` rule per index. Indexes may have to be duplicated for each sort field and sort order | ✅
Up to 3 sort fields per search query | ✅ | -| Filtering | ✅
Support complex filter queries with an SQL-like syntax. | 🔶
Does not support `OR` operation across multiple fields | ✅ | ✅ | -| Faceted search | ✅ | ✅ | ✅
Faceting can take several seconds when >10 million facet values must be returned | ✅ | -| Distinct attributes
De-duplicate documents by a field value
| ✅ | ✅ | ✅ | ✅ | -| Grouping
Bucket documents by field values
| ❌ | ✅ | ✅ | ✅ | +| Sort by | ✅ | 🔶
Limited to one `sort_by` rule per index. Indexes may have to be duplicated for each sort field and sort order | ✅
Up to 3 sort fields per search query | ✅ | +| Filtering | ✅
Support complex filter queries with an SQL-like syntax. | 🔶
Does not support `OR` operation across multiple fields | ✅ | ✅ | +| Faceted search | ✅ | ✅ | ✅
Faceting can take several seconds when >10 million facet values must be returned | ✅ | +| Distinct attributes
De-duplicate documents by a field value
| ✅ | ✅ | ✅ | ✅ | +| Grouping
Bucket documents by field values
| ❌ | ✅ | ✅ | ✅ | ##### Visualize | | Meilisearch | Algolia | Typesense | Elasticsearch | |---|:---:|:----:|:---:|:---:| -| [Mini Dashboard](https://github.com/meilisearch/mini-dashboard) | ✅ | 🔶
Cloud product | 🔶
Cloud product | ✅ | +| [Mini Dashboard](https://github.com/meilisearch/mini-dashboard) | ✅ | 🔶
Cloud product | 🔶
Cloud product | ✅ | #### Deployment | | Meilisearch | Algolia | Typesense | Elasticsearch | |---|:---:|:----:|:---:|:---:| | Self-hosted | ✅ | ❌ | ✅ | ✅ | -| Official 1-click deploy | ✅
[DigitalOcean](https://marketplace.digitalocean.com/apps/meilisearch)
[Platform.sh](https://console.platform.sh/projects/create-project?template=https://raw.githubusercontent.com/platformsh/template-builder/master/templates/meilisearch/.platform.template.yaml)
[Azure](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fcmaneu%2Fmeilisearch-on-azure%2Fmain%2Fmain.json)
[Railway](https://railway.app/new/template/TXxa09?referralCode=YltNo3)
[Koyeb](https://app.koyeb.com/deploy?type=docker&image=getmeili/meilisearch&name=meilisearch-on-koyeb&ports=7700;http;/&env%5BMEILI_MASTER_KEY%5D=REPLACE_ME_WITH_A_STRONG_KEY) | ❌ | 🔶
Only for the cloud-hosted solution | ❌ | +| Official 1-click deploy | ✅
[DigitalOcean](https://marketplace.digitalocean.com/apps/meilisearch)
[Platform.sh](https://console.platform.sh/projects/create-project?template=https://raw.githubusercontent.com/platformsh/template-builder/master/templates/meilisearch/.platform.template.yaml)
[Azure](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fcmaneu%2Fmeilisearch-on-azure%2Fmain%2Fmain.json)
[Railway](https://railway.app/new/template/TXxa09?referralCode=YltNo3)
[Koyeb](https://app.koyeb.com/deploy?type=docker&image=getmeili/meilisearch&name=meilisearch-on-koyeb&ports=7700;http;/&env%5BMEILI_MASTER_KEY%5D=REPLACE_ME_WITH_A_STRONG_KEY) | ❌ | 🔶
Only for the cloud-hosted solution | ❌ | | Official cloud-hosted solution | [Meilisearch Cloud](https://cloud.meilisearch.com/register) | ✅ | ✅ | ✅ | | High availability | Available with [Meilisearch Cloud](https://cloud.meilisearch.com/register) | ✅ | ✅ | ✅ | | Run-time dependencies | None | N/A | None | None | @@ -127,7 +125,7 @@ Can't find a client you'd like us to support? [Submit your idea or vote for it]( | | Meilisearch | Algolia | Typesense | Elasticsearch | |---|:---:|:----:|:---:|:---:| | Maximum number of indexes | No limitation | 1000, increasing limit possible by contacting support | No limitation | No limitation | -| Maximum index size | 80TiB | 128GB | Constrained by RAM | No limitation | +| Maximum index size | 80TiB | 128GB | Constrained by RAM | No limitation | | Maximum words per attribute | No limitation | No limitation | No limitation | No limitation | | Maximum document size | No limitation | 100KB, configurable | No limitation | 100KB default, configurable | @@ -144,8 +142,8 @@ Can't find a client you'd like us to support? [Submit your idea or vote for it]( | | Meilisearch | Algolia | Typesense | Elasticsearch | |---|:---:|:----:|:---:|:---:| | Status page | ✅ | ✅ | ✅ | ✅ | -| Free support channels | Instant messaging / chatbox (2-3h delay),
emails,
public Discord community,
GitHub issues & discussions | Instant messaging / chatbox,
public community forum | Instant messaging/chatbox (24h-48h delay),
public Slack community,
GitHub issues. | Public Slack community,
public community forum,
GitHub issues | -| Paid support channels | _Support is free!_ | Emails | Emails,
phone,
private Slack | Web support,
emails,
phone | +| Free support channels | Instant messaging / chatbox (2-3h delay),
emails,
public Discord community,
GitHub issues & discussions | Instant messaging / chatbox,
public community forum | Instant messaging/chatbox (24h-48h delay),
public Slack community,
GitHub issues. | Public Slack community,
public community forum,
GitHub issues | +| Paid support channels | _Support is free!_ | Emails | Emails,
phone,
private Slack | Web support,
emails,
phone | ## Approach comparison @@ -167,13 +165,13 @@ Meilisearch was inspired by Algolia's product and the algorithms behind it. We i Meilisearch provides similar features and reaches the same level of relevance just as quickly as its competitor. -If you are a current Algolia user considering a switch to Meilisearch, you may be interested in our [migration guide](/learn/update_and_migration/algolia_migration.md). +If you are a current Algolia user considering a switch to Meilisearch, you may be interested in our [migration guide](/learn/update_and_migration/algolia_migration). #### Key similarities Some of the most significant similarities between Algolia and Meilisearch are: -- [Features](/learn/what_is_meilisearch/overview.md#features) such as search-as-you-type, typo tolerance, faceting, etc. +- [Features](/learn/what_is_meilisearch/overview#features) such as search-as-you-type, typo tolerance, faceting, etc. - Fast results targeting an instant search experience (answers < 50 milliseconds) - Schemaless indexing - Support for all JSON data types diff --git a/learn/what_is_meilisearch/contact.md b/learn/what_is_meilisearch/contact.md deleted file mode 100644 index 554d72c005..0000000000 --- a/learn/what_is_meilisearch/contact.md +++ /dev/null @@ -1,26 +0,0 @@ -# Contact us - -## Chat 💬 - -We love to chat directly with users in our [Discord community](https://discord.gg/meilisearch)! Use it to: - -- **Connect** with other Meilisearch users -- **Get support** from Meilisearch team members -- **Give feedback** on the engine, integrations, or documentation -- **Share what you've made** with Meilisearch - -And much more! - -## Forum 📋 - -Prefer asynchronous long-form discussion? Check out our [forum on GitHub Discussions](https://github.com/meilisearch/meilisearch/discussions) for support requests, feature proposals, and more. - -## Bug report 🛠️ - -If you have a bug to report, please add it as an issue in the corresponding repository, for example, [meilisearch](https://github.com/meilisearch/meilisearch/issues), [meilisearch/documentation](https://github.com/meilisearch/documentation/issues) and so forth. - -## Product roadmap 🛣️ - -Have a feature you'd like to see in a future Meilisearch release? Add or upvote it on our [public product roadmap](https://roadmap.meilisearch.com/tabs/1-under-consideration). - -_Any suggestion or feedback is highly appreciated. Thank you for your support!_ diff --git a/learn/what_is_meilisearch/features.md b/learn/what_is_meilisearch/features.md deleted file mode 100644 index 4e8235139c..0000000000 --- a/learn/what_is_meilisearch/features.md +++ /dev/null @@ -1,69 +0,0 @@ ---- - -sidebarDepth: 2 - ---- - -# Features - -Meilisearch is a flexible and powerful user-focused search engine. Here are some of its major features. - -## Search as you type - -Also called "instant search". Results are delivered while you're still inputting your query. Displayed results are changed in real-time whenever you type additional text into the search box. - -## Ultra relevant - -Meilisearch's default [relevancy rules](/learn/core_concepts/relevancy.md) are designed to deliver an intuitive search experience with zero setup. They can be [customized](/reference/api/settings.md#ranking-rules) to ensure perfect results for your dataset. - -## Typo tolerant - -Instead of letting typos ruin your search experience, Meilisearch will always find the results you expect. Read more about typo tolerance in [this dedicated guide](/learn/configuration/typo_tolerance.md). - -## Synonyms - -[Define synonyms](/learn/configuration/synonyms.md) and craft a tailored, intuitive search experience. - -## Highlighting - -[Highlight](/reference/api/search.md#attributes-to-highlight) query terms and help users immediately find the matched text in a document. - -## Geosearch - -Search in the real world. [Geosearch](/learn/advanced/geosearch.md), also known as location-based search, allows you to filter and sort results based on their geographic location. - -## Filtering - -Create [filters](/learn/advanced/filtering.md) to refine results based on user-defined criteria. - -## Faceting - -Classify search results into categories and build intuitive navigation interfaces with [faceted search](/learn/advanced/faceted_search.md). - -## Sorting - -[Sort search results](/learn/advanced/sorting.md) at query time and let users choose which results they want to see first. - -## API key management - -Protect your instance with [API keys](/learn/security/master_api_keys.md). Set expiration dates and control access to indexes and endpoints so that your data is always safe. - -## Multitenancy - -Manage complex multi-user applications. [Tenant tokens](/learn/security/tenant_tokens.md) help you decide which documents each one of your users can search. - -## Index swapping - -Use [index swapping](/learn/core_concepts/indexes.md#swapping-indexes) to deploy major database updates with zero search downtime. - -## Comprehensive language support - -[Meilisearch is multilingual](/learn/what_is_meilisearch/language.md)! We aim to support every language represented in our global community. - -## Phrase search - -[Wrap search terms in double quotes (`"`) for strict queries](/reference/api/search.md#phrase-search) that only return exact matches. - -## Multi-index search - -Also known as federated search, it allows you to perform [search queries on multiple indexes with a single HTTP request](/reference/api/multi_search.md). diff --git a/learn/what_is_meilisearch/features.mdx b/learn/what_is_meilisearch/features.mdx new file mode 100644 index 0000000000..ccd8721f9f --- /dev/null +++ b/learn/what_is_meilisearch/features.mdx @@ -0,0 +1,67 @@ +--- +sidebarDepth: 2 +--- + +# Features + +Meilisearch is a flexible and powerful user-focused search engine. Here are some of its major features. + +## Search as you type + +Also called "instant search". Results are delivered while you're still inputting your query. Displayed results are changed in real-time whenever you type additional text into the search box. + +## Ultra relevant + +Meilisearch's default [relevancy rules](/learn/core_concepts/relevancy) are designed to deliver an intuitive search experience with zero setup. They can be [customized](/reference/api/settings#ranking-rules) to ensure perfect results for your dataset. + +## Typo tolerant + +Instead of letting typos ruin your search experience, Meilisearch will always find the results you expect. Read more about typo tolerance in [this dedicated guide](/learn/configuration/typo_tolerance). + +## Synonyms + +[Define synonyms](/learn/configuration/synonyms) and craft a tailored, intuitive search experience. + +## Highlighting + +[Highlight](/reference/api/search#attributes-to-highlight) query terms and help users immediately find the matched text in a document. + +## Geosearch + +Search in the real world. [Geosearch](/learn/advanced/geosearch), also known as location-based search, allows you to filter and sort results based on their geographic location. + +## Filtering + +Create [filters](/learn/advanced/filtering) to refine results based on user-defined criteria. + +## Faceting + +Classify search results into categories and build intuitive navigation interfaces with [faceted search](/learn/advanced/faceted_search). + +## Sorting + +[Sort search results](/learn/advanced/sorting) at query time and let users choose which results they want to see first. + +## API key management + +Protect your instance with [API keys](/learn/security/master_api_keys). Set expiration dates and control access to indexes and endpoints so that your data is always safe. + +## Multitenancy + +Manage complex multi-user applications. [Tenant tokens](/learn/security/tenant_tokens) help you decide which documents each one of your users can search. + +## Index swapping + +Use [index swapping](/learn/core_concepts/indexes#swapping-indexes) to deploy major database updates with zero search downtime. + +## Comprehensive language support + +[Meilisearch is multilingual](/learn/what_is_meilisearch/language)! We aim to support every language represented in our global community. + +## Phrase search + +[Wrap search terms in double quotes (`"`) for strict queries](/reference/api/search#phrase-search) that only return exact matches. + +## Multi-search + +Also known as federated search, it allows you to perform [multiple search queries on multiple indexes with a single HTTP request](/reference/api/multi_search). diff --git a/learn/what_is_meilisearch/language.md b/learn/what_is_meilisearch/language.mdx similarity index 97% rename from learn/what_is_meilisearch/language.md rename to learn/what_is_meilisearch/language.mdx index a6f826bc26..fb53f99d32 100644 --- a/learn/what_is_meilisearch/language.md +++ b/learn/what_is_meilisearch/language.mdx @@ -11,7 +11,7 @@ Meilisearch is multilingual, featuring optimized support for: We aim to provide global language support, and your feedback helps us move closer to that goal. If you notice inconsistencies in your search results or the way your documents are processed, please [open an issue in the Meilisearch repository](https://github.com/meilisearch/meilisearch/issues/new/choose). -[Read more about our tokenizer](/learn/advanced/tokenization.md) +[Read more about our tokenizer](/learn/advanced/tokenization) ## Improving our language support diff --git a/learn/what_is_meilisearch/overview.md b/learn/what_is_meilisearch/overview.mdx similarity index 59% rename from learn/what_is_meilisearch/overview.md rename to learn/what_is_meilisearch/overview.mdx index 1b1f57f053..2acf7e670f 100644 --- a/learn/what_is_meilisearch/overview.md +++ b/learn/what_is_meilisearch/overview.mdx @@ -12,42 +12,42 @@ Our solution delivers an **instant search experience** including **typo handling ## Demo -![Search bar updating results](/crates-io-demo.gif) +![Search bar updating results](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/crates-io-demo.gif) _Meilisearch helps the Rust community find crates on [crates.meilisearch.com](https://crates.meilisearch.com)._ ## Features - **Blazing fast** (answers < 50 milliseconds): Priority is given to fast answers for a smooth search experience. -- [Search as you type](/learn/what_is_meilisearch/features.md#search-as-you-type): Results are updated on each keystroke. To make this possible, we use [prefix-search](/learn/advanced/prefix.md#prefix-search). -- [Typo tolerance](/learn/what_is_meilisearch/features.md#typo-tolerant): Understands typos and misspellings. -- [Tokenization](/learn/advanced/tokenization.md) in **English**, **Chinese**, and **all languages that use space as a word divider**. +- [Search as you type](/learn/what_is_meilisearch/features#search-as-you-type): Results are updated on each keystroke. To make this possible, we use [prefix-search](/learn/advanced/prefix#prefix-search). +- [Typo tolerance](/learn/what_is_meilisearch/features#typo-tolerant): Understands typos and misspellings. +- [Tokenization](/learn/advanced/tokenization) in **English**, **Chinese**, and **all languages that use space as a word divider**. - **Return the whole document**: The entire document is returned upon search. - **Highly customizable search and indexing**: - - [Custom ranking](/learn/core_concepts/relevancy.md): Customize the relevancy of the search engine and the ranking of the search results. - - [Stop words](/reference/api/settings.md#stop-words): Ignore common non-relevant words like `of` or `the`. - - [Highlighting](/learn/what_is_meilisearch/features.md#highlighting): Highlighted search results in documents - - [Synonyms](/learn/what_is_meilisearch/features.md#synonyms): define synonyms for a better search experience. + - [Custom ranking](/learn/core_concepts/relevancy): Customize the relevancy of the search engine and the ranking of the search results. + - [Stop words](/reference/api/settings#stop-words): Ignore common non-relevant words like `of` or `the`. + - [Highlighting](/learn/what_is_meilisearch/features#highlighting): Highlighted search results in documents + - [Synonyms](/learn/what_is_meilisearch/features#synonyms): define synonyms for a better search experience. - **RESTful API** -- [Search preview](/learn/what_is_meilisearch/search_preview.md): allows you to test your search settings without implementing a front-end +- [Search preview](/learn/what_is_meilisearch/search_preview): allows you to test your search settings without implementing a front-end ## Philosophy Meilisearch is committed to providing **open source**, **easy to use**, **customizable** instant search that **focuses on the needs of end-users**. -Read more about [the philosophy of our search engine](/learn/what_is_meilisearch/philosophy.md). +Read more about [the philosophy of our search engine](/learn/what_is_meilisearch/philosophy). ## SDKs and integrations -Our team and community have worked hard to bring Meilisearch to almost all popular web development languages, frameworks, and deployment options—and new integrations are constantly in development. Check out [the full list of our integrations](/learn/what_is_meilisearch/sdks.md). +Our team and community have worked hard to bring Meilisearch to almost all popular web development languages, frameworks, and deployment options—and new integrations are constantly in development. Check out [the full list of our integrations](/learn/what_is_meilisearch/sdks). ## Alternatives -Why should you use Meilisearch instead of any other existing solution? We try to answer this question in this [comparison to alternatives](/learn/what_is_meilisearch/comparison_to_alternatives.md). In short, Meilisearch most closely compares with Algolia. Meilisearch stands out by being open source (while commercial), and aims to be simpler to deploy and maintain than other competitors. +Why should you use Meilisearch instead of any other existing solution? We try to answer this question in this [comparison to alternatives](/learn/what_is_meilisearch/comparison_to_alternatives). In short, Meilisearch most closely compares with Algolia. Meilisearch stands out by being open source (while commercial), and aims to be simpler to deploy and maintain than other competitors. ## Give it a try! Instead of showing you examples, why not just invite you to test Meilisearch interactively in the **out-of-the-box search preview** we deliver? -There's no need to write a single line of front-end code. All you need to do is follow [this guide](/learn/getting_started/quick_start.md) to give the search engine a try! +There's no need to write a single line of front-end code. All you need to do is follow [this guide](/learn/getting_started/quick_start) to give the search engine a try! -![Meilisearch search preview](/search_preview/no_documents.png) +![Meilisearch search preview](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/search_preview/no_documents.png) diff --git a/learn/what_is_meilisearch/philosophy.md b/learn/what_is_meilisearch/philosophy.mdx similarity index 82% rename from learn/what_is_meilisearch/philosophy.md rename to learn/what_is_meilisearch/philosophy.mdx index d0457a824a..d6e8f1ce31 100644 --- a/learn/what_is_meilisearch/philosophy.md +++ b/learn/what_is_meilisearch/philosophy.mdx @@ -6,7 +6,7 @@ Finding a high-quality search engine can be difficult. We decided to create Meil We always aim for a simple and intuitive experience for both developers and end-users. -For developers, we're proud to say that Meilisearch requires very little configuration to get up and running. Communication to the server is done through a [RESTful API](/reference/api/overview.md). +For developers, we're proud to say that Meilisearch requires very little configuration to get up and running. Communication to the server is done through a [RESTful API](/reference/api/overview). For end-users, Meilisearch aims to provide an intuitive search-as-you-type experience, with a response time under 50 milliseconds. This helps users spend less time tinkering with search queries, and more time looking at results. @@ -16,9 +16,9 @@ Meilisearch works out-of-the-box with default settings that meet the needs of mo It wouldn't be a search engine if there wasn't a notion of relevancy in the results returned. -The returned results are **sorted according to a set of consecutive rules called [ranking rules](/learn/core_concepts/relevancy.md#ranking-rules)**. You can delete existing rules, add new ones, or even change the order in which they are executed. +The returned results are **sorted according to a set of consecutive rules called [ranking rules](/learn/core_concepts/relevancy#ranking-rules)**. You can delete existing rules, add new ones, or even change the order in which they are executed. -You can also **configure the [search parameters](/reference/api/search.md)** to refine your search even further. We support [filters](/learn/advanced/filtering.md) and [faceting](/learn/advanced/faceted_search.md#faceted-search). +You can also **configure the [search parameters](/reference/api/search)** to refine your search even further. We support [filters](/learn/advanced/filtering) and [faceting](/learn/advanced/faceted_search#faceted-search). ### Front-facing search @@ -28,6 +28,6 @@ Meilisearch is designed for front-facing search, search for users of your site, ### Anti-pattern -Meilisearch should **not be your main data store**. Meilisearch should contain only the data you want your users to search through. If you must add data that is irrelevant to search, be sure to [make those fields non-searchable](/learn/configuration/displayed_searchable_attributes.md#searchable-fields) to improve relevancy and response time. +Meilisearch should **not be your main data store**. Meilisearch should contain only the data you want your users to search through. If you must add data that is irrelevant to search, be sure to [make those fields non-searchable](/learn/configuration/displayed_searchable_attributes#searchable-fields) to improve relevancy and response time. Meilisearch queries should be sent directly from the front-end. The more proxies there are between Meilisearch and the end-user, the slower the queries and search experience will be. diff --git a/learn/what_is_meilisearch/sdks.md b/learn/what_is_meilisearch/sdks.mdx similarity index 88% rename from learn/what_is_meilisearch/sdks.md rename to learn/what_is_meilisearch/sdks.mdx index 01e8e86fd9..d9ed86051a 100644 --- a/learn/what_is_meilisearch/sdks.md +++ b/learn/what_is_meilisearch/sdks.mdx @@ -2,9 +2,9 @@ Our team and community have worked hard to bring Meilisearch to almost all popular web development languages, frameworks, and deployment options. -New integrations are constantly in development. If you'd like to contribute, [see below](/learn/what_is_meilisearch/sdks.md#contributing). +New integrations are constantly in development. If you'd like to contribute, [see below](/learn/what_is_meilisearch/sdks#contributing). -### SDKs +## SDKs You can use Meilisearch API wrappers in your favorite language. These libraries support all API routes. @@ -19,13 +19,13 @@ You can use Meilisearch API wrappers in your favorite language. These libraries - [Rust](https://github.com/meilisearch/meilisearch-rust) - [Swift](https://github.com/meilisearch/meilisearch-swift) -### Framework integrations +## Framework integrations - Laravel: the official [Laravel-Scout](https://github.com/laravel/scout) package supports Meilisearch. - [Ruby on Rails](https://github.com/meilisearch/meilisearch-rails) - [Symfony](https://github.com/meilisearch/meilisearch-symfony) -### Front-end tools +## Front-end tools - [Angular](https://github.com/meilisearch/meilisearch-angular) - [React](https://github.com/meilisearch/meilisearch-react) @@ -33,33 +33,31 @@ You can use Meilisearch API wrappers in your favorite language. These libraries - [Instant Meilisearch](https://github.com/meilisearch/instant-meilisearch): helps you integrate a great search experience with minimum efforts. - [docs-searchbar.js](https://github.com/meilisearch/docs-searchbar.js): a search bar integration for all kinds of documentation. -### DevOps tools +## DevOps tools - [meilisearch-aws](https://github.com/meilisearch/meilisearch-aws) - - Guide: [How to deploy a Meilisearch instance on Amazon Web Services](/learn/cookbooks/aws.md) + - Guide: [How to deploy a Meilisearch instance on Amazon Web Services](/learn/cookbooks/aws) - [meilisearch-digitalocean](https://github.com/meilisearch/meilisearch-digitalocean) - - Guide: [How to deploy a Meilisearch instance on DigitalOcean](/learn/cookbooks/digitalocean_droplet.md) + - Guide: [How to deploy a Meilisearch instance on DigitalOcean](/learn/cookbooks/digitalocean) - [meilisearch-gcp](https://github.com/meilisearch/meilisearch-gcp) - - Guide: [How to deploy a Meilisearch instance on Google Cloud Platform](/learn/cookbooks/gcp.md) + - Guide: [How to deploy a Meilisearch instance on Google Cloud Platform](/learn/cookbooks/gcp) - [meilisearch-kubernetes](https://github.com/meilisearch/meilisearch-kubernetes) -### Platform plugins +## Platform plugins - [VuePress plugin](https://github.com/meilisearch/vuepress-plugin-meilisearch) - [Strapi plugin](https://github.com/meilisearch/strapi-plugin-meilisearch/) - [Gatsby plugin](https://github.com/meilisearch/gatsby-plugin-meilisearch/) - [Firebase](https://github.com/meilisearch/firestore-meilisearch) -### Other tools +## Other tools - [docs-scraper](https://github.com/meilisearch/docs-scraper): a scraper tool to automatically read the content of your documentation and store it into Meilisearch. -### Contributing +## Contributing If you want to build a new integration for Meilisearch, you are more than welcome to and we would be happy to help you! We are proud that some of our libraries were developed and are still maintained by external contributors! ♥️ We recommend to follow [these guidelines](https://github.com/meilisearch/integrations-guides) so that it will be easier to integrate your work. - -Feel free to [contact us](/learn/what_is_meilisearch/contact.md)! 🙂 diff --git a/learn/what_is_meilisearch/search_preview.md b/learn/what_is_meilisearch/search_preview.mdx similarity index 67% rename from learn/what_is_meilisearch/search_preview.md rename to learn/what_is_meilisearch/search_preview.mdx index b8a95162ec..e5bbe30a09 100644 --- a/learn/what_is_meilisearch/search_preview.md +++ b/learn/what_is_meilisearch/search_preview.mdx @@ -4,11 +4,11 @@ After adding documents to your Meilisearch instance, you can immediately start s If your Meilisearch instance does not have any indexes, you should see this screen. -![Meilisearch search preview instructing the user to set an API key and configure an index](/search_preview/no_documents.png) +![Meilisearch search preview instructing the user to set an API key and configure an index](https://raw.githubusercontent.com/meilisearch/documentation/main/assets/images/search_preview/no_documents.png) -To access the search preview in your browser, navigate to the address and port specified in the command line argument `--http-addr`. If you did not configure `--http-addr` when launching your instance, [Meilisearch's default address for the search preview is localhost:7700](/learn/configuration/instance_options.md#http-address-port-binding). +To access the search preview in your browser, navigate to the address and port specified in the command line argument `--http-addr`. If you did not configure `--http-addr` when launching your instance, [Meilisearch's default address for the search preview is localhost:7700](/learn/configuration/instance_options#http-address-port-binding). -For security reasons, the search preview is only available in [development mode](/learn/configuration/instance_options.md#environment). You can disable it by setting the `MEILI_ENV` environment variable or `--env` CLI option to `production`. Note that you must set a [master key](/learn/configuration/instance_options.md#master-key) in production mode. +For security reasons, the search preview is only available in [development mode](/learn/configuration/instance_options#environment). You can disable it by setting the `MEILI_ENV` environment variable or `--env` CLI option to `production`. Note that you must set a [master key](/learn/configuration/instance_options#master-key) in production mode. ### Example diff --git a/learn/what_is_meilisearch/telemetry.md b/learn/what_is_meilisearch/telemetry.mdx similarity index 97% rename from learn/what_is_meilisearch/telemetry.md rename to learn/what_is_meilisearch/telemetry.mdx index 3086e3435f..f54cc20643 100644 --- a/learn/what_is_meilisearch/telemetry.md +++ b/learn/what_is_meilisearch/telemetry.mdx @@ -44,26 +44,26 @@ No company is perfect. If you ever feel that we are being anything less than 100 Data collection can be disabled at any time by setting a command-line option or environment variable, then restarting the Meilisearch instance. -:::: tabs + -::: tab Command-line option + ```bash meilisearch --no-analytics ``` -::: + -::: tab Environment variable + ```bash export MEILI_NO_ANALYTICS=true meilisearch ``` -::: + -::: tab Cloud service + ```bash # The following procedure should work for all cloud providers, @@ -80,11 +80,11 @@ systemctl daemon-reload systemctl restart meilisearch ``` -::: + -:::: + -For more information about configuring Meilisearch, read our [configuration reference](/learn/configuration/instance_options.md). +For more information about configuring Meilisearch, read our [configuration reference](/learn/configuration/instance_options). ## How to delete all collected data @@ -96,9 +96,9 @@ To do so, send an email to [privacy@meilisearch.com](mailto:privacy@meilisearch. Whenever an event is triggered that collects some piece of data, Meilisearch does not send it immediately. Instead, it bundles it with other data in a batch of up to `500kb`. Batches are sent either every hour, or after reaching `500kb`—whichever occurs first. This is done in order to improve performance and reduce network traffic. -::: tip Be advised! + This list is liable to change with every new version of Meilisearch. It's not because we're trying to be sneaky! It's because when we add new features we need to collect additional data points to see how they perform. -::: + | Metric name | Description | Example |----------------------------------------------------|---------------------------------------------------------------------------------------------|-------------------- @@ -143,7 +143,7 @@ This list is liable to change with every new version of Meilisearch. It's not be | `requests.total_received` | Total number of received search requests | 3480 | `sort.with_geoPoint` | `true` if the sort rule `_geoPoint` is specified, otherwise `false` | true | `sort.avg_criteria_number` | Average number of sort criteria among all search requests containing the `sort` parameter | 2 -| `filter.with_geoBoundingBox` | `true` if the filter rule `_geoBoundingBox` is specified, otherwise `false` | false +| `filter.with_geoBoundingBox` | `true` if the filter rule `_geoBoundingBox` is specified, otherwise `false` | false | `filter.with_geoRadius` | `true` if the filter rule `_geoRadius` is specified, otherwise `false` | false | `filter.most_used_syntax` | Most used filter syntax among all search requests containing the `filter` parameter | string | `q.max_terms_number` | Highest number of terms given for the `q` parameter | 5 @@ -206,7 +206,7 @@ This list is liable to change with every new version of Meilisearch. It's not be | `indexes.total_single_index` | The total number of calls when only one index is queried | 2007 | `matching_strategy.most_used_strategy` | Most used word matching strategy | last | `infos.with_configuration_file` | `true` if the instance is launched with a configuration file, otherwise `false` | false -| `infos.experimental_enable_metrics` | `true` if `--experimental-enable-metrics`/`MEILI_EXPERIMENTAL_ENABLE_METRICS` is specified, otherwise `false` | false +| `infos.experimental_enable_metrics` | `true` if `--experimental-enable-metrics`/`MEILI_EXPERIMENTAL_ENABLE_METRICS` is specified, otherwise `false` | false | `swap_operation_number` | Number of swap operations | 2 | `pagination.most_used_navigation` | Most used search results navigation | estimated | `per_document_id` | `true` if the `DELETE /indexes/:indexUid/documents/:documentUid` endpoint was used, otherwise `false` | false diff --git a/migration-guide.md b/migration-guide.md new file mode 100644 index 0000000000..6fd206250c --- /dev/null +++ b/migration-guide.md @@ -0,0 +1,217 @@ +# Migration documentation WIP + +This document describes the expected/known behavior of the new documentation site. + +Updates and major changes come in quickly and are not always immediately communicated, so it is possible descriptions and instructions are out of date. + +## Repository structure + +The docs repository no longer contains any code, only `.mdx` files for content and a few configuration JSON files. + +### Site structure + +Files can be stored in any structure. User-facing URLs and permalinks are determined manually via the `json` files inside the `/config` directory. + +### Navigation and menus + +It is possible to configure three menus directly from the docs repo: the sidebar menus for the `Learn` and `API reference` sections, and the footer menu at the bottom of the sidebars. + +Each menu has its own config file. The config file should follow this pattern: + +```json +[ + { + "title": "Section", + "slug": "section_name", + "routes": [ + // Each route is an object corresponding to a page + { + "source": "sidebar_name/section_name/file.mdx", + "label": "Page title", + "slug": "file" + } + ] + } +] +``` + +#### `/config/sidebar-learn.json` + +Configures the `Learn` section in the left sidebar menu. + +#### `/config/sidebar-reference.json` + +Configures the `Reference` section in the left sidebar menu. + +#### `/config/sidebar-footer.json` + +Configures links at the bottom of the lefthand sidebar menu (e.g. `FAQ`, `Back to meilisearch.com`). + +Not to be confused with the big site footer, which cannot be changed from the docs repo. + +## Links + +The docs site is a directory within `meilisearch.com`: `meilisearch.com/docs`. This means the website root, as far as we're concerned, is effectively `/docs` instead of `/`. + +Markdown links (`[link text](url)`) are transformed automatically during build and must reference the root of the docs repository: + +```markdown +A paragraph with a link to the [search API reference](/reference/api/search). +``` + +Links using HTML/JS/JSX, such as those inside props, are not transformed automatically and must be manually prefixed with `/docs`: + +```jsx + +``` + +Internal links should never include an extension such as `.mdx`, `.md`, or `.html`. + +## Code samples + +Work as in the previous site version. + +To add new code samples: + +1. Create an `id` (e.g. `new_codesample_1`) +2. Add a curl code sample to `/.code-samples.meilisearch.yaml` +3. Add `id` to `./sample-template.yaml` +4. Notify the integrations team we need them to create new samples for each SDK based on our curl example + +## Static assets (images/datasets) + +The build process does not currently support static assets with relative paths. Images and sample datasets must be linked via an external service. + +At the moment, we're adding hard absolute links to the files on GitHub: + +```markdown +\!\[Image description\]\(https://raw.githubusercontent.com/meilisearch/documentation/[branch_name]/assets/images/[guide_name]/diagram.png\) +``` + +## Scraper + +There's a GitHub action set up to trigger the scraping using a Vercel webhook. Will be migrated by basement into the repo before release. + +## Tests and linting + +- Broken links checker: disabled, will be complex to implement +- Vale: disabled, struggles with `.mdx` files +- markdownlint: disabled, must be replaced with `eslint` and `eslint-plugin-mdx` + +## Components + +### `` + +Displays items in a grid. Items must be given in an array of objects. + +Objects can have the following fields: + +- `icon` +- `content` +- `size` +- `link` + +#### Usage + +`` should be standalone and not enclose regular Markdown/HTML content: + +```jsx + +``` + +#### `icon` + +Default: `null` (no icon) + +List of currently accepted `icon` strings: + +- `cube` +- `letter` +- `circle` +- `compass` +- `globe` +- `user` + +[Basement has created other icons](https://drive.google.com/drive/folders/10Fvz6d6jPBhXYGhqFRR2G5GQQK43Nt2O), but these are not available for use in the website. + +#### `size` + +Default: `1` + +`size` accepts an integer from `1` to `4`. The bigger the number, the wider the featured item, with `4` spanning the whole content column. + +#### `content` + +Default: `null` (no content) + +Accepts any string value. Strings are not parsed as Markdown. Any formatting must be done with HTML tags. + +#### `link` + +Default: `null` + +Accepts a URL, either relative or absolute. If `link` is specified, the link will wrap the whole featured item. + +### ` title="string"` + +Creates a callout box. Colour depends on `intent`. + +Accepted `intent` values: + +- `note` (default) (purple) +- `warning` (red) +- `danger` (yellow) +- `tip` (blue) + +`title` accepts any string value. When supplied, replaces the `intent` title (e.g. `# Note`). + +If `title` requires formatting, wrap it in an empty React fragment and use raw HTML tags: `title={<>Title varName}`. + +#### Usage + +`` should be used to wrap content: + +```jsx +// Correct + + ## Heading + + Paragraph content. + +``` + +## MDX basics + +MDX is a mix of Markdown and React components. All Markdown files are valid MDX. All MDX is valid Markdown, but content within React components will not display as expected. + +### Using `/` + +React components are similar to HTML tags, but start with a capital letter: ``. + +Components can contain HTML elements, other components, and Markdown: + +```jsx + + ## Heading + + const foo = bat + + + +``` + +### Component props + +Components can be configured with props: ``. **Prop strings cannot contain Markdown.** + +This will **not** work: + +```jsx + +``` + +To format strings inside props, pass an empty React fragment (e.g. `<>`) and format the text withing with raw HTML tags: + +```jsx +Text in italics} /> +``` diff --git a/package.json b/package.json index 91fc8e8ef5..c71a4d026a 100644 --- a/package.json +++ b/package.json @@ -1,69 +1,19 @@ { "name": "documentation", "version": "1.0.0", - "description": "Documentation for Meilisearch", + "description": "", "main": "index.js", - "scripts": { - "pretest": "yarn style", - "test": "yarn check-links", - "prebuild": "yarn test", - "build": "vuepress build .", - "dev": "vuepress dev", - "check-links": "yarn check-md && yarn check-config-paths", - "check-md": "vuepress check-md .", - "style": "yarn lint && yarn marklint", - "check-config-paths": "vuepress check-config-paths .", - "style:fix": "yarn lint:fix && yarn marklint:fix", - "lint": "npx eslint . --ext .js,.vue", - "lint:fix": "npx eslint . --ext .js,.vue --fix", - "marklint:fix": "markdownlint '**/*.md' --config .markdownlint.jsonc --fix", - "marklint": "markdownlint '**/*.md' --config .markdownlint.jsonc" - }, + "dependencies": {}, + "scripts": {}, "repository": { "type": "git", - "url": "git@gitlab.com:meilisearch/public/documentation.git" + "url": "git+https://github.com/meilisearch/documentation.git" }, - "keywords": [ - "documentation", - "vuepress", - "meilisearch" - ], - "author": "tpayet", + "keywords": [], + "author": "", "license": "MIT", - "dependencies": { - "@bidoubiwa/vuepress-plugin-element-tabs": "^0.2.9", - "vuepress": "^1.9.9", - "vuepress-plugin-code-copy": "^1.0.6", - "vuepress-plugin-container": "^2.1.5", - "vuepress-plugin-img-lazy": "^1.0.4", - "vuepress-plugin-meilisearch": "^0.13.0", - "vuepress-plugin-seo": "^0.1.4", - "vuepress-plugin-sitemap": "^2.3.1", - "vuepress-plugin-zooming": "^1.1.8", - "vuepress-theme-default-prefers-color-scheme": "^2.0.0", - "vuex": "^3.6.2" - }, - "engines": { - "node": ">=14 <=16" - }, - "resolutions": { - "vuepress-plugin-check-md/check-md": "https://github.com/bidoubiwa/check-md#add_ignore_pattern" + "bugs": { + "url": "https://github.com/meilisearch/documentation/issues" }, - "devDependencies": { - "babel-eslint": "^10.1.0", - "bent": "^7.3.12", - "eslint": "^7.25.0", - "eslint-config-prettier": "^8.1.0", - "eslint-config-standard": "^16.0.2", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.3.1", - "eslint-plugin-promise": "^4.3.1", - "eslint-plugin-standard": "^5.0.0", - "eslint-plugin-vue": "^7.9.0", - "js-yaml": "^3.14.1", - "markdownlint-cli": "^0.33.0", - "vue-eslint-parser": "^9.1.1", - "vuepress-plugin-check-md": "^0.0.2" - } + "homepage": "https://meilisearch.com/docs" } diff --git a/reference/api/documents.md b/reference/api/documents.mdx similarity index 72% rename from reference/api/documents.md rename to reference/api/documents.mdx index ee3cf878d9..65046f1d52 100644 --- a/reference/api/documents.md +++ b/reference/api/documents.mdx @@ -2,7 +2,7 @@ The `/documents` route allows you to create, manage, and delete documents. -[Learn more about documents.](/learn/core_concepts/documents.md) +[Learn more about documents.](/learn/core_concepts/documents) ## Get documents @@ -12,15 +12,15 @@ Get a set of documents. Using the query parameters `offset` and `limit`, you can browse through all your documents. -::: note + Documents are ordered by Meilisearch depending on the hash of their id. -::: + ### Path parameters | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Query parameters @@ -79,8 +79,8 @@ Get one document using its unique id. | Name | Type | Description | | :------------------ | :------------- | :--------------------------------------------------------------------------------------- | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | -| **`document_id`** * | String/Integer | [Document id](/learn/core_concepts/primary_key.md#document-id) of the requested document | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | +| **`document_id`** * | String/Integer | [Document id](/learn/core_concepts/primary_key#document-id) of the requested document | ### Query parameters @@ -109,7 +109,7 @@ Get one document using its unique id. Add an array of documents or replace them if they already exist. If the provided index does not exist, it will be created. -If you send an already existing document (same [document id](/learn/core_concepts/primary_key.md#document-id)) the **whole existing document** will be overwritten by the new document. Fields that are no longer present in the new document are removed. For a partial update of the document see the [add or update documents](/reference/api/documents.md#add-or-update-documents) endpoint. +If you send an already existing document (same [document id](/learn/core_concepts/primary_key#document-id)) the **whole existing document** will be overwritten by the new document. Fields that are no longer present in the new document are removed. For a partial update of the document see the [add or update documents](/reference/api/documents#add-or-update-documents) endpoint. This endpoint accepts the following content types: @@ -121,20 +121,20 @@ This endpoint accepts the following content types: | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Query parameters -| Query Parameter | Default Value | Description | -| :--------------- | :------------ | :---------------------------------------------------------------------------- | -| **`primaryKey`** | `null` | [Primary key](/learn/core_concepts/primary_key.md#primary-key-2) of the index | -| **`csvDelimiter`** | `","` | Configure the character separating CSV fields. Must be a string containing [one ASCII character](https://www.rfc-editor.org/rfc/rfc20). | +| Query Parameter | Default Value | Description | +| :----------------- | :------------ | :-------------------------------------------------------------------------------------------------------------------------------------- | +| **`primaryKey`** | `null` | [Primary key](/learn/core_concepts/primary_key#primary-key-2) of the index | +| **`csvDelimiter`** | `","` | Configure the character separating CSV fields. Must be a string containing [one ASCII character](https://www.rfc-editor.org/rfc/rfc20). | -If you want to [set the primary key of your index on document addition](/learn/core_concepts/primary_key.md#setting-the-primary-key-on-document-addition), it can only be done **the first time you add documents** to the index. After this, the `primaryKey` parameter will be ignored if given. - -::: warning + Configuring `csvDelimiter` and sending data with a content type other than CSV will cause Meilisearch to throw an error. -::: + + +If you want to [set the primary key of your index on document addition](/learn/core_concepts/primary_key#setting-the-primary-key-on-document-addition), it can only be done **the first time you add documents** to the index. After this, the `primaryKey` parameter will be ignored if given. ### Body @@ -168,7 +168,7 @@ An array of documents. Each document is represented as a JSON object. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Add or update documents @@ -176,11 +176,11 @@ You can use this `taskUid` to get more details on [the status of the task](/refe Add a list of documents or update them if they already exist. If the provided index does not exist, it will be created. -If you send an already existing document (same [document id](/learn/core_concepts/primary_key.md#document-id)) the old document will be only partially updated according to the fields of the new document. Thus, any fields not present in the new document are kept and remain unchanged. +If you send an already existing document (same [document id](/learn/core_concepts/primary_key#document-id)) the old document will be only partially updated according to the fields of the new document. Thus, any fields not present in the new document are kept and remain unchanged. -To completely overwrite a document, check out the [add or replace documents route](/reference/api/documents.md#add-or-replace-documents). +To completely overwrite a document, check out the [add or replace documents route](/reference/api/documents#add-or-replace-documents). -If you want to set the [**primary key** of your index](/learn/core_concepts/primary_key.md#setting-the-primary-key-on-document-addition) through this route, you may only do so **the first time you add documents** to the index. If you try to set the primary key after having added documents to the index, the task will return an error. +If you want to set the [**primary key** of your index](/learn/core_concepts/primary_key#setting-the-primary-key-on-document-addition) through this route, you may only do so **the first time you add documents** to the index. If you try to set the primary key after having added documents to the index, the task will return an error. This endpoint accepts the following content types: @@ -192,18 +192,18 @@ This endpoint accepts the following content types: | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Query parameters -| Query Parameter | Default Value | Description | -| :--------------- | :------------ | :-------------------------------------------------------------------------------- | -| **`primaryKey`** | `null` | [Primary key](/learn/core_concepts/primary_key.md#primary-key-2) of the documents | -| **`csvDelimiter`** | `","` | Configure the character separating CSV fields. Must be a string containing [one ASCII character](https://www.rfc-editor.org/rfc/rfc20). | +| Query Parameter | Default Value | Description | +| :----------------- | :------------ | :-------------------------------------------------------------------------------------------------------------------------------------- | +| **`primaryKey`** | `null` | [Primary key](/learn/core_concepts/primary_key#primary-key-2) of the documents | +| **`csvDelimiter`** | `","` | Configure the character separating CSV fields. Must be a string containing [one ASCII character](https://www.rfc-editor.org/rfc/rfc20). | -::: warning + Configuring `csvDelimiter` and sending data with a content type other than CSV will cause Meilisearch to throw an error. -::: + ### Body @@ -222,9 +222,9 @@ An array of documents. Each document is represented as a JSON object. -This document is an update of the document found in [add or replace document](/reference/api/documents.md#add-or-replace-documents). +This document is an update of the document found in [add or replace document](/reference/api/documents#add-or-replace-documents). -The documents are matched because they have the same [primary key](/learn/core_concepts/documents.md#primary-field) value `id: 287947`. This route will update the `title` field as it changed from `Shazam` to `Shazam ⚡️` and add the new `genres` field to that document. The rest of the document will remain unchanged. +The documents are matched because they have the same [primary key](/learn/core_concepts/documents#primary-field) value `id: 287947`. This route will update the `title` field as it changed from `Shazam` to `Shazam ⚡️` and add the new `genres` field to that document. The rest of the document will remain unchanged. #### Response: `202 Accepted` @@ -238,7 +238,7 @@ The documents are matched because they have the same [primary key](/learn/core_c } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Delete all documents @@ -250,7 +250,7 @@ Delete all documents in the specified index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Example @@ -268,7 +268,7 @@ Delete all documents in the specified index. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Delete one document @@ -280,8 +280,8 @@ Delete one document based on its unique id. | Name | Type | Description | | :------------------ | :------------- | :--------------------------------------------------------------------------------------- | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | -| **`document_id`** * | String/Integer | [Document id](/learn/core_concepts/primary_key.md#document-id) of the requested document | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | +| **`document_id`** * | String/Integer | [Document id](/learn/core_concepts/primary_key#document-id) of the requested document | ### Example @@ -299,7 +299,7 @@ Delete one document based on its unique id. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Delete documents by batch @@ -311,7 +311,7 @@ Delete a selection of documents based on an array of document id's. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Body @@ -337,4 +337,4 @@ An array of numbers containing the unique id's of the documents to be deleted. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). diff --git a/reference/api/dump.md b/reference/api/dump.mdx similarity index 80% rename from reference/api/dump.md rename to reference/api/dump.mdx index 6e922986f1..de01f66653 100644 --- a/reference/api/dump.md +++ b/reference/api/dump.mdx @@ -2,17 +2,17 @@ The `/dumps` route allows the creation of database dumps. Dumps are `.dump` files that can be used to restore Meilisearch data or migrate between different versions. -[Learn more about dumps](/learn/advanced/dumps.md). +[Learn more about dumps](/learn/advanced/dumps). ## Create a dump -Triggers a dump creation task. Once the process is complete, a dump is created in the [dump directory](/learn/configuration/instance_options.md#dump-directory). If the dump directory does not exist yet, it will be created. +Triggers a dump creation task. Once the process is complete, a dump is created in the [dump directory](/learn/configuration/instance_options#dump-directory). If the dump directory does not exist yet, it will be created. Dump tasks take priority over all other tasks in the queue. This means that a newly created dump task will be processed as soon as the current task is finished. -[Learn more about asynchronous operations](/learn/advanced/asynchronous_operations.md). +[Learn more about asynchronous operations](/learn/advanced/asynchronous_operations). ### Example @@ -30,4 +30,4 @@ Dump tasks take priority over all other tasks in the queue. This means that a ne } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task) +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task) diff --git a/reference/api/health.md b/reference/api/health.mdx similarity index 100% rename from reference/api/health.md rename to reference/api/health.mdx diff --git a/reference/api/indexes.md b/reference/api/indexes.mdx similarity index 86% rename from reference/api/indexes.md rename to reference/api/indexes.mdx index a4d4fb3243..b698766126 100644 --- a/reference/api/indexes.md +++ b/reference/api/indexes.mdx @@ -2,7 +2,7 @@ The `/indexes` route allows you to create, manage, and delete your indexes. -[Learn more about indexes](/learn/core_concepts/indexes.md). +[Learn more about indexes](/learn/core_concepts/indexes). ## Index object @@ -17,10 +17,10 @@ The `/indexes` route allows you to create, manage, and delete your indexes. | Name | Type | Default value | Description | | :--------------- | :-------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **`uid`** | String | N/A | [Unique identifier](/learn/core_concepts/indexes.md#index-uid) of the index. Once created, it cannot be changed | +| **`uid`** | String | N/A | [Unique identifier](/learn/core_concepts/indexes#index-uid) of the index. Once created, it cannot be changed | | **`createdAt`** | String | N/A | Creation date of the index, represented in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. Auto-generated on index creation | | **`updatedAt`** | String | N/A | Latest date of index update, represented in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. Auto-generated on index creation or update | -| **`primaryKey`** | String / `null` | `null` | [Primary key](/learn/core_concepts/primary_key.md#primary-field) of the index. If not specified, Meilisearch [guesses your primary key](/learn/core_concepts/primary_key.md#meilisearch-guesses-your-primary-key) from the first document you add to the index | +| **`primaryKey`** | String / `null` | `null` | [Primary key](/learn/core_concepts/primary_key#primary-field) of the index. If not specified, Meilisearch [guesses your primary key](/learn/core_concepts/primary_key#meilisearch-guesses-your-primary-key) from the first document you add to the index | ## List all indexes @@ -88,7 +88,7 @@ Get information about an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Example @@ -115,8 +115,8 @@ Create an index. | Name | Type | Default value | Description | | :--------------- | :-------------- | :------------ | :---------------------------------------------------------------------------------------- | -| **`uid`** * | String | N/A | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | -| **`primaryKey`** | String / `null` | `null` | [`Primary key`](/learn/core_concepts/primary_key.md#primary-field) of the requested index | +| **`uid`** * | String | N/A | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | +| **`primaryKey`** | String / `null` | `null` | [`Primary key`](/learn/core_concepts/primary_key#primary-field) of the requested index | ```json { @@ -141,31 +141,31 @@ Create an index. } ``` -You can use the response's `taskUid` to [track the status of your request](/reference/api/tasks.md#get-one-task). +You can use the response's `taskUid` to [track the status of your request](/reference/api/tasks#get-one-task). ## Update an index -Update an index's [primary key](/learn/core_concepts/primary_key.md#primary-key). You can freely update the primary key of an index as long as it contains no documents. +Update an index's [primary key](/learn/core_concepts/primary_key#primary-key). You can freely update the primary key of an index as long as it contains no documents. To change the primary key of an index that already contains documents, you must first delete all documents in that index. You may then change the primary key and index your dataset again. -::: note + It is not possible to change an index's `uid`. -::: + ### Path parameters | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Body | Name | Type | Default value | Description | | :----------------- | :-------------- | :------------ | :---------------------------------------------------------------------------------------- | -| **`primaryKey`** * | String / `null` | N/A | [`Primary key`](/learn/core_concepts/primary_key.md#primary-field) of the requested index | +| **`primaryKey`** * | String / `null` | N/A | [`Primary key`](/learn/core_concepts/primary_key#primary-field) of the requested index | ### Example @@ -183,7 +183,7 @@ It is not possible to change an index's `uid`. } ``` -You can use the response's `taskUid` to [track the status of your request](/reference/api/tasks.md#get-one-task). +You can use the response's `taskUid` to [track the status of your request](/reference/api/tasks#get-one-task). ## Delete an index @@ -195,7 +195,7 @@ Delete an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Example @@ -213,7 +213,7 @@ Delete an index. } ``` -You can use the response's `taskUid` to [track the status of your request](/reference/api/tasks.md#get-one-task). +You can use the response's `taskUid` to [track the status of your request](/reference/api/tasks#get-one-task). ## Swap indexes @@ -225,7 +225,7 @@ Swapping indexes is an atomic transaction: **either all indexes are successfully Swapping `indexA` and `indexB` will also replace every mention of `indexA` by `indexB` and vice-versa in the task history. `enqueued` tasks are left unmodified. -[To learn more about index swapping, refer to this short guide.](/learn/core_concepts/indexes.md#swapping-indexes) +[To learn more about index swapping, refer to this short guide.](/learn/core_concepts/indexes#swapping-indexes) ### Body @@ -237,9 +237,9 @@ An array of objects. Each object has only one key: `indexes`. Each `indexes` array must contain only two elements: the `indexUid`s of the two indexes to be swapped. Sending an empty array (`[]`) is valid, but no swap operation will be performed. -::: note + You can swap multiple pairs of indexes with a single request. To do so, there must be one object for each pair of indexes to be swapped. -::: + ### Example @@ -257,8 +257,8 @@ You can swap multiple pairs of indexes with a single request. To do so, there mu } ``` -::: note -Since `indexSwap` is a [global task](/learn/advanced/asynchronous_operations.md#global-tasks), the `indexUid` is always `null`. -::: + +Since `indexSwap` is a [global task](/learn/advanced/asynchronous_operations#global-tasks), the `indexUid` is always `null`. + -You can use the response's `taskUid` to [track the status of your request](/reference/api/tasks.md#get-one-task). +You can use the response's `taskUid` to [track the status of your request](/reference/api/tasks#get-one-task). diff --git a/reference/api/keys.md b/reference/api/keys.mdx similarity index 79% rename from reference/api/keys.md rename to reference/api/keys.mdx index 671639933c..1a029c4802 100644 --- a/reference/api/keys.md +++ b/reference/api/keys.mdx @@ -1,12 +1,12 @@ # Keys -The `/keys` route allows you to create, manage, and delete API keys. To use these endpoints, you must first [set the master key](/learn/security/master_api_keys.md#protecting-a-meilisearch-instance). Once a master key is set, you can access these endpoints by supplying it in the header of the request, or using API keys that have access to the `keys.get`, `keys.create`, `keys.update`, or `keys.delete` actions. +The `/keys` route allows you to create, manage, and delete API keys. To use these endpoints, you must first [set the master key](/learn/security/master_api_keys#protecting-a-meilisearch-instance). Once a master key is set, you can access these endpoints by supplying it in the header of the request, or using API keys that have access to the `keys.get`, `keys.create`, `keys.update`, or `keys.delete` actions. -::: warning -Accessing the `/keys` route without setting a master key will throw a [`missing_master_key`](/reference/errors/error_codes.md#missing-master-key) error. -::: + +Accessing the `/keys` route without setting a master key will throw a [`missing_master_key`](/reference/errors/error_codes#missing-master-key) error. + -[Learn more about managing keys and their rights](/learn/security/master_api_keys.md). +[Learn more about managing keys and their rights](/learn/security/master_api_keys). ## Key object @@ -30,67 +30,67 @@ Accessing the `/keys` route without setting a master key will throw a [`missing_ ### `name` -**Type**: String -**Default value**: `null` +**Type**: String
+**Default value**: `null`
**Description**: A human-readable name for the key ### `description` -**Type**: String -**Default value**: `null` +**Type**: String
+**Default value**: `null`
**Description**: A description for the key. You can add any important information about the key here ### `uid` -**Type**: String -**Default value**: N/A +**Type**: String
+**Default value**: N/A
**Description**: A [uuid v4](https://www.sohamkamani.com/uuid-versions-explained) to identify the API key. If not specified, it is automatically generated by Meilisearch ### `key` -**Type**: String -**Default value**: N/A -**Description**: An alphanumeric key value generated by Meilisearch by hashing the `uid` and the master key on API key creation. Used for authorization when [making calls to a protected Meilisearch instance](/learn/security/master_api_keys.md#communicating-with-a-protected-instance) +**Type**: String
+**Default value**: N/A
+**Description**: An alphanumeric key value generated by Meilisearch by hashing the `uid` and the master key on API key creation. Used for authorization when [making calls to a protected Meilisearch instance](/learn/security/master_api_keys#communicating-with-a-protected-instance) This value is also used as the `{key}` path variable to [update](#update-a-key), [delete](#delete-a-key), or [get](#get-one-key) a specific key. -::: note + Since `key` is a hash of the `uid` and master key, `key` values are deterministic between instances sharing the same configuration. This means if the master key changes, all `key` values are automatically changed. Since the `key` field depends on the master key, it is computed at runtime and therefore not propagated to dumps and snapshots. As a result, even if a malicious user comes into possession of your dumps or snapshots, they will not have access to your instance's API keys. -::: + ### `actions` -**Type**: Array -**Default value**: N/A +**Type**: Array
+**Default value**: N/A
**Description**: An array of API actions permitted for the key, represented as strings. API actions are only possible on authorized [`indexes`](#indexes). `["*"]` for all actions. You can use `*` as a wildcard to access all endpoints for the `documents`, `indexes`, `tasks`, `settings`, `stats` and `dumps` actions. For example, `documents.*` gives access to all document actions. -::: warning + For security reasons, we do not recommend creating keys that can perform all actions. -::: + | Name | Description | | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **`search`** | Provides access to both [`POST`](/reference/api/search.md#search-in-an-index-with-post-route) and [`GET`](/reference/api/search.md#search-in-an-index-with-get-route) search endpoints | -| **`documents.add`** | Provides access to the [add documents](/reference/api/documents.md#add-or-replace-documents) and [update documents](/reference/api/documents.md#add-or-update-documents) endpoints | -| **`documents.get`** | Provides access to the [get one document](/reference/api/documents.md#get-one-document) and [get documents](/reference/api/documents.md#get-documents) endpoints | -| **`documents.delete`** | Provides access to the [delete one document](/reference/api/documents.md#delete-one-document), [delete all documents](/reference/api/documents.md#delete-all-documents), and [batch delete](/reference/api/documents.md#delete-documents-by-batch) endpoints | -| **`indexes.create`** | Provides access to the [create index](/reference/api/indexes.md#create-an-index) endpoint | -| **`indexes.get`** | Provides access to the [get one index](/reference/api/indexes.md#get-one-index) and [list all indexes](/reference/api/indexes.md#list-all-indexes) endpoints. **Non-authorized `indexes` will be omitted from the response** | -| **`indexes.update`** | Provides access to the [update index](/reference/api/indexes.md#update-an-index) endpoint | -| **`indexes.delete`** | Provides access to the [delete index](/reference/api/indexes.md#delete-an-index) endpoint | +| **`search`** | Provides access to both [`POST`](/reference/api/search#search-in-an-index-with-post-route) and [`GET`](/reference/api/search#search-in-an-index-with-get-route) search endpoints | +| **`documents.add`** | Provides access to the [add documents](/reference/api/documents#add-or-replace-documents) and [update documents](/reference/api/documents#add-or-update-documents) endpoints | +| **`documents.get`** | Provides access to the [get one document](/reference/api/documents#get-one-document) and [get documents](/reference/api/documents#get-documents) endpoints | +| **`documents.delete`** | Provides access to the [delete one document](/reference/api/documents#delete-one-document), [delete all documents](/reference/api/documents#delete-all-documents), and [batch delete](/reference/api/documents#delete-documents-by-batch) endpoints | +| **`indexes.create`** | Provides access to the [create index](/reference/api/indexes#create-an-index) endpoint | +| **`indexes.get`** | Provides access to the [get one index](/reference/api/indexes#get-one-index) and [list all indexes](/reference/api/indexes#list-all-indexes) endpoints. **Non-authorized `indexes` will be omitted from the response** | +| **`indexes.update`** | Provides access to the [update index](/reference/api/indexes#update-an-index) endpoint | +| **`indexes.delete`** | Provides access to the [delete index](/reference/api/indexes#delete-an-index) endpoint | | **`indexes.swap`** | Provides access to the swap indexes endpoint. **Non-authorized `indexes` will not be swapped** | -| **`tasks.get`** | Provides access to the [get one task](/reference/api/tasks.md#get-one-task) and [get tasks](/reference/api/tasks.md#get-tasks) endpoints. **Tasks from non-authorized `indexes` will be omitted from the response** | -| **`tasks.cancel`** | Provides access to the [cancel tasks](/reference/api/tasks.md#cancel-tasks) endpoint. **Tasks from non-authorized `indexes` will not be canceled** | -| **`tasks.delete`** | Provides access to the [delete tasks](/reference/api/tasks.md#delete-tasks) endpoint. **Tasks from non-authorized `indexes` will not be deleted** | -| **`settings.get`** | Provides access to the [get settings](/reference/api/settings.md#get-settings) endpoint and equivalents for all subroutes | -| **`settings.update`** | Provides access to the [update settings](/reference/api/settings.md#update-settings) and [reset settings](/reference/api/settings.md#reset-settings) endpoints and equivalents for all subroutes | -| **`stats.get`** | Provides access to the [get stats of an index](/reference/api/stats.md#get-stats-of-an-index) endpoint and the [get stats of all indexes](/reference/api/stats.md#get-stats-of-all-indexes) endpoint. For the latter, **non-authorized `indexes` are omitted from the response** | -| **`dumps.create`** | Provides access to the [create dump](/reference/api/dump.md#create-a-dump) endpoint. **Not restricted by `indexes`** | -| **`version`** | Provides access to the [get Meilisearch version](/reference/api/version.md#get-version-of-meilisearch) endpoint | +| **`tasks.get`** | Provides access to the [get one task](/reference/api/tasks#get-one-task) and [get tasks](/reference/api/tasks#get-tasks) endpoints. **Tasks from non-authorized `indexes` will be omitted from the response** | +| **`tasks.cancel`** | Provides access to the [cancel tasks](/reference/api/tasks#cancel-tasks) endpoint. **Tasks from non-authorized `indexes` will not be canceled** | +| **`tasks.delete`** | Provides access to the [delete tasks](/reference/api/tasks#delete-tasks) endpoint. **Tasks from non-authorized `indexes` will not be deleted** | +| **`settings.get`** | Provides access to the [get settings](/reference/api/settings#get-settings) endpoint and equivalents for all subroutes | +| **`settings.update`** | Provides access to the [update settings](/reference/api/settings#update-settings) and [reset settings](/reference/api/settings#reset-settings) endpoints and equivalents for all subroutes | +| **`stats.get`** | Provides access to the [get stats of an index](/reference/api/stats#get-stats-of-an-index) endpoint and the [get stats of all indexes](/reference/api/stats#get-stats-of-all-indexes) endpoint. For the latter, **non-authorized `indexes` are omitted from the response** | +| **`dumps.create`** | Provides access to the [create dump](/reference/api/dump#create-a-dump) endpoint. **Not restricted by `indexes`** | +| **`version`** | Provides access to the [get Meilisearch version](/reference/api/version#get-version-of-meilisearch) endpoint | | **`keys.get`** | Provides access to the [get all keys](#get-all-keys) endpoint | | **`keys.create`** | Provides access to the [create key](#create-a-key) endpoint | | **`keys.update`** | Provides access to the [update key](#update-a-key) endpoint | @@ -98,28 +98,28 @@ For security reasons, we do not recommend creating keys that can perform all act ### `indexes` -**Type**: Array -**Default value**: N/A +**Type**: Array
+**Default value**: N/A
**Description**: An array of indexes the key is authorized to act on. Use`["*"]` for all indexes. Only the key's [permitted actions](#actions) can be used on these indexes. You can also use the `*` character as a wildcard by adding it at the end of a string. This allows an API key access to all index names starting with that string. For example, using `"indexes": ["movie*"]` will give the API key access to the `movies` and `movie_ratings` indexes. ### `expiresAt` -**Type**: String -**Default value**: N/A +**Type**: String
+**Default value**: N/A
**Description**: Date and time when the key will expire, represented in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. `null` if the key never expires ### `createdAt` -**Type**: String -**Default value**: `null` +**Type**: String
+**Default value**: `null`
**Description**: Date and time when the key was created, represented in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format ### `updatedAt` -**Type**: String -**Default value**: `null` +**Type**: String
+**Default value**: `null`
**Description**: Date and time when the key was last updated, represented in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format ## Get all keys @@ -209,15 +209,15 @@ Results can be paginated using the `offset` and `limit` query parameters. } ``` -::: note + API keys are displayed in descending order based on their `createdAt` date. This means that the most recently created keys appear first. -::: + ## Get one key -Get information on the specified key. Attempting to use this endpoint with a non-existent or deleted key will result in [an error](/reference/errors/error_codes.md#api-key-not-found). +Get information on the specified key. Attempting to use this endpoint with a non-existent or deleted key will result in [an error](/reference/errors/error_codes#api-key-not-found). ### Path parameters diff --git a/reference/api/multi_search.md b/reference/api/multi_search.mdx similarity index 57% rename from reference/api/multi_search.md rename to reference/api/multi_search.mdx index abd51d8a42..20f75d867c 100644 --- a/reference/api/multi_search.md +++ b/reference/api/multi_search.mdx @@ -1,4 +1,4 @@ -# Multi search +# Multi-search The `/multi-search` route allows you to perform multiple search queries on one or more indexes by bundling them into a single HTTP request. Multi-search is also known as federated search. @@ -16,26 +16,26 @@ The `/multi-search` route allows you to perform multiple search queries on one o | Search parameter | Type | Default value | Description | | :------------------------------------------------------------------------------ | :--------------- | :------------ | :-------------------------------------------------- | -| **[`indexUid`](/learn/core_concepts/indexes.md#index-uid)** | String | N/A | `uid` of the requested index | -| **[`q`](/reference/api/search.md#query-q)** | String | `""` | Query string | -| **[`offset`](/reference/api/search.md#offset)** | Integer | `0` | Number of documents to skip | -| **[`limit`](/reference/api/search.md#limit)** | Integer | `20` | Maximum number of documents returned | -| **[`hitsPerPage`](/reference/api/search.md#number-of-results-per-page)** | Integer | `1` | Maximum number of documents returned for a page | -| **[`page`](/reference/api/search.md#page)** | Integer | `1` | Request a specific page of results | -| **[`filter`](/reference/api/search.md#filter)** | Array of strings | `null` | Filter queries by an attribute's value | -| **[`facets`](/reference/api/search.md#facets)** | Array of strings | `null` | Display the count of matches per facet | -| **[`attributesToRetrieve`](/reference/api/search.md#attributes-to-retrieve)** | Array of strings | `["*"]` | Attributes to display in the returned documents | -| **[`attributesToCrop`](/reference/api/search.md#attributes-to-crop)** | Array of strings | `null` | Attributes whose values have to be cropped | -| **[`cropLength`](/reference/api/search.md#crop-length)** | Integer | `10` | Maximum length of cropped value in words | -| **[`cropMarker`](/reference/api/search.md#crop-marker)** | String | `"…"` | String marking crop boundaries | -| **[`attributesToHighlight`](/reference/api/search.md#attributes-to-highlight)** | Array of strings | `null` | Highlight matching terms contained in an attribute | -| **[`highlightPreTag`](/reference/api/search.md#highlight-tags)** | String | `""` | String inserted at the start of a highlighted term | -| **[`highlightPostTag`](/reference/api/search.md#highlight-tags)** | String | `""` | String inserted at the end of a highlighted term | -| **[`showMatchesPosition`](/reference/api/search.md#show-matches-position)** | Boolean | `false` | Return matching terms location | -| **[`sort`](/reference/api/search.md#sort)** | Array of strings | `null` | Sort search results by an attribute's value | -| **[`matchingStrategy`](/reference/api/search.md#matching-strategy)** | String | `last` | Strategy used to match query terms within documents | - -[Learn more about how to use each search parameter](/reference/api/search.md#search-parameters). +| **[`indexUid`](/learn/core_concepts/indexes#index-uid)** | String | N/A | `uid` of the requested index | +| **[`q`](/reference/api/search#query-q)** | String | `""` | Query string | +| **[`offset`](/reference/api/search#offset)** | Integer | `0` | Number of documents to skip | +| **[`limit`](/reference/api/search#limit)** | Integer | `20` | Maximum number of documents returned | +| **[`hitsPerPage`](/reference/api/search#number-of-results-per-page)** | Integer | `1` | Maximum number of documents returned for a page | +| **[`page`](/reference/api/search#page)** | Integer | `1` | Request a specific page of results | +| **[`filter`](/reference/api/search#filter)** | Array of strings | `null` | Filter queries by an attribute's value | +| **[`facets`](/reference/api/search#facets)** | Array of strings | `null` | Display the count of matches per facet | +| **[`attributesToRetrieve`](/reference/api/search#attributes-to-retrieve)** | Array of strings | `["*"]` | Attributes to display in the returned documents | +| **[`attributesToCrop`](/reference/api/search#attributes-to-crop)** | Array of strings | `null` | Attributes whose values have to be cropped | +| **[`cropLength`](/reference/api/search#crop-length)** | Integer | `10` | Maximum length of cropped value in words | +| **[`cropMarker`](/reference/api/search#crop-marker)** | String | `"…"` | String marking crop boundaries | +| **[`attributesToHighlight`](/reference/api/search#attributes-to-highlight)** | Array of strings | `null` | Highlight matching terms contained in an attribute | +| **[`highlightPreTag`](/reference/api/search#highlight-tags)** | String | `""` | String inserted at the start of a highlighted term | +| **[`highlightPostTag`](/reference/api/search#highlight-tags)** | String | `""` | String inserted at the end of a highlighted term | +| **[`showMatchesPosition`](/reference/api/search#show-matches-position)** | Boolean | `false` | Return matching terms location | +| **[`sort`](/reference/api/search#sort)** | Array of strings | `null` | Sort search results by an attribute's value | +| **[`matchingStrategy`](/reference/api/search#matching-strategy)** | String | `last` | Strategy used to match query terms within documents | + +[Learn more about how to use each search parameter](/reference/api/search#search-parameters). ### Response @@ -47,7 +47,7 @@ Each search result object is composed of the following fields: | Name | Type | Description | | :----------------------- | :--------------- | :-------------------------------------------------------------------------------------- | -| **`indexUid`** | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`indexUid`** | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | | **`hits`** | Array of objects | Results of the query | | **`offset`** | Number | Number of documents skipped | | **`limit`** | Number | Number of documents to take | @@ -56,8 +56,8 @@ Each search result object is composed of the following fields: | **`totalPages`** | Number | Exhaustive total number of search result pages | | **`hitsPerPage`** | Number | Number of results on each page | | **`page`** | Number | Current search results page | -| **`facetDistribution`** | Object | **[Distribution of the given facets](/reference/api/search.md#facetdistribution)** | -| **`facetStats`** | Object | [The numeric `min` and `max` values per facet](/reference/api/search.md#facetstats) | +| **`facetDistribution`** | Object | **[Distribution of the given facets](/reference/api/search#facetdistribution)** | +| **`facetStats`** | Object | [The numeric `min` and `max` values per facet](/reference/api/search#facetstats) | | **`processingTimeMs`** | Number | Processing time of the query | | **`query`** | String | Query originating the response | diff --git a/reference/api/overview.md b/reference/api/overview.mdx similarity index 84% rename from reference/api/overview.md rename to reference/api/overview.mdx index 608e93ecf4..3c898066e0 100644 --- a/reference/api/overview.md +++ b/reference/api/overview.mdx @@ -1,6 +1,6 @@ # API reference -Welcome to the Meilisearch API documentation. If you are new to Meilisearch, check out our [quick start guide!](/learn/getting_started/quick_start.md) +Welcome to the Meilisearch API documentation. If you are new to Meilisearch, check out our [quick start guide!](/learn/getting_started/quick_start) Meilisearch is a RESTful API. This page describes the general behavior of the API. @@ -21,18 +21,19 @@ This API documentation uses the following conventions: ## Authorization -By [providing Meilisearch with a master key at launch](/learn/security/master_api_keys.md#protecting-a-meilisearch-instance), you protect your instance from unauthorized requests. The provided master key must be at least 16 bytes. From then on, you must include the `Authorization` header along with a valid API key to access protected routes (all routes except [`/health`](/reference/api/health.md). +By [providing Meilisearch with a master key at launch](/learn/security/master_api_keys#protecting-a-meilisearch-instance), you protect your instance from unauthorized requests. The provided master key must be at least 16 bytes. From then on, you must include the `Authorization` header along with a valid API key to access protected routes (all routes except [`/health`](/reference/api/health). -The [`/keys`](/reference/api/keys.md) route can only be accessed using the master key. For security reasons, we recommend using regular API keys for all other routes. +The [`/keys`](/reference/api/keys) route can only be accessed using the master key. For security reasons, we recommend using regular API keys for all other routes. + + +v0.24 and below use the `X-MEILI-API-KEY: apiKey` authorization header: -::: note - v0.24 and below use the `X-MEILI-API-KEY: apiKey` authorization header: -::: + -[To learn more about keys and security, refer to our dedicated guide.](/learn/security/master_api_keys.md) +[To learn more about keys and security, refer to our dedicated guide.](/learn/security/master_api_keys) ## Pagination @@ -48,7 +49,7 @@ All paginated responses contain the following fields: ### `/tasks` endpoint -Since the `/tasks` endpoint uses a different type of pagination, the response contains different fields. You can read more about it in the [tasks API reference](/reference/api/tasks.md#get-tasks). +Since the `/tasks` endpoint uses a different type of pagination, the response contains different fields. You can read more about it in the [tasks API reference](/reference/api/tasks#get-tasks). ## Parameters @@ -82,7 +83,7 @@ Meilisearch currently supports the following formats: - `Content-Type: application/x-ndjson` for NDJSON - `Content-Type: text/csv` for CSV -Only the [add documents](/reference/api/documents.md#add-or-replace-documents) and [update documents](/reference/api/documents.md#add-or-update-documents) endpoints accept NDJSON and CSV. For all others, use `Content-Type: application/json`. +Only the [add documents](/reference/api/documents#add-or-replace-documents) and [update documents](/reference/api/documents#add-or-update-documents) endpoints accept NDJSON and CSV. For all others, use `Content-Type: application/json`. ### Content encoding @@ -128,9 +129,9 @@ Meilisearch is an **asynchronous API**. This means that in response to most writ } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). -See more information about [asynchronous operations](/learn/advanced/asynchronous_operations.md). +See more information about [asynchronous operations](/learn/advanced/asynchronous_operations). ## Data types diff --git a/reference/api/search.md b/reference/api/search.mdx similarity index 89% rename from reference/api/search.md rename to reference/api/search.mdx index dbbd562d85..008552cc5d 100644 --- a/reference/api/search.md +++ b/reference/api/search.mdx @@ -1,7 +1,5 @@ --- - -sidebarDepth: 2 - +sidebarDepth: 3 --- # Search @@ -21,15 +19,15 @@ Search for documents matching a specific query in the given index. This is the preferred endpoint to perform search when an API key is required, as it allows for [preflight requests](https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request) to be cached. Caching preflight requests **considerably improves search speed**. -::: note -By default, [this endpoint returns a maximum of 1000 results](/learn/advanced/known_limitations.md#maximum-number-of-results-per-search). If you want to scrape your database, use the [get documents endpoint](/reference/api/documents.md#get-documents) instead. -::: + +By default, [this endpoint returns a maximum of 1000 results](/learn/advanced/known_limitations#maximum-number-of-results-per-search). If you want to scrape your database, use the [get documents endpoint](/reference/api/documents#get-documents) instead. + ### Path parameters | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Body @@ -57,7 +55,7 @@ By default, [this endpoint returns a maximum of 1000 results](/learn/advanced/kn #### Placeholder search -Placeholder search is a search with an empty `q` parameter. Since there is no query term, the [built-in ranking rules](/learn/core_concepts/relevancy.md#ranking-rules) **do not apply.** Only [sort](/learn/core_concepts/relevancy.md#_5-sort) and [custom ranking rules](/learn/core_concepts/relevancy.md#custom-rules) are taken into account. +Placeholder search is a search with an empty `q` parameter. Since there is no query term, the [built-in ranking rules](/learn/core_concepts/relevancy#ranking-rules) **do not apply.** Only [sort](/learn/core_concepts/relevancy#_5-sort) and [custom ranking rules](/learn/core_concepts/relevancy#custom-rules) are taken into account. If the index has no sort or custom ranking rules, the results are returned in the order of their internal database position. @@ -88,9 +86,9 @@ By default, Meilisearch only returns an estimate of the total number of search r If you require the total number of search results, use the `hitsPerPage` and `page` search parameters in your query. The response to this query replaces `estimatedTotalHits` with `totalHits` and includes an extra field with number of search results pages based on your `hitsPerPage`: `totalPages`. Using `totalHits` and `totalPages` may result in slightly reduced performance, but is recommended when creating UI elements such as numbered page selectors. -Neither `estimatedTotalHits` nor `totalHits` can exceed the limit configured in [the `maxTotalHits` index setting](/reference/api/settings.md#pagination). +Neither `estimatedTotalHits` nor `totalHits` can exceed the limit configured in [the `maxTotalHits` index setting](/reference/api/settings#pagination). -You can [read more about pagination in our dedicated guide](/learn/advanced/pagination.md). +You can [read more about pagination in our dedicated guide](/learn/advanced/pagination). ### Example @@ -131,21 +129,21 @@ You can [read more about pagination in our dedicated guide](/learn/advanced/pagi Search for documents matching a specific query in the given index. -::: warning -This endpoint only accepts [string filter expressions](/learn/advanced/filtering.md#filter-expressions). -::: + +This endpoint only accepts [string filter expressions](/learn/advanced/filtering#filter-expressions). + -This endpoint should only be used when no API key is required. If an API key is required, use the [POST](/reference/api/search.md#search-in-an-index-with-post-route) route instead. +This endpoint should only be used when no API key is required. If an API key is required, use the [POST](/reference/api/search#search-in-an-index-with-post-route) route instead. -:::note -By default, [this endpoint returns a maximum of 1000 results](/learn/advanced/known_limitations.md#maximum-number-of-results-per-search). If you want to scrape your database, use the [get documents endpoint](/reference/api/documents.md#get-documents) instead. -::: + +By default, [this endpoint returns a maximum of 1000 results](/learn/advanced/known_limitations#maximum-number-of-results-per-search). If you want to scrape your database, use the [get documents endpoint](/reference/api/documents#get-documents) instead. + ### Path parameters | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Query parameters @@ -233,11 +231,11 @@ Query terms enclosed in double quotes are treated as [phrase searches](#query-q) Here follows an exhaustive description of each search parameter currently available when using the search endpoint. Unless otherwise noted, all parameters are valid for the `GET /indexes/{index_uid}/search`, `POST /indexes/{index_uid}/search`, and `/multi-search` routes. -::: warning -If [using the `GET` route to perform a search](/reference/api/search.md#search-in-an-index-with-get-route), all parameters must be **URL-encoded**. + +If [using the `GET` route to perform a search](/reference/api/search#search-in-an-index-with-get-route), all parameters must be **URL-encoded**. -This is not necessary when using the `POST` route or one of our [SDKs](/learn/what_is_meilisearch/sdks.md). -::: +This is not necessary when using the `POST` route or one of our [SDKs](/learn/what_is_meilisearch/sdks). + ### Overview @@ -263,15 +261,15 @@ This is not necessary when using the `POST` route or one of our [SDKs](/learn/wh ### Query (q) -**Parameter**: `q` -**Expected value**: Any string +**Parameter**: `q`
+**Expected value**: Any string
**Default value**: `null` Sets the search terms. -::: warning -Meilisearch only considers the first ten words of any given search query. This is necessary in order to deliver a [fast search-as-you-type experience](/learn/advanced/known_limitations.md#maximum-number-of-query-words). -::: + +Meilisearch only considers the first ten words of any given search query. This is necessary in order to deliver a [fast search-as-you-type experience](/learn/advanced/known_limitations#maximum-number-of-query-words). + #### Example @@ -309,21 +307,21 @@ Normalization also converts all letters to lowercase. Searching for `"Video"` re #### Placeholder search -When `q` isn't specified, Meilisearch performs a **placeholder search**. A placeholder search returns all searchable documents in an index, modified by any search parameters used and sorted by that index's [custom ranking rules](/learn/core_concepts/relevancy.md#custom-rules). Since there is no query term, the [built-in ranking rules](/learn/core_concepts/relevancy.md#ranking-rules) **do not apply.** +When `q` isn't specified, Meilisearch performs a **placeholder search**. A placeholder search returns all searchable documents in an index, modified by any search parameters used and sorted by that index's [custom ranking rules](/learn/core_concepts/relevancy#custom-rules). Since there is no query term, the [built-in ranking rules](/learn/core_concepts/relevancy#ranking-rules) **do not apply.** If the index has no sort or custom ranking rules, the results are returned in the order of their internal database position. -::: tip -Placeholder search is particularly useful when building a [faceted search interfaces](/learn/advanced/faceted_search.md), as it allows users to view the catalog and alter sorting rules without entering a query. -::: + +Placeholder search is particularly useful when building a [faceted search interfaces](/learn/advanced/faceted_search), as it allows users to view the catalog and alter sorting rules without entering a query. + #### Phrase search If you enclose search terms in double quotes (`"`), Meilisearch will only return documents containing those terms in the order they were given. This is called a **phrase search**. -Phrase searches are case-insensitive and ignore [soft separators such as `-`, `,`, and `:`](/learn/advanced/datatypes.md). Using a hard separator within a phrase search effectively splits it into multiple separate phrase searches: `"Octavia.Butler"` will return the same results as `"Octavia" "Butler"`. +Phrase searches are case-insensitive and ignore [soft separators such as `-`, `,`, and `:`](/learn/advanced/datatypes). Using a hard separator within a phrase search effectively splits it into multiple separate phrase searches: `"Octavia.Butler"` will return the same results as `"Octavia" "Butler"`. -You can combine phrase search and normal queries in a single search request. In this case, Meilisearch will first fetch all documents with exact matches to the given phrase(s), and [then proceed with its default behavior](/learn/core_concepts/relevancy.md). +You can combine phrase search and normal queries in a single search request. In this case, Meilisearch will first fetch all documents with exact matches to the given phrase(s), and [then proceed with its default behavior](/learn/core_concepts/relevancy). ##### Example @@ -331,19 +329,19 @@ You can combine phrase search and normal queries in a single search request. In ### Offset -**Parameter**: `offset` -**Expected value**: Any positive integer +**Parameter**: `offset`
+**Expected value**: Any positive integer
**Default value**: `0` Sets the starting point in the search results, effectively skipping over a given number of documents. Queries using `offset` and `limit` only return an estimate of the total number of search results. -You can [paginate search results](/learn/advanced/pagination.md) by making queries combining both `offset` and `limit`. +You can [paginate search results](/learn/advanced/pagination) by making queries combining both `offset` and `limit`. -::: warning -Setting `offset` to a value greater than an [index's `maxTotalHits`](/reference/api/settings.md#update-pagination-settings) returns an empty array. -::: + +Setting `offset` to a value greater than an [index's `maxTotalHits`](/reference/api/settings#update-pagination-settings) returns an empty array. + #### Example @@ -353,17 +351,17 @@ If you want to skip the **first** result in a query, set `offset` to `1`: ### Limit -**Parameter**: `limit` -**Expected value**: Any positive integer +**Parameter**: `limit`
+**Expected value**: Any positive integer
**Default value**: `20` Sets the maximum number of documents returned by a single query. -You can [paginate search results](/learn/advanced/pagination.md) by making queries combining both `offset` and `limit`. +You can [paginate search results](/learn/advanced/pagination) by making queries combining both `offset` and `limit`. -::: warning -A search query cannot return more results than configured in [`maxTotalHits`](/reference/api/settings.md#pagination-object), even if the value of `limit` is greater than the value of `maxTotalHits`. -::: + +A search query cannot return more results than configured in [`maxTotalHits`](/reference/api/settings#pagination-object), even if the value of `limit` is greater than the value of `maxTotalHits`. + #### Example @@ -373,8 +371,8 @@ If you want your query to return only **two** documents, set `limit` to `2`: ### Number of results per page -**Parameter**: `hitsPerPage` -**Expected value**: Any positive integer +**Parameter**: `hitsPerPage`
+**Expected value**: Any positive integer
**Default value**: `20` Sets the maximum number of documents returned for a single query. The value configured with this parameter dictates the number of total pages: if Meilisearch finds a total of `20` matches for a query and your `hitsPerPage` is set to `5`, `totalPages` is `4`. @@ -383,15 +381,15 @@ Queries containing `hitsPerPage` are exhaustive and do not return an `estimatedT If you set `hitsPerPage` to `0`, Meilisearch processes your request, but does not return any documents. In this case, the response body will include the exhaustive value for `totalHits`. The response body will also include `totalPages`, but its value will be `0`. -You can use `hitsPerPage` and `page` to [paginate search results](/learn/advanced/pagination.md). +You can use `hitsPerPage` and `page` to [paginate search results](/learn/advanced/pagination). -::: note + `hitsPerPage` and `page` take precedence over `offset` and `limit`. If a query contains either `hitsPerPage` or `page`, any values passed to `offset` and `limit` are ignored. -::: + -::: warning -`hitsPerPage` and `page` are resource-intensive options and might negatively impact search performance. This is particularly likely if [`maxTotalHits`](/reference/api/settings.md#pagination) is set to a value higher than its default. -::: + +`hitsPerPage` and `page` are resource-intensive options and might negatively impact search performance. This is particularly likely if [`maxTotalHits`](/reference/api/settings#pagination) is set to a value higher than its default. + #### Example @@ -401,8 +399,8 @@ The following example returns the first 15 results for a query: ### Page -**Parameter**: `page` -**Expected value**: Any positive integer +**Parameter**: `page`
+**Expected value**: Any positive integer
**Default value**: `1` Requests a specific results page. Pages are calculated using the `hitsPerPage` search parameter. @@ -411,15 +409,15 @@ Queries containing `page` are exhaustive and do not return an `estimatedTotalHit If you set `page` to `0`, Meilisearch processes your request, but does not return any documents. In this case, the response body will include the exhaustive values for `totalPages` and `totalHits`. -You can use `hitsPerPage` and `page` to [paginate search results](/learn/advanced/pagination.md). +You can use `hitsPerPage` and `page` to [paginate search results](/learn/advanced/pagination). -::: note + `hitsPerPage` and `page` take precedence over `offset` and `limit`. If a query contains either `hitsPerPage` or `page`, any values passed to `offset` and `limit` are ignored. -::: + -::: warning -`hitsPerPage` and `page` are resource-intensive options and might negatively impact search performance. This is particularly likely if [`maxTotalHits`](/reference/api/settings.md#pagination) is set to a value higher than its default. -::: + +`hitsPerPage` and `page` are resource-intensive options and might negatively impact search performance. This is particularly likely if [`maxTotalHits`](/reference/api/settings#pagination) is set to a value higher than its default. + #### Example @@ -429,13 +427,13 @@ The following example returns the second page of search results: ### Filter -**Parameter**: `filter` -**Expected value**: A filter expression written as a string or an array of strings +**Parameter**: `filter`
+**Expected value**: A filter expression written as a string or an array of strings
**Default value**: `[]` -Uses filter expressions to refine search results. Attributes used as filter criteria must be added to the [`filterableAttributes` list](/reference/api/settings.md#filterable-attributes). +Uses filter expressions to refine search results. Attributes used as filter criteria must be added to the [`filterableAttributes` list](/reference/api/settings#filterable-attributes). -For more information on how to use filters and build filter expressions, [read our guide on filtering and filter expressions](/learn/advanced/filtering.md). +For more information on how to use filters and build filter expressions, [read our guide on filtering and filter expressions](/learn/advanced/filtering). #### Example @@ -459,9 +457,9 @@ You can then use the filter in a search query: If your documents contain `_geo` data, you can use the `_geoRadius` and `_geoBoundingBox` built-in filter rules to filter results according to their geographic position. -:::: tabs + -::: tab _geoRadius + `_geoRadius` establishes a circular area based on a central point and a radius. This filter rule requires three parameters: `lat`, `lng` and `distance_in_meters`. ```json @@ -471,9 +469,10 @@ _geoRadius(lat, lng, distance_in_meters) `lat` and `lng` should be geographic coordinates expressed as floating point numbers. `distance_in_meters` indicates the radius of the area within which you want your results and should be an integer. -::: -::: tab _geoBoundingBox + + + `_geoBoundingBox` establishes a rectangular area based on the coordinates for its top right and bottom left corners. This filter rule requires two arrays of geographic coordinates: ``` @@ -486,15 +485,16 @@ _geoBoundingBox([{lat}, {lng}], [{lat}, {lng}]) Meilisearch will throw an error if the top right corner is under the bottom left corner. -::: -:::: + + + -If any parameters are invalid or missing, Meilisearch returns an [`invalid_search_filter`](/reference/errors/error_codes.md#invalid-search-filter) error. +If any parameters are invalid or missing, Meilisearch returns an [`invalid_search_filter`](/reference/errors/error_codes#invalid-search-filter) error. ### Facets -**Parameter**: `facets` -**Expected value**: An array of `attribute`s or `["*"]` +**Parameter**: `facets`
+**Expected value**: An array of `attribute`s or `["*"]`
**Default value**: `null` Returns the number of documents matching the current search query for each given facet. This parameter can take two values: @@ -503,9 +503,9 @@ Returns the number of documents matching the current search query for each given When `facets` is set, the search results object contains the [`facetDistribution`](#facetdistribution) and [`facetStats`](#facetstats) fields. -::: note + If an attribute used on `facets` has not been added to the `filterableAttributes` list, it will be ignored. -::: + #### `facetDistribution` @@ -551,21 +551,21 @@ The response shows the facet distribution for `genres` and `rating`. Since `rati } ``` -[Learn more about facet distribution in the filtering and faceted search guide.](/learn/advanced/faceted_search.md#configuring-and-using-facets) +[Learn more about facet distribution in the faceted search guide.](/learn/advanced/faceted_search#configuring-and-using-facets) ### Attributes to retrieve -**Parameter**: `attributesToRetrieve` -**Expected value**: An array of `attribute`s or `["*"]` +**Parameter**: `attributesToRetrieve`
+**Expected value**: An array of `attribute`s or `["*"]`
**Default value**: `["*"]` Configures which attributes will be retrieved in the returned documents. -If no value is specified, `attributesToRetrieve` uses the [`displayedAttributes` list](/reference/api/settings.md#displayed-attributes), which by default contains all attributes found in the documents. +If no value is specified, `attributesToRetrieve` uses the [`displayedAttributes` list](/reference/api/settings#displayed-attributes), which by default contains all attributes found in the documents. -::: note + If an attribute has been removed from `displayedAttributes`, `attributesToRetrieve` will silently ignore it and the field will not appear in your returned documents. -::: + #### Example @@ -575,8 +575,8 @@ To get only the `overview` and `title` fields, set `attributesToRetrieve` to `[" ### Attributes to crop -**Parameter**: `attributesToCrop` -**Expected value**: An array of attributes or `["*"]` +**Parameter**: `attributesToCrop`
+**Expected value**: An array of attributes or `["*"]`
**Default value**: `null` Crops the selected fields in the returned results to the length indicated by the [`cropLength`](#crop-length) parameter. When `attributesToCrop` is set, each returned document contains an extra field called `_formatted`. This object contains the cropped version of the selected attributes. @@ -626,8 +626,8 @@ You will get the following response with the **cropped text in the `_formatted` ### Crop length -**Parameter**: `cropLength` -**Expected value**: A positive integer +**Parameter**: `cropLength`
+**Expected value**: A positive integer
**Default value**: `10` Configures the total number of words to appear in the cropped value when using [`attributesToCrop`](#attributes-to-crop). If `attributesToCrop` is not configured, `cropLength` has no effect on the returned results. @@ -640,8 +640,8 @@ If `attributesToCrop` uses the `attributeName:number` syntax to specify a custom ### Crop marker -**Parameter**: `cropMarker` -**Expected value**: A string +**Parameter**: `cropMarker`
+**Expected value**: A string
**Default value**: `"…"` Sets a string to mark crop boundaries when using the [`attributesToCrop`](#attributes-to-crop) parameter. The crop marker will be inserted on both sides of the crop. If `attributesToCrop` is not configured, `cropMarker` has no effect on the returned search results. @@ -675,8 +675,8 @@ When searching for `shifu`, you can use `cropMarker` to change the default `…` ### Attributes to highlight -**Parameter**: `attributesToHighlight` -**Expected value**: An array of attributes or `["*"]` +**Parameter**: `attributesToHighlight`
+**Expected value**: An array of attributes or `["*"]`
**Default value**: `null` Highlights matching query terms in the specified attributes. `attributesToHighlight` only works on values of the following types: string, number, array, object. @@ -687,13 +687,13 @@ Instead of a list of attributes, you can use `["*"]`: `attributesToHighlight=["* By default highlighted elements are enclosed in `` and `` tags. You may change this by using the [`highlightPreTag` and `highlightPostTag` search parameters](#highlight-tags). -::: note -`attributesToHighlight` also highlights terms configured as [synonyms](/reference/api/settings.md#synonyms) and [stop words](/reference/api/settings.md#stop-words). -::: + +`attributesToHighlight` also highlights terms configured as [synonyms](/reference/api/settings#synonyms) and [stop words](/reference/api/settings#stop-words). + -::: warning -`attributesToHighlight` will highlight matches within all attributes added to the `attributesToHighlight` array, even if those attributes are not set as [`searchableAttributes`](/learn/configuration/displayed_searchable_attributes.md#searchable-fields). -::: + +`attributesToHighlight` will highlight matches within all attributes added to the `attributesToHighlight` array, even if those attributes are not set as [`searchableAttributes`](/learn/configuration/displayed_searchable_attributes#searchable-fields). + #### Example @@ -722,8 +722,8 @@ The highlighted version of the text would then be found in the `_formatted` obje ### Highlight tags -**Parameters**: `highlightPreTag` and `highlightPostTag` -**Expected value**: A string +**Parameters**: `highlightPreTag` and `highlightPostTag`
+**Expected value**: A string
**Default value**: `""` and `""` respectively `highlightPreTag` and `highlightPostTag` configure, respectively, the strings to be inserted before and after a word highlighted by `attributesToHighlight`. If `attributesToHighlight` has not been configured, `highlightPreTag` and `highlightPostTag` have no effect on the returned search results. @@ -757,27 +757,27 @@ You can find the highlighted query terms inside the `_formatted` property: } ``` -::: danger + Though it is not necessary to use `highlightPreTag` and `highlightPostTag` in conjunction, be careful to ensure tags are correctly matched. In the above example, not setting `highlightPostTag` would result in malformed HTML: `Winter Feast`. -::: + ### Show matches position -**Parameter**: `showMatchesPosition` -**Expected value**: `true` or `false` +**Parameter**: `showMatchesPosition`
+**Expected value**: `true` or `false`
**Default value**: `false` Adds a `_matchesPosition` object to the search response that contains the location of each occurrence of queried terms across all fields. This is useful when you need more control than offered by our [built-in highlighting](#attributes-to-highlight). `showMatchesPosition` only works for strings, numbers, and arrays of strings and numbers. -::: warning -`showMatchesPosition` returns the location of matched query terms within all attributes, even attributes that are not set as [`searchableAttributes`](/learn/configuration/displayed_searchable_attributes.md#searchable-fields). -::: + +`showMatchesPosition` returns the location of matched query terms within all attributes, even attributes that are not set as [`searchableAttributes`](/learn/configuration/displayed_searchable_attributes#searchable-fields). + The beginning of a matching term within a field is indicated by `start`, and its length by `length`. -::: warning + `start` and `length` are measured in bytes and not the number of characters. For example, `ü` represents two bytes but one character. -::: + #### Example @@ -819,25 +819,25 @@ You would get the following response with **information about the matches in the ### Sort -**Parameter**: `sort` -**Expected value**: A list of attributes written as an array or as a comma-separated string +**Parameter**: `sort`
+**Expected value**: A list of attributes written as an array or as a comma-separated string
**Default value**: `null` Sorts search results at query time according to the specified attributes and indicated order. Each attribute in the list must be followed by a colon (`:`) and the preferred sorting order: either ascending (`asc`) or descending (`desc`). -::: note + Attribute order is meaningful. The first attributes in a list will be given precedence over those that come later. For example, `sort="price:asc,author:desc` will prioritize `price` over `author` when sorting results. -::: + When using the `POST` route, `sort` expects an array of strings. When using the `GET` route, `sort` expects the list as a comma-separated string. -[Read more about sorting search results in our dedicated guide.](/learn/advanced/sorting.md) +[Read more about sorting search results in our dedicated guide.](/learn/advanced/sorting) #### Example @@ -869,12 +869,12 @@ Queries using `_geoPoint` will always include a `geoDistance` field containing t ] ``` -[You can read more about location-based sorting in our dedicated guide.](/learn/advanced/geosearch.md#sorting-results-with-geopoint) +[You can read more about location-based sorting in our dedicated guide.](/learn/advanced/geosearch#sorting-results-with-geopoint) ### Matching strategy -**Parameter**: `matchingStrategy` -**Expected value**: `last` or `all` +**Parameter**: `matchingStrategy`
+**Expected value**: `last` or `all`
**Default value**: `last` Defines the strategy used to match query terms in documents. diff --git a/reference/api/settings.md b/reference/api/settings.mdx similarity index 90% rename from reference/api/settings.md rename to reference/api/settings.mdx index ce197eec78..cd78ef9863 100644 --- a/reference/api/settings.md +++ b/reference/api/settings.mdx @@ -1,12 +1,12 @@ --- -sidebarDepth: 2 +sidebarDepth: 3 --- # Settings The `/settings` route allows you to customize search settings for the given index. You can either modify all of an index's settings at once using the [update settings endpoint](#update-settings), or modify each one individually using the child routes. -For a conceptual overview of index settings, refer to our [indexes guide](/learn/core_concepts/indexes.md#index-settings). +For a conceptual overview of index settings, refer to our [indexes guide](/learn/core_concepts/indexes#index-settings). ## Settings object @@ -66,7 +66,7 @@ Get the settings of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -130,7 +130,7 @@ If the provided index does not exist, it will be created. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -141,7 +141,7 @@ If the provided index does not exist, it will be created. | **[`faceting`](#faceting)** | Object | [Default object](#faceting-object) | Faceting settings | | **[`filterableAttributes`](#filterable-attributes)** | Array of strings | Empty | Attributes to use as filters and facets | | **[`pagination`](#pagination)** | Object | [Default object](#pagination-object) | Pagination settings | -| **[`rankingRules`](#ranking-rules)** | Array of strings | `["words",`
`"typo",`
`"proximity",`
`"attribute",`
`"sort",`
`"exactness"]` | List of ranking rules in order of importance | +| **[`rankingRules`](#ranking-rules)** | Array of strings | `["words",`
`"typo",`
`"proximity",`
`"attribute",`
`"sort",`
`"exactness"]` | List of ranking rules in order of importance | | **[`searchableAttributes`](#searchable-attributes)** | Array of strings | All attributes: `["*"]` | Fields in which to search for matching query words sorted by order of importance | | **[`sortableAttributes`](#sortable-attributes)** | Array of strings | Empty | Attributes to use when sorting search results | | **[`stopWords`](#stop-words)** | Array of strings | Empty | List of words ignored by Meilisearch when present in search queries | @@ -164,7 +164,7 @@ If the provided index does not exist, it will be created. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset settings @@ -176,7 +176,7 @@ Reset all the settings of an index to their [default value](#settings-object). | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -194,15 +194,15 @@ Reset all the settings of an index to their [default value](#settings-object). } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Displayed attributes -The attributes added to the `displayedAttributes` list appear in search results. `displayedAttributes` only affects the search endpoints. It has no impact on the [GET documents endpoint](/reference/api/documents.md#get-documents). +The attributes added to the `displayedAttributes` list appear in search results. `displayedAttributes` only affects the search endpoints. It has no impact on the [GET documents endpoint](/reference/api/documents#get-documents). By default, the `displayedAttributes` array is equal to all fields in your dataset. This behavior is represented by the value `["*"]`. -[To learn more about displayed attributes, refer to our dedicated guide.](/learn/configuration/displayed_searchable_attributes.md#displayed-fields) +[To learn more about displayed attributes, refer to our dedicated guide.](/learn/configuration/displayed_searchable_attributes#displayed-fields) ### Get displayed attributes @@ -214,7 +214,7 @@ Get the displayed attributes of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -241,7 +241,7 @@ Update the displayed attributes of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -253,9 +253,9 @@ An array of strings. Each string should be an attribute that exists in the selec If an attribute contains an object, you can use dot notation to specify one or more of its keys, for example, `"displayedAttributes": ["release_date.year"]`. -::: warning + If the field does not exist, no error will be thrown. -::: + #### Example @@ -273,7 +273,7 @@ If the field does not exist, no error will be thrown. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset displayed attributes @@ -285,7 +285,7 @@ Reset the displayed attributes of the index to the default value. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -303,17 +303,17 @@ Reset the displayed attributes of the index to the default value. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Distinct attribute The distinct attribute is a field whose value will always be unique in the returned documents. -::: warning + Updating distinct attributes will re-index all documents in the index, which can take some time. We recommend updating your index settings first and then adding documents as this reduces RAM consumption. -::: + -[To learn more about the distinct attribute, refer to our dedicated guide.](/learn/configuration/distinct.md) +[To learn more about the distinct attribute, refer to our dedicated guide.](/learn/configuration/distinct) ### Get distinct attribute @@ -325,7 +325,7 @@ Get the distinct attribute of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -347,7 +347,7 @@ Update the distinct attribute field of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -359,11 +359,11 @@ A string. The string should be an attribute that exists in the selected index. If an attribute contains an object, you can use dot notation to set one or more of its keys as a value for this setting, for example, `"distinctAttribute": "product.skuid"`. -::: warning + If the field does not exist, no error will be thrown. -::: + -[To learn more about the distinct attribute, refer to our dedicated guide.](/learn/configuration/distinct.md) +[To learn more about the distinct attribute, refer to our dedicated guide.](/learn/configuration/distinct) #### Example @@ -381,7 +381,7 @@ If the field does not exist, no error will be thrown. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset distinct attribute @@ -393,7 +393,7 @@ Reset the distinct attribute of an index to its default value. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -411,13 +411,13 @@ Reset the distinct attribute of an index to its default value. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Faceting -With Meilisearch, you can create [faceted search interfaces](/learn/advanced/faceted_search.md). This setting allows you to define the maximum number of values returned by the `facets` search parameter. +With Meilisearch, you can create [faceted search interfaces](/learn/advanced/faceted_search). This setting allows you to define the maximum number of values returned by the `facets` search parameter. -[To learn more about filtering and faceting, refer to our dedicated guide.](/learn/advanced/faceted_search.md) +[To learn more about faceting, refer to our dedicated guide.](/learn/advanced/faceted_search) ### Faceting object @@ -435,7 +435,7 @@ Get the faceting settings of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -459,7 +459,7 @@ Partially update the faceting settings for an index. Any parameters not provided | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -473,9 +473,9 @@ Partially update the faceting settings for an index. Any parameters not provided For example, suppose a query's search results contain a total of three values for a `colors` facet: `blue`, `green`, and `red`. If you set `maxValuesPerFacet` to `2`, Meilisearch will only return `blue` and `green` in the response body's `facetDistribution` object. -::: note + Setting `maxValuesPerFacet` to a high value might negatively impact performance. -::: + #### Example @@ -493,7 +493,7 @@ Setting `maxValuesPerFacet` to a high value might negatively impact performance. } ``` -You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset faceting settings @@ -503,7 +503,7 @@ Reset an index's faceting settings to their [default value](#faceting-object). | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -521,17 +521,17 @@ Reset an index's faceting settings to their [default value](#faceting-object). } ``` -You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Filterable attributes Attributes in the `filterableAttributes` list can be used as filters or facets. -::: warning + Updating filterable attributes will re-index all documents in the index, which can take some time. We recommend updating your index settings first and then adding documents as this reduces RAM consumption. -::: + -[To learn more about filterable attributes, refer to our dedicated guide.](/learn/advanced/filtering.md) +[To learn more about filterable attributes, refer to our dedicated guide.](/learn/advanced/filtering) ### Get filterable attributes @@ -543,7 +543,7 @@ Get the filterable attributes for an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -569,7 +569,7 @@ Update an index's filterable attributes list. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -581,11 +581,11 @@ An array of strings containing the attributes that can be used as filters at que If an attribute contains an object, you can use dot notation to set one or more of its keys as a value for this setting: `"filterableAttributes": ["release_date.year"]`. -::: warning + If the field does not exist, no error will be thrown. -::: + -[To learn more about filterable attributes, refer to our dedicated guide.](/learn/advanced/filtering.md) +[To learn more about filterable attributes, refer to our dedicated guide.](/learn/advanced/filtering) #### Example @@ -603,7 +603,7 @@ If the field does not exist, no error will be thrown. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset filterable attributes @@ -615,7 +615,7 @@ Reset an index's filterable attributes list back to its default value. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -633,7 +633,7 @@ Reset an index's filterable attributes list back to its default value. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Pagination @@ -643,7 +643,7 @@ To protect your database from malicious scraping, Meilisearch has a default limi For example, if you set `maxTotalHits` to 100, you will not be able to access search results beyond 100 no matter the value configured for `offset`. -[To learn more about paginating search results with Meilisearch, refer to our dedicated guide.](/learn/advanced/pagination.md) +[To learn more about paginating search results with Meilisearch, refer to our dedicated guide.](/learn/advanced/pagination) ### Pagination object @@ -661,7 +661,7 @@ Get the pagination settings of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -685,7 +685,7 @@ Partially update the pagination settings for an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -697,9 +697,9 @@ Partially update the pagination settings for an index. | :----------------- | :------ | :------------ | :---------------------------------------------------------- | | **`maxTotalHits`** | Integer | `1000` | The maximum number of search results Meilisearch can return | -::: warning + Setting `maxTotalHits` to a value higher than the default will negatively impact search performance. Setting `maxTotalHits` to values over `20000` may result in queries taking seconds to complete. -::: + #### Example @@ -717,7 +717,7 @@ Setting `maxTotalHits` to a value higher than the default will negatively impact } ``` -You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset pagination settings @@ -727,7 +727,7 @@ Reset an index's pagination settings to their [default value](#pagination-object | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -745,13 +745,13 @@ Reset an index's pagination settings to their [default value](#pagination-object } ``` -You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Ranking rules Ranking rules are built-in rules that rank search results according to certain criteria. They are applied in the same order in which they appear in the `rankingRules` array. -[To learn more about ranking rules, refer to our dedicated guide.](/learn/core_concepts/relevancy.md) +[To learn more about ranking rules, refer to our dedicated guide.](/learn/core_concepts/relevancy) ### Ranking rules array @@ -787,7 +787,7 @@ Get the ranking rules of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -817,7 +817,7 @@ Update the ranking rules of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -832,13 +832,13 @@ To create a custom ranking rule, give an attribute followed by a colon (`:`) and - To apply an **ascending sort** (results sorted by increasing value): `attribute_name:asc` - To apply a **descending sort** (results sorted by decreasing value): `attribute_name:desc` -::: warning + If some documents do not contain the attribute defined in a custom ranking rule, the application of the ranking rule is undefined and the search results might not be sorted as you expected. Make sure that any attribute used in a custom ranking rule is present in all of your documents. For example, if you set the custom ranking rule `desc(year)`, make sure that all your documents contain the attribute `year`. -::: + -[To learn more about ranking rules, refer to our dedicated guide.](/learn/core_concepts/relevancy.md#ranking-rules) +[To learn more about ranking rules, refer to our dedicated guide.](/learn/core_concepts/relevancy#ranking-rules) #### Example @@ -856,7 +856,7 @@ Make sure that any attribute used in a custom ranking rule is present in all of } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset ranking rules @@ -864,15 +864,15 @@ You can use this `taskUid` to get more details on [the status of the task](/refe Reset the ranking rules of an index to their [default value](#default-order). -::: tip + Resetting ranking rules is not the same as removing them. To remove a ranking rule, use the [update ranking rules endpoint](#update-ranking-rules). -::: + #### Path parameters | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -890,19 +890,19 @@ Resetting ranking rules is not the same as removing them. To remove a ranking ru } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Searchable attributes -The values associated with attributes in the `searchableAttributes` list are searched for matching query words. The order of the list also determines the [attribute ranking order](/learn/core_concepts/relevancy.md#attribute-ranking-order). +The values associated with attributes in the `searchableAttributes` list are searched for matching query words. The order of the list also determines the [attribute ranking order](/learn/core_concepts/relevancy#attribute-ranking-order). By default, the `searchableAttributes` array is equal to all fields in your dataset. This behavior is represented by the value `["*"]`. -::: warning + Updating searchable attributes will re-index all documents in the index, which can take some time. We recommend updating your index settings first and then adding documents as this reduces RAM consumption. -::: + -[To learn more about searchable attributes, refer to our dedicated guide.](/learn/configuration/displayed_searchable_attributes.md#searchable-fields) +[To learn more about searchable attributes, refer to our dedicated guide.](/learn/configuration/displayed_searchable_attributes#searchable-fields) ### Get searchable attributes @@ -914,7 +914,7 @@ Get the searchable attributes of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -937,15 +937,15 @@ Get the searchable attributes of an index. Update the searchable attributes of an index. -::: warning + Due to an implementation bug, manually updating `searchableAttributes` will change the displayed order of document fields in the JSON response. This behavior is inconsistent and will be fixed in a future release. -::: + #### Path parameters | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -953,15 +953,15 @@ Due to an implementation bug, manually updating `searchableAttributes` will chan [, , …] ``` -An array of strings. Each string should be an attribute that exists in the selected index. The array should be given in [order of importance](/learn/core_concepts/relevancy.md#attribute-ranking-order): from the most important attribute to the least important attribute. +An array of strings. Each string should be an attribute that exists in the selected index. The array should be given in [order of importance](/learn/core_concepts/relevancy#attribute-ranking-order): from the most important attribute to the least important attribute. If an attribute contains an object, you can use dot notation to set one or more of its keys as a value for this setting: `"searchableAttributes": ["release_date.year"]`. -::: warning + If the field does not exist, no error will be thrown. -::: + -[To learn more about searchable attributes, refer to our dedicated guide.](/learn/configuration/displayed_searchable_attributes.md#searchable-fields) +[To learn more about searchable attributes, refer to our dedicated guide.](/learn/configuration/displayed_searchable_attributes#searchable-fields) #### Example @@ -981,7 +981,7 @@ In this example, a document with a match in `title` will be more relevant than a } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset searchable attributes @@ -993,7 +993,7 @@ Reset the searchable attributes of the index to the default value. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1011,17 +1011,17 @@ Reset the searchable attributes of the index to the default value. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Sortable attributes -Attributes that can be used when sorting search results using the [`sort` search parameter](/reference/api/search.md#sort). +Attributes that can be used when sorting search results using the [`sort` search parameter](/reference/api/search#sort). -::: warning + Updating sortable attributes will re-index all documents in the index, which can take some time. We recommend updating your index settings first and then adding documents as this reduces RAM consumption. -::: + -[To learn more about sortable attributes, refer to our dedicated guide.](/learn/advanced/sorting.md) +[To learn more about sortable attributes, refer to our dedicated guide.](/learn/advanced/sorting) ### Get sortable attributes @@ -1033,7 +1033,7 @@ Get the sortable attributes of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1054,13 +1054,13 @@ Get the sortable attributes of an index. Update an index's sortable attributes list. -[You can read more about sorting at query time on our dedicated guide.](/learn/advanced/sorting.md) +[You can read more about sorting at query time on our dedicated guide.](/learn/advanced/sorting) #### Path parameters | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -1072,11 +1072,11 @@ An array of strings. Each string should be an attribute that exists in the selec If an attribute contains an object, you can use dot notation to set one or more of its keys as a value for this setting: `"sortableAttributes": ["author.surname"]`. -::: warning + If the field does not exist, no error will be thrown. -::: + -[To learn more about sortable attributes, refer to our dedicated guide.](/learn/advanced/sorting.md) +[To learn more about sortable attributes, refer to our dedicated guide.](/learn/advanced/sorting) #### Example @@ -1094,7 +1094,7 @@ If the field does not exist, no error will be thrown. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset sortable attributes @@ -1106,7 +1106,7 @@ Reset an index's sortable attributes list back to its default value. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1124,21 +1124,21 @@ Reset an index's sortable attributes list back to its default value. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Stop words Words added to the `stopWords` list are ignored in future search queries. -::: warning + Updating stop words will re-index all documents in the index, which can take some time. We recommend updating your index settings first and then adding documents as this reduces RAM consumption. -::: + -::: tip + Stop words are strongly related to the language used in your dataset. For example, most datasets containing English documents will have countless occurrences of `the` and `of`. Italian datasets, instead, will benefit from ignoring words like `a`, `la`, or `il`. [This website maintained by a French developer](https://sites.google.com/site/kevinbouge/stopwords-lists) offers lists of possible stop words in different languages. Note that, depending on your dataset and use case, you will need to tweak these lists for optimal results. -::: + ### Get stop words @@ -1150,7 +1150,7 @@ Get the stop words list of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1176,7 +1176,7 @@ Update the list of stop words of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -1204,7 +1204,7 @@ If a list of stop words already exists, it will be overwritten (_replaced_). } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset stop words @@ -1216,7 +1216,7 @@ Reset the list of stop words of an index to its default value. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1234,13 +1234,13 @@ Reset the list of stop words of an index to its default value. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Synonyms The `synonyms` object contains words and their respective synonyms. A synonym in Meilisearch is considered equal to its associated word for the purposes of calculating search results. -[To learn more about synonyms, refer to our dedicated guide.](/learn/configuration/synonyms.md) +[To learn more about synonyms, refer to our dedicated guide.](/learn/configuration/synonyms) ### Get synonyms @@ -1252,7 +1252,7 @@ Get the list of synonyms of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1280,13 +1280,13 @@ Get the list of synonyms of an index. -Update the list of synonyms of an index. Synonyms are [normalized](/learn/configuration/synonyms.md#normalization). +Update the list of synonyms of an index. Synonyms are [normalized](/learn/configuration/synonyms#normalization). #### Path parameters | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -1299,7 +1299,7 @@ Update the list of synonyms of an index. Synonyms are [normalized](/learn/config An object that contains all synonyms and their associated words. Add the associated words in an array to set a synonym for a word. -[To learn more about synonyms, refer to our dedicated guide.](/learn/configuration/synonyms.md) +[To learn more about synonyms, refer to our dedicated guide.](/learn/configuration/synonyms) #### Example @@ -1317,7 +1317,7 @@ An object that contains all synonyms and their associated words. Add the associa } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset synonyms @@ -1329,7 +1329,7 @@ Reset the list of synonyms of an index to its default value. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1347,13 +1347,13 @@ Reset the list of synonyms of an index to its default value. } ``` -You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ## Typo tolerance Typo tolerance helps users find relevant results even when their search queries contain spelling mistakes or typos. This setting allows you to configure the minimum word size for typos and disable typo tolerance for specific words or attributes. -[To learn more about typo tolerance, refer to our dedicated guide.](/learn/configuration/typo_tolerance.md) +[To learn more about typo tolerance, refer to our dedicated guide.](/learn/configuration/typo_tolerance) ### Typo tolerance object @@ -1375,7 +1375,7 @@ Get the typo tolerance settings of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1405,7 +1405,7 @@ Partially update the typo tolerance settings for an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Body @@ -1445,7 +1445,7 @@ Partially update the typo tolerance settings for an index. } ``` -You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). ### Reset typo tolerance settings @@ -1457,7 +1457,7 @@ Reset an index's typo tolerance settings to their [default value](#typo-toleranc | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | #### Example @@ -1475,4 +1475,4 @@ Reset an index's typo tolerance settings to their [default value](#typo-toleranc } ``` -You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks.md#get-one-task). +You can use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). diff --git a/reference/api/stats.md b/reference/api/stats.mdx similarity index 98% rename from reference/api/stats.md rename to reference/api/stats.mdx index e9f968fa66..c6cc1b6d56 100644 --- a/reference/api/stats.md +++ b/reference/api/stats.mdx @@ -44,9 +44,9 @@ The `/stats` route gives extended information and metrics about indexes and the | **`isIndexing`** | Boolean | If `true`, the index is still processing documents and attempts to search will result in undefined behavior. If `false`, the index has finished processing and you can start searching | | **`fieldDistribution`** | Object | Shows every field in the index along with the total number of documents containing that field in said index | -::: note + `fieldDistribution` is not impacted by `searchableAttributes` or `displayedAttributes`. Even if a field is not displayed or searchable, it will still appear in the `fieldDistribution` object. -::: + ## Get stats of all indexes @@ -101,7 +101,7 @@ Get stats of an index. | Name | Type | Description | | :---------------- | :----- | :------------------------------------------------------------------------ | -| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes.md#index-uid) of the requested index | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | ### Example diff --git a/reference/api/tasks.md b/reference/api/tasks.mdx similarity index 86% rename from reference/api/tasks.md rename to reference/api/tasks.mdx index 5724ed8221..a8042fe884 100644 --- a/reference/api/tasks.md +++ b/reference/api/tasks.mdx @@ -1,6 +1,6 @@ # Tasks -The `/tasks` route gives information about the progress of [asynchronous operations](/learn/advanced/asynchronous_operations.md). +The `/tasks` route gives information about the progress of [asynchronous operations](/learn/advanced/asynchronous_operations). ## Task object @@ -29,40 +29,40 @@ The `/tasks` route gives information about the progress of [asynchronous operati ### `uid` -**Type**: Integer +**Type**: Integer
**Description**: Unique sequential identifier of the task -:::note + The task `uid` is incremented **globally.** -::: + ### `indexUid` -**Type**: String +**Type**: String
**Description**: Unique identifier of the targeted index -::: note -This value is always `null` for [global tasks](/learn/advanced/asynchronous_operations.md#global-tasks). -::: + +This value is always `null` for [global tasks](/learn/advanced/asynchronous_operations#global-tasks). + ### `status` -**Type**: String +**Type**: String
**Description**: Status of the task. Possible values are `enqueued`, `processing`, `succeeded`, `failed`, and `canceled` ### `type` -**Type**: String +**Type**: String
**Description**: Type of operation performed by the task. Possible values are `indexCreation`, `indexUpdate`, `indexDeletion`, `indexSwap`, `documentAdditionOrUpdate`, `documentDeletion`, `settingsUpdate`, `dumpCreation`, `taskCancelation`, `taskDeletion`, and `snapshotCreation` ### `canceledBy` -**Type**: Integer +**Type**: Integer
**Description**: If the task was canceled, `canceledBy` contains the `uid` of a `taskCancelation` task. If the task was not canceled, `canceledBy` is always `null` ### `details` -**Type**: Object +**Type**: Object
**Description**: Detailed information on the task payload. This object's contents depend on the task's `type` #### `documentAdditionOrUpdate` @@ -133,9 +133,9 @@ This value is always `null` for [global tasks](/learn/advanced/asynchronous_oper | **`canceledTasks`** | The number of tasks successfully canceled. If the task cancelation fails, this will be `0`. `null` when the task status is `enqueued` or `processing` | | **`originalFilter`** | The filter used in the [cancel task](#cancel-tasks) request | -::: note + Task cancelation can be successful and still have `canceledTasks: 0`. This happens when `matchedTasks` matches finished tasks (`succeeded`, `failed`, or `canceled`). -::: + #### `taskDeletion` @@ -145,9 +145,9 @@ Task cancelation can be successful and still have `canceledTasks: 0`. This happe | **`deletedTasks`** | The number of tasks successfully deleted. If the task deletion fails, this will be `0`. `null` when the task status is `enqueued` or `processing` | | **`originalFilter`** | The filter used in the [delete task](#delete-tasks) request | -::: note + Task deletion can be successful and still have `deletedTasks: 0`. This happens when `matchedTasks` matches `enqueued` or `processing` tasks. -::: + #### `snapshotCreation` @@ -155,34 +155,34 @@ The `details` object is set to `null` for `snapshotCreation` tasks. ### `error` -**Type**: Object +**Type**: Object
**Description**: If the task has the `failed` [status](#status), then this object contains the error definition. Otherwise, set to `null` | Name | Description | | :------------ | :----------------------------------------------------- | | **`message`** | A human-readable description of the error | -| **`code`** | The [error code](/reference/errors/error_codes.md) | -| **`type`** | The [error type](/reference/errors/overview.md#errors) | +| **`code`** | The [error code](/reference/errors/error_codes) | +| **`type`** | The [error type](/reference/errors/overview#errors) | | **`link`** | A link to the relevant section of the documentation | ### `duration` -**Type**: String +**Type**: String
**Description**: The total elapsed time the task spent in the `processing` state, in [ISO 8601](https://www.ionos.com/digitalguide/websites/web-development/iso-8601/) format ### `enqueuedAt` -**Type**: String +**Type**: String
**Description**: The date and time when the task was first `enqueued`, in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format ### `startedAt` -**Type**: String +**Type**: String
**Description**: The date and time when the task began `processing`, in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format ### `finishedAt` -**Type**: String +**Type**: String
**Description**: The date and time when the task finished `processing`, whether `failed`, `succeeded`, or `canceled`, in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format ### Summarized task object @@ -192,7 +192,7 @@ When an API request triggers an asynchronous process, Meilisearch returns a summ | Field | Type | Description | | :--------------- | :------ | :---------------------------------------------------------------------------------------------------------------------------- | | **`taskUid`** | Integer | Unique sequential identifier | -| **`indexUid`** | String | Unique index identifier (always `null` for [global tasks](/learn/advanced/asynchronous_operations.md#global-tasks)) | +| **`indexUid`** | String | Unique index identifier (always `null` for [global tasks](/learn/advanced/asynchronous_operations#global-tasks)) | | **`status`** | String | Status of the task. Value is `enqueued` | | **`type`** | String | Type of task | | **`enqueuedAt`** | String | Represents the date and time in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format when the task has been `enqueued` | @@ -207,7 +207,7 @@ List all tasks globally, regardless of index. The `task` objects are contained i Tasks are always returned in descending order of `uid`. This means that by default, **the most recently created `task` objects appear first**. -Task results are [paginated](/learn/advanced/asynchronous_operations.md#paginating-tasks) and can be [filtered](/learn/advanced/asynchronous_operations.md#filtering-tasks). +Task results are [paginated](/learn/advanced/asynchronous_operations#paginating-tasks) and can be [filtered](/learn/advanced/asynchronous_operations#filtering-tasks). ### Query parameters @@ -215,17 +215,17 @@ Task results are [paginated](/learn/advanced/asynchronous_operations.md#paginati | :--------------------- | :----------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **`limit`** | `20` | Number of tasks to return | | **`from`** | `uid` of the last created task | `uid` of the first task returned | -| **`uids`** | `*` (all uids) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filtering-tasks) by their `uid`. Separate multiple task `uids` with a comma (`,`) | -| **`statuses`** | `*` (all statuses) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filtering-tasks) by their `status`. Separate multiple task `statuses` with a comma (`,`) | -| **`types`** | `*` (all types) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filtering-tasks) by their `type`. Separate multiple task `types` with a comma (`,`) | -| **`indexUids`** | `*` (all indexes) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filtering-tasks) by their `indexUid`. Separate multiple task `indexUids` with a comma (`,`). Case-sensitive | -| **`canceledBy`** | N/A | [Filter tasks](/learn/advanced/asynchronous_operations.md#filter-by-canceledby) by their `canceledBy` field. Separate multiple task `uids` with a comma (`,`) | -| **`beforeEnqueuedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filter-by-date) by their `enqueuedAt` field | -| **`beforeStartedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filter-by-date) by their `startedAt` field | -| **`beforeFinishedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filter-by-date) by their `finishedAt` field | -| **`afterEnqueuedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filter-by-date) by their `enqueuedAt` field | -| **`afterStartedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filter-by-date) by their `startedAt` field | -| **`afterFinishedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations.md#filter-by-date) by their `finishedAt` field | +| **`uids`** | `*` (all uids) | [Filter tasks](/learn/advanced/asynchronous_operations#filtering-tasks) by their `uid`. Separate multiple task `uids` with a comma (`,`) | +| **`statuses`** | `*` (all statuses) | [Filter tasks](/learn/advanced/asynchronous_operations#filtering-tasks) by their `status`. Separate multiple task `statuses` with a comma (`,`) | +| **`types`** | `*` (all types) | [Filter tasks](/learn/advanced/asynchronous_operations#filtering-tasks) by their `type`. Separate multiple task `types` with a comma (`,`) | +| **`indexUids`** | `*` (all indexes) | [Filter tasks](/learn/advanced/asynchronous_operations#filtering-tasks) by their `indexUid`. Separate multiple task `indexUids` with a comma (`,`). Case-sensitive | +| **`canceledBy`** | N/A | [Filter tasks](/learn/advanced/asynchronous_operations#filter-by-canceledby) by their `canceledBy` field. Separate multiple task `uids` with a comma (`,`) | +| **`beforeEnqueuedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations#filter-by-date) by their `enqueuedAt` field | +| **`beforeStartedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations#filter-by-date) by their `startedAt` field | +| **`beforeFinishedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations#filter-by-date) by their `finishedAt` field | +| **`afterEnqueuedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations#filter-by-date) by their `enqueuedAt` field | +| **`afterStartedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations#filter-by-date) by their `startedAt` field | +| **`afterFinishedAt`** | `*` (all tasks) | [Filter tasks](/learn/advanced/asynchronous_operations#filter-by-date) by their `finishedAt` field | ### Response @@ -290,9 +290,9 @@ Task results are [paginated](/learn/advanced/asynchronous_operations.md#paginati Get a single task. -::: note -If you try retrieving a deleted task, Meilisearch will return a [`task_not_found`](/reference/errors/error_codes.md#task-not-found) error. -::: + +If you try retrieving a deleted task, Meilisearch will return a [`task_not_found`](/reference/errors/error_codes#task-not-found) error. + ### Path parameters @@ -339,13 +339,13 @@ Cancel any number of `enqueued` or `processing` tasks based on their `uid`, `sta Task cancelation is an atomic transaction: **either all tasks are successfully canceled or none are**. -::: warning -To prevent users from accidentally canceling all enqueued and processing tasks, Meilisearch throws the [`missing_task_filters`](/reference/errors/error_codes.md#missing-task-filters) error if this route is used without any filters (`POST /tasks/cancel`). -::: + +To prevent users from accidentally canceling all enqueued and processing tasks, Meilisearch throws the [`missing_task_filters`](/reference/errors/error_codes#missing-task-filters) error if this route is used without any filters (`POST /tasks/cancel`). + -::: tip Did you know? + You can also cancel `taskCancelation` type tasks as long as they are in the `enqueued` or `processing` state. This is possible because `taskCancelation` type tasks are processed in reverse order, such that the last one you enqueue will be processed first. -::: + ### Query parameters @@ -362,11 +362,11 @@ A valid `uids`, `statuses`, `types`, `indexUids`, or date(`beforeXAt` or `afterX | **`afterEnqueuedAt`** | Cancel tasks **after** a specified `enqueuedAt` date. Use `afterEnqueuedAt=*` to cancel all tasks | | **`afterStartedAt`** | Cancel tasks **after** a specified `startedAt` date. Use `afterStartedAt=*` to cancel all tasks | -::: note + Date filters are equivalent to `<` or `>` operations. At this time, there is no way to perform a `≤` or `≥` operations with a date filter. -::: + -[To learn more about filtering tasks, refer to our dedicated guide.](/learn/advanced/asynchronous_operations.md#filtering-tasks) +[To learn more about filtering tasks, refer to our dedicated guide.](/learn/advanced/asynchronous_operations#filtering-tasks) ### Example @@ -384,9 +384,9 @@ Date filters are equivalent to `<` or `>` operations. At this time, there is no } ``` -::: note -Since `taskCancelation` is a [global task](/learn/advanced/asynchronous_operations.md#global-tasks), its `indexUid` is always `null`. -::: + +Since `taskCancelation` is a [global task](/learn/advanced/asynchronous_operations#global-tasks), its `indexUid` is always `null`. + You can use this `taskUid` to get more details on the [status of the task](#get-one-task). @@ -396,7 +396,7 @@ You can cancel all `processing` and `enqueued` tasks using the following filter: -The API key used must have access to all indexes (`"indexes": [*]`) and the [`task.cancel`](/reference/api/keys.md#actions) action. +The API key used must have access to all indexes (`"indexes": [*]`) and the [`task.cancel`](/reference/api/keys#actions) action. ## Delete tasks @@ -404,9 +404,9 @@ The API key used must have access to all indexes (`"indexes": [*]`) and the [`ta Delete a finished (`succeeded`, `failed`, or `canceled`) task based on `uid`, `status`, `type`, `indexUid`, `canceledBy`, or date. Task deletion is an atomic transaction: **either all tasks are successfully deleted, or none are**. -::: warning -To prevent users from accidentally deleting the entire task history, Meilisearch throws the [`missing_task_filters`](/reference/errors/error_codes.md#missing-task-filters) error if this route is used without any filters (DELETE `/tasks`). -::: + +To prevent users from accidentally deleting the entire task history, Meilisearch throws the [`missing_task_filters`](/reference/errors/error_codes#missing-task-filters) error if this route is used without any filters (DELETE `/tasks`). + ### Query parameters @@ -426,11 +426,11 @@ A valid `uids`, `statuses`, `types`, `indexUids`, `canceledBy`, or date(`beforeX | **`afterStartedAt`** | Delete tasks **after** a specified `startedAt` date. Use `afterStartedAt=*` to delete all tasks | | **`afterFinishedAt`** | Delete tasks **after** a specified `finishedAt` date. Use `afterFinishedAt=*` to delete all tasks | -::: note + Date filters are equivalent to `<` or `>` operations. At this time, there is no way to perform a `≤` or `≥` operations with a date filter. -::: + -[To learn more about filtering tasks, refer to our dedicated guide.](/learn/advanced/asynchronous_operations.md#filtering-tasks) +[To learn more about filtering tasks, refer to our dedicated guide.](/learn/advanced/asynchronous_operations#filtering-tasks) ### Example @@ -448,9 +448,9 @@ Date filters are equivalent to `<` or `>` operations. At this time, there is no } ``` -::: note -Since `taskDeletion` is a [global task](/learn/advanced/asynchronous_operations.md#global-tasks), its `indexUid` is always `null`. -::: + +Since `taskDeletion` is a [global task](/learn/advanced/asynchronous_operations#global-tasks), its `indexUid` is always `null`. + You can use this `taskUid` to get more details on the [status of the task](#get-one-task). @@ -460,4 +460,4 @@ You can delete all finished tasks by using the following filter: -The API key used must have access to all indexes (`"indexes": [*]`) and the [`task.delete`](/reference/api/keys.md#actions) action. +The API key used must have access to all indexes (`"indexes": [*]`) and the [`task.delete`](/reference/api/keys#actions) action. diff --git a/reference/api/version.md b/reference/api/version.mdx similarity index 100% rename from reference/api/version.md rename to reference/api/version.mdx diff --git a/reference/errors/error_codes.md b/reference/errors/error_codes.md deleted file mode 100644 index 99bb8b7799..0000000000 --- a/reference/errors/error_codes.md +++ /dev/null @@ -1,455 +0,0 @@ -# Error codes - -This page is an exhaustive list of Meilisearch API errors. - -## `api_key_already_exists` - -A key with this [`uid`](/reference/api/keys.md#uid) already exists. - -## `api_key_not_found` - -The requested API key could not be found. - -## `bad_request` - -The request is invalid, check the error message for more information. - -## `database_size_limit_reached` - -The requested database has reached its maximum size. - -## `document_fields_limit_reached` - -A document exceeds the [maximum limit of 65,535 fields](/learn/advanced/known_limitations.md#maximum-number-of-attributes-per-document). - -## `document_not_found` - -The requested document can't be retrieved. Either it doesn't exist, or the database was left in an inconsistent state. - -## `dump_process_failed` - -An error occurred during the dump creation process. The task was aborted. - -## `immutable_api_key_actions` - -The [`actions`](/reference/api/keys.md#actions) field of an API key cannot be modified. - -## `immutable_api_key_created_at` - -The [`createdAt`](/reference/api/keys.md#createdat) field of an API key cannot be modified. - -## `immutable_api_key_expires_at` - -The [`expiresAt`](/reference/api/keys.md#expiresat) field of an API key cannot be modified. - -## `immutable_api_key_indexes` - -The [`indexes`](/reference/api/keys.md#indexes) field of an API key cannot be modified. - -## `immutable_api_key_key` - -The [`key`](/reference/api/keys.md#key) field of an API key cannot be modified. - -## `immutable_api_key_uid` - -The [`uid`](/reference/api/keys.md#uid) field of an API key cannot be modified. - -## `immutable_api_key_updated_at` - -The [`updatedAt`](/reference/api/keys.md#updatedat) field of an API key cannot be modified. - -## `immutable_index_uid` - -The [`uid`](/reference/api/indexes.md#index-object) field of an index cannot be modified. - -## `immutable_index_updated_at` - -The [`updatedAt`](/reference/api/indexes.md#index-object) field of an index cannot be modified. - -## `index_already_exists` - -An index with this [`uid`](/reference/api/indexes.md#index-object) already exists, check out our guide on [index creation](/learn/core_concepts/indexes.md). - -## `index_creation_failed` - -An error occurred while trying to create an index, check out our guide on [index creation](/learn/core_concepts/indexes.md). - -## `index_not_found` - -An index with this `uid` was not found, check out our guide on [index creation](/learn/core_concepts/indexes.md). - -## `index_primary_key_already_exists` - -The requested index already has a primary key that [cannot be changed](/learn/core_concepts/primary_key.md#changing-your-primary-key-with-the-update-index-endpoint). - -## `index_primary_key_multiple_candidates_found` - -[Primary key inference](/learn/core_concepts/primary_key.md#meilisearch-guesses-your-primary-key) failed because the received documents contain multiple fields ending with `id`. Use the [update index endpoint](/reference/api/indexes.md#update-an-index) to manually set a primary key. - -## `internal` - - Meilisearch experienced an internal error. Check the error message, and [open an issue](https://github.com/meilisearch/meilisearch/issues/new?assignees=&labels=&template=bug_report.md&title=) if necessary. - -## `invalid_api_key` - -The requested resources are protected with an API key. The provided API key is invalid. Read more about it in our [dedicated guide](/learn/security/master_api_keys.md). - -## `invalid_api_key_actions` - -The [`actions`](/reference/api/keys.md#actions) field for the provided API key resource is invalid. It should be an array of strings representing action names. - -## `invalid_api_key_description` - -The [`description`](/reference/api/keys.md#description) field for the provided API key resource is invalid. It should either be a string or set to `null`. - -## `invalid_api_key_expires_at` - -The [`expiresAt`](/reference/api/keys.md#expiresat) field for the provided API key resource is invalid. It should either show a future date or datetime in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format or be set to `null`. - -## `invalid_api_key_indexes` - -The [`indexes`](/reference/api/keys.md#indexes) field for the provided API key resource is invalid. It should be an array of strings representing index names. - -## `invalid_api_key_limit` - -The [`limit`](/reference/api/keys.md#query-parameters) parameter is invalid. It should be an integer. - -## `invalid_api_key_name` - -The given [`name`](/reference/api/keys.md#name) is invalid. It should either be a string or set to `null`. - -## `invalid_api_key_offset` - -The [`offset`](/reference/api/keys.md#query-parameters) parameter is invalid. It should be an integer. - -## `invalid_api_key_uid` - -The given [`uid`](/reference/api/keys.md#uid) is invalid. The `uid` must follow the [uuid v4](https://www.sohamkamani.com/uuid-versions-explained) format. - -## `invalid_content_type` - -The [Content-Type header](/reference/api/overview.md#content-type) is not supported by Meilisearch. Currently, Meilisearch only supports JSON, CSV, and NDJSON. - -## `invalid_document_csv_delimiter` - -The [`csvDelimiter`](/reference/api/documents.md#add-or-replace-documents) parameter is invalid. It should either be a string or [a single ASCII character](https://www.rfc-editor.org/rfc/rfc20). - -## `invalid_document_id` - -The provided [document identifier](/learn/core_concepts/primary_key.md#document-id) does not meet the format requirements. A document identifier must be of type integer or string, composed only of alphanumeric characters (a-z A-Z 0-9), hyphens (-), and underscores (_). - -## `invalid_document_fields` - -The [`fields`](/reference/api/documents.md#query-parameters) parameter is invalid. It should be a string. - -## `invalid_document_limit` - -The [`limit`](/reference/api/documents.md#query-parameters) parameter is invalid. It should be an integer. - -## `invalid_document_offset` - -The [`offset`](/reference/api/documents.md#query-parameters) parameter is invalid. It should be an integer. - -## `invalid_document_geo_field` - -The provided `_geo` field of one or more documents is invalid. Meilisearch expects `_geo` to be an object with two fields, `lat` and `lng`, each containing geographic coordinates expressed as a string or floating point number. Read more about `_geo` and how to troubleshoot it in [our dedicated guide](/learn/advanced/geosearch.md). - -## `invalid_index_limit` - -The [`limit`](/reference/api/indexes.md#query-parameters) parameter is invalid. It should be an integer. - -## `invalid_index_offset` - -The [`offset`](/reference/api/indexes.md#query-parameters) parameter is invalid. It should be an integer. - -## `invalid_index_uid` - -There is an error in the provided index format, check out our guide on [index creation](/learn/core_concepts/indexes.md). - -## `invalid_index_primary_key` - -The [`primaryKey`](/reference/api/indexes.md#body-2) field is invalid. It should either be a string or set to `null`. - -## `invalid_search_attributes_to_crop` - -The [`attributesToCrop`](/reference/api/search.md#attributes-to-crop) parameter is invalid. It should be an array of strings, a string, or set to `null`. - -## `invalid_search_attributes_to_highlight` - -The [`attributesToHighlight`](/reference/api/search.md#attributes-to-highlight) parameter is invalid. It should be an array of strings, a string, or set to `null`. - -## `invalid_search_attributes_to_retrieve` - -The [`attributesToRetrieve`](/reference/api/search.md#attributes-to-retrieve) parameter is invalid. It should be an array of strings, a string, or set to `null`. - -## `invalid_search_crop_length` - -The [`cropLength`](/reference/api/search.md#crop-length) parameter is invalid. It should be an integer. - -## `invalid_search_crop_marker` - -The [`cropMarker`](/reference/api/search.md#crop-marker) parameter is invalid. It should be a string or set to `null`. - -## `invalid_search_facets` - -This error occurs if: - -- The [`facets`](/reference/api/search.md#facets) parameter is invalid. It should be an array of strings, a string, or set to `null` -- The attribute used for faceting is not defined in the [`filterableAttributes` list](/reference/api/settings.md#filterable-attributes) - -## `invalid_search_filter` - -This error occurs if: - -- The syntax for the [`filter`](/reference/api/search.md#filter) parameter is invalid -- The attribute used for filtering is not defined in the [`filterableAttributes` list](/reference/api/settings.md#filterable-attributes) -- A reserved keyword like `_geo`, `_geoDistance`, or `_geoPoint` is used as a filter - -## `invalid_search_highlight_post_tag` - -The [`highlightPostTag`](/reference/api/search.md#highlight-tags) parameter is invalid. It should be a string. - -## `invalid_search_highlight_pre_tag` - -The [`highlightPreTag`](/reference/api/search.md#highlight-tags) parameter is invalid. It should be a string. - -## `invalid_search_hits_per_page` - -The [`hitsPerPage`](/reference/api/search.md#number-of-results-per-page) parameter is invalid. It should be an integer. - -## `invalid_search_limit` - -The [`limit`](/reference/api/search.md#limit) parameter is invalid. It should be an integer. - -## `invalid_search_matching_strategy` - -The [`matchingStrategy`](/reference/api/search.md#matching-strategy) parameter is invalid. It should either be set to `last` or `all`. - -## `invalid_search_offset` - -The [`offset`](/reference/api/search.md#offset) parameter is invalid. It should be an integer. - -## `invalid_search_page` - -The [`page`](/reference/api/search.md#page) parameter is invalid. It should be an integer. - -## `invalid_search_q` - -The [`q`](/reference/api/search.md#query-q) parameter is invalid. It should be a string or set to `null` - -## `invalid_search_show_matches_position` - -The [`showMatchesPosition`](/reference/api/search.md#show-matches-position) parameter is invalid. It should either be a boolean or set to `null`. - -## `invalid_search_sort` - -This error occurs if: - -- The syntax for the [`sort`](/reference/api/search.md#sort) parameter is invalid -- The attribute used for sorting is not defined in the [`sortableAttributes`](/reference/api/settings.md#sortable-attributes) list or the `sort` ranking rule is missing from the settings -- A reserved keyword like `_geo`, `_geoDistance`, `_geoRadius`, or `_geoBoundingBox` is used as a filter - -## `invalid_settings_displayed_attributes` - -The value of [displayed attributes](/learn/configuration/displayed_searchable_attributes.md#displayed-fields) is invalid. It should be an empty array, an array of strings, or set to `null`. - -## `invalid_settings_distinct_attribute` - -The value of [distinct attributes](/learn/configuration/distinct.md) is invalid. It should be a string or set to `null`. - -## `invalid_settings_faceting` - -The value for the [`maxValuesPerFacet`](/reference/api/settings.md#faceting-object) field is invalid. It should either be an integer or set to `null`. - -## `invalid_settings_filterable_attributes` - -The value of [filterable attributes](/reference/api/settings.md#filterable-attributes) is invalid. It should be an empty array, an array of strings, or set to `null`. - -## `invalid_settings_pagination` - -The value for the [`maxTotalHits`](/reference/api/settings.md#pagination-object) field is invalid. It should either be an integer or set to `null`. - -## `invalid_settings_ranking_rules` - -This error occurs if: - -- The [settings payload](/reference/api/settings.md#body) has an invalid format -- A non-existent ranking rule is specified -- A custom ranking rule is malformed -- A reserved keyword like `_geo`, `_geoDistance`, `_geoRadius`, `_geoBoundingBox`, or `_geoPoint` is used as a custom ranking rule - -## `invalid_settings_searchable_attributes` - -The value of [searchable attributes](/reference/api/settings.md#searchable-attributes) is invalid. It should be an empty array, an array of strings or set to `null`. - -## `invalid_settings_sortable_attributes` - -The value of [sortable attributes](/reference/api/settings.md#sortable-attributes) is invalid. It should be an empty array, an array of strings or set to `null`. - -## `invalid_settings_stop_words` - -The value of [stop words](/reference/api/settings.md#stop-words) is invalid. It should be an empty array, an array of strings or set to `null`. - -## `invalid_settings_synonyms` - -The value of the [synonyms](/reference/api/settings.md#synonyms) is invalid. It should either be an object or set to `null`. - -## `invalid_settings_typo_tolerance` - -This error occurs if: - -- The [`enabled`](/reference/api/settings.md#typo-tolerance-object) field is invalid. It should either be a boolean or set to `null` -- The [`disableOnAttributes`](/reference/api/settings.md#typo-tolerance-object) field is invalid. It should either be an array of strings or set to `null` -- The [`disableOnWords`](/reference/api/settings.md#typo-tolerance-object) field is invalid. It should either be an array of strings or set to `null` -- The [`minWordSizeForTypos`](/reference/api/settings.md#typo-tolerance-object) field is invalid. It should either be an integer or set to `null` -- The value of either [`oneTypo`](/reference/api/settings.md#typo-tolerance-object) or [`twoTypos`](/reference/api/settings.md#typo-tolerance-object) is invalid. It should either be an integer or set to `null` - -## `invalid_state` - -The database is in an invalid state. Deleting the database and re-indexing should solve the problem. - -## `invalid_store_file` - -The `data.ms` folder is in an invalid state. Your `.mdb` file is corrupted or the `data.ms` folder has been replaced by a file. - -## `invalid_swap_duplicate_index_found` - -The indexes used in the [`indexes`](/reference/api/indexes.md#body-3) array for a [swap index](/reference/api/indexes.md#swap-indexes) request have been declared multiple times. You must declare each index only once. - -## `invalid_swap_indexes` - -This error happens if: - -- The payload doesn't contain exactly two index [`uids`](/reference/api/indexes.md#body-3) for a swap operation -- The payload contains an invalid index name in the [`indexes`](/reference/api/indexes.md#body-3) array - -## `invalid_task_after_enqueued_at` - -The [`afterEnqueuedAt`](/reference/api/tasks.md#query-parameters) query parameter is invalid. - -## `invalid_task_after_finished_at` - -The [`afterFinishedAt`](/reference/api/tasks.md#query-parameters) query parameter is invalid. - -## `invalid_task_after_started_at` - -The [`afterStartedAt`](/reference/api/tasks.md#query-parameters) query parameter is invalid. - -## `invalid_task_before_enqueued_at` - -The [`beforeEnqueuedAt`](/reference/api/tasks.md#query-parameters) query parameter is invalid. - -## `invalid_task_before_finished_at` - -The [`beforeFinishedAt`](/reference/api/tasks.md#query-parameters) query parameter is invalid. - -## `invalid_task_before_started_at` - -The [`beforeStartedAt`](/reference/api/tasks.md#query-parameters) query parameter is invalid. - -## `invalid_task_canceled_by` - -The [`canceledBy`](/reference/api/tasks.md#canceledby) query parameter is invalid. It should be an integer. Multiple `uid`s should be separated by commas (`,`). - -## `invalid_task_index_uids` - -The [`indexUids`](/reference/api/tasks.md#query-parameters) query parameter contains an invalid index uid. - -## `invalid_task_limit` - -The [`limit`](/reference/api/tasks.md#query-parameters) parameter is invalid. It must be an integer. - -## `invalid_task_statuses` - -The requested task status is invalid. Please use one of the [possible values](/reference/api/tasks.md#status). - -## `invalid_task_types` - -The requested task type is invalid. Please use one of the [possible values](/reference/api/tasks.md#type). - -## `invalid_task_uids` - -The [`uids`](/reference/api/tasks.md#query-parameters) query parameter is invalid. - -## `io_error` - -This error generally occurs when the host system has no space left on the device or when the database doesn't have read or write access. - -## `index_primary_key_no_candidate_found` - -[Primary key inference](/learn/core_concepts/primary_key.md#meilisearch-guesses-your-primary-key) failed as the received documents do not contain any fields ending with `id`. [Manually designate the primary key](/learn/core_concepts/primary_key.md#setting-the-primary-key), or add some field ending with `id` to your documents. - -## `malformed_payload` - -The [Content-Type header](/reference/api/overview.md#content-type) does not match the request body payload format or the format is invalid. - -## `missing_api_key_actions` - -The [`actions`](/reference/api/keys.md#actions) field is missing from payload. - -## `missing_api_key_expires_at` - -The [`expiresAt`](/reference/api/keys.md#expiresat) field is missing from payload. - -## `missing_api_key_indexes` - -The [`indexes`](/reference/api/keys.md#indexes) field is missing from payload. - -## `missing_authorization_header` - -This error happens if: - -- The requested resources are protected with an API key that was not provided in the request header. Check our guide on [security](/learn/security/master_api_keys.md) for more information -- You are using the wrong authorization header for your version. **v0.24 and below** use `X-MEILI-API-KEY: apiKey`, whereas **v0.25 and above** use `Authorization: Bearer apiKey` - -## `missing_content_type` - -The payload does not contain a [Content-Type header](/reference/api/overview.md#content-type). Currently, Meilisearch only supports JSON, CSV, and NDJSON. - -## `missing_document_id` - -A document does not contain any value for the required primary key, and is thus invalid. Check documents in the current addition for the invalid ones. - -## `missing_index_uid` - -The payload is missing the [`uid`](/reference/api/indexes.md#index-object) field. - -## `missing_master_key` - -You need to set a master key before you can access the `/keys` route. Read more about setting a master key at launch in our [dedicated guide](/learn/security/master_api_keys.md#protecting-a-meilisearch-instance). - -## `missing_payload` - -The Content-Type header was specified, but no request body was sent to the server or the request body is empty. - -## `missing_swap_indexes` - -The index swap payload is missing the [`indexes`](/reference/api/indexes.md#swap-indexes) object. - -## `missing_task_filters` - -The [cancel tasks](/reference/api/tasks.md#cancel-tasks) and [delete tasks](/reference/api/tasks.md#delete-tasks) endpoints require one of the available query parameters. - -## `no_space_left_on_device` - -The host system partition has reached its maximum capacity and can no longer accept writes. - -## `not_found` - -The requested resources could not be found. - -## `payload_too_large` - -The payload sent to the server was too large. Check out this [guide](/learn/configuration/instance_options.md#payload-limit-size) to customize the maximum payload size accepted by Meilisearch. - -## `task_not_found` - -The requested task does not exist. Please ensure that you are using the correct [`uid`](/reference/api/tasks.md#uid). - -## `too_many_open_files` - -Indexing a large batch of documents, such as a JSON file over 3.5GB in size, can result in Meilisearch opening too many file descriptors. Depending on your machine, this might reach your system's default resource usage limits and trigger the `too_many_open_files` error. Use [`ulimit`](https://www.ibm.com/docs/en/aix/7.1?topic=u-ulimit-command) or a similar tool to increase resource consumption limits before running Meilisearch. For example, call `ulimit -Sn 3000` in a UNIX environment to raise the number of allowed open file descriptors to 3000. - -## `unretrievable_document` - -The document exists in store, but there was an error retrieving it. This probably comes from an inconsistent state in the database. diff --git a/reference/errors/error_codes.mdx b/reference/errors/error_codes.mdx new file mode 100644 index 0000000000..70b3fa9a3c --- /dev/null +++ b/reference/errors/error_codes.mdx @@ -0,0 +1,458 @@ +# Error codes + +This page is an exhaustive list of Meilisearch API errors. + +## `api_key_already_exists` + +A key with this [`uid`](/reference/api/keys#uid) already exists. + +## `api_key_not_found` + +The requested API key could not be found. + +## `bad_request` + +The request is invalid, check the error message for more information. + +## `database_size_limit_reached` + +The requested database has reached its maximum size. + +## `document_fields_limit_reached` + +A document exceeds the [maximum limit of 65,535 fields](/learn/advanced/known_limitations#maximum-number-of-attributes-per-document). + +## `document_not_found` + +The requested document can't be retrieved. Either it doesn't exist, or the database was left in an inconsistent state. + +## `dump_process_failed` + +An error occurred during the dump creation process. The task was aborted. + +## `immutable_api_key_actions` + +The [`actions`](/reference/api/keys#actions) field of an API key cannot be modified. + +## `immutable_api_key_created_at` + +The [`createdAt`](/reference/api/keys#createdat) field of an API key cannot be modified. + +## `immutable_api_key_expires_at` + +The [`expiresAt`](/reference/api/keys#expiresat) field of an API key cannot be modified. + +## `immutable_api_key_indexes` + +The [`indexes`](/reference/api/keys#indexes) field of an API key cannot be modified. + +## `immutable_api_key_key` + +The [`key`](/reference/api/keys#key) field of an API key cannot be modified. + +## `immutable_api_key_uid` + +The [`uid`](/reference/api/keys#uid) field of an API key cannot be modified. + +## `immutable_api_key_updated_at` + +The [`updatedAt`](/reference/api/keys#updatedat) field of an API key cannot be modified. + +## `immutable_index_uid` + +The [`uid`](/reference/api/indexes#index-object) field of an index cannot be modified. + +## `immutable_index_updated_at` + +The [`updatedAt`](/reference/api/indexes#index-object) field of an index cannot be modified. + +## `index_already_exists` + +An index with this [`uid`](/reference/api/indexes#index-object) already exists, check out our guide on [index creation](/learn/core_concepts/indexes). + +## `index_creation_failed` + +An error occurred while trying to create an index, check out our guide on [index creation](/learn/core_concepts/indexes). + +## `index_not_found` + +An index with this `uid` was not found, check out our guide on [index creation](/learn/core_concepts/indexes). + +## `index_primary_key_already_exists` + +The requested index already has a primary key that [cannot be changed](/learn/core_concepts/primary_key#changing-your-primary-key-with-the-update-index-endpoint). + +## `index_primary_key_multiple_candidates_found` + +[Primary key inference](/learn/core_concepts/primary_key#meilisearch-guesses-your-primary-key) failed because the received documents contain multiple fields ending with `id`. Use the [update index endpoint](/reference/api/indexes#update-an-index) to manually set a primary key. + +## `internal` + + Meilisearch experienced an internal error. Check the error message, and [open an issue](https://github.com/meilisearch/meilisearch/issues/new?assignees=&labels=&template=bug_report&title=) if necessary. + +## `invalid_api_key` + +The requested resources are protected with an API key. The provided API key is invalid. Read more about it in our [dedicated guide](/learn/security/master_api_keys). + +## `invalid_api_key_actions` + +The [`actions`](/reference/api/keys#actions) field for the provided API key resource is invalid. It should be an array of strings representing action names. + +## `invalid_api_key_description` + +The [`description`](/reference/api/keys#description) field for the provided API key resource is invalid. It should either be a string or set to `null`. + +## `invalid_api_key_expires_at` + +The [`expiresAt`](/reference/api/keys#expiresat) field for the provided API key resource is invalid. It should either show a future date or datetime in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format or be set to `null`. + +## `invalid_api_key_indexes` + +The [`indexes`](/reference/api/keys#indexes) field for the provided API key resource is invalid. It should be an array of strings representing index names. + +## `invalid_api_key_limit` + +The [`limit`](/reference/api/keys#query-parameters) parameter is invalid. It should be an integer. + +## `invalid_api_key_name` + +The given [`name`](/reference/api/keys#name) is invalid. It should either be a string or set to `null`. + +## `invalid_api_key_offset` + +The [`offset`](/reference/api/keys#query-parameters) parameter is invalid. It should be an integer. + +## `invalid_api_key_uid` + +The given [`uid`](/reference/api/keys#uid) is invalid. The `uid` must follow the [uuid v4](https://www.sohamkamani.com/uuid-versions-explained) format. + +## `invalid_content_type` + +The [Content-Type header](/reference/api/overview#content-type) is not supported by Meilisearch. Currently, Meilisearch only supports JSON, CSV, and NDJSON. + +## `invalid_document_csv_delimiter` + +The [`csvDelimiter`](/reference/api/documents#add-or-replace-documents) parameter is invalid. It should either be a string or [a single ASCII character](https://www.rfc-editor.org/rfc/rfc20). + +## `invalid_document_id` + +The provided [document identifier](/learn/core_concepts/primary_key#document-id) does not meet the format requirements. A document identifier must be of type integer or string, composed only of alphanumeric characters (a-z A-Z 0-9), hyphens (-), and underscores (_). + +## `invalid_document_fields` + +The [`fields`](/reference/api/documents#query-parameters) parameter is invalid. It should be a string. + +## `invalid_document_limit` + +The [`limit`](/reference/api/documents#query-parameters) parameter is invalid. It should be an integer. + +## `invalid_document_offset` + +The [`offset`](/reference/api/documents#query-parameters) parameter is invalid. It should be an integer. + +## `invalid_document_geo_field` + +The provided `_geo` field of one or more documents is invalid. Meilisearch expects `_geo` to be an object with two fields, `lat` and `lng`, each containing geographic coordinates expressed as a string or floating point number. Read more about `_geo` and how to troubleshoot it in [our dedicated guide](/learn/advanced/geosearch). + +## `invalid_index_limit` + +The [`limit`](/reference/api/indexes#query-parameters) parameter is invalid. It should be an integer. + +## `invalid_index_offset` + +The [`offset`](/reference/api/indexes#query-parameters) parameter is invalid. It should be an integer. + +## `invalid_index_uid` + +There is an error in the provided index format, check out our guide on [index creation](/learn/core_concepts/indexes). + +## `invalid_index_primary_key` + +The [`primaryKey`](/reference/api/indexes#body-2) field is invalid. It should either be a string or set to `null`. + +## `invalid_search_attributes_to_crop` + +The [`attributesToCrop`](/reference/api/search#attributes-to-crop) parameter is invalid. It should be an array of strings, a string, or set to `null`. + +## `invalid_search_attributes_to_highlight` + +The [`attributesToHighlight`](/reference/api/search#attributes-to-highlight) parameter is invalid. It should be an array of strings, a string, or set to `null`. + +## `invalid_search_attributes_to_retrieve` + +The [`attributesToRetrieve`](/reference/api/search#attributes-to-retrieve) parameter is invalid. It should be an array of strings, a string, or set to `null`. + +## `invalid_search_crop_length` + +The [`cropLength`](/reference/api/search#crop-length) parameter is invalid. It should be an integer. + +## `invalid_search_crop_marker` + +The [`cropMarker`](/reference/api/search#crop-marker) parameter is invalid. It should be a string or set to `null`. + +## `invalid_search_facets` + +This error occurs if: + +- The [`facets`](/reference/api/search#facets) parameter is invalid. It should be an array of strings, a string, or set to `null` +- The attribute used for faceting is not defined in the [`filterableAttributes` list](/reference/api/settings#filterable-attributes) + +## `invalid_search_filter` + +This error occurs if: + +- The syntax for the [`filter`](/reference/api/search#filter) parameter is invalid +- The attribute used for filtering is not defined in the [`filterableAttributes` list](/reference/api/settings#filterable-attributes) +- A reserved keyword like `_geo`, `_geoDistance`, or `_geoPoint` is used as a filter + +## `invalid_search_highlight_post_tag` + +The [`highlightPostTag`](/reference/api/search#highlight-tags) parameter is invalid. It should be a string. + +## `invalid_search_highlight_pre_tag` + +The [`highlightPreTag`](/reference/api/search#highlight-tags) parameter is invalid. It should be a string. + +## `invalid_search_hits_per_page` + +The [`hitsPerPage`](/reference/api/search#number-of-results-per-page) parameter is invalid. It should be an integer. + +## `invalid_search_limit` + +The [`limit`](/reference/api/search#limit) parameter is invalid. It should be an integer. + +## `invalid_search_matching_strategy` + +The [`matchingStrategy`](/reference/api/search#matching-strategy) parameter is invalid. It should either be set to `last` or `all`. + +## `invalid_search_offset` + +The [`offset`](/reference/api/search#offset) parameter is invalid. It should be an integer. + +## `invalid_search_page` + +The [`page`](/reference/api/search#page) parameter is invalid. It should be an integer. + +## `invalid_search_q` + +The [`q`](/reference/api/search#query-q) parameter is invalid. It should be a string or set to `null` + +## `invalid_search_show_matches_position` + +The [`showMatchesPosition`](/reference/api/search#show-matches-position) parameter is invalid. It should either be a boolean or set to `null`. + +## `invalid_search_sort` + +This error occurs if: + +- The syntax for the [`sort`](/reference/api/search#sort) parameter is invalid +- The attribute used for sorting is not defined in the [`sortableAttributes`](/reference/api/settings#sortable-attributes) list or the `sort` ranking rule is missing from the settings +- A reserved keyword like `_geo`, `_geoDistance`, `_geoRadius`, or `_geoBoundingBox` is used as a filter + +## `invalid_settings_displayed_attributes` + +The value of [displayed attributes](/learn/configuration/displayed_searchable_attributes#displayed-fields) is invalid. It should be an empty array, an array of strings, or set to `null`. + +## `invalid_settings_distinct_attribute` + +The value of [distinct attributes](/learn/configuration/distinct) is invalid. It should be a string or set to `null`. + +## `invalid_settings_faceting` + +The value for the [`maxValuesPerFacet`](/reference/api/settings#faceting-object) field is invalid. It should either be an integer or set to `null`. + +## `invalid_settings_filterable_attributes` + +The value of [filterable attributes](/reference/api/settings#filterable-attributes) is invalid. It should be an empty array, an array of strings, or set to `null`. + +## `invalid_settings_pagination` + +The value for the [`maxTotalHits`](/reference/api/settings#pagination-object) field is invalid. It should either be an integer or set to `null`. + +## `invalid_settings_ranking_rules` + +This error occurs if: + +- The [settings payload](/reference/api/settings#body) has an invalid format +- A non-existent ranking rule is specified +- A custom ranking rule is malformed +- A reserved keyword like `_geo`, `_geoDistance`, `_geoRadius`, `_geoBoundingBox`, or `_geoPoint` is used as a custom ranking rule + +## `invalid_settings_searchable_attributes` + +The value of [searchable attributes](/reference/api/settings#searchable-attributes) is invalid. It should be an empty array, an array of strings or set to `null`. + +## `invalid_settings_sortable_attributes` + +The value of [sortable attributes](/reference/api/settings#sortable-attributes) is invalid. It should be an empty array, an array of strings or set to `null`. + +## `invalid_settings_stop_words` + +The value of [stop words](/reference/api/settings#stop-words) is invalid. It should be an empty array, an array of strings or set to `null`. + +## `invalid_settings_synonyms` + +The value of the [synonyms](/reference/api/settings#synonyms) is invalid. It should either be an object or set to `null`. + +## `invalid_settings_typo_tolerance` + +This error occurs if: + +- The [`enabled`](/reference/api/settings#typo-tolerance-object) field is invalid. It should either be a boolean or set to `null` +- The [`disableOnAttributes`](/reference/api/settings#typo-tolerance-object) field is invalid. It should either be an array of strings or set to `null` +- The [`disableOnWords`](/reference/api/settings#typo-tolerance-object) field is invalid. It should either be an array of strings or set to `null` +- The [`minWordSizeForTypos`](/reference/api/settings#typo-tolerance-object) field is invalid. It should either be an integer or set to `null` +- The value of either [`oneTypo`](/reference/api/settings#typo-tolerance-object) or [`twoTypos`](/reference/api/settings#typo-tolerance-object) is invalid. It should either be an integer or set to `null` + +## `invalid_state` + +The database is in an invalid state. Deleting the database and re-indexing should solve the problem. + +## `invalid_store_file` + +The `data.ms` folder is in an invalid state. Your `b` file is corrupted or the `data.ms` folder has been replaced by a file. + +## `invalid_swap_duplicate_index_found` + +The indexes used in the [`indexes`](/reference/api/indexes#body-3) array for a [swap index](/reference/api/indexes#swap-indexes) request have been declared multiple times. You must declare each index only once. + +## `invalid_swap_indexes` + +This error happens if: + +- The payload doesn't contain exactly two index [`uids`](/reference/api/indexes#body-3) for a swap operation +- The payload contains an invalid index name in the [`indexes`](/reference/api/indexes#body-3) array + +## `invalid_task_after_enqueued_at` + +The [`afterEnqueuedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. + +## `invalid_task_after_finished_at` + +The [`afterFinishedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. + +## `invalid_task_after_started_at` + +The [`afterStartedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. + +## `invalid_task_before_enqueued_at` + +The [`beforeEnqueuedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. + +## `invalid_task_before_finished_at` + +The [`beforeFinishedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. + +## `invalid_task_before_started_at` + +The [`beforeStartedAt`](/reference/api/tasks#query-parameters) query parameter is invalid. + +## `invalid_task_canceled_by` + +The [`canceledBy`](/reference/api/tasks#canceledby) query parameter is invalid. It should be an integer. Multiple `uid`s should be separated by commas (`,`). + +## `invalid_task_index_uids` + +The [`indexUids`](/reference/api/tasks#query-parameters) query parameter contains an invalid index uid. + +## `invalid_task_limit` + +The [`limit`](/reference/api/tasks#query-parameters) parameter is invalid. It must be an integer. + +## `invalid_task_statuses` + +The requested task status is invalid. Please use one of the [possible values](/reference/api/tasks#status). + +## `invalid_task_types` + +The requested task type is invalid. Please use one of the [possible values](/reference/api/tasks#type). + +## `invalid_task_uids` + +The [`uids`](/reference/api/tasks#query-parameters) query parameter is invalid. + +## `io_error` + +This error generally occurs when the host system has no space left on the device or when the database doesn't have read or write access. + +## `index_primary_key_no_candidate_found` + +[Primary key inference](/learn/core_concepts/primary_key#meilisearch-guesses-your-primary-key) failed as the received documents do not contain any fields ending with `id`. [Manually designate the primary key](/learn/core_concepts/primary_key#setting-the-primary-key), or add some field ending with `id` to your documents. + +## `malformed_payload` + +The [Content-Type header](/reference/api/overview#content-type) does not match the request body payload format or the format is invalid. + +## `missing_api_key_actions` + +The [`actions`](/reference/api/keys#actions) field is missing from payload. + +## `missing_api_key_expires_at` + +The [`expiresAt`](/reference/api/keys#expiresat) field is missing from payload. + +## `missing_api_key_indexes` + +The [`indexes`](/reference/api/keys#indexes) field is missing from payload. + +## `missing_authorization_header` + +This error happens if: + +- The requested resources are protected with an API key that was not provided in the request header. Check our guide on [security](/learn/security/master_api_keys) for more information +- You are using the wrong authorization header for your version. **v0.24 and below** use `X-MEILI-API-KEY: apiKey`, whereas **v0.25 and above** use `Authorization: Bearer apiKey` + +## `missing_content_type` + +The payload does not contain a [Content-Type header](/reference/api/overview#content-type). Currently, Meilisearch only supports JSON, CSV, and NDJSON. + +## `missing_document_id` + +A document does not contain any value for the required primary key, and is thus invalid. Check documents in the current addition for the invalid ones. + +## `missing_index_uid` + +The payload is missing the [`uid`](/reference/api/indexes#index-object) field. + +## `missing_master_key` + +You need to set a master key before you can access the `/keys` route. Read more about setting a master key at launch in our [dedicated guide](/learn/security/master_api_keys#protecting-a-meilisearch-instance). + +## `missing_payload` + +The Content-Type header was specified, but no request body was sent to the server or the request body is empty. + +## `missing_swap_indexes` + +The index swap payload is missing the [`indexes`](/reference/api/indexes#swap-indexes) object. + +## `missing_task_filters` + +The [cancel tasks](/reference/api/tasks#cancel-tasks) and [delete tasks](/reference/api/tasks#delete-tasks) endpoints require one of the available query parameters. + +## `no_space_left_on_device` + +This error occurs if: + +- The host system partition reaches its maximum capacity and can no longer accept writes +- The tasks queue reaches its limit and can no longer accept writes. You can delete tasks using the [delete tasks endpoint](/reference/api/tasks#delete-tasks) to continue write operations + +## `not_found` + +The requested resources could not be found. + +## `payload_too_large` + +The payload sent to the server was too large. Check out this [guide](/learn/configuration/instance_options#payload-limit-size) to customize the maximum payload size accepted by Meilisearch. + +## `task_not_found` + +The requested task does not exist. Please ensure that you are using the correct [`uid`](/reference/api/tasks#uid). + +## `too_many_open_files` + +Indexing a large batch of documents, such as a JSON file over 3.5GB in size, can result in Meilisearch opening too many file descriptors. Depending on your machine, this might reach your system's default resource usage limits and trigger the `too_many_open_files` error. Use [`ulimit`](https://www.ibm.com/docs/en/aix/7.1?topic=u-ulimit-command) or a similar tool to increase resource consumption limits before running Meilisearch. For example, call `ulimit -Sn 3000` in a UNIX environment to raise the number of allowed open file descriptors to 3000. + +## `unretrievable_document` + +The document exists in store, but there was an error retrieving it. This probably comes from an inconsistent state in the database. diff --git a/reference/errors/overview.md b/reference/errors/overview.mdx similarity index 91% rename from reference/errors/overview.md rename to reference/errors/overview.mdx index cf7024639d..a7c285a740 100644 --- a/reference/errors/overview.md +++ b/reference/errors/overview.mdx @@ -16,7 +16,7 @@ Meilisearch uses the following standard HTTP codes for a successful or failed AP ## Errors -All detailed task responses contain an [`error`](/reference/api/tasks.md#error) field. When a task fails, it is always accompanied by a JSON-formatted error response. Meilisearch errors can be of one of the following types: +All detailed task responses contain an [`error`](/reference/api/tasks#error) field. When a task fails, it is always accompanied by a JSON-formatted error response. Meilisearch errors can be of one of the following types: | Type | Description | | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -39,8 +39,8 @@ All detailed task responses contain an [`error`](/reference/api/tasks.md#error) | Field | Description | | :------------ | :------------------------------------------------ | | **`message`** | Human-readable description of the error | -| **`code`** | [Error code](/reference/errors/error_codes.md) | +| **`code`** | [Error code](/reference/errors/error_codes) | | **`type`** | [Type](#errors) of error returned | | **`link`** | Link to the relevant section of the documentation | -If you're having trouble understanding an error, take a look at the [complete list](/reference/errors/error_codes.md) of `code` values and descriptions. +If you're having trouble understanding an error, take a look at the [complete list](/reference/errors/error_codes) of `code` values and descriptions. diff --git a/resources/faq.md b/resources/faq.mdx similarity index 74% rename from resources/faq.md rename to resources/faq.mdx index 787ce953f4..6af2bdd45c 100644 --- a/resources/faq.md +++ b/resources/faq.mdx @@ -1,6 +1,5 @@ --- permalink: /faq.html -sidebar: auto --- # FAQ @@ -15,27 +14,27 @@ Of course! No knowledge of ElasticSearch or Solr is required to use Meilisearch. Meilisearch is really **easy to use** and thus accessible to all kinds of developers. -[Take a quick tour](/learn/getting_started/quick_start.md) to learn the basics of Meilisearch! +[Take a quick tour](/learn/getting_started/quick_start) to learn the basics of Meilisearch! -We also provide a lot of tools, including [SDKs](/learn/what_is_meilisearch/sdks.md), to help you integrate easily Meilisearch in your project. We're adding new tools every day! +We also provide a lot of tools, including [SDKs](/learn/what_is_meilisearch/sdks), to help you integrate easily Meilisearch in your project. We're adding new tools every day! -Plus, you can [contact us](/learn/what_is_meilisearch/contact.md) if you need any help. +Plus, you can [contact us](https://discord.gg/meilisearch) if you need any help. ## How to know if Meilisearch perfectly fits my use cases? -Since Meilisearch is an open-source and easy-to-use tool, you can give it a try using your data. Follow this [guide](/learn/getting_started/quick_start.md) to get a quick start! +Since Meilisearch is an open-source and easy-to-use tool, you can give it a try using your data. Follow this [guide](/learn/getting_started/quick_start) to get a quick start! -Besides, we published a [comparison between Meilisearch and other search engines](/learn/what_is_meilisearch/comparison_to_alternatives.md) with the goal of providing an overview of Meilisearch alternatives. +Besides, we published a [comparison between Meilisearch and other search engines](/learn/what_is_meilisearch/comparison_to_alternatives) with the goal of providing an overview of Meilisearch alternatives. ## I am trying to add my documents but I keep receiving a `400 - Bad Request` response The `400 - Bad request` response often means that your data is not in an expected format. You might have extraneous commas, mismatched brackets, missing quotes, etc. Meilisearch API accepts JSON, CSV, and NDJSON formats. -When [adding or replacing documents](/reference/api/documents.md#add-or-replace-documents), you must enclose them in an array even if there is only one new document. +When [adding or replacing documents](/reference/api/documents#add-or-replace-documents), you must enclose them in an array even if there is only one new document. ## I have uploaded my documents, but I get no result when I search in my index -Your document upload probably failed. To understand why, please check the status of the document addition task using the returned [`taskUid`](/reference/api/tasks.md#get-one-task). If the task failed, the response should contain an `error` object. +Your document upload probably failed. To understand why, please check the status of the document addition task using the returned [`taskUid`](/reference/api/tasks#get-one-task). If the task failed, the response should contain an `error` object. Here is an example of a failed task: @@ -68,7 +67,7 @@ Check your error message for more information. ## Is killing a Meilisearch process safe? Killing Meilisearch is **safe**, even in the middle of a process (ex: adding a batch of documents). When you restart the server, it will start the task from the beginning. -More information in the [asynchronous operations guide](/learn/advanced/asynchronous_operations.md). +More information in the [asynchronous operations guide](/learn/advanced/asynchronous_operations). ## Do you provide a public roadmap for Meilisearch and its integration tools? @@ -106,18 +105,18 @@ The following factors have a great impact on the size of your database (in no pa - The size of each update - The number of different words present in the dataset -:::tip -Beware heavily multi-lingual datasets and datasets with many unique words, such as IDs or URLs, as they can slow search speed and greatly increase database size. If you do have ID or URL fields, [make them non-searchable](/reference/api/settings.md#update-searchable-attributes) unless they are useful as search criteria. -::: + +Beware heavily multi-lingual datasets and datasets with many unique words, such as IDs or URLs, as they can slow search speed and greatly increase database size. If you do have ID or URL fields, [make them non-searchable](/reference/api/settings#update-searchable-attributes) unless they are useful as search criteria. + ### Search speed -Because Meilisearch uses a [memory map](/learn/advanced/storage.md#lmdb), **search speed is based on the ratio between RAM and database size**. In other words: +Because Meilisearch uses a [memory map](/learn/advanced/storage#lmdb), **search speed is based on the ratio between RAM and database size**. In other words: - A big database + a small amount of RAM => slow search - A small database + tons of RAM => lightning fast search -Meilisearch also uses disk space as [virtual memory](/learn/advanced/storage.md#memory-usage). This disk space does not correspond to database size; rather, it provides speed and flexibility to the engine by allowing it to go over the limits of physical RAM. +Meilisearch also uses disk space as [virtual memory](/learn/advanced/storage#memory-usage). This disk space does not correspond to database size; rather, it provides speed and flexibility to the engine by allowing it to go over the limits of physical RAM. At this time, the number of CPU cores has no direct impact on index or search speed. However, **the more cores you provide to the engine, the more search queries it will be able to process at the same time**. @@ -131,14 +130,14 @@ Meilisearch is designed to be fast (≤50ms response time), so speeding it up is In general, we recommend the former. However, if you need to reduce the size of your database for any reason, keep in mind that: - **More relevancy rules => a larger database** - - The proximity [ranking rule](/learn/core_concepts/relevancy.md#ranking-rules) alone can be responsible for almost 80% of database size -- Adding many attributes to [`filterableAttributes`](/reference/api/settings.md#filterable-attributes) also consumes a large amount of disk space + - The proximity [ranking rule](/learn/core_concepts/relevancy#ranking-rules) alone can be responsible for almost 80% of database size +- Adding many attributes to [`filterableAttributes`](/reference/api/settings#filterable-attributes) also consumes a large amount of disk space - Multi-lingual datasets are costly, so split your dataset—one language per index -- [Stop words](/reference/api/settings.md#stop-words) are essential to reducing database size -- Not all attributes need to be [searchable](/learn/configuration/displayed_searchable_attributes.md#searchable-fields). Avoid indexing unique IDs. +- [Stop words](/reference/api/settings#stop-words) are essential to reducing database size +- Not all attributes need to be [searchable](/learn/configuration/displayed_searchable_attributes#searchable-fields). Avoid indexing unique IDs. ## Why does Meilisearch send data to Segment? Does Meilisearch track its users? **Meilisearch will never track or identify individual users**. That being said, we do use Segment to collect anonymous data about user trends, feature usage, and bugs. -You can read more about what metrics we collect, why we collect them, and how to disable it on our [telemetry page](/learn/what_is_meilisearch/telemetry.md). Issues of transparency and privacy are very important to us, so if you feel we are lacking in this area please [open an issue](https://github.com/meilisearch/documentation/issues/new/choose) or send an email to our dedicated email address: [privacy@meilisearch.com](mailto:privacy@meilisearch.com). +You can read more about what metrics we collect, why we collect them, and how to disable it on our [telemetry page](/learn/what_is_meilisearch/telemetry). Issues of transparency and privacy are very important to us, so if you feel we are lacking in this area please [open an issue](https://github.com/meilisearch/documentation/issues/new/choose) or send an email to our dedicated email address: [privacy@meilisearch.com](mailto:privacy@meilisearch.com). diff --git a/resources/open-api-readme.md b/resources/open-api-readme.md deleted file mode 100644 index e82b3acd42..0000000000 --- a/resources/open-api-readme.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -permalink: /open-api-readme.html ---- - -# OpenAPI - -Every one of Meilisearch's [API endpoints](/reference/api/overview.md) is also documented with [OpenAPI v3.1.0](http://spec.openapis.org/oas/v3.1.0). - -The raw YAML file is available [here](https://bump.sh/doc/meilisearch.yaml) and a browser interface [here](https://bump.sh/doc/meilisearch). diff --git a/.vuepress/public/sample-template.yaml b/sample-template.yaml similarity index 98% rename from .vuepress/public/sample-template.yaml rename to sample-template.yaml index 72c6de8f01..7fe97a231f 100644 --- a/.vuepress/public/sample-template.yaml +++ b/sample-template.yaml @@ -1,7 +1,6 @@ # This code-samples file is used by the Meilisearch documentation # Every example written here will be automatically fetched by # the documentation on build -# You can read more on https://github.com/meilisearch/documentation/tree/main/.vuepress/code-samples --- get_one_index_1: |- list_all_indexes_1: |- diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 4e8f19b601..0000000000 --- a/yarn.lock +++ /dev/null @@ -1,9677 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== - -"@babel/core@^7.11.0", "@babel/core@^7.8.4": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== - dependencies: - "@babel/types" "^7.15.4" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" - integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4", "@babel/helper-compilation-targets@^7.9.6": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== - dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4", "@babel/helper-module-imports@^7.8.3": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226" - integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw== - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== - dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.0": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" - integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" - integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - -"@babel/plugin-proposal-async-generator-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e" - integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.14.5", "@babel/plugin-proposal-class-properties@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-class-static-block@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@^7.8.3": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.15.4.tgz#fb55442bc83ab4d45dda76b91949706bf22881d2" - integrity sha512-WNER+YLs7avvRukEddhu5PSfSaMMimX2xBFgLQS7Bw16yrUxJGWidO9nQp+yLy9MVybg5Ba3BlhAw+BkdhpDmg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-decorators" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" - -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-private-property-in-object@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz#eafb9c0cbe09c8afeb964ba3a7bbd63945a72f20" - integrity sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-block-scoping@^7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-classes@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-for-of@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== - dependencies: - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== - dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - -"@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-runtime@^7.11.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz#d3aa650d11678ca76ce294071fda53d7804183b3" - integrity sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-spread@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" - integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/preset-env@^7.11.0": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659" - integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" - "@babel/plugin-proposal-async-generator-functions" "^7.15.4" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.15.4" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.15.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.15.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.15.3" - "@babel/plugin-transform-classes" "^7.15.4" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.15.4" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.4" - "@babel/plugin-transform-modules-systemjs" "^7.15.4" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.15.4" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.6" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.11.0", "@babel/runtime@^7.8.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.0.0", "@babel/template@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.0": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== - dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" - -"@bidoubiwa/vuepress-plugin-element-tabs@^0.2.9": - version "0.2.9" - resolved "https://registry.yarnpkg.com/@bidoubiwa/vuepress-plugin-element-tabs/-/vuepress-plugin-element-tabs-0.2.9.tgz#b480cbab0b89ee7ebb2afb43fa560ef1ac0300f5" - integrity sha512-KxWl91Qz32ny/B6oQf8NG6UXE6nI4dVtyxxP015zr51aNQPTtU60hb3Xdk7Ent1ZfDzlucLSzPjVN5LG9vp9PQ== - dependencies: - resize-observer-polyfill "^1.5.1" - sass "^1.52.1" - sass-loader "^7.1.0" - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@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" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect-history-api-fallback@*": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" - integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.31": - version "4.17.32" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz#93dda387f5516af616d8d3f05f2c4c79d81e1b82" - integrity sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.15" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.15.tgz#9290e983ec8b054b65a5abccb610411953d417ff" - integrity sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.31" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/glob@^7.1.1": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/highlight.js@^9.7.0": - version "9.12.4" - resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.4.tgz#8c3496bd1b50cc04aeefd691140aa571d4dbfa34" - integrity sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww== - -"@types/http-proxy@^1.17.5": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" - integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== - dependencies: - "@types/node" "*" - -"@types/json-schema@^7.0.5": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/linkify-it@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" - integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== - -"@types/markdown-it@^10.0.0": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-10.0.3.tgz#a9800d14b112c17f1de76ec33eff864a4815eec7" - integrity sha512-daHJk22isOUvNssVGF2zDnnSyxHhFYhtjeX4oQaKD6QzL3ZR1QSgiD1g+Q6/WSWYVogNXYDXODtbgW/WiFCtyw== - dependencies: - "@types/highlight.js" "^9.7.0" - "@types/linkify-it" "*" - "@types/mdurl" "*" - highlight.js "^9.7.0" - -"@types/mdurl@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" - integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== - -"@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/node@*": - version "16.9.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.6.tgz#040a64d7faf9e5d9e940357125f0963012e66f04" - integrity sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ== - -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/serve-static@*": - version "1.15.0" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" - integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/tapable@^1": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" - integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== - -"@types/uglify-js@*": - version "3.17.1" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" - integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== - dependencies: - source-map "^0.6.1" - -"@types/webpack-dev-server@^3": - version "3.11.6" - resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz#d8888cfd2f0630203e13d3ed7833a4d11b8a34dc" - integrity sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ== - dependencies: - "@types/connect-history-api-fallback" "*" - "@types/express" "*" - "@types/serve-static" "*" - "@types/webpack" "^4" - http-proxy-middleware "^1.0.0" - -"@types/webpack-sources@*": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" - integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4": - version "4.41.33" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" - integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== - dependencies: - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" - -"@vue/babel-helper-vue-jsx-merge-props@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" - integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== - -"@vue/babel-helper-vue-transform-on@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" - integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== - -"@vue/babel-plugin-jsx@^1.0.3": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.7.tgz#22d6c84ef8db5ac13db971476a55cc5215902168" - integrity sha512-B5ctmlVk+vfyIV6PuvQkRB512c6LX2BUvJdNP9gOcllnpg9yrls9bDi7b3+tkAdT8+w1OoWsuJHHEV0Ntd67KQ== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - "@vue/babel-helper-vue-transform-on" "^1.0.2" - camelcase "^6.0.0" - html-tags "^3.1.0" - svg-tags "^1.0.0" - -"@vue/babel-plugin-transform-vue-jsx@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz#646046c652c2f0242727f34519d917b064041ed7" - integrity sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - html-tags "^2.0.0" - lodash.kebabcase "^4.1.1" - svg-tags "^1.0.0" - -"@vue/babel-preset-app@^4.1.2": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.13.tgz#cb475321e4c73f7f110dac29a48c2a9cb80afeb6" - integrity sha512-pM7CR3yXB6L8Gfn6EmX7FLNE3+V/15I3o33GkSNsWvgsMp6HVGXKkXgojrcfUUauyL1LZOdvTmu4enU2RePGHw== - dependencies: - "@babel/core" "^7.11.0" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-decorators" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.11.0" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.0" - "@vue/babel-plugin-jsx" "^1.0.3" - "@vue/babel-preset-jsx" "^1.2.4" - babel-plugin-dynamic-import-node "^2.3.3" - core-js "^3.6.5" - core-js-compat "^3.6.5" - semver "^6.1.0" - -"@vue/babel-preset-jsx@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz#92fea79db6f13b01e80d3a0099e2924bdcbe4e87" - integrity sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w== - dependencies: - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - "@vue/babel-sugar-composition-api-inject-h" "^1.2.1" - "@vue/babel-sugar-composition-api-render-instance" "^1.2.4" - "@vue/babel-sugar-functional-vue" "^1.2.2" - "@vue/babel-sugar-inject-h" "^1.2.2" - "@vue/babel-sugar-v-model" "^1.2.3" - "@vue/babel-sugar-v-on" "^1.2.3" - -"@vue/babel-sugar-composition-api-inject-h@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz#05d6e0c432710e37582b2be9a6049b689b6f03eb" - integrity sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-composition-api-render-instance@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz#e4cbc6997c344fac271785ad7a29325c51d68d19" - integrity sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-functional-vue@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz#267a9ac8d787c96edbf03ce3f392c49da9bd2658" - integrity sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-inject-h@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz#d738d3c893367ec8491dcbb669b000919293e3aa" - integrity sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-v-model@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz#fa1f29ba51ebf0aa1a6c35fa66d539bc459a18f2" - integrity sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - camelcase "^5.0.0" - html-tags "^2.0.0" - svg-tags "^1.0.0" - -"@vue/babel-sugar-v-on@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz#342367178586a69f392f04bfba32021d02913ada" - integrity sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - camelcase "^5.0.0" - -"@vue/component-compiler-utils@^3.1.0": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz#2f7ed5feed82ff7f0284acc11d525ee7eff22460" - integrity sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.36" - postcss-selector-parser "^6.0.2" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - optionalDependencies: - prettier "^1.18.2" - -"@vuepress/core@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.9.9.tgz#aa8bc4497fcbb6aab9c1e290944d422edeb20495" - integrity sha512-Ekgu409ZSgvAV9n14F3DaEWtgkwrEicg1nWs0gbxGgUCdREeX/7rwxSfKwWwBjCwfCUKR2L3+6pXGjzxex0t+g== - dependencies: - "@babel/core" "^7.8.4" - "@vue/babel-preset-app" "^4.1.2" - "@vuepress/markdown" "1.9.9" - "@vuepress/markdown-loader" "1.9.9" - "@vuepress/plugin-last-updated" "1.9.9" - "@vuepress/plugin-register-components" "1.9.9" - "@vuepress/shared-utils" "1.9.9" - "@vuepress/types" "1.9.9" - autoprefixer "^9.5.1" - babel-loader "^8.0.4" - bundle-require "2.1.8" - cache-loader "^3.0.0" - chokidar "^2.0.3" - connect-history-api-fallback "^1.5.0" - copy-webpack-plugin "^5.0.2" - core-js "^3.6.4" - cross-spawn "^6.0.5" - css-loader "^2.1.1" - esbuild "0.14.7" - file-loader "^3.0.1" - js-yaml "^3.13.1" - lru-cache "^5.1.1" - mini-css-extract-plugin "0.6.0" - optimize-css-assets-webpack-plugin "^5.0.1" - portfinder "^1.0.13" - postcss-loader "^3.0.0" - postcss-safe-parser "^4.0.1" - toml "^3.0.0" - url-loader "^1.0.1" - vue "^2.6.10" - vue-loader "^15.7.1" - vue-router "^3.4.5" - vue-server-renderer "^2.6.10" - vue-template-compiler "^2.6.10" - vuepress-html-webpack-plugin "^3.2.0" - vuepress-plugin-container "^2.0.2" - webpack "^4.8.1" - webpack-chain "^6.0.0" - webpack-dev-server "^3.5.1" - webpack-merge "^4.1.2" - webpackbar "3.2.0" - -"@vuepress/markdown-loader@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.9.9.tgz#b44e446a04808b9aef503d32fdcbc1e7fb7afef4" - integrity sha512-nyY+sytuQaDLEIk6Yj9JFUfSQpe9/sz30xQFkGCYqi0lQTRGQM6IcRDgfcTS7b25A0qRlwpDGBfKQiGGMZKSfg== - dependencies: - "@vuepress/markdown" "1.9.9" - loader-utils "^1.1.0" - lru-cache "^5.1.1" - -"@vuepress/markdown@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.9.9.tgz#1f582e6302e91a09491ca7bd0c8bcf9683140e03" - integrity sha512-JzFdBdGe5aoiKSaEgF+h3JLDXNVfWPI5DJWXrIt7rhhkMJesF6HowIznPLdXqukzHfXHcPvo9oQ4o6eT0YmVGA== - dependencies: - "@vuepress/shared-utils" "1.9.9" - markdown-it "^8.4.1" - markdown-it-anchor "^5.0.2" - markdown-it-chain "^1.3.0" - markdown-it-emoji "^1.4.0" - markdown-it-table-of-contents "^0.4.0" - prismjs "^1.13.0" - -"@vuepress/plugin-active-header-links@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.9.9.tgz#fad96c550bea0b204fe16266cff1405e8636c1e1" - integrity sha512-lTnIhbuALjOjFts33jJD8r4ScNBxnZ6MtmePKEwvYlC3J9uvngs1Htpb1JzLEX9QCydt+bhLmZ92bTXn/PdTpg== - dependencies: - "@vuepress/types" "1.9.9" - lodash.debounce "^4.0.8" - -"@vuepress/plugin-last-updated@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.9.9.tgz#a7cb5f39b2793c8d113de08a514c316c26cc38c1" - integrity sha512-MV4csmM0/lye83VtkOc+b8fs0roi7mvE7BmCCOE39Z6t8nv/ZmEPOwKeHD0+hXPT+ZfoATYvDcsYU7uxbdw0Pw== - dependencies: - "@vuepress/types" "1.9.9" - cross-spawn "^6.0.5" - -"@vuepress/plugin-nprogress@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.9.9.tgz#4fee4818ddc8ddc6a1778b7f2b74ab784c90915d" - integrity sha512-+3fLxjwTLH8MeU54E7i1ovRu9KzBom2lvSeUsu9B8PuLyrETAqW7Pe1H66awEEALEe0ZnnEU4d7SeVe9ljsLAQ== - dependencies: - "@vuepress/types" "1.9.9" - nprogress "^0.2.0" - -"@vuepress/plugin-register-components@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.9.9.tgz#95be133d6ef33c03f410caae8eb1fabdf27a7999" - integrity sha512-tddnAiSmJsIWWPzE7TcbGU8xzndXf4a8i4BfIev2QzSUnIOQFZDGXUAsCkw4/f9N9UFxQSObjFPzTeUUxb7EvA== - dependencies: - "@vuepress/shared-utils" "1.9.9" - "@vuepress/types" "1.9.9" - -"@vuepress/plugin-search@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.9.9.tgz#d30804b86f9b7f54b3db0b987a288433be3cfd7b" - integrity sha512-W/FE+YHoXDD4qk2wu5yRMkti271TA4y+7UBMrmCavvVAGrLIRnaZfswRUgIiDlEthBc+Pn8/As/Dy1jFTLBa9A== - dependencies: - "@vuepress/types" "1.9.9" - -"@vuepress/shared-utils@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.9.9.tgz#f6561ec2264d54e4e459d17678766ffe09f4bfc6" - integrity sha512-qhk/7QF5LgMEXhEB1hlqreGFgkz4p2pmaBBNFxnAnYmSwmyO+u/oFOpZLI16QRx9Wg6ekR2ENmByQLxV7y4lJg== - dependencies: - chalk "^2.3.2" - escape-html "^1.0.3" - fs-extra "^7.0.1" - globby "^9.2.0" - gray-matter "^4.0.1" - hash-sum "^1.0.2" - semver "^6.0.0" - toml "^3.0.0" - upath "^1.1.0" - -"@vuepress/shared-utils@^1.2.0": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.8.2.tgz#5ec1601f2196aca34ad82eed7c9be2d7948f705b" - integrity sha512-6kGubc7iBDWruEBUU7yR+sQ++SOhMuvKWvWeTZJKRZedthycdzYz7QVpua0FaZSAJm5/dIt8ymU4WQvxTtZgTQ== - dependencies: - chalk "^2.3.2" - escape-html "^1.0.3" - fs-extra "^7.0.1" - globby "^9.2.0" - gray-matter "^4.0.1" - hash-sum "^1.0.2" - semver "^6.0.0" - toml "^3.0.0" - upath "^1.1.0" - -"@vuepress/theme-default@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.9.9.tgz#26f1965e1204445fa617308d3b06f134baab4936" - integrity sha512-de0FiOwM/h3rFTBSZK0NNBB117lA/e3IHusU7Xm2XeZRiZ/EE3yvbWclZnbbRNt3YjDMmrWXEW/kBTBxfiMuWQ== - dependencies: - "@vuepress/plugin-active-header-links" "1.9.9" - "@vuepress/plugin-nprogress" "1.9.9" - "@vuepress/plugin-search" "1.9.9" - "@vuepress/types" "1.9.9" - docsearch.js "^2.5.2" - lodash "^4.17.15" - stylus "^0.54.8" - stylus-loader "^3.0.2" - vuepress-plugin-container "^2.0.2" - vuepress-plugin-smooth-scroll "^0.0.3" - -"@vuepress/types@1.9.9": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@vuepress/types/-/types-1.9.9.tgz#7c21e4c91c13e58e2ff303ded9ad7425805cb07d" - integrity sha512-ukGW49ILzLhIc7CltHMr+BeIjWKloJNN1mrvbDz3beycp9b9kgH+DXNdRIK9QCKr4fJsy7x08vNMwZr9Nq/PTQ== - dependencies: - "@types/markdown-it" "^10.0.0" - "@types/webpack-dev-server" "^3" - webpack-chain "^6.0.0" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-jsx@^5.2.0, acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.1, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.7.1: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - -agentkeepalive@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-2.2.0.tgz#c5d1bd4b129008f1163f236f86e5faea2026e2ef" - integrity sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8= - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.6.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" - integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -algoliasearch@^3.24.5: - version "3.35.1" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-3.35.1.tgz#297d15f534a3507cab2f5dfb996019cac7568f0c" - integrity sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ== - dependencies: - agentkeepalive "^2.2.0" - debug "^2.6.9" - envify "^4.0.0" - es6-promise "^4.1.0" - events "^1.1.0" - foreach "^2.0.5" - global "^4.3.2" - inherits "^2.0.1" - isarray "^2.0.1" - load-script "^1.0.0" - object-keys "^1.0.11" - querystring-es3 "^0.2.1" - reduce "^1.0.1" - semver "^5.1.0" - tunnel-agent "^0.6.0" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.1.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autocomplete.js@0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/autocomplete.js/-/autocomplete.js-0.36.0.tgz#94fe775fe64b6cd42e622d076dc7fd26bedd837b" - integrity sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q== - dependencies: - immediate "^3.2.3" - -autocomplete.js@^0.38.1: - version "0.38.1" - resolved "https://registry.yarnpkg.com/autocomplete.js/-/autocomplete.js-0.38.1.tgz#9b006c985d996165ebbc62af33f5b4c32d209cc2" - integrity sha512-6pSJzuRMY3pqpozt+SXThl2DmJfma8Bi3SVFbZHS0PW/N72bOUv+Db0jAh2cWOhTsA4X+GNmKvIl8wExJTnN9w== - dependencies: - immediate "^3.2.3" - -autoprefixer@^9.5.1: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-loader@^8.0.4: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^1.4.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz#68cb81316b0e8d9d721a92e0009ec6ecd4cd2ca9" - integrity sha512-z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.14.0" - -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bent@^7.3.12: - version "7.3.12" - resolved "https://registry.yarnpkg.com/bent/-/bent-7.3.12.tgz#e0a2775d4425e7674c64b78b242af4f49da6b035" - integrity sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w== - dependencies: - bytesish "^0.4.1" - caseless "~0.12.0" - is-stream "^2.0.0" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.1.1, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.17.0: - version "4.17.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9" - integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ== - dependencies: - caniuse-lite "^1.0.30001259" - electron-to-chromium "^1.3.846" - escalade "^3.1.1" - nanocolors "^0.1.5" - node-releases "^1.1.76" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-json@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" - integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bundle-require@2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-2.1.8.tgz#28f6de9d4468a6b7b76fb5c9bf52e70f5091245d" - integrity sha512-oOEg3A0hy/YzvNWNowtKD0pmhZKseOFweCbgyMqTIih4gRY1nJWsvrOCT27L9NbIyL5jMjTFrAUpGxxpW68Puw== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -bytesish@^0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/bytesish/-/bytesish-0.4.4.tgz#f3b535a0f1153747427aee27256748cff92347e6" - integrity sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ== - -cac@^6.5.6: - version "6.7.3" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.3.tgz#10410b8611677990cc2e3c8b576d471c1d71b768" - integrity sha512-ECVqVZh74qgSuZG9YOt2OJPI3wGcf+EwwuF/XIOYqZBD0KZYLtgPWqFPxmDPQ6joxI1nOlvVgRV6VT53Ooyocg== - -cacache@^12.0.2, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cache-loader@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-3.0.1.tgz#cee6cf4b3cdc7c610905b26bad6c2fc439c821af" - integrity sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw== - dependencies: - buffer-json "^2.0.0" - find-cache-dir "^2.1.0" - loader-utils "^1.2.3" - mkdirp "^0.5.1" - neo-async "^2.6.1" - schema-utils "^1.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001259: - version "1.0.30001259" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001259.tgz#ae21691d3da9c4be6144403ac40f71d9f6efd790" - integrity sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -check-md@1.0.0, "check-md@https://github.com/bidoubiwa/check-md#add_ignore_pattern": - version "1.0.1" - resolved "https://github.com/bidoubiwa/check-md#e02c680f53dd65a3f24289fcf0cd13da519da275" - dependencies: - chalk "^4.0.0" - commander "^5.0.0" - diacritics "^1.3.0" - globby "^11.0.0" - -"chokidar@>=3.0.0 <4.0.0": - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^2.0.3, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" - integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -cli-boxes@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" - integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorette@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commander@~9.4.1: - version "9.4.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" - integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -connect-history-api-fallback@^1.5.0, connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -consola@^2.6.0: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@^5.0.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" - integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== - dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" - normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - webpack-log "^2.0.0" - -core-js-compat@^3.14.0, core-js-compat@^3.16.0, core-js-compat@^3.6.5: - version "3.18.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.0.tgz#fb360652201e8ac8da812718c008cd0482ed9b42" - integrity sha512-tRVjOJu4PxdXjRMEgbP7lqWy1TWJu9a01oBkn8d+dNrhgmBwdTkzhHZpVJnEmhISLdoJI1lX08rcBcHi3TZIWg== - dependencies: - browserslist "^4.17.0" - semver "7.0.0" - -core-js@^3.6.4, core-js@^3.6.5: - version "3.18.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.0.tgz#9af3f4a6df9ba3428a3fb1b171f1503b3f40cc49" - integrity sha512-WJeQqq6jOYgVgg4NrXKL0KLQhi0CT4ZOCvFL+3CQ5o7I6J8HkT5wd53EadMfqTDp1so/MT1J+w2ujhWcCJtN7w== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== - dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.14" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" - postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" - -css-parse@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" - integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= - dependencies: - css "^2.0.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css-what@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" - integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -diacritics@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" - integrity sha1-PvqHMj67hj5mls67AILUj/PW96E= - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -docs-searchbar.js@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/docs-searchbar.js/-/docs-searchbar.js-2.4.0.tgz#d2f65e11ae8662787fc1571d682823046cb15c94" - integrity sha512-R5SOwIwVul6cssi+omE2h6JaFSCFp/k3xDgLKZfb6oDhF8Yed15hR1vcrKsSnF+XkNruhCJvTYoMGb9+MEPWvg== - dependencies: - autocomplete.js "^0.38.1" - meilisearch "^0.28.0" - to-factory "^1.0.0" - zepto "^1.2.0" - -docsearch.js@^2.5.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/docsearch.js/-/docsearch.js-2.6.3.tgz#57cb4600d3b6553c677e7cbbe6a734593e38625d" - integrity sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A== - dependencies: - algoliasearch "^3.24.5" - autocomplete.js "0.36.0" - hogan.js "^3.0.2" - request "^2.87.0" - stack-utils "^1.0.1" - to-factory "^1.0.0" - zepto "^1.2.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== - dependencies: - domelementtype "^2.2.0" - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.5.2, domutils@^2.6.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "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.3.846: - version "1.3.846" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.846.tgz#a55fd59613dbcaed609e965e3e88f42b08c401d3" - integrity sha512-2jtSwgyiRzybHRxrc2nKI+39wH3AwQgn+sogQ+q814gv8hIFwrcZbV07Ea9f8AmK0ufPVZUvvAG1uZJ+obV4Jw== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -envify@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/envify/-/envify-4.1.0.tgz#f39ad3db9d6801b4e6b478b61028d3f0b6819f7e" - integrity sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw== - dependencies: - esprima "^4.0.0" - through "~2.3.4" - -envinfo@^7.2.0: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456" - integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-string "^1.0.7" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-promise@^4.1.0: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -esbuild-android-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.7.tgz#8c78cbb617f9f216abfb5a84cca453b51421a1b6" - integrity sha512-9/Q1NC4JErvsXzJKti0NHt+vzKjZOgPIjX/e6kkuCzgfT/GcO3FVBcGIv4HeJG7oMznE6KyKhvLrFgt7CdU2/w== - -esbuild-darwin-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.7.tgz#7424bdb64c104556d36b7429af79ab51415ab8f4" - integrity sha512-Z9X+3TT/Xj+JiZTVlwHj2P+8GoiSmUnGVz0YZTSt8WTbW3UKw5Pw2ucuJ8VzbD2FPy0jbIKJkko/6CMTQchShQ== - -esbuild-darwin-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.7.tgz#6a243dc0132aeb11c1991f968a6a9e393f43c6bc" - integrity sha512-68e7COhmwIiLXBEyxUxZSSU0akgv8t3e50e2QOtKdBUE0F6KIRISzFntLe2rYlNqSsjGWsIO6CCc9tQxijjSkw== - -esbuild-freebsd-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.7.tgz#e7281e50522e724c4da502504dcd75be0db46c94" - integrity sha512-76zy5jAjPiXX/S3UvRgG85Bb0wy0zv/J2lel3KtHi4V7GUTBfhNUPt0E5bpSXJ6yMT7iThhnA5rOn+IJiUcslQ== - -esbuild-freebsd-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.7.tgz#31e513098efd181d76a3ba3ea285836d37f018a3" - integrity sha512-lSlYNLiqyzd7qCN5CEOmLxn7MhnGHPcu5KuUYOG1i+t5A6q7LgBmfYC9ZHJBoYyow3u4CNu79AWHbvVLpE/VQQ== - -esbuild-linux-32@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.7.tgz#82cf96accbf55d3007c3338dc3b3144efa9ae108" - integrity sha512-Vk28u409wVOXqTaT6ek0TnfQG4Ty1aWWfiysIaIRERkNLhzLhUf4i+qJBN8mMuGTYOkE40F0Wkbp6m+IidOp2A== - -esbuild-linux-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.7.tgz#67bdfe23a6ca918a0bb8e9558a3ee0fdf98c0bc0" - integrity sha512-+Lvz6x+8OkRk3K2RtZwO+0a92jy9si9cUea5Zoru4yJ/6EQm9ENX5seZE0X9DTwk1dxJbjmLsJsd3IoowyzgVg== - -esbuild-linux-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.7.tgz#f79c69ff0c176559c418de8e59aa3cf388fff992" - integrity sha512-kJd5beWSqteSAW086qzCEsH6uwpi7QRIpzYWHzEYwKKu9DiG1TwIBegQJmLpPsLp4v5RAFjea0JAmAtpGtRpqg== - -esbuild-linux-arm@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.7.tgz#3d665b35e1c27dbe1c9deb8bf956d7d1f191a21b" - integrity sha512-OzpXEBogbYdcBqE4uKynuSn5YSetCvK03Qv1HcOY1VN6HmReuatjJ21dCH+YPHSpMEF0afVCnNfffvsGEkxGJQ== - -esbuild-linux-mips64le@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.7.tgz#226114a0cc6649ba0ffd3428118a8f622872f16d" - integrity sha512-mFWpnDhZJmj/h7pxqn1GGDsKwRfqtV7fx6kTF5pr4PfXe8pIaTERpwcKkoCwZUkWAOmUEjMIUAvFM72A6hMZnA== - -esbuild-linux-ppc64le@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.7.tgz#5c67ae56517f2644d567b2ca5ecb97f9520cfc49" - integrity sha512-wM7f4M0bsQXfDL4JbbYD0wsr8cC8KaQ3RPWc/fV27KdErPW7YsqshZZSjDV0kbhzwpNNdhLItfbaRT8OE8OaKA== - -esbuild-netbsd-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.7.tgz#69dc0469ea089013956d8c6aa71c9e7fc25fc567" - integrity sha512-J/afS7woKyzGgAL5FlgvMyqgt5wQ597lgsT+xc2yJ9/7BIyezeXutXqfh05vszy2k3kSvhLesugsxIA71WsqBw== - -esbuild-openbsd-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.7.tgz#3a9d04ecf820708e2e5b7d26fa7332e3f19f6b6c" - integrity sha512-7CcxgdlCD+zAPyveKoznbgr3i0Wnh0L8BDGRCjE/5UGkm5P/NQko51tuIDaYof8zbmXjjl0OIt9lSo4W7I8mrw== - -esbuild-sunos-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.7.tgz#7c33a682f0fd9565cae7df165d0e8736b7b62623" - integrity sha512-GKCafP2j/KUljVC3nesw1wLFSZktb2FGCmoT1+730zIF5O6hNroo0bSEofm6ZK5mNPnLiSaiLyRB9YFgtkd5Xg== - -esbuild-windows-32@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.7.tgz#24ec706a5f25b4499048f56146bcff0ed3839dce" - integrity sha512-5I1GeL/gZoUUdTPA0ws54bpYdtyeA2t6MNISalsHpY269zK8Jia/AXB3ta/KcDHv2SvNwabpImeIPXC/k0YW6A== - -esbuild-windows-64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.7.tgz#dd6d5b5bace93cd7a9174d31fbd727ba21885abf" - integrity sha512-CIGKCFpQOSlYsLMbxt8JjxxvVw9MlF1Rz2ABLVfFyHUF5OeqHD5fPhGrCVNaVrhO8Xrm+yFmtjcZudUGr5/WYQ== - -esbuild-windows-arm64@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.7.tgz#ecfd9ac289606f26760c4f737caaeeadfff3cfe3" - integrity sha512-eOs1eSivOqN7cFiRIukEruWhaCf75V0N8P0zP7dh44LIhLl8y6/z++vv9qQVbkBm5/D7M7LfCfCTmt1f1wHOCw== - -esbuild@0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.7.tgz#e85cead55b0e1001abf1b2ce4a11c1d4d709d13c" - integrity sha512-+u/msd6iu+HvfysUPkZ9VHm83LImmSNnecYPfFI01pQ7TTcsFR+V0BkybZX7mPtIaI7LCrse6YRj+v3eraJSgw== - optionalDependencies: - esbuild-android-arm64 "0.14.7" - esbuild-darwin-64 "0.14.7" - esbuild-darwin-arm64 "0.14.7" - esbuild-freebsd-64 "0.14.7" - esbuild-freebsd-arm64 "0.14.7" - esbuild-linux-32 "0.14.7" - esbuild-linux-64 "0.14.7" - esbuild-linux-arm "0.14.7" - esbuild-linux-arm64 "0.14.7" - esbuild-linux-mips64le "0.14.7" - esbuild-linux-ppc64le "0.14.7" - esbuild-netbsd-64 "0.14.7" - esbuild-openbsd-64 "0.14.7" - esbuild-sunos-64 "0.14.7" - esbuild-windows-32 "0.14.7" - esbuild-windows-64 "0.14.7" - esbuild-windows-arm64 "0.14.7" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^8.1.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== - -eslint-config-standard@^16.0.2: - version "16.0.3" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" - integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534" - integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q== - dependencies: - debug "^3.2.7" - pkg-dir "^2.0.0" - -eslint-plugin-es@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" - integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== - dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" - -eslint-plugin-import@^2.22.1: - version "2.24.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz#2c8cd2e341f3885918ee27d18479910ade7bb4da" - integrity sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q== - dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.6.2" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.6.0" - minimatch "^3.0.4" - object.values "^1.1.4" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.11.0" - -eslint-plugin-node@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" - integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== - dependencies: - eslint-plugin-es "^3.0.0" - eslint-utils "^2.0.0" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" - -eslint-plugin-prettier@^3.3.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" - integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-promise@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz#61485df2a359e03149fdafc0a68b0e030ad2ac45" - integrity sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== - -eslint-plugin-standard@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz#c43f6925d669f177db46f095ea30be95476b1ee4" - integrity sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg== - -eslint-plugin-vue@^7.9.0: - version "7.20.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz#98c21885a6bfdf0713c3a92957a5afeaaeed9253" - integrity sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw== - dependencies: - eslint-utils "^2.1.0" - natural-compare "^1.4.0" - semver "^6.3.0" - vue-eslint-parser "^7.10.0" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^7.25.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -espree@^9.3.1: - version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== - dependencies: - acorn "^8.7.1" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^1.0.7: - version "1.1.1" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.1.tgz#4544a35a57d7120fba4fa4c86cb4023b2c09df2f" - integrity sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -express@^4.17.1: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== - dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-stdin@~9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" - integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@~8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== - dependencies: - ini "1.3.7" - -global@^4.3.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.0: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -gray-matter@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x, he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -highlight.js@^9.7.0: - version "9.18.5" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" - integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hogan.js@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/hogan.js/-/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd" - integrity sha1-TNnhq9QpQUbnZ55B14mHMrAse/0= - dependencies: - mkdirp "0.3.0" - nopt "1.0.10" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= - -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -http-cache-semantics@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy-middleware@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" - integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== - dependencies: - "@types/http-proxy" "^1.17.5" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.17.0, http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.3, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.1, ignore@^5.1.4, ignore@~5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -immutable@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -ini@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-3.0.0.tgz#2f6de95006923aa75feed8894f5686165adc08f1" - integrity sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw== - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.2.0, is-core-module@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" - integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-path-inside@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -javascript-stringify@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" - integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM= - -javascript-stringify@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" - integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1, js-yaml@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonc-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -linkify-it@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" - integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== - dependencies: - uc.micro "^1.0.1" - -linkify-it@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" - integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== - dependencies: - uc.micro "^1.0.1" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -load-script@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/load-script/-/load-script-1.0.0.tgz#0491939e0bee5643ee494a7e3da3d2bac70c6ca4" - integrity sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ= - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.chunk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" - integrity sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw= - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.padstart@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -markdown-it-anchor@^5.0.2: - version "5.3.0" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744" - integrity sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA== - -markdown-it-chain@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz#ccf6fe86c10266bafb4e547380dfd7f277cc17bc" - integrity sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ== - dependencies: - webpack-chain "^4.9.0" - -markdown-it-container@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-it-container/-/markdown-it-container-2.0.0.tgz#0019b43fd02eefece2f1960a2895fba81a404695" - integrity sha1-ABm0P9Au7+zi8ZYKKJX7qBpARpU= - -markdown-it-emoji@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc" - integrity sha1-m+4OmpkKljupbfaYDE/dsF37Tcw= - -markdown-it-img-lazy@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/markdown-it-img-lazy/-/markdown-it-img-lazy-1.0.2.tgz#3ad4c64cab4fc337e04517793ce06c9c24981af9" - integrity sha512-xBgh0s3NDxJyR09PyqPVMGqTXOLSKA2idIRx0p6eeHAEuXGCcQGIushgf7Aoyk6AqoAujjqma+PgH0Glq4IAiw== - -markdown-it-imsize@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/markdown-it-imsize/-/markdown-it-imsize-2.0.1.tgz#cca0427905d05338a247cb9ca9d968c5cddd5170" - integrity sha1-zKBCeQXQUziiR8ucqdloxc3dUXA= - -markdown-it-table-of-contents@^0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz#3dc7ce8b8fc17e5981c77cc398d1782319f37fbc" - integrity sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw== - -markdown-it@13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" - integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== - dependencies: - argparse "^2.0.1" - entities "~3.0.1" - linkify-it "^4.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -markdown-it@^8.4.1: - version "8.4.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" - integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== - dependencies: - argparse "^1.0.7" - entities "~1.1.1" - linkify-it "^2.0.0" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -markdownlint-cli@^0.33.0: - version "0.33.0" - resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.33.0.tgz#703af1234c32c309ab52fcd0e8bc797a34e2b096" - integrity sha512-zMK1oHpjYkhjO+94+ngARiBBrRDEUMzooDHBAHtmEIJ9oYddd9l3chCReY2mPlecwH7gflQp1ApilTo+o0zopQ== - dependencies: - commander "~9.4.1" - get-stdin "~9.0.0" - glob "~8.0.3" - ignore "~5.2.4" - js-yaml "^4.1.0" - jsonc-parser "~3.2.0" - markdownlint "~0.27.0" - minimatch "~5.1.2" - run-con "~1.2.11" - -markdownlint@~0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.27.0.tgz#9dabf7710a4999e2835e3c68317f1acd0bc89049" - integrity sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w== - dependencies: - markdown-it "13.0.1" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -meilisearch@^0.28.0: - version "0.28.0" - resolved "https://registry.yarnpkg.com/meilisearch/-/meilisearch-0.28.0.tgz#650f08a56ef0a989a41d13233f7a744cfa7f54df" - integrity sha512-zC50xLyPWBtfAIZiFTSJyYJp/a5bO+dSSigBKUEoShFkuv9+/KC4J3T3ZejNVHXG2DU0ohOMf8TZ3HAHXNd3EA== - dependencies: - cross-fetch "^3.1.5" - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge2@^1.2.3, merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.49.0: - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -"mime-db@>= 1.43.0 < 2": - version "1.50.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" - integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19: - version "2.1.32" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== - dependencies: - mime-db "1.49.0" - -mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.0.3, mime@^2.4.4: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= - dependencies: - dom-walk "^0.1.0" - -mini-css-extract-plugin@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" - integrity sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw== - dependencies: - loader-utils "^1.1.0" - normalize-url "^2.0.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.7" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.7.tgz#e78aeb8dceccb0d12b57a75872da43bc68e7d7ca" - integrity sha512-pYjbG0o9W2Wb3KVBuV6s7R/bzS/iS3HPiHcFcDee5GGiN1M5MErXqgS4jGn8pwVwTZAoy7B8bYb/+AqQU0NhZA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1, minimatch@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.2.tgz#0939d7d6f0898acbd1508abe534d1929368a8fff" - integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -nanocolors@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.6.tgz#bc2350d3edfdbfadd7ac018c855ae7c13905a6ad" - integrity sha512-2pvTw6vYRaBLGir2xR7MxaJtyWkrn+C53EpW8yPotG+pdAwBvt0Xwk4VJ6VHLY0aLthVZPvDfm9TdZvrvAm5UQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-releases@^1.1.76: - version "1.1.76" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e" - integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA== - -nopt@1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" - integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -nth-check@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== - dependencies: - boolbase "^1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.0, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0, object.values@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@^5.0.1: - version "5.0.8" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a" - integrity sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -portfinder@^1.0.13, portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" - -postcss-modules-scope@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^7.0.6" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-safe-parser@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" - integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== - dependencies: - postcss "^7.0.26" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.36" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" - integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^1.18.2: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -pretty-error@^2.0.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" - integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== - -prismjs@^1.13.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" - integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0, querystring-es3@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reduce@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce/-/reduce-1.0.2.tgz#0cd680ad3ffe0b060e57a5c68bdfce37168d361b" - integrity sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ== - dependencies: - object-keys "^1.1.0" - -regenerate-unicode-properties@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" - integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" - integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -regjsgen@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" - integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" - integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^3.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request@^2.87.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.2.0, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-con@~1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/run-con/-/run-con-1.2.11.tgz#0014ed430bad034a60568dfe7de2235f32e3f3c4" - integrity sha512-NEMGsUT+cglWkzEr4IFK21P4Jca45HqiAbIIZIBdX5+UZTB24Mb/21iNGgz9xZa8tL6vbW7CXmq7MFN42+VjNQ== - dependencies: - deep-extend "^0.6.0" - ini "~3.0.0" - minimist "^1.2.6" - strip-json-comments "~3.1.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-loader@^7.1.0: - version "7.3.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.3.1.tgz#a5bf68a04bcea1c13ff842d747150f7ab7d0d23f" - integrity sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA== - dependencies: - clone-deep "^4.0.1" - loader-utils "^1.0.1" - neo-async "^2.5.0" - pify "^4.0.1" - semver "^6.3.0" - -sass@^1.52.1: - version "1.52.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.1.tgz#554693da808543031f9423911d62c60a1acf7889" - integrity sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -section-matter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" - integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== - dependencies: - extend-shallow "^2.0.1" - kind-of "^6.0.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.8: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== - dependencies: - node-forge "^0.10.0" - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.6: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" - integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7" - integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sitemap@^3.0.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-3.2.2.tgz#3f77c358fa97b555c879e457098e39910095c62b" - integrity sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg== - dependencies: - lodash.chunk "^4.2.0" - lodash.padstart "^4.6.1" - whatwg-url "^7.0.0" - xmlbuilder "^13.0.0" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -smoothscroll-polyfill@^0.4.3: - version "0.4.4" - resolved "https://registry.yarnpkg.com/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz#3a259131dc6930e6ca80003e1cb03b603b69abf8" - integrity sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.2.tgz#4bc48c2da9ce4769f19dc723396b50f5c12330a3" - integrity sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ== - dependencies: - debug "^3.2.6" - eventsource "^1.0.7" - faye-websocket "^0.11.3" - inherits "^2.0.4" - json3 "^3.3.3" - url-parse "^1.5.3" - -sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== - dependencies: - faye-websocket "^0.11.3" - uuid "^3.4.0" - websocket-driver "^0.7.4" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -"source-map-js@>=0.6.2 <2.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" - integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -std-env@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.3.0.tgz#66d4a4a4d5224242ed8e43f5d65cfa9095216eee" - integrity sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw== - dependencies: - ci-info "^3.0.0" - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -stylus-loader@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" - integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA== - dependencies: - loader-utils "^1.0.2" - lodash.clonedeep "^4.5.0" - when "~3.6.x" - -stylus@^0.54.8: - version "0.54.8" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147" - integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg== - dependencies: - css-parse "~2.0.0" - debug "~3.1.0" - glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" - sax "~1.2.4" - semver "^6.3.0" - source-map "^0.7.3" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.8.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@~2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-factory@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-factory/-/to-factory-1.0.0.tgz#8738af8bd97120ad1d4047972ada5563bf9479b1" - integrity sha1-hzivi9lxIK0dQEeXKtpVY7+UebE= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -tsconfig-paths@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" - integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.0, upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -update-notifier@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -url-parse@^1.4.3, url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vue-eslint-parser@^7.10.0: - version "7.11.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz#214b5dea961007fcffb2ee65b8912307628d0daf" - integrity sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg== - dependencies: - debug "^4.1.1" - eslint-scope "^5.1.1" - eslint-visitor-keys "^1.1.0" - espree "^6.2.1" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^6.3.0" - -vue-eslint-parser@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.1.1.tgz#3f4859be7e9bb7edaa1dc7edb05abffee72bf3dd" - integrity sha512-C2aI/r85Q6tYcz4dpgvrs4wH/MqVrRAVIdpYedrxnATDHHkb+TroeRcDpKWGZCx/OcECMWfz7tVwQ8e+Opy6rA== - dependencies: - debug "^4.3.4" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^7.3.6" - -vue-hot-reload-api@^2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-loader@^15.7.1: - version "15.9.8" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.8.tgz#4b0f602afaf66a996be1e534fb9609dc4ab10e61" - integrity sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog== - dependencies: - "@vue/component-compiler-utils" "^3.1.0" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -vue-router@^3.4.5: - version "3.5.2" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.2.tgz#5f55e3f251970e36c3e8d88a7cd2d67a350ade5c" - integrity sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ== - -vue-server-renderer@^2.6.10: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz#c8bffff152df6b47b858818ef8d524d2fc351654" - integrity sha512-HifYRa/LW7cKywg9gd4ZtvtRuBlstQBao5ZCWlg40fyB4OPoGfEXAzxb0emSLv4pBDOHYx0UjpqvxpiQFEuoLA== - dependencies: - chalk "^1.1.3" - hash-sum "^1.0.2" - he "^1.1.0" - lodash.template "^4.5.0" - lodash.uniq "^4.5.0" - resolve "^1.2.0" - serialize-javascript "^3.1.0" - source-map "0.5.6" - -vue-style-loader@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" - integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-compiler@^2.6.10: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763" - integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - -vue@^2.6.10: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" - integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== - -vuepress-html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz#219be272ad510faa8750d2d4e70fd028bfd1c16e" - integrity sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A== - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -vuepress-plugin-check-md@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/vuepress-plugin-check-md/-/vuepress-plugin-check-md-0.0.2.tgz#e0c5f296948fa5df24280971ee6a725c00a88738" - integrity sha512-XwA/IiMNvR42L3ajmkr+6JY3JRnhDN+uluh1wLYl0VAI8VqTkXT7Ng4xlxgebfLPChEFPnJgcydGv8E52Zdpig== - dependencies: - check-md "1.0.0" - -vuepress-plugin-code-copy@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/vuepress-plugin-code-copy/-/vuepress-plugin-code-copy-1.0.6.tgz#6431dab764b48b5b203e4936d98b1943651ce4ad" - integrity sha512-FiqwMtlb4rEsOI56O6sSkekcd3SlESxbkR2IaTIQxsMOMoalKfW5R9WlR1Pjm10v6jmU661Ex8MR11k9IzrNUg== - -vuepress-plugin-container@^2.0.2, vuepress-plugin-container@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.1.5.tgz#37fff05662fedbd63ffd3a5463b2592c7a7f3133" - integrity sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA== - dependencies: - "@vuepress/shared-utils" "^1.2.0" - markdown-it-container "^2.0.0" - -vuepress-plugin-img-lazy@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vuepress-plugin-img-lazy/-/vuepress-plugin-img-lazy-1.0.4.tgz#f444c1e21a2c95117f1bcb97a0962660362fa181" - integrity sha512-4mMIy3vZzNZupFuohPKlOHGd0rNZEMEHEyN8b2M3j1yBANrkhGg1wNnpsdpe7ZnLdtVpxH3JQT7a3TDdxLLFmQ== - dependencies: - markdown-it-img-lazy "^1.0.2" - markdown-it-imsize "^2.0.1" - -vuepress-plugin-meilisearch@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/vuepress-plugin-meilisearch/-/vuepress-plugin-meilisearch-0.13.0.tgz#1a5bf413486ec2a03cf2167883507b73826564f5" - integrity sha512-qNDjY6rqDwP52v06zO+U+6CdTiMvJBb64Puq+pe0kROUrmuBwxLZ7g3ssYRMe3vil6EhLYnamRmVb/gJ88I/RQ== - dependencies: - docs-searchbar.js "^2.4.0" - -vuepress-plugin-seo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/vuepress-plugin-seo/-/vuepress-plugin-seo-0.1.4.tgz#be8e5577491c1fc317a7ad4abe3ae51ff317be1e" - integrity sha512-foNKrAAKihiC47bx0UXFzs/+BIFmnowTQsLVF/8pfsnsPDp8FXjkTGyjxyjOhbwj7ADPv32CdX3pEoYGnZ7OjA== - -vuepress-plugin-sitemap@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/vuepress-plugin-sitemap/-/vuepress-plugin-sitemap-2.3.1.tgz#51298aca77a5de96396fdbd1103e1637dd61ae6a" - integrity sha512-n+8lbukhrKrsI9H/EX0EBgkE1pn85LAQFvQ5dIvrZP4Kz6JxPOPPNTQmZMhahQV1tXbLZQCEN7A1WZH4x+arJQ== - dependencies: - sitemap "^3.0.0" - -vuepress-plugin-smooth-scroll@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz#6eff2d4c186cca917cc9f7df2b0af7de7c8c6438" - integrity sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg== - dependencies: - smoothscroll-polyfill "^0.4.3" - -vuepress-plugin-zooming@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/vuepress-plugin-zooming/-/vuepress-plugin-zooming-1.1.8.tgz#d49f201218bbcc73bcd30a79071f0cde201327e0" - integrity sha512-QAspMEqzerd0n8z/oOL5a67V/QaFZyjSwfo86y6PWhDdVAeOLR7umJ7syQqJpMdN9EVxmAstuzbKHkRxWzL0NQ== - dependencies: - zooming "^2.1.1" - -vuepress-theme-default-prefers-color-scheme@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/vuepress-theme-default-prefers-color-scheme/-/vuepress-theme-default-prefers-color-scheme-2.0.0.tgz#c5d305b1b4d10d0915b4bb413e554966d5171b25" - integrity sha512-4sA3DCiaIIHVjcIC5+mF00mf29IU27KSH97Ga4xb4nUwwlC6eYHg2qchEVOgV25XogCtGgpZ/DCrTkywxvuBcg== - -vuepress@^1.9.9: - version "1.9.9" - resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.9.9.tgz#75b313f48a21b2eeb435cad52333f26b3b8a7404" - integrity sha512-CU94W3EdWaCavGx2VSvQJMI/hyv+m/YMdrvJJw67EVfmmJJDb1iTGrilDgLd0qsyrXzBy0Ru9Qi6rkf4IwcOTg== - dependencies: - "@vuepress/core" "1.9.9" - "@vuepress/theme-default" "1.9.9" - "@vuepress/types" "1.9.9" - cac "^6.5.6" - envinfo "^7.2.0" - opencollective-postinstall "^2.0.2" - update-notifier "^4.0.0" - -vuex@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" - integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webpack-chain@^4.9.0: - version "4.12.1" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.12.1.tgz#6c8439bbb2ab550952d60e1ea9319141906c02a6" - integrity sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^1.6.0" - -webpack-chain@^6.0.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" - integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^2.0.1" - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.5.1: - version "3.11.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" - integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - sockjs-client "^1.5.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^4.1.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.8.1: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -webpackbar@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-3.2.0.tgz#bdaad103fad11a4e612500e72aaae98b08ba493f" - integrity sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw== - dependencies: - ansi-escapes "^4.1.0" - chalk "^2.4.1" - consola "^2.6.0" - figures "^3.0.0" - pretty-time "^1.1.0" - std-env "^2.2.1" - text-table "^0.2.0" - wrap-ansi "^5.1.0" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -when@~3.6.x: - version "3.6.4" - resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" - integrity sha1-RztRfsFZ4rhQBUl6E5g/CVQS404= - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xmlbuilder@^13.0.0: - version "13.0.2" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-13.0.2.tgz#02ae33614b6a047d1c32b5389c1fdacb2bce47a7" - integrity sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ== - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -zepto@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/zepto/-/zepto-1.2.0.tgz#e127bd9e66fd846be5eab48c1394882f7c0e4f98" - integrity sha1-4Se9nmb9hGvl6rSME5SIL3wOT5g= - -zooming@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/zooming/-/zooming-2.1.1.tgz#3e05006b4e10335235ca626244d053d90a9c7e72" - integrity sha512-Z38dkZRQsFNBE67+xDBQLNKMs5J1Gc+s3/zO6iezTrC24VYLJV7YPBdBDJmiLhff5qa6Awxv4wsjqx3oYz2MYA==