diff --git a/.github/workflows/pr-check-links.yaml b/.github/workflows/pr-check-links.yaml new file mode 100644 index 0000000000..c240b1d0bc --- /dev/null +++ b/.github/workflows/pr-check-links.yaml @@ -0,0 +1,26 @@ +name: Check internal links +on: + pull_request: + branches: [main] + + +jobs: + check-internal-links: + name: Check internal links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-node@v2 + with: + node-version: "16" + + - name: Install dependencies + run: | + cd docs + npm ci + + - name: Check links in Markdown + run: | + cd docs + npm run check-links diff --git a/.github/workflows/scheduled-check-links.yaml b/.github/workflows/scheduled-check-links.yaml new file mode 100644 index 0000000000..226f772846 --- /dev/null +++ b/.github/workflows/scheduled-check-links.yaml @@ -0,0 +1,71 @@ +# This is called after the deployed environment is ready to be checked +name: Regularly scheduled check links +on: + schedule: + - cron: "0 2 * * 1,4" + +jobs: + check-links: + name: Check links + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v2 + with: + stable: 'true' + + - name: Get muffet + env: + MUFFET_VERSION: "2.4.8" + run: wget --quiet -c "https://github.com/raviqqe/muffet/releases/download/v$MUFFET_VERSION/muffet_${MUFFET_VERSION}_Linux_x86_64.tar.gz" -O - | tar -xz + + - name: Check links + run: ./muffet --json --buffer-size=8192 --rate-limit=1 --max-connections-per-host=10 --color=always --header="User-Agent:Mozilla/5.0 (Windows NT 10.0) Gecko/20100101 Firefox/91.0" -e=console.platform.sh/projects/create-project -e=cloud.orange-business.com -e=developers.cloudflare.com -e=discord.com -e=pptr.dev https://docs.platform.sh > broken_links.json + + - name: Create Markdown file of broken links + if: ${{ always() }} + run: | + data=broken_links.json + + # Get length of broken links array + eval "$( jq -r '@sh "urls_length=\(.|length)"' "$data" )" + + # Check if any links are broken + if [ -z "$urls_length" ]; then + ":tada: There are no broken links! :tada:" > broken_links.md + else + echo -e "The following pages had broken links to check and possibly fix:\n" > broken_links.md + + # Loop through the broken URLs to create items + for (( i = 0; i < urls_length; ++i )); do + unset location + unset broken_links + unset error + + # Get the location where the broken link was found + eval "$( + jq -r --argjson i "$i" ' + .[$i] | + @sh "location=\(.url)"' "$data" + )" + echo "- $location" >> broken_links.md + + # Loop through the broken links + jq -r --argjson i "$i" '.[$i] ' "$data" | + # Get the specific broken link and its error + jq -r '.links[] | (.url, .error)' | + while IFS= read -r url ; do + IFS= read -r error + # Output that as a checklist item + echo " - [ ] $error: $url" >> broken_links.md + done + done + fi + + - name: Create issue from Markdown file + id: create-issue + if: ${{ always() }} + uses: peter-evans/create-issue-from-file@v2 + with: + title: ":bug: Broken links" + content-filepath: broken_links.md + issue-number: 2213 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a999d3d483..f309141bd6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,10 +16,13 @@ For how that structure is applied to different types of docs in this project, se ## Table of contents -* [Adding new pages](#adding-new-pages) - * [Adding security reports](#adding-security-reports) -* [Commit messages](#commit-messages) -* [Review process](#review-process) +- [Contributing to the Platform.sh user documentation](#contributing-to-the-platformsh-user-documentation) + - [Table of contents](#table-of-contents) + - [Adding new pages](#adding-new-pages) + - [Adding security reports](#adding-security-reports) + - [Commit messages](#commit-messages) + - [Review process](#review-process) + - [Checks](#checks) ## Adding new pages @@ -126,3 +129,16 @@ We generally review for: To speed the process along, we may merge small changes such as spelling and formatting into your branch. Otherwise, we make suggestions and work with you to finalize the changes. + +### Checks + +To ensure the docs work smoothly, a few checks run on each pull request: + +- Vale enforces the [style guidelines](./contributing/content-style.md). +- [Remark](https://remark.js.org/) with the [`remark-validate-links` plugin](https://github.com/remarkjs/remark-validate-links) + checks that all links between Markdown files are valid (including whether linked headers exist). +- Custom workflows [check all changed files](./.github/workflows/get-pr-info.yaml) within `docs/src` + and [comment with links](./.github/workflows/comment-on-pr.yaml) to the deployed pages for easy review. + +Outside of pull requests, twice a week [Muffet](https://github.com/raviqqe/muffet) +checks if all links on the site are valid. diff --git a/docs/layouts/shortcodes/clone-commit.md b/docs/layouts/shortcodes/clone-commit.md new file mode 100644 index 0000000000..eb303b604c --- /dev/null +++ b/docs/layouts/shortcodes/clone-commit.md @@ -0,0 +1,10 @@ +## Clones and commits + +You can clone your codebase by running `platform get ` +or in your project in the console by going to Code > Git and running the `git clone` command. + +When you perform this action, you are actually cloning from your remote integrated repository, +if you have the [appropriate access to do so](/integrations/source/troubleshoot.html). + +Your {{ .Get "name" }} repository is considered to be the source of truth for the project. +The project is only a mirror of that repository and all commits should be pushed only to {{ .Get "name" }}. diff --git a/docs/layouts/shortcodes/gen-3-services.html b/docs/layouts/shortcodes/gen-3-services.html index 623aa65019..c886643d01 100644 --- a/docs/layouts/shortcodes/gen-3-services.html +++ b/docs/layouts/shortcodes/gen-3-services.html @@ -4,11 +4,12 @@ Supported versions {{- range $image, $info := .Site.Data.registry -}} - {{- if (isset $info "versions-dedicated-gen-3") -}} + {{- if and (isset $info "versions-dedicated-gen-3") (ne $image "redis-persistent") -}} {{- $label := index $info "name" -}} {{- $versions := index ( index $info "versions-dedicated-gen-3") "supported" -}} + {{- $docs_link := index (index $info "docs") "url" -}} - {{ $label }} + {{ $label }} {{- $service_versions := "" -}} {{- range $versions -}} diff --git a/docs/layouts/shortcodes/guides/gatsby/headless-backend.html b/docs/layouts/shortcodes/guides/gatsby/headless-backend.html index 8bd4192ee4..7a81c809bd 100644 --- a/docs/layouts/shortcodes/guides/gatsby/headless-backend.html +++ b/docs/layouts/shortcodes/guides/gatsby/headless-backend.html @@ -1 +1,6 @@ -

There has only been a single modification to Platform.sh’s standard {{ .Get "name" }} template configuration in the multi-app template: the name attibribute in {{ .Get "name" }}’s .platform.app.yaml has been updated to {{ anchorize ( .Get "name" )}}. You will notice this value used when the relationship between Gatsby and {{ .Get "name" }} is defined below for Gatsby and in the routes configuration above.

+{{ $name := .Get "name" }} +{{ $template := $name }} +{{ if eq $name "Drupal" }} + {{ $template = "Drupal9"}} +{{ end }} +

There has only been a single modification to Platform.sh’s standard {{ $name }} template configuration in the multi-app template: the name attibribute in {{ $name }}’s .platform.app.yaml has been updated to {{ anchorize ( $name )}}. You will notice this value used when the relationship between Gatsby and {{ $name }} is defined below for Gatsby and in the routes configuration above.

diff --git a/docs/layouts/shortcodes/guides/gatsby/headless-gatsby.html b/docs/layouts/shortcodes/guides/gatsby/headless-gatsby.html index 6bda21ff6b..907cf226fd 100644 --- a/docs/layouts/shortcodes/guides/gatsby/headless-gatsby.html +++ b/docs/layouts/shortcodes/guides/gatsby/headless-gatsby.html @@ -12,7 +12,7 @@
  • post_deploy

    -

    Platform.sh containers reside in separate build containers at build time, before their images are moved to the final application container at deploy time. These build containers are isolated, and therefore Gatsby does not have access to {{ .Get "name" }} during the build hook, where you would normally run gatsby build. {{ .Get "name" }} will not be available until after the deploy hook, and so Gatsby’s build is postponed until the post_deploy hook below.

    +

    Platform.sh containers reside in separate build containers at build time, before their images are moved to the final application container at deploy time. These build containers are isolated, and therefore Gatsby does not have access to {{ .Get "name" }} during the build hook, where you would normally run gatsby build. {{ .Get "name" }} will not be available until after the deploy hook, and so Gatsby’s build is postponed until the post_deploy hook below.

  • mounts

    diff --git a/docs/layouts/shortcodes/guides/lando.html b/docs/layouts/shortcodes/guides/lando.html index 4ab3a01391..a3d838aaec 100644 --- a/docs/layouts/shortcodes/guides/lando.html +++ b/docs/layouts/shortcodes/guides/lando.html @@ -1,4 +1,4 @@ -

    Lando is Platform.sh’s recommended local development tool. Lando can read your Platform.sh configuration files for Wordpress and produce an approximately equivalent configuration using Docker with minimal effort. See the Lando documentation for installing and setting up Lando on your system.

    +

    Lando is Platform.sh’s recommended local development tool. Lando can read your Platform.sh configuration files for Wordpress and produce an approximately equivalent configuration using Docker with minimal effort. See the Lando documentation for installing and setting up Lando on your system.

    Templates come configured for use already with a base Landofile shown below, which can be helpful getting started with Lando without the need to have a project on Platform.sh. This file sets up good defaults for Lando and Platform.sh-configured codebases, most notably through the recipe attribute.

    {{ $file := printf "static/files/fetch/lando/%s" (.Get "repo" ) }} @@ -6,6 +6,6 @@

    This Landofile is also the place where you can configure access to tools that would normally be available within a Platform.sh app container (such as the WordPress CLI), that you would also want access to locally.

    -

    You can replicate this file, or otherwise follow the directions in the Lando documentation for Platform.sh to setup the repository locally. Once you have completed the configuration, you can then start to local environment by running:

    +

    You can replicate this file, or otherwise follow the directions in the Lando documentation for Platform.sh to setup the repository locally. Once you have completed the configuration, you can then start to local environment by running:

    $ lando start
     
    diff --git a/docs/layouts/shortcodes/language-specification.md b/docs/layouts/shortcodes/language-specification.md index d51bb78ecc..50a8f40946 100644 --- a/docs/layouts/shortcodes/language-specification.md +++ b/docs/layouts/shortcodes/language-specification.md @@ -1,7 +1,7 @@ {{ $type := .Get "type" }} ### Specify the language -To use {{ .Get "display_name" }}, specify `{{ $type }}` as your [app's `type`](/configuration/app/app-reference.html#type): +To use {{ .Get "display_name" }}, specify `{{ $type }}` as your [app's `type`](/configuration/app/app-reference.html#types):
    .platform.app.yaml
    diff --git a/docs/layouts/shortcodes/spring-common-props.md b/docs/layouts/shortcodes/spring-common-props.md new file mode 100644 index 0000000000..648ccee384 --- /dev/null +++ b/docs/layouts/shortcodes/spring-common-props.md @@ -0,0 +1,2 @@ +For access to more credentials options, check [Spring common application properties](https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html) +and [binding from environment variables](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#features.external-config.typesafe-configuration-properties.relaxed-binding.environment-variables). diff --git a/docs/package-lock.json b/docs/package-lock.json index c87c339a36..0e3b1f3373 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -29,7 +29,9 @@ "vinyl-source-stream": "^2.0.0" }, "devDependencies": { - "pshregistry-parser": "^1.2.0" + "pshregistry-parser": "^1.2.0", + "remark-cli": "^10.0.1", + "remark-validate-links": "^11.0.2" } }, "node_modules/@babel/code-frame": { @@ -1528,6 +1530,75 @@ "node": ">=10.13.0" } }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/is-empty": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.1.tgz", + "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", + "dev": true + }, + "node_modules/@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", + "dev": true + }, + "node_modules/@types/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", + "dev": true + }, + "node_modules/@types/text-table": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.2.tgz", + "integrity": "sha512-dGoI5Af7To0R2XE8wJuc6vwlavWARsCh3UKJPjWs1YEqGUqfgBI/j/4GX0yf19/DsDPPf0YAXWAp8psNeIehLg==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, "node_modules/accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -1982,6 +2053,16 @@ "node": ">= 0.10" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -2042,6 +2123,15 @@ "node": ">=0.10.0" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -2376,6 +2466,30 @@ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, + "node_modules/builtins": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-4.0.0.tgz", + "integrity": "sha512-qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/bytes": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", @@ -2466,6 +2580,16 @@ "node": ">=4" } }, + "node_modules/character-entities": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", + "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -2488,6 +2612,24 @@ "fsevents": "^1.2.7" } }, + "node_modules/chokidar/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, "node_modules/chokidar/node_modules/glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -3120,6 +3262,19 @@ "node": ">=0.10.0" } }, + "node_modules/decode-named-character-reference": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", + "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "dev": true, + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -3197,6 +3352,15 @@ "deps-sort": "bin/cmd.js" } }, + "node_modules/dequal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", + "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -3235,6 +3399,15 @@ "node": ">=0.8.0" } }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -3338,6 +3511,12 @@ "object.defaults": "^1.1.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -3367,6 +3546,12 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -3853,6 +4038,31 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -4017,6 +4227,15 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -4061,6 +4280,20 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4105,6 +4338,12 @@ "node": ">=0.10.0" } }, + "node_modules/github-slugger": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", + "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==", + "dev": true + }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -4582,6 +4821,15 @@ } ] }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/import-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", @@ -4604,6 +4852,19 @@ "node": ">=8" } }, + "node_modules/import-meta-resolve": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz", + "integrity": "sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==", + "dev": true, + "dependencies": { + "builtins": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4857,6 +5118,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=", + "dev": true + }, "node_modules/is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", @@ -4967,6 +5234,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-plain-obj": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", + "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -5128,6 +5407,12 @@ "node": ">=4" } }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -5183,6 +5468,15 @@ "node": ">=0.10.0" } }, + "node_modules/kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/labeled-stream-splicer": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", @@ -5237,6 +5531,38 @@ "node": ">= 0.10" } }, + "node_modules/levenshtein-edit-distance": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz", + "integrity": "sha1-iVuvR4zOi1waDSfkXXwdl4pmHkk=", + "dev": true, + "bin": { + "levenshtein-edit-distance": "cli.js" + } + }, + "node_modules/libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + } + }, + "node_modules/libnpmconfig/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -5263,6 +5589,15 @@ "node": ">=10" } }, + "node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -5278,6 +5613,42 @@ "node": ">=0.10.0" } }, + "node_modules/load-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-4.0.1.tgz", + "integrity": "sha512-4kMi+mOSn/TR51pDo4tgxROHfBHXsrcyEYSGHcJ1o6TtRaP2PsRM5EwmYbj1uiLDvbfA/ohwuSWZJzqGiai8Dw==", + "dev": true, + "dependencies": { + "import-meta-resolve": "^1.0.0", + "libnpmconfig": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -5293,6 +5664,28 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, + "node_modules/longest-streak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -5393,6 +5786,59 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/mdast-util-from-markdown": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", + "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -5419,42 +5865,485 @@ "node": ">= 0.6" } }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/micromark": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz", + "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "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" - }, - "engines": { - "node": ">=0.10.0" + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" + "node_modules/micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { + "node_modules/micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz", + "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" }, @@ -5568,6 +6457,15 @@ "node": ">= 0.8.0" } }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5581,6 +6479,12 @@ "node": ">= 0.10" } }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true + }, "node_modules/nanoid": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", @@ -5935,6 +6839,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -6115,6 +7055,18 @@ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -6635,6 +7587,15 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/propose": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz", + "integrity": "sha1-SKBl2ex9TIZn9AULFcSi2F28pWs=", + "dev": true, + "dependencies": { + "levenshtein-edit-distance": "^1.0.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -6914,31 +7875,129 @@ "jsesc": "bin/jsesc" } }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "node_modules/remark": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.2.tgz", + "integrity": "sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==", + "dev": true, "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" + "@types/mdast": "^3.0.0", + "remark-parse": "^10.0.0", + "remark-stringify": "^10.0.0", + "unified": "^10.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "node_modules/remark-cli": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-10.0.1.tgz", + "integrity": "sha512-+eln31zLE69JwBMoa8nd2sPC0DFZyiWgBrshL8aKb3L2XXTRMuEKWE/IAtNPYEtcktceAQw+OpmqVy8pAmGOwQ==", + "dev": true, "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" + "remark": "^14.0.0", + "unified-args": "^9.0.0" }, - "engines": { - "node": ">= 0.10" - } - }, + "bin": { + "remark": "cli.js" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz", + "integrity": "sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-11.0.2.tgz", + "integrity": "sha512-SfVDWgF/Albdou1TmrCpq4AvJyvMnPflnaLLPUuFFxKO4Jp1o7fK2sinqPt+WW0DXS4JmtXPXm2FOkB8FJ08tQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "github-slugger": "^1.0.0", + "hosted-git-info": "^4.0.0", + "mdast-util-to-string": "^3.0.0", + "propose": "0.0.5", + "to-vfile": "^7.0.0", + "trough": "^2.0.0", + "unified": "^10.0.0", + "unified-engine": "^9.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -7060,6 +8119,18 @@ "inherits": "^2.0.1" } }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -7814,6 +8885,12 @@ "acorn-node": "^1.2.0" } }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -7940,6 +9017,43 @@ "node": ">= 0.10" } }, + "node_modules/to-vfile": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.3.tgz", + "integrity": "sha512-QO0A9aE6Z/YkmQadJ0syxpmNXtcQiu0qAtCKYKD5cS3EfgfFTAXfgLX6AOaBrSfWSek5nfsMf3gBZ9KGVFcLuw==", + "dev": true, + "dependencies": { + "is-buffer": "^2.0.0", + "vfile": "^5.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/to-vfile/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -7948,6 +9062,16 @@ "node": ">=0.6" } }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -8095,6 +9219,404 @@ "node": ">=4" } }, + "node_modules/unified": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz", + "integrity": "sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-args": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-9.0.2.tgz", + "integrity": "sha512-qSqryjoqfJSII4E4Z2Jx7MhXX2MuUIn6DsrlmL8UnWFdGtrWvEtvm7Rx5fKT5TPUz7q/Fb4oxwIHLCttvAuRLQ==", + "dev": true, + "dependencies": { + "@types/text-table": "^0.2.0", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "chokidar": "^3.0.0", + "fault": "^2.0.0", + "json5": "^2.0.0", + "minimist": "^1.0.0", + "text-table": "^0.2.0", + "unified-engine": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/unified-args/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/unified-args/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/unified-args/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unified-args/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unified-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/unified-args/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/unified-args/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/unified-args/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/unified-args/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unified-args/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/unified-args/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/unified-args/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unified-args/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/unified-args/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/unified-args/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unified-args/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/unified-engine": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-9.0.5.tgz", + "integrity": "sha512-frQ6lUNlkTwVC0JELJqSSITpE7MLrLJqAWmDrUFj5Do6A4/3n6eX5Jyg8fhe4Dbwwh38spqUJd39FtRFG34QWg==", + "dev": true, + "dependencies": { + "@types/concat-stream": "^1.0.0", + "@types/debug": "^4.0.0", + "@types/is-empty": "^1.0.0", + "@types/js-yaml": "^4.0.0", + "@types/node": "^17.0.0", + "@types/unist": "^2.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.0.0", + "fault": "^2.0.0", + "glob": "^7.0.0", + "ignore": "^5.0.0", + "is-buffer": "^2.0.0", + "is-empty": "^1.0.0", + "is-plain-obj": "^4.0.0", + "js-yaml": "^4.0.0", + "load-plugin": "^4.0.0", + "parse-json": "^6.0.0", + "to-vfile": "^7.0.0", + "trough": "^2.0.0", + "unist-util-inspect": "^7.0.0", + "vfile-message": "^3.0.0", + "vfile-reporter": "^7.0.0", + "vfile-statistics": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/unified-engine/node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/unified-engine/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/unified-engine/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/unified-engine/node_modules/parse-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-6.0.2.tgz", + "integrity": "sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^2.3.1", + "lines-and-columns": "^2.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unified-engine/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/unified/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -8126,6 +9648,71 @@ "through2-filter": "^3.0.0" } }, + "node_modules/unist-util-inspect": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-7.0.0.tgz", + "integrity": "sha512-2Utgv78I7PUu461Y9cdo+IUiiKSKpDV5CE/XD6vTj849a3xlpDAScvSJ6cQmtFBGgAmCn2wR7jLuXhpg1XLlJw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.1.tgz", + "integrity": "sha512-HDVOJ704Uj5QWqoB6KV4CDP62OW9wam9BEuwGE4fvunhVraZcO/fFNBCpvmDDSlkFBG/GAYdHfKvKvDAJxzcWA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", + "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -8241,6 +9828,24 @@ "node": ">= 0.4.0" } }, + "node_modules/uvu": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz", + "integrity": "sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==", + "dev": true, + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -8249,32 +9854,185 @@ "homedir-polyfill": "^1.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.1.tgz", + "integrity": "sha512-EWkoULWVDBV3ozmE21TA0qekXreWJXV1jKcF8rgnvmmH0L9Vm8eTSnuuSSpH2XpLXZLJ0uMMIHUqDLHjK5lh4w==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.1.tgz", + "integrity": "sha512-pz5xA88aupQPuXmY46xnGAv8MzAcU1Xi2Do3UftjTdvQHreXCWvJT/BbzYixPNYRek+EAioI0kP3crJu37xa6Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.3.tgz", + "integrity": "sha512-q+ruTWxFHbow359TDqoNJn5THdwRDeV+XUOtzdT/OESgaGw05CjL68ImlbzRzqS5xL62Y1IaIWb8x+RbaNjayA==", + "dev": true, + "dependencies": { + "@types/supports-color": "^8.0.0", + "string-width": "^5.0.0", + "supports-color": "^9.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-sort": "^3.0.0", + "vfile-statistics": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vfile-reporter/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/vfile-sort": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.0.tgz", + "integrity": "sha512-fJNctnuMi3l4ikTVcKpxTbzHeCgvDhnI44amA3NVDvA6rTC6oKCFpCVyT5n2fFMr3ebfr+WVQZedOCd73rzSxg==", + "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "engines": { - "node": ">= 0.10" + "node_modules/vfile-statistics": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.0.tgz", + "integrity": "sha512-foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA==", + "dev": true, + "dependencies": { + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "node_modules/vfile/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "engines": { - "node": ">= 0.8" + "node": ">=4" } }, "node_modules/vinyl": { @@ -8468,6 +10226,12 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", @@ -8515,6 +10279,16 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } }, "dependencies": { @@ -9532,6 +11306,75 @@ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" }, + "@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/is-empty": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.1.tgz", + "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", + "dev": true + }, + "@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "@types/node": { + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", + "dev": true + }, + "@types/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", + "dev": true + }, + "@types/text-table": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.2.tgz", + "integrity": "sha512-dGoI5Af7To0R2XE8wJuc6vwlavWARsCh3UKJPjWs1YEqGUqfgBI/j/4GX0yf19/DsDPPf0YAXWAp8psNeIehLg==", + "dev": true + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -9885,6 +11728,12 @@ "now-and-later": "^2.0.0" } }, + "bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -9924,6 +11773,15 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -10213,6 +12071,26 @@ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, + "builtins": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-4.0.0.tgz", + "integrity": "sha512-qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==", + "dev": true, + "requires": { + "semver": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "bytes": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", @@ -10286,6 +12164,12 @@ "supports-color": "^5.3.0" } }, + "character-entities": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", + "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==", + "dev": true + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -10305,6 +12189,16 @@ "upath": "^1.1.1" }, "dependencies": { + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -10810,6 +12704,15 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decode-named-character-reference": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", + "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "dev": true, + "requires": { + "character-entities": "^2.0.0" + } + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -10866,6 +12769,12 @@ "through2": "^2.0.0" } }, + "dequal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", + "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", + "dev": true + }, "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -10895,6 +12804,12 @@ "minimist": "^1.1.1" } }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -10978,6 +12893,12 @@ "object.defaults": "^1.1.0" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -11009,6 +12930,12 @@ } } }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -11402,6 +13329,27 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, + "fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, + "requires": { + "format": "^0.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -11526,6 +13474,12 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -11558,6 +13512,13 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -11593,6 +13554,12 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, + "github-slugger": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", + "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -11943,6 +13910,12 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, "import-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", @@ -11959,6 +13932,15 @@ "resolve-from": "^5.0.0" } }, + "import-meta-resolve": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz", + "integrity": "sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==", + "dev": true, + "requires": { + "builtins": "^4.0.0" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -12149,6 +14131,12 @@ } } }, + "is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=", + "dev": true + }, "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", @@ -12222,6 +14210,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-plain-obj": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", + "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -12332,6 +14326,12 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -12369,6 +14369,12 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" }, + "kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "dev": true + }, "labeled-stream-splicer": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", @@ -12411,6 +14417,34 @@ "flush-write-stream": "^1.0.2" } }, + "levenshtein-edit-distance": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz", + "integrity": "sha1-iVuvR4zOi1waDSfkXXwdl4pmHkk=", + "dev": true + }, + "libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, "liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -12431,6 +14465,12 @@ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==" }, + "lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -12443,6 +14483,34 @@ "strip-bom": "^2.0.0" } }, + "load-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-4.0.1.tgz", + "integrity": "sha512-4kMi+mOSn/TR51pDo4tgxROHfBHXsrcyEYSGHcJ1o6TtRaP2PsRM5EwmYbj1uiLDvbfA/ohwuSWZJzqGiai8Dw==", + "dev": true, + "requires": { + "import-meta-resolve": "^1.0.0", + "libnpmconfig": "^1.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -12458,6 +14526,21 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, + "longest-streak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -12531,35 +14614,309 @@ } } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdast-util-from-markdown": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", + "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "mdast-util-to-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", + "dev": true + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromark": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz", + "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", + "dev": true, + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "dev": true, + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dev": true, + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "micromark-util-symbol": "^1.0.0" } }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "dev": true, + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", + "dev": true }, - "merge-descriptors": { + "micromark-util-html-tag-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz", + "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==", + "dev": true + }, + "micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dev": true, + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "dev": true, + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-util-symbol": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", + "dev": true }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", + "dev": true }, "micromatch": { "version": "3.1.10", @@ -12683,6 +15040,12 @@ "xtend": "^4.0.0" } }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -12693,6 +15056,12 @@ "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true + }, "nanoid": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", @@ -12957,6 +15326,32 @@ "yocto-queue": "^1.0.0" } }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -13098,6 +15493,12 @@ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -13414,6 +15815,15 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "propose": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz", + "integrity": "sha1-SKBl2ex9TIZn9AULFcSi2F28pWs=", + "dev": true, + "requires": { + "levenshtein-edit-distance": "^1.0.0" + } + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -13648,6 +16058,80 @@ } } }, + "remark": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.2.tgz", + "integrity": "sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "remark-parse": "^10.0.0", + "remark-stringify": "^10.0.0", + "unified": "^10.0.0" + } + }, + "remark-cli": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-10.0.1.tgz", + "integrity": "sha512-+eln31zLE69JwBMoa8nd2sPC0DFZyiWgBrshL8aKb3L2XXTRMuEKWE/IAtNPYEtcktceAQw+OpmqVy8pAmGOwQ==", + "dev": true, + "requires": { + "remark": "^14.0.0", + "unified-args": "^9.0.0" + } + }, + "remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + } + }, + "remark-stringify": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz", + "integrity": "sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.0.0", + "unified": "^10.0.0" + } + }, + "remark-validate-links": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-11.0.2.tgz", + "integrity": "sha512-SfVDWgF/Albdou1TmrCpq4AvJyvMnPflnaLLPUuFFxKO4Jp1o7fK2sinqPt+WW0DXS4JmtXPXm2FOkB8FJ08tQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "github-slugger": "^1.0.0", + "hosted-git-info": "^4.0.0", + "mdast-util-to-string": "^3.0.0", + "propose": "0.0.5", + "to-vfile": "^7.0.0", + "trough": "^2.0.0", + "unified": "^10.0.0", + "unified-engine": "^9.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "remove-bom-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", @@ -13757,6 +16241,15 @@ "inherits": "^2.0.1" } }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -14382,6 +16875,12 @@ "acorn-node": "^1.2.0" } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -14483,11 +16982,35 @@ "through2": "^2.0.3" } }, + "to-vfile": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.3.tgz", + "integrity": "sha512-QO0A9aE6Z/YkmQadJ0syxpmNXtcQiu0qAtCKYKD5cS3EfgfFTAXfgLX6AOaBrSfWSek5nfsMf3gBZ9KGVFcLuw==", + "dev": true, + "requires": { + "is-buffer": "^2.0.0", + "vfile": "^5.1.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + } + } + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "dev": true + }, "tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -14596,6 +17119,284 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" }, + "unified": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz", + "integrity": "sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + } + } + }, + "unified-args": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-9.0.2.tgz", + "integrity": "sha512-qSqryjoqfJSII4E4Z2Jx7MhXX2MuUIn6DsrlmL8UnWFdGtrWvEtvm7Rx5fKT5TPUz7q/Fb4oxwIHLCttvAuRLQ==", + "dev": true, + "requires": { + "@types/text-table": "^0.2.0", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "chokidar": "^3.0.0", + "fault": "^2.0.0", + "json5": "^2.0.0", + "minimist": "^1.0.0", + "text-table": "^0.2.0", + "unified-engine": "^9.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "unified-engine": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-9.0.5.tgz", + "integrity": "sha512-frQ6lUNlkTwVC0JELJqSSITpE7MLrLJqAWmDrUFj5Do6A4/3n6eX5Jyg8fhe4Dbwwh38spqUJd39FtRFG34QWg==", + "dev": true, + "requires": { + "@types/concat-stream": "^1.0.0", + "@types/debug": "^4.0.0", + "@types/is-empty": "^1.0.0", + "@types/js-yaml": "^4.0.0", + "@types/node": "^17.0.0", + "@types/unist": "^2.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.0.0", + "fault": "^2.0.0", + "glob": "^7.0.0", + "ignore": "^5.0.0", + "is-buffer": "^2.0.0", + "is-empty": "^1.0.0", + "is-plain-obj": "^4.0.0", + "js-yaml": "^4.0.0", + "load-plugin": "^4.0.0", + "parse-json": "^6.0.0", + "to-vfile": "^7.0.0", + "trough": "^2.0.0", + "unist-util-inspect": "^7.0.0", + "vfile-message": "^3.0.0", + "vfile-reporter": "^7.0.0", + "vfile-statistics": "^2.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "parse-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-6.0.2.tgz", + "integrity": "sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^2.3.1", + "lines-and-columns": "^2.0.2" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -14623,6 +17424,51 @@ "through2-filter": "^3.0.0" } }, + "unist-util-inspect": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-7.0.0.tgz", + "integrity": "sha512-2Utgv78I7PUu461Y9cdo+IUiiKSKpDV5CE/XD6vTj849a3xlpDAScvSJ6cQmtFBGgAmCn2wR7jLuXhpg1XLlJw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.1.tgz", + "integrity": "sha512-HDVOJ704Uj5QWqoB6KV4CDP62OW9wam9BEuwGE4fvunhVraZcO/fFNBCpvmDDSlkFBG/GAYdHfKvKvDAJxzcWA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-visit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", + "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + } + }, + "unist-util-visit-parents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -14718,6 +17564,18 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, + "uvu": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz", + "integrity": "sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==", + "dev": true, + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + } + }, "v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -14745,6 +17603,102 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "vfile": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.1.tgz", + "integrity": "sha512-EWkoULWVDBV3ozmE21TA0qekXreWJXV1jKcF8rgnvmmH0L9Vm8eTSnuuSSpH2XpLXZLJ0uMMIHUqDLHjK5lh4w==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + } + } + }, + "vfile-message": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.1.tgz", + "integrity": "sha512-pz5xA88aupQPuXmY46xnGAv8MzAcU1Xi2Do3UftjTdvQHreXCWvJT/BbzYixPNYRek+EAioI0kP3crJu37xa6Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, + "vfile-reporter": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.3.tgz", + "integrity": "sha512-q+ruTWxFHbow359TDqoNJn5THdwRDeV+XUOtzdT/OESgaGw05CjL68ImlbzRzqS5xL62Y1IaIWb8x+RbaNjayA==", + "dev": true, + "requires": { + "@types/supports-color": "^8.0.0", + "string-width": "^5.0.0", + "supports-color": "^9.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-sort": "^3.0.0", + "vfile-statistics": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "dev": true + } + } + }, + "vfile-sort": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.0.tgz", + "integrity": "sha512-fJNctnuMi3l4ikTVcKpxTbzHeCgvDhnI44amA3NVDvA6rTC6oKCFpCVyT5n2fFMr3ebfr+WVQZedOCd73rzSxg==", + "dev": true, + "requires": { + "vfile-message": "^3.0.0" + } + }, + "vfile-statistics": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.0.tgz", + "integrity": "sha512-foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA==", + "dev": true, + "requires": { + "vfile-message": "^3.0.0" + } + }, "vinyl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", @@ -14910,6 +17864,12 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", @@ -14948,6 +17908,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" + }, + "zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", + "dev": true } } } diff --git a/docs/package.json b/docs/package.json index 7e1c902469..5deb98f81f 100644 --- a/docs/package.json +++ b/docs/package.json @@ -11,16 +11,19 @@ "author": "Platform.sh", "scripts": { "assets-dist": "gulp dist", - "hugo-watch-dev": "hugo server --watch --verbose --buildDrafts --cleanDestinationDir --disableFastRender", - "hugo-watch-prod": "./hugo", - "fetch-files": "node static/scripts/fetch-examples.mjs", - "registry-files": "node static/scripts/updateExampleConfigFiles.js", "build-searchapp": "cd static/scripts/xss && npm install && npm run-script build", + "build": "npm run fetch-files && npm run registry-files && npm run build-searchapp", + "check-links": "remark --no-config --quiet --frail --use validate-links --ignore-pattern **/vault.md src", "dev": "npm run fetch-files && npm run registry-files", - "build": "npm run fetch-files && npm run registry-files && npm run build-searchapp" + "fetch-files": "node static/scripts/fetch-examples.mjs", + "hugo-watch-dev": "hugo server --watch --verbose --buildDrafts --cleanDestinationDir --disableFastRender", + "hugo-watch-prod": "./hugo", + "registry-files": "node static/scripts/updateExampleConfigFiles.js" }, "devDependencies": { - "pshregistry-parser": "^1.2.0" + "pshregistry-parser": "^1.2.0", + "remark-cli": "^10.0.1", + "remark-validate-links": "^11.0.2" }, "dependencies": { "@babel/core": "^7.16.7", diff --git a/docs/src/administration/backup-and-restore.md b/docs/src/administration/backup-and-restore.md index 799b948880..f5649d7b9e 100644 --- a/docs/src/administration/backup-and-restore.md +++ b/docs/src/administration/backup-and-restore.md @@ -80,7 +80,7 @@ $ platform backup:create --live ### Automated backups -Backups aren't triggered automatically on Platform.sh Professional plans. For Enterprise and Elite plans, see [backups](../../dedicated/overview/backups.md). +Backups aren't triggered automatically on Platform.sh Professional plans. For Enterprise and Elite plans, see [backups](../dedicated/overview/backups.md). Backups may be triggered by calling the CLI from an automated system such as Jenkins or another CI service, or by installing the CLI tool into your application container and triggering the backup via cron. diff --git a/docs/src/administration/users.md b/docs/src/administration/users.md index d5ecb415d5..b2eb782479 100644 --- a/docs/src/administration/users.md +++ b/docs/src/administration/users.md @@ -172,4 +172,4 @@ Once the transfer is completed, the new organization can administer all project ## Troubleshooting If you have setup an external integration to GitHub, GitLab, or Bitbucket and your users can't clone the project locally, -see how to [troubleshoot source integrations](/integrations/source/troubleshoot.md). +see how to [troubleshoot source integrations](../integrations/source/troubleshoot.md). diff --git a/docs/src/administration/web/_index.md b/docs/src/administration/web/_index.md index 379e9b1a60..36d2f1149a 100644 --- a/docs/src/administration/web/_index.md +++ b/docs/src/administration/web/_index.md @@ -126,12 +126,11 @@ The **CLI** tab displays the command to get your project set up locally with the The **Git** tab displays the command to clone the codebase via Git. If you're using Platform.sh as your primary remote repository, the command clones from the project. -If you have set up an [external integration](/integrations/source/_index.md), the command clones directly from the integrated remote repository. - -If the project uses an external integration to a repository that you have not been given access to, you will not be able to clone until your access has been updated. See [User access and integrations](/administration/users.md#user-access-and-integrations) for more information. - - +If you have set up an [external integration](../../integrations/source/_index.md), the command clones directly from the integrated remote repository. +If the project uses an external integration to a repository that you haven't been given access to, +you can't clone until your access has been updated. +See how to [troubleshoot source integrations](../../integrations/source/troubleshoot.md). ### Configuration settings diff --git a/docs/src/configuration/app/app-reference.md b/docs/src/configuration/app/app-reference.md index e63fc27af9..3d4c3bd8d2 100644 --- a/docs/src/configuration/app/app-reference.md +++ b/docs/src/configuration/app/app-reference.md @@ -396,7 +396,7 @@ Each rule has the following properties where at least one is required and `ips` | Name | Type | Default | Description | | --------- | ------------------- | --------------- | ----------- | -| `ips` | Array of `string`s | `["0.0.0.0/0"]` | IP addresses in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). See a [CIDR format converter](https://ipaddressguide.com/cidr). | +| `ips` | Array of `string`s | `["0.0.0.0/0"]` | IP addresses in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). See a [CIDR format converter](https://www.ipaddressguide.com/cidr). | | `domains` | Array of `string`s | | [Fully qualified domain names](https://en.wikipedia.org/wiki/Fully_qualified_domain_name) to specify specific destinations by hostname. | | `ports` | Array of `integer`s | | Ports from 1 to 65535 that are allowed. If any ports are specified, all unspecified ports are blocked. If no ports are specified, all ports are allowed. Port `25`, the SMTP port for sending email, is always blocked. | @@ -492,7 +492,7 @@ Flavors are language-specific. See what the build flavor is for your language: * [Node.js](../../languages/nodejs/_index.md#build-flavor) -* [PHP](../../languages/php#build-flavor) +* [PHP](../../languages/php/_index.md#build-flavor) In all languages, you can also specify a flavor of `none` to take no action at all (which is the default for any language other than PHP and Node.js). diff --git a/docs/src/configuration/app/hooks/_index.md b/docs/src/configuration/app/hooks/_index.md index 93730bffd7..8afd0c20a8 100644 --- a/docs/src/configuration/app/hooks/_index.md +++ b/docs/src/configuration/app/hooks/_index.md @@ -70,7 +70,7 @@ The template uses [Drush](https://www.drush.org/latest/) to handle routine tasks For its configuration, Drush needs the URL of the site. That means the configuration can't be done in the `build` hook. During the `build` hook, the site isn't yet deployed and so there is no URL to use in the configuration. -(The [`PLATFORM_ROUTES` variable](../../../development/variables/use-variables.md#use--platformsh-provided-variables) isn't available.) +(The [`PLATFORM_ROUTES` variable](../../../development/variables/use-variables.md#use-platformsh-provided-variables) isn't available.) Add the configuration during the `deploy` hook. This way you can access the URL before the site accepts requests (unlike in the `post_deploy` hook). diff --git a/docs/src/configuration/app/troubleshoot-disks.md b/docs/src/configuration/app/troubleshoot-disks.md index a830f682a6..bcf02cf72c 100644 --- a/docs/src/configuration/app/troubleshoot-disks.md +++ b/docs/src/configuration/app/troubleshoot-disks.md @@ -32,7 +32,7 @@ you may receive a notification of low disk space. To solve this issue: -* [Check mount usage](#check-the-size-of-mounts) +* [Check mount usage](./troubleshoot-mounts.md#check-the-size-of-mounts) * [Check your database disk space](#check-your-database-disk-space) (if applicable) * [Increase the available disk space](#increase-available-disk-space) (if necessary) diff --git a/docs/src/configuration/routes/https.md b/docs/src/configuration/routes/https.md index 75340730d8..6a01e0495a 100644 --- a/docs/src/configuration/routes/https.md +++ b/docs/src/configuration/routes/https.md @@ -248,7 +248,7 @@ If you include them in your [routes definition](./_index.md), Platform.sh checks that both the `example.platform.sh` and `www.example.platform.sh` domains are pointing to your project. The certificate also encompasses both these domains. Make sure that both your apex domain and it's `www` subdomain are pointing to your project, -more information can be found in out go live [step-by-step guide](gettingstarted/next-steps/going-live/configure-dns.md). +more information can be found in out go live [step-by-step guide](../../gettingstarted/next-steps/going-live/configure-dns.md). Sometimes, that verification fails which will result in the following error-message: `Couldn't complete challenge [HTTP01: pending | DNS01: pending | TLSALPN01: pending]` diff --git a/docs/src/configuration/services/headless-chrome.md b/docs/src/configuration/services/headless-chrome.md index 8b5cb09102..fd780d70dc 100644 --- a/docs/src/configuration/services/headless-chrome.md +++ b/docs/src/configuration/services/headless-chrome.md @@ -52,12 +52,12 @@ See how to [manage your Node.js version](../../languages/nodejs/node-version.md) {{% endpoint-description type="chrome-headless" /%}} -After configuration, include Puppeteer as a dependency in your `package.json`: +After configuration, include Puppeteer as a dependency: -```json +```json {location="package.json"} { "dependencies": { - "puppeteer": "^1.14.0" + "puppeteer": "^13.0.1" } } ``` @@ -74,7 +74,7 @@ const credentials = config.credentials('chromeheadlessbrowser'); and use them to define the `browserURL` parameter of `puppeteer.connect()` within an `async` function: ```js -exports.takeScreenshot = async function (url) { +exports.getBrowser = async function (url) { try { // Connect to chrome-headless using pre-formatted puppeteer credentials const formattedURL = config.formattedCredentials('chromeheadlessbrowser', 'puppeteer'); @@ -91,7 +91,7 @@ exports.takeScreenshot = async function (url) { }; ``` -Puppeteer allows your application to [create screenshots](https://pptr.dev/#?product=Puppeteer&version=v1.17.0&show=api-pagescreenshotoptions), [emulate a mobile device](https://pptr.dev/#?product=Puppeteer&version=v1.17.0&show=api-pageemulateoptions), [generate PDFs](https://pptr.dev/#?product=Puppeteer&version=v1.17.0&show=api-pagepdfoptions), and much more. +Puppeteer allows your application to [create screenshots](https://pptr.dev/#?product=Puppeteer&version=v13.0.1&show=api-pagescreenshotoptions), [emulate a mobile device](https://pptr.dev/#?product=Puppeteer&version=v13.0.1&show=api-pageemulateoptions), [generate PDFs](https://pptr.dev/#?product=Puppeteer&version=v13.0.1&show=api-pagepdfoptions), and much more. You can find some useful examples of using headless Chrome and Puppeteer on Platform.sh on the Community Portal: diff --git a/docs/src/configuration/services/mongodb.md b/docs/src/configuration/services/mongodb.md index b5c5010c76..9ea8d4a6bc 100644 --- a/docs/src/configuration/services/mongodb.md +++ b/docs/src/configuration/services/mongodb.md @@ -118,7 +118,7 @@ mongodump --port 30000 -u main -p main --authenticationDatabase main --db main As with any other shell command it can be piped to another command to compress the output or redirect it to a specific file. -For further references, see the [official `mongodump` documentation](https://docs.mongodb.com/manual/reference/program/mongodump/#bin.mongodump). +For further references, see the [official `mongodump` documentation](https://docs.mongodb.com/database-tools/mongodump/). ## Upgrading diff --git a/docs/src/configuration/services/mysql/_index.md b/docs/src/configuration/services/mysql/_index.md index 4f6195f3c6..7479322055 100644 --- a/docs/src/configuration/services/mysql/_index.md +++ b/docs/src/configuration/services/mysql/_index.md @@ -268,7 +268,7 @@ relationships: imports: "db:importer" ``` -These relationships are then available in the [`PLATFORM_RELATIONSHIPS` environment variable](#platform_relationships-reference). +These relationships are then available in the [`PLATFORM_RELATIONSHIPS` environment variable](#relationship-reference). Each has its own credentials you can use to connect to the given database. ## Configure the database diff --git a/docs/src/configuration/services/mysql/troubleshoot.md b/docs/src/configuration/services/mysql/troubleshoot.md index be92663b08..430225ec6e 100644 --- a/docs/src/configuration/services/mysql/troubleshoot.md +++ b/docs/src/configuration/services/mysql/troubleshoot.md @@ -69,7 +69,7 @@ to learn about low disk space before it becomes an issue. `MySQL server has gone awa` errors may be caused by the size of the database packets. If so, the logs may show warnings like `Error while sending QUERY packet` before the error. -One way to resolve the issue is to use the [`max_allowed_packet` parameter](./_index.md#adjusting-database-configuration). +One way to resolve the issue is to use the [`max_allowed_packet` parameter](./_index.md#configure-the-database). ### Worker timeout diff --git a/docs/src/configuration/services/network-storage.md b/docs/src/configuration/services/network-storage.md index 13b172e8d9..a951106791 100644 --- a/docs/src/configuration/services/network-storage.md +++ b/docs/src/configuration/services/network-storage.md @@ -48,7 +48,7 @@ The Network storage service is available on all regions except the legacy region * `us.platform.sh` If you're on one of those and require the service, -you should [migrate your project](/guides/general/region-migration.md#region-migration) to a newer region. +you should [migrate your project](../../guides/general/region-migration.md) to a newer region. ## Usage example diff --git a/docs/src/configuration/services/postgresql.md b/docs/src/configuration/services/postgresql.md index be22b03512..31f75959c2 100644 --- a/docs/src/configuration/services/postgresql.md +++ b/docs/src/configuration/services/postgresql.md @@ -10,9 +10,9 @@ See the [PostgreSQL documentation](https://www.postgresql.org/docs/9.6/index.htm {{% frameworks %}} -- [Hibernate](../../../frameworks/hibernate.md#mysql) -- [Jakarta EE](../../../frameworks/jakarta.md#mysql) -- [Spring](../../../frameworks/spring.md#mysql) +- [Hibernate](../../frameworks/hibernate.md#mysql) +- [Jakarta EE](../../frameworks/jakarta.md#mysql) +- [Spring](../../frameworks/spring.md#mysql) {{% /frameworks %}} diff --git a/docs/src/configuration/services/vault.md b/docs/src/configuration/services/vault.md index a94ad6e642..5a9b8aa92b 100644 --- a/docs/src/configuration/services/vault.md +++ b/docs/src/configuration/services/vault.md @@ -36,7 +36,9 @@ You can create multiple endpoints, such as to have key management separate from ## Use Vault KMS -To connect your app to the Vault KMS, use a token that is defined in the `$PLATFORM_RELATIONSHIPS` environment variable. With this token for authentication, you can use any of the policies you [defined in your `.platform/services.yaml` file](#add-the-service). +To connect your app to the Vault KMS, use a token that is defined in the `$PLATFORM_RELATIONSHIPS` environment variable. +With this token for authentication, +you can use any of the policies you [defined in your `.platform/services.yaml` file](#1-configure-the-service). The following examples use cURL as an example, which you could do in a hook or after SSHing into your app environment. Adapt the examples for your app's language. @@ -48,7 +50,7 @@ In order to make any calls to the Vault KMS, you need your token. Get it from th echo $PLATFORM_RELATIONSHIPS | base64 --decode | jq -r ".[0].password" ``` -`` is the name you [defined in your `.platform.app.yaml` file](#add-the-relationship). +`` is the name you [defined in your `.platform.app.yaml` file](#2-add-the-relationship). The `-r` flag returns the string itself, not wrapped in quotes. @@ -70,11 +72,11 @@ Assign it to a variable as follows: VAULT_URL=$(echo $PLATFORM_RELATIONSHIPS | base64 --decode | jq -r ".[0].host"):$(echo $PLATFORM_RELATIONSHIPS | base64 --decode | jq -r ".[0].port") ``` -`` is the name you [defined in your `.platform.app.yaml` file](#add-the-relationship). +`` is the name you [defined in your `.platform.app.yaml` file](#2-add-the-relationship). ### Manage your keys -Your key names are [defined in your `.platform/services.yaml` file](#add-the-service). You can manage them if you've set an [admin policy](#policies) for them. +Your key names are [defined in your `.platform/services.yaml` file](#1-configure-the-service). You can manage them if you've set an [admin policy](#policies) for them. To get information on a key, such as its expiration date, run the following command: diff --git a/docs/src/dedicated-gen-3/overview.md b/docs/src/dedicated-gen-3/overview.md index 41e6832c21..eee1b1a17c 100644 --- a/docs/src/dedicated-gen-3/overview.md +++ b/docs/src/dedicated-gen-3/overview.md @@ -25,7 +25,7 @@ For a PCI-compliant option, use a [previous-generation Dedicated Cluster](../ded ## Why a Generation 3? -Our existing [dedicated infrastructure](/dedicated/overview) ensures increased uptime and availability for your applications and services, but configuration or application topology changes have to go through our Customer Success team, as the VMs are provisioned by us. Generation 3 gives you both the high availability from our Dedicated offer combined with the self-service flexibility and features of Platform.sh Professional. +Our existing [dedicated infrastructure](../dedicated/overview/_index.md) ensures increased uptime and availability for your applications and services, but configuration or application topology changes have to go through our Customer Success team, as the VMs are provisioned by us. Generation 3 gives you both the high availability from our Dedicated offer combined with the self-service flexibility and features of Platform.sh Professional. This means that you are able to edit your configuration yourself - in your `services.yaml`, `routes.yaml`, and `.platform.app.yaml` files - and then see those changes reflected in your Dedicated Generation 3 environments on every push without opening a ticket. @@ -33,7 +33,7 @@ This means that you are able to edit your configuration yourself - in your `serv * A minimum of three virtual machine cluster is associated with your default (production) environment, and also optionally with a staging environment. * Configuration changes on development environments (through your `services.yaml`, `routes.yaml`, and `.platform.app.yaml` files) are reflected on these Dedicated Gen 3 clusters when you merge them. It is not necessary to open a support ticket to change production infrastructure like it is on Dedicated. -* You can deploy your application in any of our [supported cloud providers](/development/faq.md#which-geographic-zones-does-platformsh-cover). +* You can deploy your application in any of our [supported cloud providers](../development/faq.md#which-geographic-zones-does-platformsh-cover). ## Differences from the Grid @@ -41,7 +41,7 @@ Although Dedication Generation 3 adds plenty of features to your existing Grid a ### Available services -In our [services documentation](/configuration/services) you will notice that not every service is available on Dedicated Generation 3 that is available on the Grid, nor is every version. The table below shows the currently available services and their versions for Dedicated Generation 3. +In our [services documentation](../configuration/services/_index.md) you will notice that not every service is available on Dedicated Generation 3 that is available on the Grid, nor is every version. The table below shows the currently available services and their versions for Dedicated Generation 3. {{< gen-3-services >}} @@ -51,7 +51,7 @@ Because you get a redundant infrastructure, note that local mounts will be local ## Setting up -If you are interested in Platform.sh's data cloning, environment control and infrastructure-as-code philisophy across our supported runtimes and services, but you also need a large amount of resources and data isolation, you can [contact us](https://platform.sh/contact) to start setting up a Dedicated Generation 3 project. +If you are interested in Platform.sh's data cloning, environment control and infrastructure-as-code philosophy across our supported runtimes and services, but you also need a large amount of resources and data isolation, you can [contact us](https://platform.sh/contact) to start setting up a Dedicated Generation 3 project. At this time, existing Platform.sh Professional projects cannot be migrated to Dedicated Generation 3, but they soon will be. Migrations will then require contacting our sales team, at which point your infrastructure will be reviewed for compatibility and pricing. After that, your existing project settings will be modified to set up a production environment using Dedicated Generation 3. diff --git a/docs/src/dedicated/overview/monitoring.md b/docs/src/dedicated/overview/monitoring.md index c0fbb9b0d9..2d4dee29a8 100644 --- a/docs/src/dedicated/overview/monitoring.md +++ b/docs/src/dedicated/overview/monitoring.md @@ -23,7 +23,7 @@ A third-party availability monitoring system is configured for every Dedicated p ## Application performance monitoring Platform.sh offers application performance monitoring (APM) packaged with infrastructure monitoring in the Platform.sh Observability Suite. -This APM relies on [Blackfire.io](../../integrations/observability/blackfire.md#on-a-dedicated-cluster), +This APM relies on [Blackfire.io](../../integrations/observability/blackfire.md#on-other-dedicated-infrastructure), which uniquely combines monitoring, profiling, and performance testing technologies. The Observability Suite is currently offered only to Enterprise, Elite, and Fleet customers. diff --git a/docs/src/development/cli/_index.md b/docs/src/development/cli/_index.md index ab1311f04b..6eaf9921e4 100644 --- a/docs/src/development/cli/_index.md +++ b/docs/src/development/cli/_index.md @@ -24,7 +24,7 @@ You need to have: You can also use another Bash-compatible shell such as [Git Bash](https://gitforwindows.org/), which you might have installed with git. -For full requirements, see the [requirements on GitHub](https://github.com/platformsh/platformsh-cli#requirements). +For full requirements, see the [requirements on GitHub](https://github.com/platformsh/platformsh-cli#user-content-requirements). ## 1. Install @@ -34,7 +34,7 @@ Install the CLI using this command: curl -fsS https://platform.sh/cli/installer | php ``` -If you run into issues or want to install manually, see the [installation instructions on GitHub](https://github.com/platformsh/platformsh-cli#installation). +If you run into issues or want to install manually, see the [installation instructions on GitHub](https://github.com/platformsh/platformsh-cli#user-content-installation). ## 2. Authenticate @@ -169,7 +169,7 @@ The code is only merged between environments remotely. You can customize how the CLI operates and what it returns with a configuration file (`.platform/local/project.yaml`) or environment variables. -For details, see the [customization instructions on GitHub](https://github.com/platformsh/platformsh-cli#customization). +For details, see the [customization instructions on GitHub](https://github.com/platformsh/platformsh-cli#user-content-customization). ### Autocomplete commands diff --git a/docs/src/development/email.md b/docs/src/development/email.md index 28e0e6b541..402717e584 100644 --- a/docs/src/development/email.md +++ b/docs/src/development/email.md @@ -44,7 +44,7 @@ To have DKIM enabled for your domain: {{< note>}} -The TXT record to include your account ID (see [SendGrid's SPF setup guidelines](https://docs.sendgrid.com/ui/account-and-settings/spf-records#custom-spf-records)) +The TXT record to include your account ID (see [SendGrid's SPF guidelines](https://docs.sendgrid.com/ui/account-and-settings/spf-records)) looks similar to the following: ```txt diff --git a/docs/src/development/faq.md b/docs/src/development/faq.md index 70dc0d3255..01e391c2cd 100644 --- a/docs/src/development/faq.md +++ b/docs/src/development/faq.md @@ -45,7 +45,7 @@ you have four copies of your application, four copies of your database, four cop Yes! Platform.sh supports non-ephemeral storage. When you configure your application you can tell it what directories you want to be read/write. -(These are called [mounts](/configuration/app/app-reference.md#mounts).) +(These are called [mounts](../configuration/app/app-reference.md#mounts).) These are mounted on a distributed file system (which is transparent for you). When you backup your environment, they are backed up as well. When you create a new staging environment, @@ -54,7 +54,7 @@ these mounts are cloned with the rest of your data. ## What happens if I push a local branch to my project? If you push a local branch that you created with Git, -you create what's called an [inactive environment](../../other/glossary.md#inactive-environment). +you create what's called an [inactive environment](../other/glossary.md#inactive-environment). This means there aren't any services attached to this branch. @@ -72,7 +72,7 @@ Increasing your plan size increases the pool of CPU and RAM that gets split amon All containers on development plans are "small" containers. See configuration options for [apps](../configuration/app/app-reference.md#sizes) -and [services](../configuration/services/_index.md#sizes). +and [services](../configuration/services/_index.md#size). ## What exactly am I SSHing into? diff --git a/docs/src/development/local/lando.md b/docs/src/development/local/lando.md index 739f2eec8f..2f029bc8de 100644 --- a/docs/src/development/local/lando.md +++ b/docs/src/development/local/lando.md @@ -8,7 +8,8 @@ weight: 3 At this time, Lando supports only PHP-based applications but works with any service supported by Platform.sh. Support for other application languages is in progress. -See the [Lando documentation](https://docs.lando.dev/config/platformsh.html) for installing and setting up Lando on your system. A quick-start guide is included below, but the Lando documentation is the primary source of truth. +See the [Lando documentation](https://docs.lando.dev/platformsh/) for installing and setting up Lando on your system. +A quick-start guide is included below, but the Lando documentation is the primary source of truth. ## Quick start diff --git a/docs/src/development/sanitize-db.md b/docs/src/development/sanitize-db.md index fa9992089a..12b551817f 100644 --- a/docs/src/development/sanitize-db.md +++ b/docs/src/development/sanitize-db.md @@ -21,13 +21,13 @@ You need: - A project with a [MySQL database](../configuration/services/mysql/_index.md). - A command interface installed: - With Drupal: [Drush](https://www.drush.org/latest/install/) - - Without Drupal: the [Platform CLI](/development/cli/_index.md#cli-command-line-interface) + - Without Drupal: the [Platform CLI](../development/cli/_index.md) This guide is about sanitizing MySQL databases. This guide doesn't address: -- Sanitizing NoSQL Databases (such as [MongoDB](../configuration/services/mongodb/_index.md)) +- Sanitizing NoSQL Databases (such as [MongoDB](../configuration/services/mongodb.md)) - Input validation and input sanitization, which both help prevent security vulnerabilities ## Sanitize the database diff --git a/docs/src/development/ssh/_index.md b/docs/src/development/ssh/_index.md index 8a70b9b068..c62a29ed11 100644 --- a/docs/src/development/ssh/_index.md +++ b/docs/src/development/ssh/_index.md @@ -34,7 +34,7 @@ The certificate is automatically cycled every hour for a new certificate as long If you are inactive for an extended period, your certificate expires and you are asked to login again the next time you use a command that requires authentication. -You are now ready to run CLI commands and to [connect to an environment](#connect-to-your-server-with-ssh). +You are now ready to run CLI commands and connect to an environment. ### 2. Connect to an app with SSH @@ -68,7 +68,7 @@ Now you can interact with the environment as you want. ## Connect to services -To connect to a service, you need the [service credentials](../../configuration/services/_index.md#obtain-service-credentials). +To connect to a service, you need the [service credentials](../../configuration/services/_index.md#1-obtain-service-credentials). Then you can connect either with a [direct tunnel](#use-a-direct-tunnel) or a [tunnel in your app](#use-an-app-tunnel). ### Use a direct tunnel @@ -90,7 +90,7 @@ Save encoded tunnel details to the PLATFORM_RELATIONSHIPS variable using: ``` Use the returned host (in this case `http://127.0.0.1:30000`) for your connection -and fill in the details with the rest of your [service credentials](../../configuration/services/_index.md#obtain-service-credentials). +and fill in the details with the rest of your [service credentials](../../configuration/services/_index.md#1-obtain-service-credentials). The `tunnel:open` command connects all relationships defined in your [app configuration](../../configuration/app/_index.md). To open only one connection when you have multiple relationships defined, run `tunnel:single`. @@ -98,7 +98,7 @@ To open only one connection when you have multiple relationships defined, run `t ### Use an app tunnel Many database applications (such as MySQL Workbench) support establishing their own SSH tunnel. -You need to use [SSH keys](./ssh-keys) for authentication. +You need to use [SSH keys](./ssh-keys.md) for authentication. Consult the documentation for your application for how to enter SSH credentials. #### Get SSH connection details @@ -115,7 +115,7 @@ The host is everything after the `@` and the username is what's before it. In this case, the host is `ssh.us.platform.sh` and the username is `jyu7waly36ncj-main-7rqtwti--app`. The host is the same for the entire project, while the username varies by environment. -To connect to a service, fill in the details with the rest of your [service credentials](../../configuration/services/_index.md#obtain-service-credentials). +To connect to a service, fill in the details with the rest of your [service credentials](../../configuration/services/_index.md#1-obtain-service-credentials). ## Alternative authentication methods diff --git a/docs/src/development/ssh/ssh-keys.md b/docs/src/development/ssh/ssh-keys.md index 1fe626e5f0..3be16def1d 100644 --- a/docs/src/development/ssh/ssh-keys.md +++ b/docs/src/development/ssh/ssh-keys.md @@ -54,7 +54,7 @@ To find your public key file: If you find a file ending in `.pub`, copy the location and [add it to your Platform.sh account](#2-add-an-ssh-key-to-your-platform-account). -If you don't find an existing key, [generate new keys](#generate-new-keys). +If you don't find an existing key, [generate new keys](#1b-generate-new-keys). ### 1B. Generate new keys diff --git a/docs/src/development/tools.md b/docs/src/development/tools.md index 1c371835c3..425cb893d8 100644 --- a/docs/src/development/tools.md +++ b/docs/src/development/tools.md @@ -23,4 +23,4 @@ Secure Shell (SSH) is a secure, encrypted connection between your computer and t Certificates are used automatically when you use the [Platform.sh CLI](/development/cli/_index.md) and run almost any command. You may force a login using `platform login -f` on the command line, provided you have a web browser available. -To use key pairs, see the [SSH page](/development/ssh/_index.md#authenticate-with-ssh-keys). +To use key pairs, see the [SSH keys](./ssh/ssh-keys.md). diff --git a/docs/src/development/troubleshoot.md b/docs/src/development/troubleshoot.md index 12db7143b4..32669bdd16 100644 --- a/docs/src/development/troubleshoot.md +++ b/docs/src/development/troubleshoot.md @@ -163,7 +163,7 @@ Except where you define it, the file system is all read-only, with code changes This gives you benefits like repeatable deployments, consistent backups, and traceability. To generate anything you need later, [write to disk during a `build` hook](../configuration/app/app-reference.md#writable-directories-during-build). -Or [declare mounts](../configuration/app/app-reference.md#mounts#mounts), +Or [declare mounts](../configuration/app/app-reference.md#mounts), which are writable even during and after deploy. They can be used for your data: file uploads, logs, and temporary files. @@ -215,7 +215,7 @@ Here are a few tips that can help you find the exact cause. ### Check for errors in the logs -Invisible errors during the build and deploy phase can cause increased wait times, failed builds, and other problems. Investigate [each log](/development/logs.md#accessing-logs) and fix any errors you find. +Invisible errors during the build and deploy phase can cause increased wait times, failed builds, and other problems. Investigate [each log](./logs.md#container-logs) and fix any errors you find. ### Build and deploy hooks @@ -246,5 +246,5 @@ Cron jobs may invoke other services in unexpected ways, which can increase execu For language-specific troubleshooting for your apps: -- [PHP](../languages/php/troubleshoot.html) -- [Node JS](../languages/nodejs/debug.html) +- [PHP](../languages/php/troubleshoot.md) +- [Node JS](../languages/nodejs/debug.md) diff --git a/docs/src/development/variables/set-variables.md b/docs/src/development/variables/set-variables.md index 999ec0a038..8e7e31d5ce 100644 --- a/docs/src/development/variables/set-variables.md +++ b/docs/src/development/variables/set-variables.md @@ -79,7 +79,9 @@ When naming variables, be sure to take [variable prefixes](./_index.md#variable- ### Environment variable options -Environment variables share all of the [options available for project variables](./_index.md#variable-options), with the exception that visibility in the build and runtime can be set only with the CLI (not in the console). Environment variables have one additional option: +Environment variables share all of the [options available for project variables](#variable-options), +with the exception that visibility in the build and runtime can be set only with the CLI (not in the console). +Environment variables have one additional option: | Option | CLI flag | Default | Description | | ----------- | --------------- | ------- | ----------- | diff --git a/docs/src/development/variables/use-variables.md b/docs/src/development/variables/use-variables.md index 546df9d41d..16446b7315 100644 --- a/docs/src/development/variables/use-variables.md +++ b/docs/src/development/variables/use-variables.md @@ -3,7 +3,7 @@ title: Use variables description: See how to use variables that have already been set so you can take control over your app's environment. --- -Get a list of all variables defined on a given environment in [the management console](/administration/web/configure-environment.md#variables) +Get a list of all variables defined on a given environment in [the management console](../../administration/web/configure-environment.md#variables) or use the CLI: ```bash @@ -63,22 +63,22 @@ To access environment variables in your app, check the documentation page for yo --- title=Shell file=none -highlight=bash -markdownify=false +highlight=false --- +```bash export PROJECT_ID = "$PLATFORM_PROJECT" export VARIABLES = "$(echo "$PLATFORM_VARIABLES" | base64 --decode)" +``` <---> - --- title=PHP file=none -highlight=php -markdownify=false +highlight=false --- +```php - --- title=Python file=none -highlight=python -markdownify=false +highlight=false --- +```python import os import json import base64 @@ -105,16 +105,16 @@ project_id = os.getenv('PLATFORM_PROJECT') # An encoded JSON object. variables = json.loads(base64.b64decode(os.getenv('PLATFORM_VARIABLES')).decode('utf-8')) +``` <---> - --- title=Node.js file=none -highlight=js -markdownify=false +highlight=false --- +```js const { env } = process; // Utility to assist in decoding a packed JSON variable. @@ -131,31 +131,32 @@ const projectId = env.PLATFORM_PROJECT; // An encoded JSON object. const variables = read_base64_json('PLATFORM_VARIABLES'); +``` <---> --- title=Ruby file=none -highlight=ruby -markdownify=false +highlight=false --- +```ruby # A simple variable. project_id = ENV["PLATFORM_PROJECT"] || nil # An encoded JSON object. variables = JSON.parse(Base64.decode64(ENV["PLATFORM_VARIABLES"])) +``` <---> - --- title=Java file=none -highlight=java -markdownify=false +highlight=false --- +```java import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; @@ -176,6 +177,7 @@ public class App { String.valueOf(getDecoder().decode(getenv("PLATFORM_VARIABLES"))), Map.class); } } +``` {{< /codetabs >}} @@ -209,10 +211,10 @@ You can access these nested variables as follows: --- title=Shell file=none -highlight=bash -markdownify=false +highlight=false --- +```bash $ echo $BASIC a string $ echo $INGREDIENTS @@ -231,15 +233,16 @@ $ echo "$PLATFORM_VARIABLES" | base64 --decode | jq '."stuff:COLORS"' "green": "#00FF00", "red": "#FF0000" } +``` <---> - --- title=PHP file=none -highlight=php -markdownify=false +highlight=false --- + +```php - --- title=Python file=none -highlight=python -markdownify=false +highlight=false --- + +```python import os import json import base64 @@ -303,16 +307,17 @@ print variables['stuff:STEPS'] # [u'un', u'deux', u'trois'] print variables['stuff:COLORS'] # {u'blue': u'#0000FF', u'green': u'#00FF00', u'red': u'#FF0000'} +``` <---> - --- title=Node.js file=none -highlight=javascript -markdownify=false +highlight=false --- -const { BASIC, INGREDIENTS, QUANTITIES, PLATFORM_VARIABLES } = process.env; + +```java +scriptconst { BASIC, INGREDIENTS, QUANTITIES, PLATFORM_VARIABLES } = process.env; const { "stuff:STEPS": stuffSteps, "stuff:COLORS": stuffColors } = JSON.parse( Buffer.from(PLATFORM_VARIABLES, "base64").toString() @@ -328,6 +333,7 @@ console.log(stuffSteps); // [ 'un', 'deux', 'trois' ] console.log(stuffColors); // { blue: '#0000FF', green: '#00FF00', red: '#FF0000' } +``` {{< /codetabs >}} @@ -360,7 +366,7 @@ and whether they're available during builds and at runtime. | `PLATFORM_SMTP_HOST` | No | Yes | The SMTP host to send email messages through. Is empty when mail is disabled for the current environment. | | `PLATFORM_SOURCE_DIR` | Yes | No | Equivalent to `PLATFORM_APP_DIR` in the context of a running [source operation](../../configuration/app/source-operations.md). The directory contains a writable copy of your repository that you can commit to during the operation. | | `PLATFORM_TREE_ID` | Yes | Yes | The ID of the tree the application was built from, essentially the SHA hash of the tree in Git. Use when you need a unique ID for each build. | -| `PLATFORM_VARIABLES` | Some | Some | A base64-encoded JSON object with all user-defined project and environment variables that don't use a [prefix](./_index.md#variable-prefixes). The keys are the variable names and the values are the variable values. Availability during builds and at runtime depends on the settings for each variable. See how to [access individual variables](#accessing-variables-in-a-shell). | +| `PLATFORM_VARIABLES` | Some | Some | A base64-encoded JSON object with all user-defined project and environment variables that don't use a [prefix](./_index.md#variable-prefixes). The keys are the variable names and the values are the variable values. Availability during builds and at runtime depends on the settings for each variable. See how to [access individual variables](#access-variables-in-a-shell). | | `PORT` | No | Yes | A `string` representing the port to which requests are sent if the [`web.upstream.socket_family` property](../../configuration/app/app-reference.md#upstream) is unset or set to `tcp`. | | `SOCKET` | No | Yes | A `string` representing the path to the Unix socket file to use if the [`web.upstream.socket_family` property](../../configuration/app/app-reference.md#upstream) is set to `unix`. | @@ -430,7 +436,7 @@ Some apps require configuration values to be specified in a static, non-executab and don't support reading from environment variables. To populate these files with variables you set yourself, -make sure the variables are set to be [visible at build time](./set-variables.md#environment-variables). +make sure the variables are set to be [visible at build time](./set-variables.md#variable-options). The files can't be populated with Platform.sh-provided variables not available at build time (such as `PLATFORM_RELATIONSHIPS`). You also can't write to them in a `deploy` hook as the file system is read only. diff --git a/docs/src/domains/cdn/_index.md b/docs/src/domains/cdn/_index.md index 33d8c5334a..19013db0f5 100644 --- a/docs/src/domains/cdn/_index.md +++ b/docs/src/domains/cdn/_index.md @@ -10,10 +10,10 @@ Our experience has shown that effective caching can mean a huge difference in th and that placing the caches closer to your users (wherever they may be) is the best solution currently available. Self-Service Grid plans do not include a CDN by default, but you are welcome to configure one yourself. -See our [guidelines](/bestpractices/http-caching.md) for when and if to use a CDN for HTTP caching. +See our [guidelines](../../bestpractices/http-caching.md) for when and if to use a CDN for HTTP caching. We have partnerships with a variety of CDN vendors depending on your application’s needs. -Our recommended CDN provider is [Fastly](/domains/cdn/fastly.md). +Our recommended CDN provider is [Fastly](./fastly.md). ## DNS management @@ -163,13 +163,13 @@ If your CDN offers this option, an alternative way of securing the connection is **note**: Remember to permit your developers to access the origin by creating your own certificate or else they won't be able to access the project URL directly (see below). -CloudFlare has [a very good article](https://support.cloudflare.com/hc/en-us/articles/204899617-Authenticated-Origin-Pulls) +CloudFlare has [a very good article](https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/) on what client authenticated TLS is and how to set this up. To activate authenticated TLS follow the following steps: - Download the correct certificate from your CDN provider. - - [CloudFlare](https://support.cloudflare.com/hc/en-us/article_attachments/360044928032/origin-pull-ca.pem) + - [CloudFlare](https://developers.cloudflare.com/ssl/static/authenticated_origin_pull_ca.pem) - *Caveat! an attacker could make a Cloudflare account to bypass your origin restriction. For CloudFlare, using the HTTP access control described above is the recommended way of securing your origin.* - [Fastly](https://docs.fastly.com/products/waf-tuning-plus-package#authenticated-tls-to-origin) - Make sure you have a `.crt` file. If you have a `.pem` file, rename it to `cdn.crt` diff --git a/docs/src/domains/checklist.md b/docs/src/domains/checklist.md index bef6689bec..3473891dd2 100644 --- a/docs/src/domains/checklist.md +++ b/docs/src/domains/checklist.md @@ -40,7 +40,7 @@ Also ensure that the data on the production instance is up to date and ready to ## 3. Optionally obtain a 3rd party TLS certificate Platform.sh automatically provides TLS certificates for all sites issued by [Let's Encrypt](https://letsencrypt.org/) at no charge. -[In most cases](../configuration/routes/https.md#limitations), this is sufficient and no further action is necessary. +[In most cases](../configuration/routes/https.md#limits), this is sufficient and no further action is necessary. However, if you want to use a [third-party TLS certificate](./steps/tls.md) to encrypt your production site, you can obtain one from any number of 3rd party TLS issuers. Platform.sh does not charge for using a 3rd party TLS certificate, although the issuer may. diff --git a/docs/src/domains/steps/_index.md b/docs/src/domains/steps/_index.md index a075a35606..09601697f8 100644 --- a/docs/src/domains/steps/_index.md +++ b/docs/src/domains/steps/_index.md @@ -103,16 +103,17 @@ After adding the line the file will look something like: ![Hosts File](/images/config-files/hosts-file.png "0.4") -Alternatively there is also an add-on for Firefox and Google Chrome +Alternatively, there's an add-on for Firefox that allows you to dynamically switch DNS IP addresses without modifying your `hosts` file. * [Firefox LiveHosts add-on](https://addons.mozilla.org/en-US/firefox/addon/livehosts/) -* [Google Chrome LiveHosts add-on](https://chrome.google.com/webstore/detail/livehosts/hdpoplemgeaioijkmoebnnjcilfjnjdi?hl=en) {{< note >}} -Do not put the IP address you see here, but the one you got from the ping command. + +Don't put the IP address you see here, but the one you got from the ping command. *Also, remember to remove this entry after you have configured DNS!* + {{< /note >}} Sometimes it can take Let's Encrypt a couple of minutes to provision the certificate the first time. diff --git a/docs/src/frameworks/ibexa/_index.md b/docs/src/frameworks/ibexa/_index.md index ce0b973b2f..131ef9e0e3 100644 --- a/docs/src/frameworks/ibexa/_index.md +++ b/docs/src/frameworks/ibexa/_index.md @@ -25,8 +25,7 @@ If you have an existing Ibexa DXP project that was upgraded from a previous vers In particular, see: * The [.platform.app.yaml](https://github.com/ezsystems/ezplatform/blob/master/.platform.app.yaml) file, which automatically builds Ibexa DXP in dev mode or production mode depending on your defined project-level variables. - * The [.platform](https://github.com/ezsystems/ezplatform/tree/master/.platform) directory - * The [platformsh.php](https://github.com/ezsystems/ezplatform/blob/master/config/packages/overrides/platformsh.php) configuration file, which does the work of mapping Platform.sh environment variables into Ibexa DXP. It also will automatically enable Redis-based cache and session support if detected. + * The [.platform](https://github.com/ezsystems/ezplatform/tree/master/.platform) directory. ## Local Development with eZ Platform 2.x and later @@ -116,7 +115,7 @@ The main ones are: * **Downstream database synchronization**: Getting it from the remote to the local. * **Downstream file storage synchronization**: Getting it from the remote to the local. -To help you with that, Platform.sh provides a CLI that you probably already have. If you don't, see the [install guide](/development/cli/_index.md#installation). +To help you with that, Platform.sh provides a CLI that you can [install](../../development/cli/_index.md). Combined together, eZ Launchpad and Platform.sh CLI make those actions straight forward and simple. @@ -131,5 +130,9 @@ platform mount:download -m ezplatform/web/var --target=ezplatform/web/var/ -y The two first lines get the remote database and storage from the remote environment and stores it locally in `data/`. The third tells to eZ Launchpad to import those data in the Docker stack. {{< note >}} -The storage (images and files) synchronization is optional. Ibexa DXP provides a [placeholder generator mechanism](https://doc.ibexa.co/en/latest/guide/images/#setting-placeholder-generator) which allows you to forget about the real images for your local. + +The storage (images and files) synchronization is optional. +Ibexa DXP provides a [placeholder generator mechanism](https://doc.ibexa.co/en/latest/guide/images/#generate-placeholder-images) +that allows you to forget about the real images for your local. + {{< /note >}} diff --git a/docs/src/frameworks/ibexa/fastly.md b/docs/src/frameworks/ibexa/fastly.md index 544b4101d0..36a2882421 100644 --- a/docs/src/frameworks/ibexa/fastly.md +++ b/docs/src/frameworks/ibexa/fastly.md @@ -27,7 +27,7 @@ In order to use Fastly, Varnish must be disabled: ## Setting up Ibexa DXP to use Fastly -Ibexa DXP's documentation includes instructions on how to [configure Ibexa DXP for Fastly](https://doc.ibexa.co/en/latest/guide/http_cache/#using-fastly-as-httpcache-proxy). +Ibexa DXP's documentation includes instructions on how to [configure Ibexa DXP for Fastly](https://doc.ibexa.co/en/latest/guide/cache/symfony_reverse_proxy/#use-varnish-or-fastly). Follow the steps there to prepare Ibexa DXP for Fastly. ## Set credentials on Platform.sh diff --git a/docs/src/frameworks/jakarta.md b/docs/src/frameworks/jakarta.md index e91aede760..d25d7f4925 100644 --- a/docs/src/frameworks/jakarta.md +++ b/docs/src/frameworks/jakarta.md @@ -395,7 +395,7 @@ public class TransactionInterceptor { } ``` -Furthermore, Apache Delta Spike has a [post](https://deltaspike.apache.org/documentation/jpa.html#ExtendedPersistenceContexts) for treating this problem. +To treat this issue, see the [Apache Delta Spike docs](https://deltaspike.apache.org/documentation/jpa.html#_extended_persistence_contexts). ## Templates diff --git a/docs/src/gettingstarted/introduction/own-code/app-configuration.md b/docs/src/gettingstarted/introduction/own-code/app-configuration.md index 2579913f83..3bea50ce1e 100644 --- a/docs/src/gettingstarted/introduction/own-code/app-configuration.md +++ b/docs/src/gettingstarted/introduction/own-code/app-configuration.md @@ -65,7 +65,10 @@ The `.platform.app.yaml` file is extremely flexible, and can contain many lines * `name`: The [name of your application](../../../configuration/app/app-reference.md) container does not have to be the same as your project name, and in most single application cases you can simply name it `app`. You should notice in the next step, when you configure how requests are handled in `.platform/routes.yaml` that `name` is reused there, and it is important that they are the same. {{< note >}} - If you are trying to to deploy [microservices](/configuration/app/multi-app.md#example-of-a-micro-service-multi-app), the only constraint is that each of these application names must be unique. + + If you are trying to deploy microservices, + the only constraint is that each app name must be unique. + {{< /note >}} * `type`: The [type](/configuration/app/app-reference.md) attribute in `.platform.app.yaml` sets the container base image for the application, and sets the primary language. In general, `type` should have the form diff --git a/docs/src/gettingstarted/next-steps/going-live/first-steps.md b/docs/src/gettingstarted/next-steps/going-live/first-steps.md index 3212766d43..4e3d5bcfd5 100644 --- a/docs/src/gettingstarted/next-steps/going-live/first-steps.md +++ b/docs/src/gettingstarted/next-steps/going-live/first-steps.md @@ -21,7 +21,7 @@ Before you take your site live, there are a few steps that will help you prepare 3. **(Optional) Obtain 3rd party SSL if needed** Let's Encrypt SSL certificates are automatically issued for Platform.sh projects at no charge to you. - The number of Let's Encrypt certificates [is limited](../../../configuration/routes/https.md#limitations). + The number of Let's Encrypt certificates [is limited](../../../configuration/routes/https.md#limits). If you want to use a [third-party SSL certificate](../../../domains/steps/tls.md) instead, make sure that you have purchased it and that it's active prior to going live. diff --git a/docs/src/guides/drupal9/deploy/configure.md b/docs/src/guides/drupal9/deploy/configure.md index e1aa22976d..f891ea0af2 100644 --- a/docs/src/guides/drupal9/deploy/configure.md +++ b/docs/src/guides/drupal9/deploy/configure.md @@ -22,7 +22,7 @@ although you can also use Oracle MySQL or [PostgreSQL](/configuration/services/p We also strongly recommend using [Redis](/configuration/services/redis.md) for Drupal caching. Drupal's cache can be very aggressive, and keeping that data out of the database helps with both performance and disk usage. -Our Drupal template comes [pre-configured to use Redis](https://github.com/platformsh-templates/drupal9#customizations) for caching. +Our Drupal template comes [pre-configured to use Redis](https://github.com/platformsh-templates/drupal9#user-content-customizations) for caching. {{% /guides/config-service %}} diff --git a/docs/src/guides/drupal9/simplesaml.md b/docs/src/guides/drupal9/simplesaml.md index a2fce4d949..11bedbbe1f 100644 --- a/docs/src/guides/drupal9/simplesaml.md +++ b/docs/src/guides/drupal9/simplesaml.md @@ -126,7 +126,12 @@ if (isset($_ENV['PLATFORM_PROJECT_ENTROPY'])) { ## Generate SSL certificates (optional) -Depending on your Identity Provider (IdP), you may need to generate an [SSL/TLS certificate](https://hosting.review/web-hosting-glossary/#12) to connect to the Service Provider (SP). If so, you should generate the certificate locally following the instructions in the [SimpleSAMLphp documentation](https://simplesamlphp.org/docs/stable/simplesamlphp-sp). Whatever your resulting idP file is should be placed in the simplesamlphp/metadata directory. The certificate should be placed in the `simplesamlphp/cert` directory. (Create it if needed.) +Depending on your Identity Provider (IdP), +you may need to generate an SSL/TLS certificate to connect to the service provider. +If so, you should generate the certificate locally following the instructions in the [SimpleSAMLphp documentation](https://simplesamlphp.org/docs/latest/simplesamlphp-sp). +Your resulting IdP file is should be placed in the `simplesamlphp/metadata` directory. +The certificate should be placed in the `simplesamlphp/cert` directory. +(Create it if needed.) Then add the following line to your `simplesamlphp/config/config.php` file to tell the library where to find the certificate: diff --git a/docs/src/guides/drupal9/solr.md b/docs/src/guides/drupal9/solr.md index a8987c5922..cac37c26a0 100644 --- a/docs/src/guides/drupal9/solr.md +++ b/docs/src/guides/drupal9/solr.md @@ -37,7 +37,7 @@ Once [this issue](https://www.drupal.org/project/drupal/issues/2876675) is resol If you are using the latest version of Search API Solr and running Drupal 8.8 or higher on PHP 7.2 or higher, this step is no longer necessary. You should be able to proceed directly to the next step. -{{% endpoint-description type="solr" sectionLink="#solr-6-and-later" multipleText="cores" noApp=true /%}} +{{% endpoint-description type="solr" sectionLink="/configuration/services/solr.html#solr-6-and-later" multipleText="cores" noApp=true /%}} ### 4. Configure the server core diff --git a/docs/src/guides/gatsby/headless/drupal.md b/docs/src/guides/gatsby/headless/drupal.md index 8eb13e19c7..469ca1ca3b 100644 --- a/docs/src/guides/gatsby/headless/drupal.md +++ b/docs/src/guides/gatsby/headless/drupal.md @@ -49,7 +49,7 @@ You can then modify [`gatsby-config.js`](https://www.gatsbyjs.com/docs/reference The template file that defines how a single Drupal article should be formatted on Gatsby, retrieving the data from that article using the `nodeArticle` GraphQL query. -- [`gatsby/src/pages/articles.js`](https://github.com/platformsh-templates/gatsby-strapi/blob/master/gatsby/src/pages/articles.js) +- [`gatsby/src/pages/articles.js`](https://github.com/platformsh-templates/gatsby-strapi/blob/master/gatsby/src/components/articles.js) Retrieves all of Drupal's content to generate a list of articles at `/articles` on the Gatsby site using the `allNodeArticle` GraphQL query. @@ -57,7 +57,9 @@ You can then modify [`gatsby-config.js`](https://www.gatsbyjs.com/docs/reference {{< guides/gatsby/headless-postinstall name="Drupal">}} -After you have completed the installation you will need to enable the JSON API and Gatsby related modules, and then set up aliases for your articles using Pathauto. See [the post-installation](https://github.com/platformsh-templates/gatsby-drupal#post-install) instructions on the template for the detailed instructions. +After you have completed the installation, you need to enable the JSON API and Gatsby related modules +and then set up aliases for your articles using `pathauto`. +For detailed instructions, see the template's [post-installation instructions](https://github.com/platformsh-templates/gatsby-drupal#user-content-post-install). {{< /guides/gatsby/headless-postinstall >}} @@ -81,5 +83,4 @@ With Gatsby now deployed and pulling content from a backend Drupal application, If you replicate the `web.commands.start` block in Gatsby's `.platform.app.yaml` file above, you will be able to enable incremental builds on your projects. Once you save an update to a piece of Drupal content on a non-production branch, Drupal will place a request to a dedicated `/__refresh` endpoint on Gatsby (which is itself enabled by a [branch-dependent environment variable](https://github.com/platformsh-templates/gatsby-drupal/blob/master/gatsby/.environment)). Since Gatsby is running a development server on this non-production environment, this call will cause Gatsby to retrieve content from Drupal once again, resulting in a near instantly updated article on the frontend. -The process of enabling this feature is a little detailed, so it is best to consult the [template's README](https://github.com/platformsh-templates/gatsby-drupal#enabling-gatsby-live-preview-manual-configuration) for the most up-to-date instructions for how to do so. - +The process of enabling this feature is a little detailed, so it is best to consult the [template's README](https://github.com/platformsh-templates/gatsby-drupal#user-content-enabling-gatsby-live-preview-manual-configuration) for the most up-to-date instructions for how to do so. diff --git a/docs/src/guides/gatsby/headless/strapi.md b/docs/src/guides/gatsby/headless/strapi.md index d7d938bf70..955aaf2984 100644 --- a/docs/src/guides/gatsby/headless/strapi.md +++ b/docs/src/guides/gatsby/headless/strapi.md @@ -33,7 +33,13 @@ $ yarn add strapi-plugin-graphql {{< guides/gatsby/headless-gatsby name="Strapi" template="gatsby-strapi" >}} -You can then modify [`gatsby-config.js`](https://www.gatsbyjs.com/docs/reference/config-files/gatsby-config/) to read from the backend Strapi container through the `strapi` relationship defined above to configure the `apiURL` attribute for `gatsby-source-strapi`. Notice that the source plugin requires that you explicitly define the `contentTypes` you would like to retrieve from Strapi. At this point you have not built out the API, and the Content Types `article` and `category` are included to support the [post-install instructions](https://github.com/platformsh-templates/gatsby-strapi/tree/update#post-install) outlined in the template's README. Adjust these values to fit your current API if your are planning on migrating an existing Strapi repository. +You can then modify [`gatsby-config.js`](https://www.gatsbyjs.com/docs/reference/config-files/gatsby-config/) +to read from the backend Strapi container through the `strapi` relationship defined above +to configure the `apiURL` attribute for `gatsby-source-strapi`. +Note that the source plugin requires that you explicitly define the `contentTypes` to retrieve from Strapi. +At this point, you haven't yet built out the API. +So the `article` and `category` content types are included for what you need to do [after installing](https://github.com/platformsh-templates/gatsby-strapi/tree/update#user-content-post-install). +If you're migrating an existing Strapi repository, adjust these values to fit your current API. {{< /guides/gatsby/headless-gatsby >}} @@ -57,7 +63,7 @@ You can then modify [`gatsby-config.js`](https://www.gatsbyjs.com/docs/reference {{< guides/gatsby/headless-postinstall name="Strapi">}} -After you have deployed, you will need to set up Strapi's Admin Panel and some initial content endpoints for the Gatsby frontend to consume. Create your admin user at the `backend` subdomain for Strapi. You can then follow the [template's post-install instructions](https://github.com/platformsh-templates/gatsby-strapi/tree/update#post-install) to setup up some initial `Article` and `Category` content endpoints. The API you develop there will be only accessible by admins by default, so be sure to adjust the permissions to public so Gatsby can access it. +After you have deployed, you will need to set up Strapi's Admin Panel and some initial content endpoints for the Gatsby frontend to consume. Create your admin user at the `backend` subdomain for Strapi. You can then follow the [template's post-install instructions](https://github.com/platformsh-templates/gatsby-strapi/tree/update#user-content-post-install) to setup up some initial `Article` and `Category` content endpoints. The API you develop there will be only accessible by admins by default, so be sure to adjust the permissions to public so Gatsby can access it. {{< /guides/gatsby/headless-postinstall >}} diff --git a/docs/src/guides/gatsby/headless/wordpress.md b/docs/src/guides/gatsby/headless/wordpress.md index ff3ea1e835..55f635c6c8 100644 --- a/docs/src/guides/gatsby/headless/wordpress.md +++ b/docs/src/guides/gatsby/headless/wordpress.md @@ -28,7 +28,12 @@ description: | {{< guides/gatsby/headless-gatsby template="gatsby-wordpress" name="WordPress" >}} -You can then modify [`gatsby-config.js`](https://www.gatsbyjs.com/docs/reference/config-files/gatsby-config/) to read from the backend WordPress container through the `wordpress` relationship defined above to configure the `baseUrl` attribute for `gatsby-source-wordpress`. The plugin requires you to define the `protocol`, which in this case is `http` due to the fact that WordPress content will be retrieved through an internal request to the backend container. Also, it is necessary to declare `hostingWPCOM: false`, as you will not be pulling data from a WordPress site hosted on wordpress.com. +You can then modify [`gatsby-config.js`](https://www.gatsbyjs.com/docs/reference/config-files/gatsby-config/) +to read from the backend WordPress container through the `wordpress` relationship defined above +to configure the `baseUrl` attribute for `gatsby-source-wordpress`. +The plugin requires you to define the `protocol`, +which in this case is `http` because WordPress content is retrieved through an internal request to the backend container. +Also, you need to declare `hostingWPCOM: false` as you don't pull data from a WordPress site hosted at wordpress.com. {{< /guides/gatsby/headless-gatsby >}} diff --git a/docs/src/guides/general/default-branch.md b/docs/src/guides/general/default-branch.md index 5dde41cb2e..efe2e8177a 100644 --- a/docs/src/guides/general/default-branch.md +++ b/docs/src/guides/general/default-branch.md @@ -10,7 +10,7 @@ To change it after project creation, follow the steps below. You can complete some of these steps through the management console, but since all can be completed with the CLI those commands alone are listed. -Be sure to [install the CLI](/development/cli/_index.md#installation) if you have not already done so. +Be sure to [install the CLI](../../development/cli/_index.md) if you have not already done so. It's assumed you are changing the default branch of your project on Platform.sh from `master` to `main`. If using another name for the default branch, update the commands accordingly. @@ -229,8 +229,8 @@ Platform.sh supports external Git integrations to a number of services, so follow the linked instructions below for changing the default branch to `main` for your provider: - [GitHub](https://github.com/github/renaming) -- [GitLab](https://docs.gitlab.com/ee/user/project/repository/branches/#default-branch) -- [BitBucket](https://community.atlassian.com/t5/Bitbucket-questions/How-to-change-MAIN-branch-in-BitBucket/qaq-p/977418#:~:text=In%20Bitbucket%20Cloud%2C%20please%20go,repository%20details%20%3E%3E%20Main%20branch.) +- [GitLab](https://docs.gitlab.com/ee/user/project/repository/branches/default.html#change-the-default-branch-name-for-a-project) +- [BitBucket](https://community.atlassian.com/t5/Bitbucket-questions/How-to-change-MAIN-branch-in-BitBucket/qaq-p/977418) ### 4. Deactivate the `master` environment diff --git a/docs/src/guides/quarkus/elasticsearch.md b/docs/src/guides/quarkus/elasticsearch.md index 803970b96d..d2025ccf99 100644 --- a/docs/src/guides/quarkus/elasticsearch.md +++ b/docs/src/guides/quarkus/elasticsearch.md @@ -38,7 +38,7 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#default-configsources). +Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#user-content-default-configsources). {{< /note >}} ## 4. Connect to Elasticsearch diff --git a/docs/src/guides/quarkus/jpa.md b/docs/src/guides/quarkus/jpa.md index bf998dff0a..40e81cee25 100644 --- a/docs/src/guides/quarkus/jpa.md +++ b/docs/src/guides/quarkus/jpa.md @@ -40,7 +40,7 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#default-configsources). +Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#user-content-default-configsources). {{< /note >}} ## 4. Connect to the service diff --git a/docs/src/guides/quarkus/mongodb.md b/docs/src/guides/quarkus/mongodb.md index f3d0de3af5..3a21eec2d9 100644 --- a/docs/src/guides/quarkus/mongodb.md +++ b/docs/src/guides/quarkus/mongodb.md @@ -47,7 +47,7 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#default-configsources). +Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#user-content-default-configsources). {{< /note >}} ## 4. Connect to the service diff --git a/docs/src/guides/quarkus/panache.md b/docs/src/guides/quarkus/panache.md index c65571ad1e..7d439c041c 100644 --- a/docs/src/guides/quarkus/panache.md +++ b/docs/src/guides/quarkus/panache.md @@ -12,12 +12,12 @@ Hibernate ORM is the de facto JPA implementation and offers you the full breadth To activate Hibernate Panache and then have it accessed by the Quarkus application already in Platform.sh, it is necessary to modify two files. {{< note >}} -This guide only covers the *addition* of a service configuration to an existing Quarkus project already configured to deploy on Platform.sh. Please see the [deployment guide](/guides/quarkus/deploy/_index.md) for more detailed instructions for setting up app containers and initial projects. +This guide only covers the *addition* of a service configuration to an existing Quarkus project already configured to deploy on Platform.sh. Please see the [deployment guide](./deploy/_index.md) for more detailed instructions for setting up app containers and initial projects. {{< /note >}} ## 1. Add a SQL database service -In your [service configuration](../../configuration/services/_index.md), include a SQL database service. Make sure to visit the documentation for [that service](/configuration/services/_index.md) to find a valid version. For PostgreSQL that would look like: +In your [service configuration](../../configuration/services/_index.md), include a SQL database service. Make sure to visit the documentation for [that service](../../configuration/services/_index.md) to find a valid version. For PostgreSQL that would look like: {{< readFile file="src/registry/images/examples/full/postgresql.services.yaml" highlight="yaml" location=".platform/services.yaml" >}} @@ -42,7 +42,7 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#default-configsources). +Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#user-content-default-configsources). {{< /note >}} ## 4. Connect to the service diff --git a/docs/src/guides/quarkus/redis.md b/docs/src/guides/quarkus/redis.md index 4ce46ffeb7..d74c1db564 100644 --- a/docs/src/guides/quarkus/redis.md +++ b/docs/src/guides/quarkus/redis.md @@ -38,7 +38,7 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#default-configsources). +Environment variables names are following the conversion rules of [Eclipse MicroProfile](https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#user-content-default-configsources). {{< /note >}} ## 4. Connect to Redis diff --git a/docs/src/guides/spring/deploy/customize.md b/docs/src/guides/spring/deploy/customize.md index 192344a847..65e4ee0c2c 100644 --- a/docs/src/guides/spring/deploy/customize.md +++ b/docs/src/guides/spring/deploy/customize.md @@ -31,7 +31,11 @@ compile group: 'sh.platform', name: 'config', version: '2.2.2' ## `.environment` -The `.platform.app.yaml` file on the [previous page](/guides/spring/deploy/configure.md#application-container-platformappyaml) has been pulled directly from the [Spring template](https://github.com/platformsh-templates/spring-mvc-maven-mongodb/blob/master/.platform.app.yaml). It is sufficient to deploy Spring on it's own, but since [Spring Config](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-relaxed-binding-from-environment-variables) makes it possible to overwrite configurations without impacting the application itself, you might elect to rely more heavily on environment variables in it's place. +The `.platform.app.yaml` file in the [previous step](./configure.md#application-container-platformappyaml) +has been pulled directly from the [Spring template](https://github.com/platformsh-templates/spring-mvc-maven-mongodb/blob/master/.platform.app.yaml). +It is sufficient to deploy Spring on its own, but since [Spring Config](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config.typesafe-configuration-properties.relaxed-binding.environment-variables) +makes it possible to overwrite configurations without impacting the application itself, +you might elect to rely more heavily on environment variables in its place. Consider this simplified `.platform.app.yaml` file: diff --git a/docs/src/guides/spring/elasticsearch.md b/docs/src/guides/spring/elasticsearch.md index 798a4079ca..b188e9dc94 100644 --- a/docs/src/guides/spring/elasticsearch.md +++ b/docs/src/guides/spring/elasticsearch.md @@ -37,7 +37,9 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Please check the [Spring Common Application properties](https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties) and the [Binding from Environment Variables](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-relaxed-binding-from-environment-variables) to have access to more credentials options. + +{{% spring-common-props %}} + {{< /note >}} ## 4. Connect to Elasticsearch diff --git a/docs/src/guides/spring/jpa.md b/docs/src/guides/spring/jpa.md index a59462ce94..a29ae59db7 100644 --- a/docs/src/guides/spring/jpa.md +++ b/docs/src/guides/spring/jpa.md @@ -40,9 +40,12 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Please check the [Spring Common Application properties](https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties) and the [Binding from Environment Variables](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-relaxed-binding-from-environment-variables) to have access to more credentials options. + +{{% spring-common-props %}} + {{< /note >}} ## 4. Connect to the service -Commit that code and push. The specified cluster will now always point to the PostgreSQL or any SQL service that you wish. \ No newline at end of file +Commit that code and push. +The specified cluster now always points to the PostgreSQL or any SQL service that you wish. diff --git a/docs/src/guides/spring/mongodb.md b/docs/src/guides/spring/mongodb.md index a2038d7a75..5d43f9908a 100644 --- a/docs/src/guides/spring/mongodb.md +++ b/docs/src/guides/spring/mongodb.md @@ -42,7 +42,9 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Please check the [Spring Common Application properties](https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties) and the [Binding from Environment Variables](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-relaxed-binding-from-environment-variables) to have access to more credentials options. + +{{% spring-common-props %}} + {{< /note >}} ## 4. Connect to the service diff --git a/docs/src/guides/spring/redis.md b/docs/src/guides/spring/redis.md index 9b7cef98ba..f581d0ec8d 100644 --- a/docs/src/guides/spring/redis.md +++ b/docs/src/guides/spring/redis.md @@ -15,7 +15,8 @@ This guide only covers the *addition* of a service configuration to an existing ## 1. Add the Redis service -In your [service configuration](../../configuration/services/_index.md), include Persistent Redis with a [valid supported version](/configuration/services/redis.md#persistent-redis): +In your [service configuration](../../configuration/services/_index.md), +include persistent Redis with a [valid supported version](../../configuration/services/redis.md#persistent-redis): {{< readFile file="src/registry/images/examples/full/redis-persistent.services.yaml" highlight="yaml" location=".platform/services.yaml" >}} @@ -36,7 +37,9 @@ export JAVA_OPTS="-Xmx$(jq .info.limits.memory /run/config.json)m -XX:+ExitOnOut ``` {{< note title="Tip" >}} -Please check the [Spring Common Application properties](https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties) and the [Binding from Environment Variables](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-relaxed-binding-from-environment-variables) to have access to more credentials options. + +{{% spring-common-props %}} + {{< /note >}} ## 4. Connect to Redis diff --git a/docs/src/guides/typo3/deploy/configure.md b/docs/src/guides/typo3/deploy/configure.md index 9ac622eb09..d4bd07f798 100644 --- a/docs/src/guides/typo3/deploy/configure.md +++ b/docs/src/guides/typo3/deploy/configure.md @@ -20,7 +20,7 @@ description: | We recommend the latest [MariaDB](/configuration/services/mysql/_index.md) version for TYPO3, although you can also use Oracle MySQL or [PostgreSQL](/configuration/services/postgresql.md) if you prefer. We also strongly recommend using [Redis](/configuration/services/redis.md) for TYPO3 caching. -Our TYPO3 template comes [pre-configured to use Redis](https://github.com/platformsh-templates/typo3#customizations) for caching. +Our TYPO3 template comes [pre-configured to use Redis](https://github.com/platformsh-templates/typo3#user-content-customizations) for caching. {{% /guides/config-service %}} @@ -32,7 +32,7 @@ Our TYPO3 template comes [pre-configured to use Redis](https://github.com/platfo Note that the command `php vendor/bin/typo3cms install:generatepackagestate` is run during the build hook. The command ensures all installed extensions are enabled -and that they can be omitted if you commit your own [`PackageStates.php` file](https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/ExtensionManagement/Index.html#package-manager). +and that they can be omitted if you commit your own [`PackageStates.php` file](https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/ExtensionManagement/Index.html#installing-extensions). {{< /guides/config-app >}} diff --git a/docs/src/guides/wordpress/composer/migrate.md b/docs/src/guides/wordpress/composer/migrate.md index bbfe685089..d454e48954 100644 --- a/docs/src/guides/wordpress/composer/migrate.md +++ b/docs/src/guides/wordpress/composer/migrate.md @@ -92,7 +92,11 @@ Like WordPress core itself, themes and plugins can be installed as dependencies 1. **Configure the WPPackagist repository** - When you download dependencies using Composer, you will by default retrieve them through [Packagist](https://packagist.org), which is the primary Composer repository for public PHP packages. In the previous section, you installed WordPress core through this repository. Some themes and plugins for WordPress are also on Packagist, but most of them are accessible through a similar service specific to Wordpress called [WPackagist](https://wpackagist). + When you download dependencies using Composer, you by default retrieve them through [Packagist](https://packagist.org), + which is the primary Composer repository for public PHP packages. + In the previous section, you installed WordPress core through this repository. + Some themes and plugins for WordPress are also on Packagist, + but most of them are accessible through a similar service specific to WordPress called [WPackagist](https://wpackagist.org). In order to pull from this repository, you'll need to add WPackagist to your `composer.json` file so that Composer knows to look for packages there. Run the command: @@ -137,7 +141,7 @@ Like WordPress core itself, themes and plugins can be installed as dependencies 3. **Install themes and modules** - Search for your existing themes and plugins [WPackagist](https://wpackagist) and install them through Composer with `composer require`: + Search for your existing themes and plugins [WPackagist](https://wpackagist.org) and install them through Composer with `composer require`: ```bash # Plugin diff --git a/docs/src/integrations/observability/new-relic/php.md b/docs/src/integrations/observability/new-relic/php.md index d70e034aba..5d22c1e110 100644 --- a/docs/src/integrations/observability/new-relic/php.md +++ b/docs/src/integrations/observability/new-relic/php.md @@ -3,7 +3,7 @@ title: "PHP" --- New Relic isn't yet available on PHP 8.1. -To use New Relic with PHP, specify `type: 'php:8.0'` or lower in your [app configuration](../../../configuration/app/app-reference.md#type). +To use New Relic with PHP, specify `type: 'php:8.0'` or lower in your [app configuration](../../../configuration/app/app-reference.md#types). ## Get your license key diff --git a/docs/src/integrations/source/bitbucket.md b/docs/src/integrations/source/bitbucket.md index 70e9f3f7f1..46a490a57c 100644 --- a/docs/src/integrations/source/bitbucket.md +++ b/docs/src/integrations/source/bitbucket.md @@ -8,8 +8,8 @@ description: | It's possible to integrate a Platform.sh project with either the freely available Bitbucket Cloud product or with the self-hosted [Bitbucket Server](https://confluence.atlassian.com/bitbucketserver/). -In both cases, you need to [install the Platform.sh CLI](/development/cli/_index.md#installation), if you haven't already done so, -to set up the integration. +In both cases, you need to [install the Platform.sh CLI](../../development/cli/_index.md), +if you haven't already done so, to set up the integration. {{< note >}} @@ -127,14 +127,4 @@ even if specifically set to true. {{< /note >}} -## Clones and commits - -You can clone your codebase by running `platform get ` -or in your project in the console by going to Code > Git and running the `git clone` command. - -When you perform this action, you are actually cloning from your remote integrated repository, -so long as you have the [appropriate access to do so](/administration/users.md#user-access-and-integrations). - -Your Bitbucket repository is considered by Platform.sh to be the "source of truth" for the project. -The project is only a mirror of that repository and all commits should be pushed only to Bitbucket. - +{{% clone-commit name="Bitbucket" %}} diff --git a/docs/src/integrations/source/github.md b/docs/src/integrations/source/github.md index 6aec395478..1c7db4e648 100644 --- a/docs/src/integrations/source/github.md +++ b/docs/src/integrations/source/github.md @@ -115,13 +115,4 @@ they will be activated automatically with a copy of the parent's data. However, environments based on (non-pull-request) **branches** cannot have parents; they will inherit directly from the default branch and start inactive by default. -## Clones and commits - -You can clone your codebase by running `platform get ` -or in your project in the console by going to Code > Git and running the `git clone` command. - -When you perform this action, you are actually cloning from your remote integrated repository, -so long as you have the [appropriate access to do so](/administration/users.md#user-access-and-integrations). - -Your GitHub repository is considered by Platform.sh to be the "source of truth" for the project. -The project is only a mirror of that repository, and all commits should be pushed only to GitHub. +{{% clone-commit name="GitHub" %}} diff --git a/docs/src/integrations/source/gitlab.md b/docs/src/integrations/source/gitlab.md index b6be2d1969..e9225ee1c7 100644 --- a/docs/src/integrations/source/gitlab.md +++ b/docs/src/integrations/source/gitlab.md @@ -131,13 +131,4 @@ they're activated automatically with a copy of the parent's data However, environments based on (non-merge-request) **branches** can't have parents; they inherit directly from your default branch and start inactive by default. -## Clones and commits - -You can clone your codebase by running `platform get ` -or in your project in the console by going to Code > Git and running the `git clone` command. - -When you perform this action, you are actually cloning from your remote integrated repository, -so long as you have the [appropriate access to do so](/administration/users.md#user-access-and-integrations). - -Your GitLab repository is considered by Platform.sh to be the "source of truth" for the project. -The project is only a mirror of that repository, and all commits should be pushed only to GitLab. +{{% clone-commit name="GitLab" %}} diff --git a/docs/src/integrations/source/troubleshoot.md b/docs/src/integrations/source/troubleshoot.md index 06bf0cc3a6..55ddf6609c 100644 --- a/docs/src/integrations/source/troubleshoot.md +++ b/docs/src/integrations/source/troubleshoot.md @@ -4,6 +4,8 @@ sidebarTitle: Troubleshoot description: Learn how to troubleshoot problems related to access rights when cloning repositories. --- +{{% troubleshoot %}} + ## Unable to clone a repository If you [add a user](/administration/users.md#add-a-user-to-a-project) to a project on Platform.sh, diff --git a/docs/src/languages/dotnet.md b/docs/src/languages/dotnet.md index baf7df394e..68c820bf30 100644 --- a/docs/src/languages/dotnet.md +++ b/docs/src/languages/dotnet.md @@ -18,7 +18,8 @@ description: | ## Building the application -For simple applications, using the [`dotnet publish`](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish?tabs=netcore21) default [framework-dependent deployment](https://docs.microsoft.com/en-us/dotnet/core/deploying/#framework-dependent-deployments-fdd) method is sufficient for building applications in .NET containers: +To build basic applications in .NET containers, it's enough to use the [`dotnet publish` command](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish) +with the default [framework-dependent deployment](https://docs.microsoft.com/en-us/dotnet/core/deploying/#publish-framework-dependent): ```yaml hooks: @@ -43,7 +44,9 @@ Incoming requests are passed to the application using either a TCP (default) or There will be an Nginx server sitting in front of your application. Serving static content via Nginx is recommended, as this allows easy control of headers (including cache headers) and also has marginal performance benefits. -Note that HTTPS is also terminated at the Ngnix proxy, so the `app.UseHttpsRedirection();` line in `Startup.cs` should be removed. To force HTTPS-only, please refer to the [routes documentation](/configuration/routes/https.md#https). +Note that HTTPS is also terminated at the Nginx proxy, +so the `app.UseHttpsRedirection();` line in `Startup.cs` should be removed. +To force HTTPS-only, refer to the [routes documentation](../configuration/routes/https.md#using-https). The following example configures an environment to serve the static content folders commonly found in [ASP.NET MVC](https://dotnet.microsoft.com/apps/aspnet/mvc) templates using Nginx, while routing other traffic to the .NET application. diff --git a/docs/src/languages/java/frameworks.md b/docs/src/languages/java/frameworks.md index c098806909..138cb083aa 100644 --- a/docs/src/languages/java/frameworks.md +++ b/docs/src/languages/java/frameworks.md @@ -89,7 +89,10 @@ The [Spring Framework](https://spring.io/projects/spring-framework) provides a c Apache Tomcat is an open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and WebSocket technologies. {{< note >}} -By default, Spring Boot provides an embedded Apache Tomcat build. Therefore, if you want to use Tomcat with Spring, check the [Spring section](#Spring). + +By default, Spring Boot provides an embedded Apache Tomcat build. +Therefore, if you want to use Tomcat with Spring, check the [Spring section](#spring). + {{< /note >}} ### Templates diff --git a/docs/src/languages/java/tuning.md b/docs/src/languages/java/tuning.md index 6e8a6ef3a2..b2e1bc00ba 100644 --- a/docs/src/languages/java/tuning.md +++ b/docs/src/languages/java/tuning.md @@ -84,7 +84,5 @@ java -jar -Xmx$(jq .info.limits.memory /run/config.json)m -XX:+UseG1GC -XX:+UseS ## References -* [Java Memory Commands](https://community.platform.sh/t/java-memory-commands/481) * [How to Migrate my Java application to Platform.sh](https://community.platform.sh/t/how-to-migrate-my-java-application-to-platfrom-sh/529) -* [Garbage Collector Log](https://community.platform.sh/t/garbage-collector-log/482) * [Introduction to Garbage Collection Tuning](https://docs.oracle.com/en/java/javase/14/gctuning/introduction-garbage-collection-tuning.html#GUID-326EB4CF-8C8C-4267-8355-21AB04F0D304) diff --git a/docs/src/languages/php/frameworks.md b/docs/src/languages/php/frameworks.md index acd6a8984d..7170bbf3bc 100644 --- a/docs/src/languages/php/frameworks.md +++ b/docs/src/languages/php/frameworks.md @@ -8,7 +8,10 @@ so you can handle dependencies and builds for PHP frameworks by committing `comp ## Drupal -[Drupal](https://www.drupal.org/) is an open-source content management framework written in PHP. Since Composer comes pre-installed on Platform.sh, Drupal can be installed and updated completely using Composer. The default [build flavor](/overview/build-deploy.md#building-the-application) for PHP application runs `composer install` during build, handling all of your dependencies automatically. +[Drupal](https://www.drupal.org/) is an open-source content management framework written in PHP. +Since Composer comes pre-installed on Platform.sh, Drupal can be installed and updated completely using Composer. +The default [build flavor](../../configuration/app/app-reference.md#build) for PHP application +runs `composer install` during build, handling all of your dependencies automatically. * [Drupal 8/9 Guide](../../guides/drupal9/_index.md) @@ -16,7 +19,7 @@ so you can handle dependencies and builds for PHP frameworks by committing `comp Drupal FAQs, how-to guides and other tutorials right on [Platform.sh Community](https://community.platform.sh/). -* [Drupal on Platform.sh Community](https://community.platform.sh/search?q=drupal&expanded=true) +* [Drupal on Platform.sh Community](https://community.platform.sh/search?q=drupal) ### Templates @@ -71,7 +74,7 @@ Template projects (repositories in the [platformsh-templates](https://github.com All your WordPress FAQs, plus how-to guides and tutorials right on [Platform.sh Community](https://community.platform.sh/). -* [WordPress on Platform.sh Community](https://community.platform.sh/search?expanded=true&q=wordpress) +* [WordPress on Platform.sh Community](https://community.platform.sh/search?q=wordpress) ### Templates diff --git a/docs/src/other/changelog.md b/docs/src/other/changelog.md index 02f8763048..607d12adee 100644 --- a/docs/src/other/changelog.md +++ b/docs/src/other/changelog.md @@ -47,7 +47,7 @@ description: | ## 2020 * **December 2020** - * `us-4` region: We have [added](/development/public-ips.md#west-4-us-4platformsh-data-location-guarantee) another US region, `us-4`. + * `us-4` region: We have [added](../development/public-ips.md) another US region, `us-4`. --- * **September 2020** * Go 1.15: We now support [Go 1.15](/languages/go.md). @@ -57,7 +57,7 @@ description: | --- * **April 2020** * We now offer [Xdebug on PHP](/languages/php/xdebug.md) containers. - * Custom [activity scripts](/integrations/activity/_index.md#activity-scripts) are now available, in alpha. + * Custom [activity scripts](../integrations/activity/_index.md) are now available, in alpha. --- * **March 2020** * Go 1.14: We now support [Go 1.14](/languages/go.md). @@ -310,7 +310,7 @@ description: | * **April 2016** * White label capabilities (Magento Enterprise Cloud Edition): Support for Platform.sh white label offering. - First launch at [Magento Imagine 2016](http://imagine.magento.com/) in Las Vegas of [Magento Enterprise Cloud Edition](https://magento.com/products/enterprise-cloud-edition). + First launch at Magento Imagine 2016 in Las Vegas of Magento Enterprise Cloud Edition. --- * **March 2016** diff --git a/docs/src/security/pci.md b/docs/src/security/pci.md index 37363fed3a..2bb458899b 100644 --- a/docs/src/security/pci.md +++ b/docs/src/security/pci.md @@ -6,7 +6,7 @@ description: | Platform.sh is PCI DSS certified. --- -Refer to our [Compliance Guidance](https://docs.platform.sh/security/compliance-guidance.html) +Refer to our [Compliance Guidance](./compliance-guidance.md) for an overview of our compliance program, including security & compensating controls, and a general allocation of responsibility. ## Overview @@ -28,7 +28,7 @@ Please use a third-party processor. ## Responsibility Customers who want to run PCI workloads on Platform.sh must agree to and implement -the measures contained in the [Platform.sh PCI Responsibility Matrix](https://docs.google.com/spreadsheets/d/1zLkHpdUoX1VNC3wTipl3g-Z4eHjou-57IrQxE8GH6oA/edit#gid=238986323) (Excel). +the measures contained in the [Platform.sh PCI Responsibility Matrix](https://docs.google.com/spreadsheets/d/1zLkHpdUoX1VNC3wTipl3g-Z4eHjou-57IrQxE8GH6oA/edit) (Excel). This document provides guidance on shared responsibilities to achieve PCI DSS compliance using PCI DSS 3.2 as a reference. While Platform.sh provides a secure and PCI compliant infrastructure, diff --git a/docs/src/tutorials/third-party.md b/docs/src/tutorials/third-party.md index ad4f3140cb..22f08daa8d 100644 --- a/docs/src/tutorials/third-party.md +++ b/docs/src/tutorials/third-party.md @@ -104,7 +104,6 @@ Framework | Credit ## Tools & development -* **MySQL disk space** monitor https://github.com/galister/platformsh_mysqlmon * Create [**deploy commands you can run from composer**](https://github.com/dnunez24/platformsh-deploy-php), using Symfony * A small tool from Hanoii https://github.com/hanoii/drocal * Script to **sync a Drupal site** from Production to Local https://github.com/pjcdawkins/platformsh-sync diff --git a/styles/Vocab/Platform/accept.txt b/styles/Vocab/Platform/accept.txt index 17bd6a6fc7..462dff71d1 100644 --- a/styles/Vocab/Platform/accept.txt +++ b/styles/Vocab/Platform/accept.txt @@ -41,6 +41,7 @@ Magento Mailchimp Memcache middleware +Muffet multicast [Mm]ultifactor multisite @@ -76,6 +77,7 @@ scp shard shortcode Stempel +Strapi Symfony transclusion unencrypted