diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index bc4ea7ea15..7ceff10c96 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -34,6 +34,16 @@ "GitHub.copilot", "GitHub.copilot-chat" ] + }, + "codespaces": { + "repositories": { + // allow Codespaces to pull from separate repo when user has access + "github/docs-early-access": { + "permissions": { + "contents": "write" + } + } + } } }, @@ -52,7 +62,7 @@ // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "node", - + "hostRequirements": { "memory": "8gb" } diff --git a/assets/images/help/actions/starter-workflow-go.png b/assets/images/help/actions/starter-workflow-go.png new file mode 100644 index 0000000000..6e3701f7f5 Binary files /dev/null and b/assets/images/help/actions/starter-workflow-go.png differ diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md index 55d3a9d497..a638d99ce1 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md @@ -52,7 +52,27 @@ You can also find a list of your recently visited repositories, teams, and proje ## Staying updated with activity from the community -{% ifversion for-you-feed %} +{% ifversion feed %} + +{% note %} + +**Note:** The new feed is currently in public beta and subject to change. + +{% endnote %} + +The feed is designed to help you discover relevant content from projects you follow, keep up with your friends and community members, and track recent activity in your communities. + +You can use the {% octicon "filter" aria-hidden="true" %} **Filter** dropdown in the upper right corner to filter the feed to show only the exact event types you'd like to see. For example, you'll see updates when someone you follow: + +- Stars a repository. +- Follows another user. +- Creates a public repository. +- Opens an issue or pull request with `help wanted` or `good first issue` label on a repository you're watching. +- Pushes commits to a repository you watch. +- Forks a public repository. +- Publishes a new release. + +{% else %} The main section of your dashboard has two activity feeds: - Following: Activity by people you follow and from repositories you watch. @@ -62,24 +82,16 @@ The main section of your dashboard has two activity feeds: This feed shows activity from repositories and users you have shown a direct interest in, by following a user or watching a repository. For example, you'll see updates when a user you follow: -{% else %} -In the "All activity" section of your news feed, you can view updates from repositories you watch and users you follow. - -You'll see updates in your news feed when a user you follow: -{% endif %} - - Stars a repository. -- Follows another user.{% ifversion fpt or ghes or ghec %} -- Creates a public repository.{% endif %} +- Follows another user. +- Creates a public repository. - Opens an issue or pull request with "help wanted" or "good first issue" label on a repository you're watching. -- Pushes commits to a repository you watch.{% ifversion fpt or ghes or ghec %} -- Forks a public repository.{% endif %} +- Pushes commits to a repository you watch. +- Forks a public repository. - Publishes a new release. For more information about following people and watching repositories, see "[AUTOTITLE](/get-started/exploring-projects-on-github/following-people)" and "[AUTOTITLE](/get-started/quickstart/be-social)." -{% ifversion for-you-feed %} - ### For you feed {% note %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md index 1d5bb0f9e3..26f541bf46 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md @@ -54,7 +54,8 @@ The repository owner has full control of the repository. In addition to the acti | Create security advisories | "[AUTOTITLE](/code-security/security-advisories/working-with-repository-security-advisories/about-repository-security-advisories)" | | Display a sponsor button | "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository)" |{% endif %} | Allow or disallow auto-merge for pull requests | "[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)" | -| Manage webhooks and deploy keys | "[AUTOTITLE](/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys)" | +| Manage deploy keys | "[AUTOTITLE](/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys)" | +| Manage webhooks | "[AUTOTITLE](/webhooks/about-webhooks)" | ## Collaborator access for a repository owned by a personal account diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md index 1df8889360..c8e22e02c2 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md @@ -74,6 +74,7 @@ Alternatively, if you want to use the HTTPS protocol for both accounts, you can ```shell copy echo "protocol=https`nhost=github.com" | git credential-manager erase ``` + - If the output is `wincred`, you're using the Windows Credential Manager. To clear the credentials, enter the following command. ```shell copy diff --git a/content/actions/automating-builds-and-tests/about-continuous-integration.md b/content/actions/automating-builds-and-tests/about-continuous-integration.md index baacbe5494..1d2189b869 100644 --- a/content/actions/automating-builds-and-tests/about-continuous-integration.md +++ b/content/actions/automating-builds-and-tests/about-continuous-integration.md @@ -51,6 +51,7 @@ For a definition of common terms, see "[AUTOTITLE](/actions/learn-github-actions Browse the complete list of CI starter workflow offered by {% data variables.product.company_short %} in the {% ifversion fpt or ghec %}[actions/starter-workflows](https://github.com/actions/starter-workflows/tree/main/ci) repository{% else %} `actions/starter-workflows` repository on {% data variables.location.product_location %}{% endif %}. {% ifversion fpt or ghec %} + ## Further reading - "[AUTOTITLE](/billing/managing-billing-for-github-actions)" diff --git a/content/actions/automating-builds-and-tests/building-and-testing-go.md b/content/actions/automating-builds-and-tests/building-and-testing-go.md index 3df9bdb168..b293dbf961 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-go.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-go.md @@ -29,35 +29,60 @@ You should already be familiar with YAML syntax and how it's used with {% data v We recommend that you have a basic understanding of the Go language. For more information, see [Getting started with Go](https://golang.org/doc/tutorial/getting-started). -## Using the Go starter workflow +## Using a Go starter workflow -{% data variables.product.prodname_dotcom %} provides a Go starter workflow that should work for most Go projects. This guide includes examples that you can use to customize the starter workflow. For more information, see the [Go starter workflow](https://github.com/actions/starter-workflows/blob/main/ci/go.yml). +{% data reusables.actions.starter-workflow-get-started %} -To get started quickly, add the starter workflow to the `.github/workflows` directory of your repository. +{% data variables.product.prodname_dotcom %} provides a Go starter workflow that should work for most Go projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -```yaml copy -name: Go package +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "go". +1. Filter the selection of workflows by clicking **Continuous integration**. +1. On the "Go - by {% data variables.product.prodname_actions %}" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -on: [push] + ![Screenshot of the "Choose a workflow" page. The "Configure" button on the "Go" workflow is highlighted with an orange outline.](/assets/images/help/actions/starter-workflow-go.png) -jobs: - build: +{%- ifversion ghes or ghae %} + If you don't find the "Go - by {% data variables.product.prodname_actions %}" starter workflow, copy the following workflow code to a new file called `go.yml` in the `.github/workflows` directory of your repository. - runs-on: ubuntu-latest - steps: - - uses: {% data reusables.actions.action-checkout %} + ```yaml copy + name: Go - - name: Set up Go - uses: {% data reusables.actions.action-setup-go %} - with: - go-version: '1.15' + on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] - - name: Build - run: go build -v ./... + jobs: + build: - - name: Test - run: go test -v ./... -``` + runs-on: self-hosted + steps: + - uses: {% data reusables.actions.action-checkout %} + + - name: Set up Go + uses: {% data reusables.actions.action-setup-go %} + with: + go-version: '1.20' + + - name: Build + run: go build -v ./... + + - name: Test + run: go test -v ./... + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the version of Go. +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `go.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} ## Specifying a Go version @@ -80,7 +105,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: [ '1.14', '1.15', '1.16.x' ] + go-version: [ '1.19', '1.20', '1.21.x' ] steps: - uses: {% data reusables.actions.action-checkout %} @@ -95,14 +120,14 @@ jobs: ### Using a specific Go version -You can configure your job to use a specific version of Go, such as `1.16.2`. Alternatively, you can use semantic version syntax to get the latest minor release. This example uses the latest patch release of Go 1.16: +You can configure your job to use a specific version of Go, such as `1.20.8`. Alternatively, you can use semantic version syntax to get the latest minor release. This example uses the latest patch release of Go 1.21: ```yaml copy - - name: Setup Go 1.16.x + - name: Setup Go 1.21.x uses: {% data reusables.actions.action-setup-go %} with: # Semantic version range syntax or exact version of Go - go-version: '1.16.x' + go-version: '1.21.x' ``` ## Installing dependencies @@ -115,7 +140,7 @@ You can use `go get` to install dependencies: - name: Setup Go uses: {% data reusables.actions.action-setup-go %} with: - go-version: '1.16.x' + go-version: '1.21.x' - name: Install dependencies run: | go get . @@ -150,7 +175,7 @@ When caching is enabled, the `setup-go` action searches for the dependency file, - name: Setup Go uses: {% data reusables.actions.action-setup-go %} with: - go-version: '1.16.x' + go-version: '1.21.x' cache: true ``` @@ -187,7 +212,7 @@ jobs: - name: Setup Go uses: {% data reusables.actions.action-setup-go %} with: - go-version: '1.16.x' + go-version: '1.21.x' - name: Install dependencies run: go get . - name: Build @@ -213,7 +238,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: [ '1.14', '1.15', '1.16.x' ] + go-version: [ '1.19', '1.20', '1.21.x' ] steps: - uses: {% data reusables.actions.action-checkout %} diff --git a/content/actions/automating-builds-and-tests/building-and-testing-java-with-ant.md b/content/actions/automating-builds-and-tests/building-and-testing-java-with-ant.md index 2d30b759b6..ffdc9ece7f 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-java-with-ant.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-java-with-ant.md @@ -15,7 +15,6 @@ topics: - Java - Ant shortTitle: Build & test Java & Ant -layout: inline --- {% data reusables.actions.enterprise-github-hosted-runners %} @@ -40,39 +39,54 @@ We recommend that you have a basic understanding of Java and the Ant framework. {% data reusables.actions.enterprise-setup-prereq %} -## Using the Ant starter workflow +## Using an Ant starter workflow -{% data variables.product.prodname_dotcom %} provides an Ant starter workflow that will work for most Ant-based Java projects. For more information, see the [Ant starter workflow](https://github.com/actions/starter-workflows/blob/main/ci/ant.yml). {% data reusables.actions.workflows.starter-workflows %} +{% data reusables.actions.starter-workflow-get-started %} -To get started quickly, you can choose the preconfigured Ant starter workflow when you create a new workflow. For more information, see the "[AUTOTITLE](/actions/quickstart)." +{% data variables.product.prodname_dotcom %} provides a starter workflow for Ant that should work for most Java with Ant projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -You can also add this workflow manually by creating a new file in the `.github/workflows` directory of your repository. +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Java with Ant". +1. On the "Java with Ant" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -```yaml annotate copy -# {% data reusables.actions.workflows.workflow-syntax-name %} -name: Java CI +{%- ifversion ghes or ghae %} -# -on: [push] -# -jobs: - build: - {% data reusables.actions.example-github-runner-comment %} - runs-on: ubuntu-latest -# - steps: - {% data reusables.actions.workflows.workflow-checkout-step-explainer %} - - uses: {% data reusables.actions.action-checkout %} - {% data reusables.actions.workflows.setup-java-step-explainer %} - - name: Set up JDK 17 - uses: {% data reusables.actions.action-setup-java %} - with: - java-version: '17' - distribution: 'temurin' - # This step runs the default target in your `build.xml` file in non-interactive mode. - - name: Build with Ant - run: ant -noinput -buildfile build.xml -``` + If you don't find the "Java with Ant" starter workflow, copy the following workflow code to a new file called `ant.yml` in the `.github/workflows` directory of your repository. + + ```yaml copy + name: Java CI + + on: + push: + branches: [ $default-branch ] + pull_request: + branches: [ $default-branch ] + + jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: {% data reusables.actions.action-checkout %} + - name: Set up JDK 11 + uses: {% data reusables.actions.action-setup-java %} + with: + java-version: '11' + distribution: 'temurin' + - name: Build with Ant + run: ant -noinput -buildfile build.xml + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the Java version. +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `ant.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} {% data reusables.actions.java-jvm-architecture %} diff --git a/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md b/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md index 901eca1e6c..b3387b5e8a 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md @@ -15,7 +15,6 @@ topics: - Java - Gradle shortTitle: Build & test Java & Gradle -layout: inline --- {% data reusables.actions.enterprise-github-hosted-runners %} @@ -40,54 +39,62 @@ We recommend that you have a basic understanding of Java and the Gradle framewor {% data reusables.actions.enterprise-setup-prereq %} -## Using the Gradle starter workflow +## Using a Gradle starter workflow -{% data variables.product.prodname_dotcom %} provides a Gradle starter workflow that will work for most Gradle-based Java projects. For more information, see the [Gradle starter workflow](https://github.com/actions/starter-workflows/blob/main/ci/gradle.yml). {% data reusables.actions.workflows.starter-workflows %} +{% data reusables.actions.starter-workflow-get-started %} -To get started quickly, you can choose the preconfigured Gradle starter workflow when you create a new workflow. For more information, see the "[AUTOTITLE](/actions/quickstart)." +{% data variables.product.prodname_dotcom %} provides a starter workflow for Gradle that should work for most Java with Gradle projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -You can also add this workflow manually by creating a new file in the `.github/workflows` directory of your repository. +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Java with Gradle". +1. On the "Java with Gradle" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{% note %} +{%- ifversion ghes or ghae %} -**Notes:** + If you don't find the "Java with Gradle" starter workflow, copy the following workflow code to a new file called `gradle.yml` in the `.github/workflows` directory of your repository. -- {% data reusables.actions.actions-not-certified-by-github %} -- {% data reusables.actions.actions-use-sha-pinning %} + ```yaml copy + name: Java CI with Gradle -{% endnote %} + on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] -```yaml annotate copy -# {% data reusables.actions.workflows.workflow-syntax-name %} -name: Java CI + permissions: + contents: read -# -on: [push] -# -jobs: - build: + jobs: + build: + runs-on: ubuntu-latest - {% data reusables.actions.example-github-runner-comment %} - runs-on: ubuntu-latest -# - steps: - {% data reusables.actions.workflows.workflow-checkout-step-explainer %} - - uses: {% data reusables.actions.action-checkout %} - {% data reusables.actions.workflows.setup-java-step-explainer %} - - name: Set up JDK 17 - uses: {% data reusables.actions.action-setup-java %} - with: - java-version: '17' - distribution: 'temurin' - # The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree. - - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 - # The "Build with Gradle" step does a build using the `gradle/gradle-build-action` action provided by the Gradle organization on {% data variables.product.prodname_dotcom %}. The action takes care of invoking Gradle, collecting results, and caching state between jobs. For more information see [`gradle/gradle-build-action`](https://github.com/gradle/gradle-build-action). - - name: Build with Gradle - uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 - with: - arguments: build -``` + steps: + - uses: {% data reusables.actions.action-checkout %} + - name: Set up JDK 11 + uses: {% data reusables.actions.action-setup-java %} + with: + java-version: '11' + distribution: 'temurin' + - name: Build with Gradle + uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0 + with: + arguments: build + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the Java version. + + {% indented_data_reference reusables.actions.third-party-actions spaces=3 %} + +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `gradle.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} {% data reusables.actions.java-jvm-architecture %} diff --git a/content/actions/automating-builds-and-tests/building-and-testing-java-with-maven.md b/content/actions/automating-builds-and-tests/building-and-testing-java-with-maven.md index afcbc75108..51648c6c7a 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-java-with-maven.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-java-with-maven.md @@ -15,7 +15,6 @@ topics: - Java - Maven shortTitle: Build & test Java with Maven -layout: inline --- {% data reusables.actions.enterprise-github-hosted-runners %} @@ -40,42 +39,59 @@ We recommend that you have a basic understanding of Java and the Maven framework {% data reusables.actions.enterprise-setup-prereq %} -## Using the Maven starter workflow +## Using a Maven starter workflow -{% data variables.product.prodname_dotcom %} provides a Maven starter workflow that will work for most Maven-based Java projects. For more information, see the [Maven starter workflow](https://github.com/actions/starter-workflows/blob/main/ci/maven.yml). +{% data reusables.actions.starter-workflow-get-started %} -To get started quickly, you can choose the preconfigured Maven starter workflow when you create a new workflow. For more information, see the "[AUTOTITLE](/actions/quickstart)." +{% data variables.product.prodname_dotcom %} provides a starter workflow for Maven that should work for most Java with Maven projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -You can also add this workflow manually by creating a new file in the `.github/workflows` directory of your repository. +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Java with Maven". +1. On the "Java with Maven" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -```yaml annotate copy -# {% data reusables.actions.workflows.workflow-syntax-name %} -name: Java CI +{%- ifversion ghes or ghae %} -# -on: [push] -# -jobs: - build: + If you don't find the "Java with Maven" starter workflow, copy the following workflow code to a new file called `maven.yml` in the `.github/workflows` directory of your repository. - {% data reusables.actions.example-github-runner-comment %} - runs-on: ubuntu-latest -# - steps: - {% data reusables.actions.workflows.workflow-checkout-step-explainer %} - - uses: {% data reusables.actions.action-checkout %} - {% data reusables.actions.workflows.setup-java-step-explainer %} - - name: Set up JDK 17 - uses: {% data reusables.actions.action-setup-java %} - with: - java-version: '17' - distribution: 'temurin' - # The "Build with Maven" step runs the Maven `package` target in non-interactive mode to ensure that your code builds, tests pass, and a package can be created. - - name: Build with Maven - run: mvn --batch-mode --update-snapshots package -``` + ```yaml copy + name: Java CI with Maven -{% data reusables.actions.workflows.starter-workflows %} + on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + + jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: {% data reusables.actions.action-checkout %} + - name: Set up JDK 17 + uses: {% data reusables.actions.action-setup-java %} + with: + java-version: '17' + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn -B package --file pom.xml + + # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive + - name: Update dependency graph + uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6 + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the Java version. +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `maven.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} {% data reusables.actions.java-jvm-architecture %} diff --git a/content/actions/automating-builds-and-tests/building-and-testing-net.md b/content/actions/automating-builds-and-tests/building-and-testing-net.md index 5ba8c4ab28..1e7da96927 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-net.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-net.md @@ -27,38 +27,57 @@ You should already be familiar with YAML syntax and how it's used with {% data v We recommend that you have a basic understanding of the .NET Core SDK. For more information, see [Getting started with .NET](https://dotnet.microsoft.com/learn). -## Using the .NET starter workflow +## Using a .NET starter workflow -{% data variables.product.prodname_dotcom %} provides a .NET starter workflow that should work for most .NET projects, and this guide includes examples that show you how to customize this starter workflow. For more information, see the [.NET starter workflow](https://github.com/actions/setup-dotnet). +{% data reusables.actions.starter-workflow-get-started %} -To get started quickly, add the starter workflow to the `.github/workflows` directory of your repository. +{% data variables.product.prodname_dotcom %} provides a starter workflow for .NET that should work for most .NET projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -```yaml -name: dotnet package +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "dotnet". +1. On the ".NET" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -on: [push] +{%- ifversion ghes or ghae %} -jobs: - build: + If you don't find the ".NET" starter workflow, copy the following workflow code to a new file called `dotnet.yml` in the `.github/workflows` directory of your repository. - runs-on: ubuntu-latest - strategy: - matrix: - dotnet-version: [ '3.1.x', '6.0.x' ] + ```yaml copy + name: .NET - steps: - - uses: {% data reusables.actions.action-checkout %} - - name: Setup .NET Core SDK {% raw %}${{ matrix.dotnet-version }}{% endraw %} - uses: {% data reusables.actions.action-setup-dotnet %} - with: - dotnet-version: {% raw %}${{ matrix.dotnet-version }}{% endraw %} - - name: Install dependencies - run: dotnet restore - - name: Build - run: dotnet build --configuration Release --no-restore - - name: Test - run: dotnet test --no-restore --verbosity normal -``` + on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + + jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: {% data reusables.actions.action-checkout %} + - name: Setup .NET + uses: {% data reusables.actions.action-setup-dotnet %} + with: + dotnet-version: 6.0.x + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build --no-restore + - name: Test + run: dotnet test --no-build --verbosity normal + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the .NET version. +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `dotnet.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} ## Specifying a .NET version diff --git a/content/actions/automating-builds-and-tests/building-and-testing-nodejs.md b/content/actions/automating-builds-and-tests/building-and-testing-nodejs.md index ce54e03982..a474a1d7c6 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-nodejs.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-nodejs.md @@ -16,7 +16,6 @@ topics: - Node - JavaScript shortTitle: Build & test Node.js -layout: inline --- {% data reusables.actions.enterprise-github-hosted-runners %} @@ -34,52 +33,61 @@ We recommend that you have a basic understanding of Node.js, YAML, workflow conf {% data reusables.actions.enterprise-setup-prereq %} -## Using the Node.js starter workflow +## Using a Node.js starter workflow -{% data variables.product.prodname_dotcom %} provides a Node.js starter workflow that will work for most Node.js projects. This guide includes npm and Yarn examples that you can use to customize the starter workflow. For more information, see the [Node.js starter workflow](https://github.com/actions/starter-workflows/blob/main/ci/node.js.yml). +{% data reusables.actions.starter-workflow-get-started %} -{% data reusables.actions.workflows.starter-workflows %} +{% data variables.product.prodname_dotcom %} provides a starter workflow for Node.js that should work for most Node.js projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -To get started quickly, add the starter workflow to the `.github/workflows` directory of your repository. +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Node.js". +1. Filter the selection of workflows by clicking **Continuous integration**. +1. On the "Node.js" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -```yaml annotate copy -# {% data reusables.actions.workflows.workflow-syntax-name %} -name: Node.js CI +{%- ifversion ghes or ghae %} -# This example workflow assumes that the default branch for your repository is `main`. If the default branch has a different name, edit this example and add your repository's default branch. -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] + If you don't find the "Node.js" starter workflow, copy the following workflow code to a new file called `node.js.yml` in the `.github/workflows` directory of your repository. -# -jobs: - build: + ```yaml copy + name: Node.js CI - {% data reusables.actions.example-github-runner-comment %} - runs-on: ubuntu-latest + on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] - # This job uses a matrix strategy to run the job four times, once for each specified Node version. For more information, see "[AUTOTITLE](/actions/using-jobs/using-a-matrix-for-your-jobs)." - strategy: - matrix: - node-version: [14.x, 16.x, 18.x, 20.x] -# - steps: - {% data reusables.actions.workflows.workflow-checkout-step-explainer %} - - uses: {% data reusables.actions.action-checkout %} - # This step uses the `actions/setup-node` action to set up Node.js for each version indicated by the `matrix.node-version` key above. - - name: Use Node.js {% raw %}${{ matrix.node-version }}{% endraw %} - uses: {% data reusables.actions.action-setup-node %} - with: - node-version: {% raw %}${{ matrix.node-version }}{% endraw %} - # This step runs `npm ci` to install any dependencies listed in your `package.json` file. - - run: npm ci - # This step runs the `build` script if there is one specified under the `scripts` key in your `package.json` file. - - run: npm run build --if-present - # This step runs the `test` script that is specified under the `scripts` key in your `package.json` file. - - run: npm test -``` + jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [14.x, 16.x, 18.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: {% data reusables.actions.action-checkout %} + - name: Use Node.js {% raw %}${{ matrix.node-version }}{% endraw %} + uses: {% data reusables.actions.action-setup-node %} + with: + node-version: {% raw %}${{ matrix.node-version }}{% endraw %} + cache: 'npm' + - run: npm ci + - run: npm run build --if-present + - run: npm test + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the Node versions you want to use. +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `node.js.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} ## Specifying the Node.js version @@ -87,14 +95,14 @@ The easiest way to specify a Node.js version is by using the `setup-node` action The `setup-node` action takes a Node.js version as an input and configures that version on the runner. The `setup-node` action finds a specific version of Node.js from the tools cache on each runner and adds the necessary binaries to `PATH`, which persists for the rest of the job. Using the `setup-node` action is the recommended way of using Node.js with {% data variables.product.prodname_actions %} because it ensures consistent behavior across different runners and different versions of Node.js. If you are using a self-hosted runner, you must install Node.js and add it to `PATH`. -The starter workflow includes a matrix strategy that builds and tests your code with four Node.js versions: 14.x, 16.x, 18.x, and 20.x. The 'x' is a wildcard character that matches the latest minor and patch release available for a version. Each version of Node.js specified in the `node-version` array creates a job that runs the same steps. +The starter workflow includes a matrix strategy that builds and tests your code with the Node.js versions listed in `node-version`. The 'x' in the version number is a wildcard character that matches the latest minor and patch release available for a version. Each version of Node.js specified in the `node-version` array creates a job that runs the same steps. Each job can access the value defined in the matrix `node-version` array using the `matrix` context. The `setup-node` action uses the context as the `node-version` input. The `setup-node` action configures each job with a different Node.js version before building and testing code. For more information about matrix strategies and contexts, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix)" and "[AUTOTITLE](/actions/learn-github-actions/contexts)." ```yaml copy strategy: matrix: - node-version: [14.x, 16.x, 18.x, 20.x] + node-version: [14.x, 16.x, 18.x] steps: - uses: {% data reusables.actions.action-checkout %} @@ -129,7 +137,7 @@ jobs: - name: Use Node.js uses: {% data reusables.actions.action-setup-node %} with: - node-version: '18.x' + node-version: '20.x' - run: npm ci - run: npm run build --if-present - run: npm test @@ -156,7 +164,7 @@ steps: - name: Use Node.js uses: {% data reusables.actions.action-setup-node %} with: - node-version: '18.x' + node-version: '20.x' - name: Install dependencies run: npm ci ``` @@ -169,7 +177,7 @@ steps: - name: Use Node.js uses: {% data reusables.actions.action-setup-node %} with: - node-version: '18.x' + node-version: '20.x' - name: Install dependencies run: npm install ``` @@ -184,7 +192,7 @@ steps: - name: Use Node.js uses: {% data reusables.actions.action-setup-node %} with: - node-version: '18.x' + node-version: '20.x' - name: Install dependencies run: yarn --frozen-lockfile ``` @@ -197,7 +205,7 @@ steps: - name: Use Node.js uses: {% data reusables.actions.action-setup-node %} with: - node-version: '18.x' + node-version: '20.x' - name: Install dependencies run: yarn ``` @@ -219,7 +227,7 @@ steps: uses: {% data reusables.actions.action-setup-node %} with: always-auth: true - node-version: '18.x' + node-version: '20.x' registry-url: https://registry.npmjs.org scope: '@octocat' - name: Install dependencies @@ -249,7 +257,7 @@ steps: - uses: {% data reusables.actions.action-checkout %} - uses: {% data reusables.actions.action-setup-node %} with: - node-version: '14' + node-version: '20' cache: 'npm' - run: npm install - run: npm test @@ -262,7 +270,7 @@ steps: - uses: {% data reusables.actions.action-checkout %} - uses: {% data reusables.actions.action-setup-node %} with: - node-version: '14' + node-version: '20' cache: 'yarn' - run: yarn - run: yarn test @@ -282,7 +290,7 @@ steps: version: 6.10.0 - uses: {% data reusables.actions.action-setup-node %} with: - node-version: '14' + node-version: '20' cache: 'pnpm' - run: pnpm install - run: pnpm test @@ -302,7 +310,7 @@ steps: - name: Use Node.js uses: {% data reusables.actions.action-setup-node %} with: - node-version: '18.x' + node-version: '20.x' - run: npm install - run: npm run build --if-present - run: npm test diff --git a/content/actions/automating-builds-and-tests/building-and-testing-python.md b/content/actions/automating-builds-and-tests/building-and-testing-python.md index 0113e28b92..774356addc 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-python.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-python.md @@ -39,46 +39,68 @@ We recommend that you have a basic understanding of Python, PyPy, and pip. For m {% data reusables.actions.enterprise-setup-prereq %} -## Using the Python starter workflow +## Using a Python starter workflow -{% data variables.product.prodname_dotcom %} provides a Python starter workflow that should work for most Python projects. This guide includes examples that you can use to customize the starter workflow. For more information, see the [Python starter workflow](https://github.com/actions/starter-workflows/blob/main/ci/python-package.yml). +{% data reusables.actions.starter-workflow-get-started %} -To get started quickly, add the starter workflow to the `.github/workflows` directory of your repository. +{% data variables.product.prodname_dotcom %} provides a starter workflow for Python that should work for most Python projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -```yaml copy -name: Python package +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Python application". +1. On the "Python application" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -on: [push] +{%- ifversion ghes or ghae %} -jobs: - build: + If you don't find the "Python application" starter workflow, copy the following workflow code to a new file called `python-app.yml` in the `.github/workflows` directory of your repository. - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] + ```yaml copy + name: Python application - steps: - - uses: {% data reusables.actions.action-checkout %} - - name: Set up Python {% raw %}${{ matrix.python-version }}{% endraw %} - uses: {% data reusables.actions.action-setup-python %} - with: - python-version: {% raw %}${{ matrix.python-version }}{% endraw %} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install ruff pytest - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - name: Lint with ruff - run: | - # stop the build if there are Python syntax errors or undefined names - ruff --format=github --select=E9,F63,F7,F82 --target-version=py37 . - # default set of ruff rules with GitHub Annotations - ruff --format=github --target-version=py37 . - - name: Test with pytest - run: | - pytest -``` + on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + + permissions: + contents: read + + jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: {% data reusables.actions.action-checkout %} + - name: Set up Python 3.10 + uses: {% data reusables.actions.action-setup-python %} + with: + python-version: "3.10" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the Python version. +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `python-app.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} ## Specifying a Python version diff --git a/content/actions/automating-builds-and-tests/building-and-testing-ruby.md b/content/actions/automating-builds-and-tests/building-and-testing-ruby.md index 95a81e63af..73b6168794 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-ruby.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-ruby.md @@ -28,41 +28,67 @@ We recommend that you have a basic understanding of Ruby, YAML, workflow configu - [Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions) - [Ruby in 20 minutes](https://www.ruby-lang.org/en/documentation/quickstart/) -## Using the Ruby starter workflow +## Using a Ruby starter workflow -{% data variables.product.prodname_dotcom %} provides a Ruby starter workflow that will work for most Ruby projects. For more information, see the [Ruby starter workflow](https://github.com/actions/starter-workflows/blob/master/ci/ruby.yml). +{% data reusables.actions.starter-workflow-get-started %} -To get started quickly, add the starter workflow to the `.github/workflows` directory of your repository. The workflow shown below assumes that the default branch for your repository is `main`. +{% data variables.product.prodname_dotcom %} provides a starter workflow for Ruby that should work for most Ruby projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -```yaml -{% data reusables.actions.actions-not-certified-by-github-comment %} +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "ruby". +1. Filter the selection of workflows by clicking **Continuous integration**. +1. On the "Ruby" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{% data reusables.actions.actions-use-sha-pinning-comment %} +{%- ifversion ghes or ghae %} -name: Ruby + If you don't find the "Ruby" starter workflow, copy the following workflow code to a new file called `ruby.yml` in the `.github/workflows` directory of your repository. -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] + ```yaml copy + name: Ruby -jobs: - test: + on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] - runs-on: ubuntu-latest + permissions: + contents: read - steps: - - uses: {% data reusables.actions.action-checkout %} - - name: Set up Ruby - uses: ruby/setup-ruby@ec02537da5712d66d4d50a0f33b7eb52773b5ed1 - with: - ruby-version: '3.1' - - name: Install dependencies - run: bundle install - - name: Run tests - run: bundle exec rake -``` + jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + ruby-version: ['2.6', '2.7', '3.0'] + + steps: + - uses: {% data reusables.actions.action-checkout %} + - name: Set up Ruby + # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, + # change this to (see https://github.com/ruby/setup-ruby#versioning): + # uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 + with: + ruby-version: {% raw %}${{ matrix.ruby-version }}{% endraw %} + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + - name: Run tests + run: bundle exec rake + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the Ruby versions you want to use. + + {% indented_data_reference reusables.actions.third-party-actions spaces=3 %} + +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `ruby.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} ## Specifying the Ruby version diff --git a/content/actions/automating-builds-and-tests/building-and-testing-swift.md b/content/actions/automating-builds-and-tests/building-and-testing-swift.md index 329088898e..16a3d63553 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-swift.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-swift.md @@ -30,29 +30,52 @@ You should already be familiar with YAML syntax and how it's used with {% data v We recommend that you have a basic understanding of Swift packages. For more information, see "[Swift Packages](https://developer.apple.com/documentation/swift_packages)" in the Apple developer documentation. -## Using the Swift starter workflow +## Using a Swift starter workflow -{% data variables.product.prodname_dotcom %} provides a Swift starter workflow that should work for most Swift projects, and this guide includes examples that show you how to customize this starter workflow. For more information, see the [Swift starter workflow](https://github.com/actions/starter-workflows/blob/main/ci/swift.yml). +{% data reusables.actions.starter-workflow-get-started %} -To get started quickly, add the starter workflow to the `.github/workflows` directory of your repository. +{% data variables.product.prodname_dotcom %} provides a starter workflow for Swift that should work for most Swift projects. The subsequent sections of this guide give examples of how you can customize this starter workflow. -```yaml copy -name: Swift +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.actions-tab %} +{% data reusables.actions.new-starter-workflow %} +1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "swift". +1. Filter the selection of workflows by clicking **Continuous integration**. +1. On the "Swift" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -on: [push] +{%- ifversion ghes or ghae %} -jobs: - build: + If you don't find the "Swift" starter workflow, copy the following workflow code to a new file called `swift.yml` in the `.github/workflows` directory of your repository. - runs-on: macos-latest + ```yaml copy + name: Swift - steps: - - uses: {% data reusables.actions.action-checkout %} - - name: Build - run: swift build - - name: Run tests - run: swift test -``` + on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + + jobs: + build: + runs-on: macos-latest + + steps: + - uses: {% data reusables.actions.action-checkout %} + - name: Build + run: swift build -v + - name: Run tests + run: swift test -v + ``` + +{%- endif %} + +1. Edit the workflow as required. For example, change the branch on which the workflow will run. +1. Click **Commit changes**. + +{% ifversion fpt or ghec %} + The `swift.yml` workflow file is added to the `.github/workflows` directory of your repository. +{% endif %} ## Specifying a Swift version diff --git a/content/actions/creating-actions/creating-a-composite-action.md b/content/actions/creating-actions/creating-a-composite-action.md index d095be7dc9..202b883267 100644 --- a/content/actions/creating-actions/creating-a-composite-action.md +++ b/content/actions/creating-actions/creating-a-composite-action.md @@ -83,17 +83,18 @@ Before you begin, you'll create a repository on {% ifversion ghae %}{% data vari - run: echo Hello ${{ inputs.who-to-greet }}. shell: bash - id: random-number-generator{% endraw %} -{%- ifversion actions-save-state-set-output-envs %} + {%- ifversion actions-save-state-set-output-envs %} run: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT -{%- else %} + {%- else %} run: echo "::set-output name=random-number::$(echo $RANDOM)" -{%- endif %}{% raw %} + {%- endif %}{% raw %} shell: bash - run: echo "${{ github.action_path }}" >> $GITHUB_PATH shell: bash - run: goodbye.sh shell: bash ``` + {% endraw %} This file defines the `who-to-greet` input, maps the random generated number to the `random-number` output variable, adds the action's path to the runner system path (to locate the `goodbye.sh` script during execution), and runs the `goodbye.sh` script. diff --git a/content/actions/creating-actions/creating-a-docker-container-action.md b/content/actions/creating-actions/creating-a-docker-container-action.md index 74cbe04527..d24275bfcd 100644 --- a/content/actions/creating-actions/creating-a-docker-container-action.md +++ b/content/actions/creating-actions/creating-a-docker-container-action.md @@ -102,11 +102,12 @@ Next, the script gets the current time and sets it as an output variable that ac echo "Hello $1" time=$(date) -{%- ifversion actions-save-state-set-output-envs %} + {%- ifversion actions-save-state-set-output-envs %} echo "time=$time" >> $GITHUB_OUTPUT -{%- else %} + {%- else %} echo "::set-output name=time::$time" -{%- endif %} + {%- endif %} + ``` If `entrypoint.sh` executes without any errors, the action's status is set to `success`. You can also explicitly set exit codes in your action's code to provide an action's status. For more information, see "[AUTOTITLE](/actions/creating-actions/setting-exit-codes-for-actions)." @@ -114,8 +115,8 @@ Next, the script gets the current time and sets it as an output variable that ac 1. Make your `entrypoint.sh` file executable. Git provides a way to explicitly change the permission mode of a file so that it doesn’t get reset every time there is a clone/fork. ```shell copy - $ git add entrypoint.sh - $ git update-index --chmod=+x entrypoint.sh + git add entrypoint.sh + git update-index --chmod=+x entrypoint.sh ``` 1. Optionally, to check the permission mode of the file in the git index, run the following command. @@ -266,6 +267,7 @@ jobs: name: workspace_artifacts path: {% raw %}${{ github.workspace }}{% endraw %} ``` + For more information about uploading build output as an artifact, see "[AUTOTITLE](/actions/using-workflows/storing-workflow-data-as-artifacts)." ## Example Docker container actions on {% data variables.product.prodname_dotcom_the_website %} diff --git a/content/actions/creating-actions/creating-a-javascript-action.md b/content/actions/creating-actions/creating-a-javascript-action.md index 930d7c7483..806f5655a5 100644 --- a/content/actions/creating-actions/creating-a-javascript-action.md +++ b/content/actions/creating-actions/creating-a-javascript-action.md @@ -36,7 +36,7 @@ Once you complete this project, you should understand how to build your own Java Before you begin, you'll need to download Node.js and create a public {% data variables.product.prodname_dotcom %} repository. -1. Download and install Node.js 16.x, which includes npm. +1. Download and install Node.js 20.x, which includes npm. https://nodejs.org/en/download/ 1. Create a new public repository on {% data variables.location.product_location %} and call it "hello-world-javascript-action". For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository)." @@ -71,7 +71,7 @@ outputs: time: # id of output description: 'The time we greeted you' runs: - using: 'node16' + using: 'node20' main: 'index.js' ``` diff --git a/content/actions/creating-actions/metadata-syntax-for-github-actions.md b/content/actions/creating-actions/metadata-syntax-for-github-actions.md index 02aa4ec5fe..42cdf81f4a 100644 --- a/content/actions/creating-actions/metadata-syntax-for-github-actions.md +++ b/content/actions/creating-actions/metadata-syntax-for-github-actions.md @@ -157,11 +157,11 @@ For more information on how to use context syntax, see "[AUTOTITLE](/actions/lea **Required** Configures the path to the action's code and the runtime used to execute the code. -### Example: Using Node.js v16 +### Example: Using Node.js v20 ```yaml runs: - using: 'node16' + using: 'node20' main: 'main.js' ``` @@ -169,7 +169,7 @@ runs: **Required** The runtime used to execute the code specified in [`main`](#runsmain). -- Use `node16` for Node.js v16. +- Use `node20` for Node.js v20. ### `runs.main` @@ -183,7 +183,7 @@ In this example, the `pre:` action runs a script called `setup.js`: ```yaml runs: - using: 'node16' + using: 'node20' pre: 'setup.js' main: 'index.js' post: 'cleanup.js' @@ -210,7 +210,7 @@ In this example, the `post:` action runs a script called `cleanup.js`: ```yaml runs: - using: 'node16' + using: 'node20' main: 'index.js' post: 'cleanup.js' ``` diff --git a/content/actions/deployment/deploying-to-your-cloud-provider/deploying-to-google-kubernetes-engine.md b/content/actions/deployment/deploying-to-your-cloud-provider/deploying-to-google-kubernetes-engine.md index db8f56ece9..3f0b97b559 100644 --- a/content/actions/deployment/deploying-to-your-cloud-provider/deploying-to-google-kubernetes-engine.md +++ b/content/actions/deployment/deploying-to-your-cloud-provider/deploying-to-google-kubernetes-engine.md @@ -80,7 +80,7 @@ This procedure demonstrates how to create the service account for your GKE integ gcloud iam service-accounts list ``` -1. Add roles to the service account. +1. Add roles to the service account. {% note %} diff --git a/content/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md b/content/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md index 4ea5aa0b74..c15b771864 100644 --- a/content/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md +++ b/content/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md @@ -52,7 +52,7 @@ To configure the role and trust in IAM, see the AWS documentation "[Configure AW {% endnote %} -Edit the trust policy to add the `sub` field to the validation conditions. For example: +Edit the trust policy, adding the `sub` field to the validation conditions. For example: ```json copy "Condition": { @@ -63,6 +63,17 @@ Edit the trust policy to add the `sub` field to the validation conditions. For e } ``` +If you use a workflow with an environment, the `sub` field must reference the environment name: `repo:OWNER/REPOSITORY:environment:NAME`. For more information, see "[AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#understanding-the-oidc-token)." + +```json{:copy} +"Condition": { + "StringEquals": { + "{% ifversion ghes %}HOSTNAME/_services/token{% else %}token.actions.githubusercontent.com{% endif %}:aud": "sts.amazonaws.com", + "{% ifversion ghes %}HOSTNAME/_services/token{% else %}token.actions.githubusercontent.com{% endif %}:sub": "repo:octo-org/octo-repo:environment:prod" + } +} +``` + In the following example, `StringLike` is used with a wildcard operator (`*`) to allow any branch, pull request merge branch, or environment from the `octo-org/octo-repo` organization and repository to assume a role in AWS. ```json copy diff --git a/content/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-azure.md b/content/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-azure.md index 72e2d21ab1..e1dd5eb436 100644 --- a/content/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-azure.md +++ b/content/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-azure.md @@ -34,7 +34,7 @@ This guide gives an overview of how to configure Azure to trust {% data variable {% endnote %} -- Make sure that the value of the issuer claim that's included with the JSON Web Token (JWT) is set to a publicly routable URL. For more information, see "[AUTOTITLE](/enterprise-server@latest/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)." +- Make sure that the value of the issuer claim that's included with the JSON Web Token (JWT) is set to a publicly routable URL. For more information, see "[AUTOTITLE](/enterprise-server@latest/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)." {% endif %} ## Adding the Federated Credentials to Azure diff --git a/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md b/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md index de0ae8f82d..cd3c69740c 100644 --- a/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md +++ b/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md @@ -45,6 +45,7 @@ topics: | Running tests on the runner | `npm test`| ## Example workflow + The following workflow was created by the {% data variables.product.prodname_dotcom %} Docs Engineering team. The workflow runs tests against the code in a pull request. To review the latest version of this file in the [`github/docs`](https://github.com/github/docs) repository, see [`test.yml`](https://github.com/github/docs/blob/main/.github/workflows/test.yml). ```yaml annotate copy diff --git a/content/actions/guides.md b/content/actions/guides.md index d8eef08493..5bb2119b07 100644 --- a/content/actions/guides.md +++ b/content/actions/guides.md @@ -18,7 +18,7 @@ includeGuides: - /actions/quickstart - /actions/learn-github-actions/understanding-github-actions - /actions/creating-actions/creating-a-docker-container-action - - /actions/using-workflows/using-starter-workflows + - /actions/learn-github-actions/using-starter-workflows - /actions/automating-builds-and-tests/building-and-testing-python - /actions/automating-builds-and-tests/building-and-testing-nodejs - /actions/publishing-packages/about-packaging-with-github-actions diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups.md index d989070515..69b74d8096 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups.md @@ -46,6 +46,7 @@ type: tutorial {% endif %} {% ifversion ghec or ghes or ghae %} + ## Changing which organizations can access a runner group {%- ifversion fpt or ghec or ghes %} @@ -110,12 +111,14 @@ You can edit the name of your runner groups at the enterprise and organization l - [Changing the name of an enterprise runner group](#changing-the-name-of-an-enterprise-runner-group) ### Changing the name of an organization runner group + {% endif %} {% data reusables.actions.runner-groups-org-navigation %} {% data reusables.actions.changing-the-name-of-a-runner-group %} {% ifversion ghes or ghec or ghae %} + ### Changing the name of an enterprise runner group {% data reusables.actions.runner-groups-enterprise-navigation %} @@ -135,6 +138,7 @@ You can edit the name of your runner groups at the enterprise and organization l - [Moving an enterprise runner to a group](#moving-an-enterprise-runner-to-a-group) ### Moving an organization runner to a group + {% endif %} {% data reusables.organizations.navigate-to-org %} @@ -143,6 +147,7 @@ You can edit the name of your runner groups at the enterprise and organization l {% data reusables.actions.moving-a-runner-to-a-group %} {% ifversion ghes or ghec or ghae %} + ### Moving an enterprise runner to a group {% data reusables.enterprise-accounts.access-enterprise %} @@ -161,12 +166,14 @@ You can edit the name of your runner groups at the enterprise and organization l - [Removing a runner group from an enterprise](#removing-a-runner-group-from-an-enterprise) ### Removing a runner group from an organization + {% endif %} {% data reusables.actions.runner-groups-org-navigation %} {% data reusables.actions.removing-a-runner-group %} {% ifversion ghes or ghec or ghae %} + ### Removing a runner group from an enterprise {% data reusables.actions.runner-groups-enterprise-navigation %} diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners.md index 1ab0952ea7..41800e680e 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners.md @@ -87,12 +87,34 @@ By default, the self-hosted runner application verifies the TLS certificate for To disable TLS certification verification in the self-hosted runner application, set the `GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY` environment variable to `1` before configuring and running the self-hosted runner application. +{% linux %} + ```shell export GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY=1 ./config.sh --url https://github.com/YOUR-ORG/YOUR-REPO --token ./run.sh ``` +{% endlinux %} +{% mac %} + +```shell +export GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY=1 +./config.sh --url https://github.com/YOUR-ORG/YOUR-REPO --token +./run.sh +``` + +{% endmac %} +{% windows %} + +```powershell +[Environment]::SetEnvironmentVariable('GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY', '1') +./config.cmd --url https://github.com/YOUR-ORG/YOUR-REPO --token +./run.sh +``` + +{% endwindows %} + {% warning %} **Warning**: Disabling TLS verification is not recommended since TLS provides privacy and data integrity between the self-hosted runner application and {% data variables.product.product_name %}. We recommend that you install the {% data variables.product.product_name %} certificate in the operating system certificate store for your self-hosted runner. For guidance on how to install the {% data variables.product.product_name %} certificate, check with your operating system vendor. diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners.md index 7a2d789764..78ed8a3766 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners.md @@ -37,6 +37,7 @@ You can create custom labels for runners at the repository{% ifversion ghec or g {% data reusables.actions.self-hosted-runners-create-label-steps %} {% ifversion ghec or ghes or ghae %} + ### Creating a custom label for an enterprise runner {% data reusables.enterprise-accounts.access-enterprise %} @@ -46,6 +47,7 @@ You can create custom labels for runners at the repository{% ifversion ghec or g {% data reusables.actions.self-hosted-runners-create-label-steps %} {% endif %} + ## Assigning a label to a self-hosted runner You can assign labels to self-hosted runners at the repository{% ifversion ghec or ghes or ghae %}, organization, and enterprise{% else %} and organization{% endif %} levels. @@ -65,6 +67,7 @@ You can assign labels to self-hosted runners at the repository{% ifversion ghec {% data reusables.actions.self-hosted-runner-assign-label-steps %} {% ifversion ghec or ghes or ghae %} + ### Assigning a label to an enterprise runner {% data reusables.enterprise-accounts.access-enterprise %} @@ -75,6 +78,7 @@ You can assign labels to self-hosted runners at the repository{% ifversion ghec {% data reusables.actions.self-hosted-runner-assign-label-steps %} {% endif %} + ## Removing a custom label from a self-hosted runner You can remove custom labels from self-hosted runners at the repository{% ifversion ghec or ghes or ghae %}, organization, and enterprise{% else %} and organization{% endif %} levels. @@ -94,6 +98,7 @@ You can remove custom labels from self-hosted runners at the repository{% ifvers {% data reusables.actions.self-hosted-runner-remove-label-steps %} {% ifversion ghec or ghes or ghae %} + ### Removing a custom label from an enterprise runner {% data reusables.enterprise-accounts.access-enterprise %} diff --git a/content/actions/index.md b/content/actions/index.md index ea174d1392..55ced81c7b 100644 --- a/content/actions/index.md +++ b/content/actions/index.md @@ -14,7 +14,7 @@ featuredLinks: - /actions/publishing-packages/about-packaging-with-github-actions - /actions/monitoring-and-troubleshooting-workflows/about-monitoring-and-troubleshooting guideCards: - - /actions/using-workflows/using-starter-workflows + - /actions/learn-github-actions/using-starter-workflows - /actions/publishing-packages/publishing-nodejs-packages - /actions/automating-builds-and-tests/building-and-testing-powershell popular: diff --git a/content/actions/learn-github-actions/index.md b/content/actions/learn-github-actions/index.md index 09c0ffd0ae..04e75357af 100644 --- a/content/actions/learn-github-actions/index.md +++ b/content/actions/learn-github-actions/index.md @@ -25,6 +25,7 @@ children: - /expressions - /contexts - /variables + - /using-starter-workflows - /usage-limits-billing-and-administration --- diff --git a/content/actions/using-workflows/using-starter-workflows.md b/content/actions/learn-github-actions/using-starter-workflows.md similarity index 73% rename from content/actions/using-workflows/using-starter-workflows.md rename to content/actions/learn-github-actions/using-starter-workflows.md index 58b378fdcd..dd63483b41 100644 --- a/content/actions/using-workflows/using-starter-workflows.md +++ b/content/actions/learn-github-actions/using-starter-workflows.md @@ -9,7 +9,7 @@ redirect_from: - /actions/building-and-testing-code-with-continuous-integration/setting-up-continuous-integration-using-github-actions - /actions/guides/setting-up-continuous-integration-using-workflow-templates - /actions/learn-github-actions/using-workflow-templates - - /actions/learn-github-actions/using-starter-workflows + - /actions/using-workflows/using-starter-workflows versions: fpt: '*' ghes: '*' @@ -26,21 +26,24 @@ topics: ## About starter workflows -{% data variables.product.product_name %} offers starter workflows for a variety of languages and tooling. When you set up workflows in your repository, {% data variables.product.product_name %} analyzes the code in your repository and recommends workflows based on the language and framework in your repository. For example, if you use [Node.js](https://nodejs.org/en/), {% data variables.product.product_name %} will suggest a starter workflow file that installs your Node.js packages and runs your tests.{% ifversion actions-starter-template-ui %} You can search and filter to find relevant starter workflows.{% endif %} +Starter workflows are templates that help you to create your own {% data variables.product.prodname_actions %} workflows for a repository. They offer an alternative to starting from a blank workflow file and are useful because some of the work will already have been done for you. + +{% data variables.product.product_name %} offers starter workflows for a variety of languages and tooling. When you set up workflows in your repository, {% data variables.product.product_name %} analyzes the code in your repository and recommends workflows based on the language and framework in your repository. For example, if you use Node.js, {% data variables.product.product_name %} will suggest a starter workflow file that installs your Node.js packages and runs your tests.{% ifversion actions-starter-template-ui %} You can search and filter to find relevant starter workflows.{% endif %} {% data reusables.actions.starter-workflow-categories %} -You can also create your own starter workflow to share with your organization. These starter workflows will appear alongside the {% data variables.product.product_name %}-provided starter workflows. For more information, see "[AUTOTITLE](/actions/using-workflows/creating-starter-workflows-for-your-organization)." +You can also create your own starter workflow to share with your organization. These starter workflows will appear alongside the {% data variables.product.product_name %}-provided starter workflows. Anyone with write access to the organization's `github` repository can set up a starter workflow. For more information, see "[AUTOTITLE](/actions/using-workflows/creating-starter-workflows-for-your-organization)." -## Using starter workflows - -Anyone with write permission to a repository can set up {% data variables.product.prodname_actions %} starter workflows for CI/CD or other automation. +## Choosing and using a starter workflow {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.actions-tab %} -1. If you already have a workflow in your repository, click **New workflow**. +{% data reusables.actions.new-starter-workflow %} 1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Find the starter workflow that you want to use, then click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}.{% ifversion actions-starter-template-ui %} To help you find the starter workflow that you want, you can search for keywords or filter by category.{% endif %} -1. If the starter workflow contains comments detailing additional setup steps, follow these steps. Many of the starter workflow have corresponding guides. For more information, see the [{% data variables.product.prodname_actions %} guides](/actions/guides). +1. If the starter workflow contains comments detailing additional setup steps, follow these steps. + + There are guides to accompany many of the starter workflows for building and testing projects. For more information, see "[AUTOTITLE](/actions/automating-builds-and-tests)." + 1. Some starter workflows use secrets. For example, {% raw %}`${{ secrets.npm_token }}`{% endraw %}. If the starter workflow uses a secret, store the value described in the secret name as a secret in your repository. For more information, see "[AUTOTITLE](/actions/security-guides/using-secrets-in-github-actions)." 1. Optionally, make additional changes. For example, you might want to change the value of `on` to change when the workflow runs. 1. Click **Start commit**. @@ -51,7 +54,6 @@ Anyone with write permission to a repository can set up {% data variables.produc - "[AUTOTITLE](/actions/automating-builds-and-tests/about-continuous-integration)" - "[AUTOTITLE](/actions/managing-workflow-runs)" - "[AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/about-monitoring-and-troubleshooting)" -- "[AUTOTITLE](/actions/learn-github-actions)" {% ifversion fpt or ghec %} - "[AUTOTITLE](/billing/managing-billing-for-github-actions)" {% endif %} diff --git a/content/actions/learn-github-actions/variables.md b/content/actions/learn-github-actions/variables.md index a8a63bd979..f57979b780 100644 --- a/content/actions/learn-github-actions/variables.md +++ b/content/actions/learn-github-actions/variables.md @@ -224,7 +224,7 @@ You can access environment variable values using the `env` context{% ifversion a In addition to runner environment variables, {% data variables.product.prodname_actions %} allows you to set and read `env` key values using contexts. Environment variables and contexts are intended for use at different points in the workflow. -The `run` steps in a workflow, or in a referenced action, are processed by a runner. As a result, you can use runner environment variables here, using the appropriate syntax for the shell you are using on the runner - for example, `$NAME` for the bash shell on a Linux runner, or `$env:NAME` for PowerShell on a Windows runner. In most cases you can also use contexts, with the syntax {% raw %}`${{ CONTEXT.PROPERTY }}`{% endraw %}, to access the same value. The difference is that the context will be interpolated and replaced by a string before the job is sent to a runner. +The `run` steps in a workflow, or in a referenced action, are processed by a runner. As a result, you can use runner environment variables here, using the appropriate syntax for the shell you are using on the runner - for example, `$NAME` for the bash shell on a Linux runner, or `$env:NAME` for PowerShell on a Windows runner. In most cases you can also use contexts, with the syntax {% raw %}`${{ CONTEXT.PROPERTY }}`{% endraw %}, to access the same value. The difference is that the context will be interpolated and replaced by a string before the job is sent to a runner. However, you cannot use runner environment variables in parts of a workflow that are processed by {% data variables.product.prodname_actions %} and are not sent to the runner. Instead, you must use contexts. For example, an `if` conditional, which determines whether a job or step is sent to the runner, is always processed by {% data variables.product.prodname_actions %}. You must therefore use a context in an `if` conditional statement to access the value of an variable. @@ -249,7 +249,7 @@ jobs: {% endraw %} -In this modification of the earlier example, we've introduced an `if` conditional. The workflow step is now only run if `DAY_OF_WEEK` is set to "Monday". We access this value from the `if` conditional statement by using the [`env` context](/actions/learn-github-actions/contexts#env-context). The `env` context is not required for the variables referenced within the `run` command. They are referenced as runner environment variables and are interpolated after the job is received by the runner. We could, however, have chosen to interpolate those variables before sending the job to the runner, by using contexts. The resulting output would be the same. +In this modification of the earlier example, we've introduced an `if` conditional. The workflow step is now only run if `DAY_OF_WEEK` is set to "Monday". We access this value from the `if` conditional statement by using the [`env` context](/actions/learn-github-actions/contexts#env-context). The `env` context is not required for the variables referenced within the `run` command. They are referenced as runner environment variables and are interpolated after the job is received by the runner. We could, however, have chosen to interpolate those variables before sending the job to the runner, by using contexts. The resulting output would be the same. {% raw %} diff --git a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md index e04f026b18..05adee5811 100644 --- a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md +++ b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md @@ -184,6 +184,7 @@ To perform a dry run of migrating a Bitbucket pipeline to {% data variables.prod ```bash gh actions-importer dry-run bitbucket --workspace :workspace --repository :repo --output-dir tmp/dry-run ``` + ### Inspecting the converted workflows You can view the logs of the dry run and the converted workflow files in the specified output directory. @@ -205,6 +206,7 @@ To migrate a Bitbucket pipeline to {% data variables.product.prodname_actions %} ```bash gh actions-importer migrate bitbucket --workspace :workspace --repository :repo --target-url https://github.com/:owner/:repo --output-dir tmp/dry-run ``` + The command's output includes the URL of the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following: ```bash diff --git a/content/actions/publishing-packages/publishing-docker-images.md b/content/actions/publishing-packages/publishing-docker-images.md index 8793845da5..3c206a07fe 100644 --- a/content/actions/publishing-packages/publishing-docker-images.md +++ b/content/actions/publishing-packages/publishing-docker-images.md @@ -141,7 +141,7 @@ The `build-push-action` options required for {% data variables.product.prodname_ - `context`: Defines the build's context as the set of files located in the specified path.{% endif %} - `push`: If set to `true`, the image will be pushed to the registry if it is built successfully.{% ifversion fpt or ghec %} - `tags` and `labels`: These are populated by output from `metadata-action`.{% else %} -- `tags`: Must be set in the format {% ifversion ghes %}`{% data reusables.package_registry.container-registry-hostname %}/OWNER/REPOSITORY/IMAGE_NAME:VERSION`. +- `tags`: Must be set in the format {% ifversion ghes %}`{% data reusables.package_registry.container-registry-hostname %}/OWNER/REPOSITORY/IMAGE_NAME:VERSION`. For example, for an image named `octo-image` stored on {% data variables.product.prodname_ghe_server %} at `https://HOSTNAME/octo-org/octo-repo`, the `tags` option should be set to `{% data reusables.package_registry.container-registry-hostname %}/octo-org/octo-repo/octo-image:latest`{% else %}`docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION`. diff --git a/content/actions/publishing-packages/publishing-nodejs-packages.md b/content/actions/publishing-packages/publishing-nodejs-packages.md index a832a2d9de..d9fa4c8115 100644 --- a/content/actions/publishing-packages/publishing-nodejs-packages.md +++ b/content/actions/publishing-packages/publishing-nodejs-packages.md @@ -73,7 +73,7 @@ jobs: # Setup .npmrc file to publish to npm - uses: {% data reusables.actions.action-setup-node %} with: - node-version: '16.x' + node-version: '20.x' registry-url: 'https://registry.npmjs.org' - run: npm ci - run: npm publish @@ -136,7 +136,7 @@ jobs: # Setup .npmrc file to publish to GitHub Packages - uses: {% data reusables.actions.action-setup-node %} with: - node-version: '16.x' + node-version: '20.x' registry-url: 'https://npm.pkg.github.com' # Defaults to the user or organization that owns the workflow file scope: '@octocat' @@ -171,7 +171,7 @@ jobs: # Setup .npmrc file to publish to npm - uses: {% data reusables.actions.action-setup-node %} with: - node-version: '16.x' + node-version: 20.x' registry-url: 'https://registry.npmjs.org' # Defaults to the user or organization that owns the workflow file scope: '@octocat' diff --git a/content/actions/security-guides/automatic-token-authentication.md b/content/actions/security-guides/automatic-token-authentication.md index c95a25d80e..fb6a0627b6 100644 --- a/content/actions/security-guides/automatic-token-authentication.md +++ b/content/actions/security-guides/automatic-token-authentication.md @@ -100,7 +100,7 @@ The following table shows the permissions granted to the `GITHUB_TOKEN` by defau {% note %} -**Notes:** +**Notes:** - When a workflow is triggered by the [`pull_request_target`](/actions/using-workflows/events-that-trigger-workflows#pull_request_target) event, the `GITHUB_TOKEN` is granted read/write repository permission, even when it is triggered from a public fork. For more information, see "[AUTOTITLE](/actions/using-workflows/events-that-trigger-workflows#pull_request_target)." - Private repositories can control whether pull requests from forks can run workflows, and can configure the permissions assigned to `GITHUB_TOKEN`. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-forks-of-private-repositories)." - {% data reusables.actions.workflow-runs-dependabot-note %} diff --git a/content/actions/using-github-hosted-runners/about-larger-runners/controlling-access-to-larger-runners.md b/content/actions/using-github-hosted-runners/about-larger-runners/controlling-access-to-larger-runners.md index e4039d9b51..bc4633aeb7 100644 --- a/content/actions/using-github-hosted-runners/about-larger-runners/controlling-access-to-larger-runners.md +++ b/content/actions/using-github-hosted-runners/about-larger-runners/controlling-access-to-larger-runners.md @@ -50,6 +50,7 @@ For example, the following diagram has a runner group named `grp-ubuntu-20.04-16 {% data reusables.actions.section-using-unique-names-for-runner-groups %} {% ifversion ghec %} + ## Changing which organizations can access a runner group {% data reusables.actions.hosted-runner-security-admonition %} @@ -112,12 +113,14 @@ You can rename runner groups at the enterprise and organization levels. - [Changing the name of an enterprise runner group](##changing-the-name-of-an-enterprise-runner-group) ### Changing the name of an organization runner group + {% endif %} {% data reusables.actions.runner-groups-org-navigation %} {% data reusables.actions.changing-the-name-of-a-runner-group %} {% ifversion ghec %} + ### Changing the name of an enterprise runner group {% data reusables.actions.runner-groups-enterprise-navigation %} @@ -133,6 +136,7 @@ You can rename runner groups at the enterprise and organization levels. - [Moving an enterprise runner to a group](#moving-an-enterprise-runner-to-a-group) ### Moving an organization runner to a group + {% endif %} {% data reusables.organizations.navigate-to-org %} @@ -141,6 +145,7 @@ You can rename runner groups at the enterprise and organization levels. {% data reusables.actions.moving-a-runner-to-a-group %} {% ifversion ghec %} + ### Moving an enterprise runner to a group {% data reusables.enterprise-accounts.access-enterprise %} @@ -159,12 +164,14 @@ You can rename runner groups at the enterprise and organization levels. - [Removing a runner group from an enterprise](#removing-a-runner-group-from-an-enterprise) ### Removing a runner group from an organization + {% endif %} {% data reusables.actions.runner-groups-org-navigation %} {% data reusables.actions.removing-a-runner-group %} {% ifversion ghec %} + ### Removing a runner group from an enterprise {% data reusables.actions.runner-groups-enterprise-navigation %} diff --git a/content/actions/using-github-hosted-runners/about-larger-runners/managing-larger-runners.md b/content/actions/using-github-hosted-runners/about-larger-runners/managing-larger-runners.md index d9b2ca578f..7a94a398cf 100644 --- a/content/actions/using-github-hosted-runners/about-larger-runners/managing-larger-runners.md +++ b/content/actions/using-github-hosted-runners/about-larger-runners/managing-larger-runners.md @@ -10,6 +10,7 @@ redirect_from: --- {% ifversion ghec %} + ## Adding a {% data variables.actions.hosted_runner %} to an enterprise Enterprise owners can add {% data variables.actions.hosted_runner %}s to an enterprise and assign them to organizations. By default, when a {% data variables.actions.hosted_runner %} is created for an enterprise, it is added to a default runner group that all organizations in the enterprise have access to. While all organizations are granted access to the runner, the repositories in each organization **are not** granted access. For each organization, an organization owner must configure the runner group to specify which repositories have access to the enterprise runner. For more information, see "[Allowing repositories to access a runner group](#allowing-repositories-to-access-a-runner-group)." @@ -69,6 +70,7 @@ You can edit the name of your {% data variables.actions.hosted_runner %}s. - [Changing the name of an enterprise runner](#changing-the-name-of-an-enterprise-runner) ### Changing the name of an organization runner + {% endif %} {% data reusables.organizations.navigate-to-org %} @@ -78,6 +80,7 @@ You can edit the name of your {% data variables.actions.hosted_runner %}s. {% data reusables.actions.rename-larger-runner %} {% ifversion ghec %} + ### Changing the name of an enterprise runner {% data reusables.enterprise-accounts.access-enterprise %} @@ -95,7 +98,9 @@ You can control the maximum number of jobs allowed to run concurrently for speci {% ifversion ghec %} - [Configuring autoscaling for an organization runner](#configuring-autoscaling-for-an-organization-runner) - [Configuring autoscaling for an enterprise runner](#configuring-autoscaling-for-an-enterprise-runner) + ### Configuring autoscaling for an organization runner + {% endif %} {% data reusables.organizations.navigate-to-org %} @@ -105,6 +110,7 @@ You can control the maximum number of jobs allowed to run concurrently for speci {% data reusables.actions.configure-autoscaling-for-larger-runners %} {% ifversion ghec %} + ### Configuring autoscaling for an enterprise runner {% data reusables.enterprise-accounts.access-enterprise %} @@ -133,6 +139,7 @@ The number of available IP addresses in the assigned ranges does not restrict nu - [Creating static IP addresses for enterprise runners](#creating-static-ip-addresses-for-enterprise-runners) ### Creating static IP addresses for organization runners + {% endif %} {% data reusables.organizations.navigate-to-org %} @@ -142,6 +149,7 @@ The number of available IP addresses in the assigned ranges does not restrict nu {% data reusables.actions..networking-for-larger-runners %} {% ifversion ghec %} + ### Creating static IP addresses for enterprise runners {% data reusables.enterprise-accounts.access-enterprise %} diff --git a/content/actions/using-jobs/assigning-permissions-to-jobs.md b/content/actions/using-jobs/assigning-permissions-to-jobs.md index f3a086acf3..99bdd6d299 100644 --- a/content/actions/using-jobs/assigning-permissions-to-jobs.md +++ b/content/actions/using-jobs/assigning-permissions-to-jobs.md @@ -25,7 +25,7 @@ versions: ## Setting the `GITHUB_TOKEN` permissions for all jobs in a workflow -You can specify `permissions` at the top level of a workflow, so that the setting applies to all jobs in the workflow. +You can specify `permissions` at the top level of a workflow, so that the setting applies to all jobs in the workflow. ### Example: Setting the `GITHUB_TOKEN` permissions for an entire workflow diff --git a/content/actions/using-workflows/about-workflows.md b/content/actions/using-workflows/about-workflows.md index 939b242fe6..25a5444ccd 100644 --- a/content/actions/using-workflows/about-workflows.md +++ b/content/actions/using-workflows/about-workflows.md @@ -50,7 +50,7 @@ For more on managing workflow runs, such as re-running, cancelling, or deleting {% data reusables.actions.workflow-template-overview %} -For more information on using and creating starter workflows, see "[AUTOTITLE](/actions/using-workflows/using-starter-workflows)" and "[AUTOTITLE](/actions/using-workflows/creating-starter-workflows-for-your-organization)." +For more information on using and creating starter workflows, see "[AUTOTITLE](/actions/learn-github-actions/using-starter-workflows)" and "[AUTOTITLE](/actions/using-workflows/creating-starter-workflows-for-your-organization)." ## Advanced workflow features diff --git a/content/actions/using-workflows/creating-starter-workflows-for-your-organization.md b/content/actions/using-workflows/creating-starter-workflows-for-your-organization.md index f8ba3b516a..d07eda50be 100644 --- a/content/actions/using-workflows/creating-starter-workflows-for-your-organization.md +++ b/content/actions/using-workflows/creating-starter-workflows-for-your-organization.md @@ -114,4 +114,4 @@ To add another starter workflow, add your files to the same `workflow-templates` ## Next steps -To continue learning about {% data variables.product.prodname_actions %}, see "[AUTOTITLE](/actions/using-workflows/using-starter-workflows)." +To continue learning about {% data variables.product.prodname_actions %}, see "[AUTOTITLE](/actions/learn-github-actions/using-starter-workflows)." diff --git a/content/actions/using-workflows/index.md b/content/actions/using-workflows/index.md index 558dbb8e19..5b6763c715 100644 --- a/content/actions/using-workflows/index.md +++ b/content/actions/using-workflows/index.md @@ -33,7 +33,6 @@ children: - /caching-dependencies-to-speed-up-workflows - /storing-workflow-data-as-artifacts - /creating-starter-workflows-for-your-organization - - /using-starter-workflows - /sharing-workflows-secrets-and-runners-with-your-organization - /using-github-cli-in-workflows --- diff --git a/content/actions/using-workflows/reusing-workflows.md b/content/actions/using-workflows/reusing-workflows.md index 2f048b328a..39c9832f1a 100644 --- a/content/actions/using-workflows/reusing-workflows.md +++ b/content/actions/using-workflows/reusing-workflows.md @@ -265,7 +265,7 @@ When you call a reusable workflow, you can only use the following keywords in th - If `jobs..permissions` is not specified in the calling job, the called workflow will have the default permissions for the `GITHUB_TOKEN`. For more information, see "[AUTOTITLE](/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token)." - The `GITHUB_TOKEN` permissions passed from the caller workflow can be only downgraded (not elevated) by the called workflow. - - If you use `jobs..concurrency.cancel-in-progress: true`, don't use the same value for `jobs..concurrency.group` in the called and caller workflows as this will cause the workflow that's already running to be cancelled. A called workflow uses the name of its caller workflow in {% raw %}${{ github.workflow }}{% endraw %}, so using this context as the value of `jobs..concurrency.group` in both caller and called workflows will cause the caller workflow to be cancelled when the called workflow runs. + - If you use `jobs..concurrency.cancel-in-progress: true`, don't use the same value for `jobs..concurrency.group` in the called and caller workflows as this will cause the workflow that's already running to be cancelled. A called workflow uses the name of its caller workflow in {% raw %}${{ github.workflow }}{% endraw %}, so using this context as the value of `jobs..concurrency.group` in both caller and called workflows will cause the caller workflow to be cancelled when the called workflow runs. {% endnote %} diff --git a/content/admin/backing-up-and-restoring-your-instance/configuring-backups-on-your-instance.md b/content/admin/backing-up-and-restoring-your-instance/configuring-backups-on-your-instance.md index 95ab6f1cc8..c2d105ba75 100644 --- a/content/admin/backing-up-and-restoring-your-instance/configuring-backups-on-your-instance.md +++ b/content/admin/backing-up-and-restoring-your-instance/configuring-backups-on-your-instance.md @@ -277,6 +277,7 @@ On an instance in a high-availability configuration, after you restore to new di To remediate after the restoration completes and before starting replication, you can tear down stale UUIDs using `ghe-repl-teardown`. If you need further assistance, contact {% data variables.contact.contact_ent_support %}. {% ifversion backup-utilities-progress %} + ## Monitoring backup or restoration progress During a backup or restoration operation, you can use the `ghe-backup-progress` utility on your backup host to monitor the operation's progress. The utility prints the progress of each job sequentially. diff --git a/content/admin/backing-up-and-restoring-your-instance/known-issues-with-backups-for-your-instance.md b/content/admin/backing-up-and-restoring-your-instance/known-issues-with-backups-for-your-instance.md index 9b9509453f..ba83ba0f7c 100644 --- a/content/admin/backing-up-and-restoring-your-instance/known-issues-with-backups-for-your-instance.md +++ b/content/admin/backing-up-and-restoring-your-instance/known-issues-with-backups-for-your-instance.md @@ -46,24 +46,28 @@ To ensure users can sign into the new target instance, ensure that your environm ```shell copy ssh -p 122 admin@HOSTNAME ``` + {%- ifversion ghes = 3.7 %} 1. To display a list of encryption and decryption keys, run the following command. ```shell copy ghe-config secrets.github.encrypted-column-keying-material ``` + {%- elsif ghes = 3.8 or ghes = 3.9 %} 1. To display a list of decryption keys, run the following command. ```shell copy ghe-config secrets.github.encrypted-column-keying-material ``` + 1. Copy the output to a safe and temporary location. 1. To display a list of encryption keys, run the following command. ```shell copy ghe-config secrets.github.encrypted-column-current-encryption-key ``` + 1. Copy the output to a safe and temporary location. {%- endif %} 1. SSH into the destination {% data variables.product.product_name %} instance where you restored the backup. Replace HOSTNAME with the actual hostname of your instance. @@ -71,6 +75,7 @@ To ensure users can sign into the new target instance, ensure that your environm ```shell copy ssh -p 122 admin@HOSTNAME ``` + 1. Enable maintenance mode. For more information, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/enabling-and-scheduling-maintenance-mode#enabling-maintenance-mode-immediately-or-scheduling-a-maintenance-window-for-a-later-time)." 1. To verify that the destination instance is ready for configuration, run the following {% ifversion ghes = 3.7 %}command{% elsif ghes = 3.8 or ghes = 3.9 %}commands{% endif %}. There should be no output displayed. @@ -80,29 +85,34 @@ To ensure users can sign into the new target instance, ensure that your environm ghe-config secrets.github.encrypted-column-current-encryption-key {%- endif %} ``` + {%- ifversion ghes = 3.7 %} 1. To update the list of keys on the destination instance, run the following command. Replace KEY-LIST with the output from step 1. ```shell copy ghe-config secrets.github.encrypted-column-keying-material "KEY-LIST" ``` + {%- elsif ghes = 3.8 or ghes = 3.9 %} 1. To update the decryption keys on the destination instance, run the following command. Replace DECRYPTION-KEY-LIST with the output from step 1. ```shell copy ghe-config secrets.github.encrypted-column-keying-material "DECRYPTION-KEY-LIST" ``` + 1. To update the encryption key on the destination instance, run the following command. Replace ENCRYPTION-KEY with the output from step 4. ```shell copy ghe-config secrets.github.encrypted-column-current-encryption-key "ENCRYPTION-KEY" ``` + {%- endif %} 1. To apply the configuration, run the following command. ```shell copy ghe-config-apply ``` + 1. Wait for the configuration run to complete. 1. To ensure that the target instance's configuration contains the keys, run the following {% ifversion ghes = 3.7 %}command{% elsif ghes = 3.8 or ghes = 3.9 %}commands{% endif %} and verify that the output matches step 1{% ifversion ghes = 3.8 or ghes = 3.9 %} and step 4{% endif %}. @@ -112,6 +122,7 @@ To ensure users can sign into the new target instance, ensure that your environm ghe-config secrets.github.encrypted-column-current-encryption-key {%- endif %} ``` + 1. Have a user sign into the destination instance. If any issues arise, contact {% data variables.contact.enterprise_support %}. For more information, see "[AUTOTITLE](/support/contacting-github-support)." {% endif %} diff --git a/content/admin/configuration/configuring-network-settings/configuring-built-in-firewall-rules.md b/content/admin/configuration/configuring-network-settings/configuring-built-in-firewall-rules.md index f24b585d49..f863386b41 100644 --- a/content/admin/configuration/configuring-network-settings/configuring-built-in-firewall-rules.md +++ b/content/admin/configuration/configuring-network-settings/configuring-built-in-firewall-rules.md @@ -69,6 +69,7 @@ We do not recommend customizing UFW as it can complicate some troubleshooting is 1. Configure a custom firewall rule. 1. Check the status of each new rule with the `status numbered` command. + ```shell sudo ufw status numbered ``` diff --git a/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise.md b/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise.md index cc804fc46f..3091b06162 100644 --- a/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise.md +++ b/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise.md @@ -107,6 +107,7 @@ Optionally, organization owners can further restrict the access policy of the ru For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group)." ## 5. Automatically scale your self-hosted runners + {% ifversion actions-runner-controller %}Optionally, you can use {% data variables.product.prodname_actions_runner_controller %} (ARC) to automatically scale self-hosted runners. {% data reusables.actions.actions-runner-controller-about-arc %} {% else %}Optionally, you can build custom tooling to automatically scale the self-hosted runners for {% ifversion ghec or ghae %}your enterprise{% elsif ghes %}{% data variables.location.product_location %}{% endif %}. For example, your tooling can respond to webhook events from {% data variables.location.product_location %} to automatically scale a cluster of runner machines. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners)." diff --git a/content/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom.md b/content/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom.md index b9947602a2..1f3e8db61c 100644 --- a/content/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom.md +++ b/content/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom.md @@ -90,7 +90,7 @@ This example demonstrates using the `actions-sync` tool to sync an individual ac - `--destination-token`: A {% data variables.product.pat_generic %} for the destination enterprise instance. - `--destination-url`: The URL of the destination enterprise instance. - `--repo-name`: The action repository to sync. This takes the format of `owner/repository:destination_owner/destination_repository`. - + - The above example syncs the [`actions/stale`](https://github.com/actions/stale) repository to the `synced-actions/actions-stale` repository on the destination enterprise instance. You must create the organization named `synced-actions` in your enterprise before running the above command. - If you omit `:destination_owner/destination_repository`, the tool uses the original owner and repository name for your enterprise. Before running the command, you must create a new organization in your enterprise that matches the owner name of the action. Consider using a central organization to store the synced actions in your enterprise, as this means you will not need to create multiple new organizations if you sync actions from different owners. - You can sync multiple actions by replacing the `--repo-name` parameter with `--repo-name-list` or `--repo-name-list-file`. For more information, see the [`actions-sync` README](https://github.com/actions/actions-sync#actions-sync). diff --git a/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users.md b/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users.md index ca09a86e4e..dd6881246d 100644 --- a/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users.md +++ b/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users.md @@ -117,9 +117,9 @@ Before your developers can use {% data variables.product.prodname_ghe_cloud %} w Your contact on the GitHub Sales team will work with you to create your new {% data variables.enterprise.prodname_emu_enterprise %}. You'll need to provide the email address for the user who will set up your enterprise and a short code that will be used as the suffix for your enterprise members' usernames. {% data reusables.enterprise-accounts.emu-shortcode %} For more information, see "[Usernames and profile information](#usernames-and-profile-information)." -1. After we create your enterprise, you will receive an email from {% data variables.product.prodname_dotcom %} inviting you to choose a password for your enterprise's setup user, which will be the first owner in the enterprise. Use an incognito or private browsing window when setting the password and saving the recovery codes for the user. The setup user is only used to configure single sign-on and SCIM provisioning integration for the enterprise. It will no longer be allowed to access enterprise or organization settings once SSO is configured, unless an SSO recovery code is used. +1. After we create your enterprise, you will receive an email from {% data variables.product.prodname_dotcom %} inviting you to choose a password for your enterprise's setup user, which will be the first owner in the enterprise. Use an incognito or private browsing window when setting the password and saving the recovery codes for the user. The setup user is only used to configure single sign-on and SCIM provisioning integration for the enterprise. It will no longer be allowed to access enterprise or organization settings once SSO is configured, unless an SSO recovery code is used. - The setup user's username is your enterprise's shortcode suffixed with `_admin`, for example `fabrikam_admin`. If you need to sign in as the setup user later, you can enter the username and password at any login page. A link to the login page is also provided on the SSO page, for convenience. + The setup user's username is your enterprise's shortcode suffixed with `_admin`, for example `fabrikam_admin`. If you need to sign in as the setup user later, you can enter the username and password at any login page. A link to the login page is also provided on the SSO page, for convenience. {% note %} diff --git a/content/admin/monitoring-activity-in-your-enterprise/analyzing-how-your-team-works-with-server-statistics/including-data-about-github-actions-in-server-statistics.md b/content/admin/monitoring-activity-in-your-enterprise/analyzing-how-your-team-works-with-server-statistics/including-data-about-github-actions-in-server-statistics.md index a469705501..39f8676a0d 100644 --- a/content/admin/monitoring-activity-in-your-enterprise/analyzing-how-your-team-works-with-server-statistics/including-data-about-github-actions-in-server-statistics.md +++ b/content/admin/monitoring-activity-in-your-enterprise/analyzing-how-your-team-works-with-server-statistics/including-data-about-github-actions-in-server-statistics.md @@ -36,4 +36,5 @@ If you enable the collection of data about {% data variables.product.prodname_ac ```shell{:copy} ghe-config app.github.enable-actions-usage-stats true ``` + {% data reusables.enterprise.apply-configuration %} diff --git a/content/admin/monitoring-managing-and-updating-your-instance/caching-repositories/configuring-a-repository-cache.md b/content/admin/monitoring-managing-and-updating-your-instance/caching-repositories/configuring-a-repository-cache.md index 4aab751c36..b90cb01fbe 100644 --- a/content/admin/monitoring-managing-and-updating-your-instance/caching-repositories/configuring-a-repository-cache.md +++ b/content/admin/monitoring-managing-and-updating-your-instance/caching-repositories/configuring-a-repository-cache.md @@ -55,6 +55,7 @@ Then, when told to fetch `https://github.example.com/myorg/myrepo`, Git will ins ``` ghe-repl-setup -a PRIMARY-IP ``` + 1. To configure the repository cache, use the `ghe-repl-node` command and include the necessary parameters. - Set a `cache-location` for the repository cache, replacing _CACHE-LOCATION_ with an alphanumeric identifier, such as the region where the cache is deployed. The _CACHE-LOCATION_ value must not be any of the subdomains reserved for use with subdomain isolation, such as `assets` or `media`. For a list of reserved names, see "[AUTOTITLE](/admin/configuration/configuring-network-settings/enabling-subdomain-isolation#about-subdomain-isolation)." - Set a `cache-domain` for the repository cache, replacing _EXTERNAL-CACHE-DOMAIN_ with the hostname Git clients will use to access the repository cache. If you do not specify a `cache-domain`, {% data variables.product.product_name %} will prepend the _CACHE-LOCATION_ value as a subdomain to the hostname configured for your instance. For more information, see "[AUTOTITLE](/admin/configuration/configuring-network-settings/configuring-a-hostname)." diff --git a/content/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/initiating-a-failover-to-your-replica-cluster.md b/content/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/initiating-a-failover-to-your-replica-cluster.md index 9a9b5242c4..539a23f8f9 100644 --- a/content/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/initiating-a-failover-to-your-replica-cluster.md +++ b/content/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/initiating-a-failover-to-your-replica-cluster.md @@ -32,9 +32,9 @@ To fail over to replica nodes, you must have configured high availability replic 1. SSH into the primary MySQL node in the replica cluster. For more information, see "[AUTOTITLE](/enterprise/admin/configuration/accessing-the-administrative-shell-ssh#enabling-access-to-the-administrative-shell-via-ssh)." 1. To begin the failover to the secondary cluster and configure the nodes to respond to requests, run the following command. - ```shell - ghe-cluster-failover - ``` + ```shell + ghe-cluster-failover + ``` {% data reusables.enterprise_clustering.configuration-finished %} 1. Update the DNS record to point to the IP address of the load balancer for your replica cluster. After the TTL period expires, requests will be directed to the replica cluster. diff --git a/content/admin/monitoring-managing-and-updating-your-instance/configuring-high-availability/creating-a-high-availability-replica.md b/content/admin/monitoring-managing-and-updating-your-instance/configuring-high-availability/creating-a-high-availability-replica.md index 098eb1c9b0..783c314beb 100644 --- a/content/admin/monitoring-managing-and-updating-your-instance/configuring-high-availability/creating-a-high-availability-replica.md +++ b/content/admin/monitoring-managing-and-updating-your-instance/configuring-high-availability/creating-a-high-availability-replica.md @@ -100,6 +100,7 @@ This example configuration uses a primary and two replicas, which are located in ``` 1. To apply the configuration, use the `ghe-config-apply` command on the primary. + ```shell (primary)$ ghe-config-apply ``` diff --git a/content/admin/monitoring-managing-and-updating-your-instance/updating-the-virtual-machine-and-physical-resources/known-issues-with-upgrades-to-your-instance.md b/content/admin/monitoring-managing-and-updating-your-instance/updating-the-virtual-machine-and-physical-resources/known-issues-with-upgrades-to-your-instance.md index 6778d3bcc5..44d10e24ad 100644 --- a/content/admin/monitoring-managing-and-updating-your-instance/updating-the-virtual-machine-and-physical-resources/known-issues-with-upgrades-to-your-instance.md +++ b/content/admin/monitoring-managing-and-updating-your-instance/updating-the-virtual-machine-and-physical-resources/known-issues-with-upgrades-to-your-instance.md @@ -133,16 +133,19 @@ If you cannot upgrade {% data variables.location.product_location %}, then you c ```shell copy ghe-maintenance -s ``` + 1. Update consul template for nomad: ```shell copy sudo sed -i.bak '/kill_signal/i \ kill_timeout = "10m"' /etc/consul-templates/etc/nomad-jobs/mysql/mysql.hcl.ctmpl ``` + 1. Render consul template for nomad: ```shell copy sudo consul-template -once -template /etc/consul-templates/etc/nomad-jobs/mysql/mysql.hcl.ctmpl:/etc/nomad-jobs/mysql/mysql.hcl ``` + 1. Verify current `kill_timeout` setting: ```shell copy @@ -154,26 +157,31 @@ If you cannot upgrade {% data variables.location.product_location %}, then you c ```shell copy "KillTimeout": 5000000000 ``` + 1. Stop MySQL: ```shell copy nomad job stop mysql ``` + 1. Run new MySQL job: ```shell copy nomad job run /etc/nomad-jobs/mysql/mysql.hcl ``` + 1. Verify kill_timeout has been updated: ```shell copy nomad job inspect mysql | grep KillTimeout ``` + Expected response: ```shell copy "KillTimeout": 600000000000, ``` + 1. Take instance out of maintenance mode: ```shell copy diff --git a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md index 5cffeabdf1..15c2b4ec7a 100644 --- a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md +++ b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md @@ -24,7 +24,7 @@ topics: - Policies shortTitle: GitHub Actions policies --- - + ## About policies for {% data variables.product.prodname_actions %} in your enterprise @@ -41,7 +41,7 @@ You can choose to disable {% data variables.product.prodname_actions %} for all {% data reusables.enterprise-accounts.actions-tab %} 1. Under "Policies", select your options. - {% indented_data_reference reusables.actions.actions-use-policy-settings spaces=3 %} + {% data reusables.actions.actions-use-policy-settings %} {%- ifversion ghes or ghae %} {% note %} diff --git a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise.md b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise.md index 6f6feddde5..891d63f6c0 100644 --- a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise.md +++ b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-codespaces-in-your-enterprise.md @@ -27,14 +27,14 @@ If you're an organization owner, you can enable {% data variables.product.prodna {% note %} -**Note:** If you remove a user's access to {% data variables.product.prodname_github_codespaces %}, the user will immediately be unable to open existing codespaces they have created from an organization's private {% ifversion ghec %}and internal {% endif %}repositories. For more information, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/enabling-or-disabling-github-codespaces-for-your-organization#about-changing-your-settings)." +**Note:** If you remove a user's access to {% data variables.product.prodname_github_codespaces %}, the user will immediately be unable to open existing codespaces they have created from an organization's private {% ifversion ghec %}and internal {% endif %}repositories. For more information, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/enabling-or-disabling-github-codespaces-for-your-organization#about-changing-your-settings)." {% endnote %} {% data reusables.enterprise-accounts.access-enterprise %} {% data reusables.enterprise-accounts.policies-tab %} 1. Under "{% octicon "law" aria-hidden="true" %} Policies," click **Codespaces**. -1. On the {% data variables.product.prodname_github_codespaces %} policies page, under "Manage organization access to {% data variables.product.prodname_github_codespaces %}," select whether to enable {% data variables.product.prodname_github_codespaces %} in your organizations' private and internal repositories. +1. On the {% data variables.product.prodname_github_codespaces %} policies page, under "Manage organization access to {% data variables.product.prodname_github_codespaces %}," select whether to enable {% data variables.product.prodname_github_codespaces %} in your organizations' private and internal repositories. You can enable for all organizations, enable for specific organizations, or disable for all organizations. 1. Click **Save**. diff --git a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-ci-checks-with-a-github-app.md b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-ci-checks-with-a-github-app.md index cd8a349a14..403a5f31ff 100644 --- a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-ci-checks-with-a-github-app.md +++ b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-ci-checks-with-a-github-app.md @@ -81,6 +81,7 @@ The following sections will lead you through setting up the following components 1. Create a Ruby file named `server.rb`. This file will contain all the code for your app. You will add content to this file later. 1. If the directory doesn't already include a `.gitignore` file, add a `.gitignore` file. You will add content to this file later. For more information about `.gitignore` files, see "[AUTOTITLE](/get-started/getting-started-with-git/ignoring-files)." 1. Create a file named `Gemfile`. This file will describe the gem dependencies that your Ruby code needs. Add the following contents to your `Gemfile`: + ```ruby copy source 'http://rubygems.org' @@ -92,7 +93,9 @@ The following sections will lead you through setting up the following components gem 'dotenv' gem 'git' ``` + 1. Create a file named `config.ru`. This file will configure your Sinatra server to run. Add the following contents to your `config.ru` file: + ```ruby copy require './server' run GHAapp @@ -103,17 +106,22 @@ The following sections will lead you through setting up the following components In order to develop your app locally, you can use a webhook proxy URL to forward webhook events from {% data variables.product.company_short %} to your computer or codespace. This tutorial uses Smee.io to provide a webhook proxy URL and forward events. 1. In a terminal, run the following command to install the Smee client: + ```shell copy npm install --global smee-client ``` + 1. In your browser, navigate to https://smee.io/. 1. Click **Start a new channel**. 1. Copy the full URL under "Webhook Proxy URL". 1. In the terminal, run the following command to start the Smee client. Replace `YOUR_DOMAIN` with the Webhook Proxy URL you copied in the previous step. + ```shell copy smee --url YOUR_DOMAIN --path /event_handler --port 3000 ``` + You should see output like the following: + ```shell Forwarding https://smee.io/YOUR_DOMAIN to http://127.0.0.1:3000/event_handler Connected https://smee.io/YOUR_DOMAIN diff --git a/content/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app.md b/content/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app.md index 1304f391af..8d88e56c42 100644 --- a/content/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app.md +++ b/content/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app.md @@ -36,8 +36,8 @@ include the client secret in your native application, however web applications s You can fill out every other piece of information however you like, except the **Authorization callback URL**. This is the most important piece to securely setting -up your application. It's the callback URL that {% data variables.product.product_name %} -returns the user to after successful authentication. Ownership of that URL is what ensures +up your application. It's the callback URL that {% data variables.product.product_name %} +returns the user to after successful authentication. Ownership of that URL is what ensures that users sign into your app, instead of leaking tokens to an attacker. Since we're running a regular Sinatra server, the location of the local instance @@ -64,7 +64,7 @@ end Your client ID and client secret come from [your application's configuration page][app settings]. We recommend storing these values as -[environment variables][about env vars] for ease of replacement and use -- +[environment variables][about env vars] for ease of replacement and use -- which is exactly what we've done here. Next, in _views/index.erb_, paste this content: @@ -125,7 +125,7 @@ end ``` After a successful app authentication, {% data variables.product.product_name %} provides a temporary `code` value. -You'll need to `POST` this code back to {% data variables.product.product_name %} with your client secret +You'll need to `POST` this code back to {% data variables.product.product_name %} with your client secret in exchange for an `access_token`. To simplify our GET and POST HTTP requests, we're using the [rest-client][REST Client]. Note that you'll probably never access the API through REST. For a more serious @@ -158,10 +158,10 @@ checked for those as well. Also, since there's a hierarchical relationship between scopes, you should check if you were granted any higher levels of the required scope. For example, if the application had asked for `user` scope, it won't have been granted explicitly the -`user:email` scope. In that case, it would receive a token with the `user` scope, which +`user:email` scope. In that case, it would receive a token with the `user` scope, which would work for requesting the user's email address, even though it doesn't explicitly include -`user:email` on the token. Checking for both `user` and `user:email` ensures that you -check for both scenarios. +`user:email` on the token. Checking for both `user` and `user:email` ensures that you +check for both scenarios. Checking for scopes only before making requests is not enough since it's possible that users will change the scopes in between your check and the actual request. diff --git a/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations.md b/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations.md index dce7d2872e..ae00705bfc 100644 --- a/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations.md +++ b/content/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations.md @@ -42,7 +42,7 @@ For more information about authorizing {% data variables.product.prodname_github Organization owners can install {% data variables.product.prodname_github_apps %} on their organization. -For enterprises that pay by credit card, enterprise owners who are also organization owners can install {% data variables.product.prodname_github_apps %} on organizations within their enterprise. +For enterprises that pay by credit card, enterprise owners who are also organization owners can install {% data variables.product.prodname_github_apps %} on organizations within their enterprise. Admins of repositories that are owned by an organization can also install {% data variables.product.prodname_github_apps %} on the organization if they only grant the app access to repositories that they are an admin of and if the app does not request any organization resources. Organization owners can prevent outside collaborators who are repository admins from installing {% data variables.product.prodname_github_apps %}. diff --git a/content/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey.md b/content/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey.md index 0a206febc7..bbb40b4abd 100644 --- a/content/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey.md +++ b/content/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey.md @@ -31,5 +31,6 @@ Some authenticators allow passkeys to be used with nearby devices. For example, 1. On your nearby device, follow the prompts to complete the authentication process. For example, if you are using an iPhone, you might perform FaceID or enter your passcode. ## Further reading + - [AUTOTITLE](/authentication/authenticating-with-a-passkey/about-passkeys) - [AUTOTITLE](/authentication/authenticating-with-a-passkey/managing-your-passkeys) diff --git a/content/authentication/keeping-your-account-and-data-secure/sudo-mode.md b/content/authentication/keeping-your-account-and-data-secure/sudo-mode.md index 38cbec756c..ceb646a170 100644 --- a/content/authentication/keeping-your-account-and-data-secure/sudo-mode.md +++ b/content/authentication/keeping-your-account-and-data-secure/sudo-mode.md @@ -63,6 +63,7 @@ To confirm access for sudo mode, you {% ifversion totp-and-mobile-sudo-challenge {%- endif %} {% ifversion passkeys %} + ## Confirming access using a passkey You must have a passkey registered to your account to confirm access to your account for sudo mode using a passkey. For more information, see "[AUTOTITLE](/authentication/authenticating-with-a-passkey/about-passkeys)" and "[AUTOTITLE](/authentication/authenticating-with-a-passkey/managing-your-passkeys)." diff --git a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication.md b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication.md index 2ed9535510..a3dd9970e8 100644 --- a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication.md +++ b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication.md @@ -51,6 +51,7 @@ If you've set up a security key on your account, and your browser supports secur 1. Select the appropriate option in the prompt. Depending on your security key configuration, you may type a PIN, complete a biometric prompt, or use a physical security key. {% ifversion passkeys %} + ### Using a passkey If you have enabled 2FA, and you have added a passkey to your account, you can use the passkey to sign in. Since passkeys satisfy both password and 2FA requirements, you can complete your sign in with a single step. For more information, see "[AUTOTITLE](/authentication/authenticating-with-a-passkey/about-passkeys)" and "[AUTOTITLE](/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey)." diff --git a/content/authentication/troubleshooting-ssh/error-permission-denied-publickey.md b/content/authentication/troubleshooting-ssh/error-permission-denied-publickey.md index 1c4b858669..d1fcd50206 100644 --- a/content/authentication/troubleshooting-ssh/error-permission-denied-publickey.md +++ b/content/authentication/troubleshooting-ssh/error-permission-denied-publickey.md @@ -78,7 +78,7 @@ $ ssh -T git@{% data variables.command_line.codeblock %} {% data reusables.desktop.windows_git_for_windows_turn_on_ssh_agent %} - {% indented_data_reference reusables.desktop.note-start-ssh-agent spaces=3 %} + {% data reusables.desktop.note-start-ssh-agent %} 1. Verify that you have a private key generated and loaded into SSH. diff --git a/content/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md b/content/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md index 8859b961c0..e603aa7c02 100644 --- a/content/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md +++ b/content/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md @@ -26,7 +26,7 @@ redirect_from: {% data reusables.codespaces.codespaces-free-for-personal-intro %} -Organizations can choose whether codespaces created from their repositories will be user-owned or organization-owned. For more information, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization)." An organization pays for a codespace if all the following things are true. +Organizations can choose whether codespaces created from their repositories will be user-owned or organization-owned. For more information, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization)." An organization pays for a codespace if all the following things are true. - The organization has chosen for codespaces to be organization-owned. {% data reusables.codespaces.when-an-org-pays %} @@ -218,7 +218,7 @@ Usage of codespaces created from a forked repository will be billed to your pers For example, consider a member, or outside collaborator, of an organization that has allowed billing for codespaces for that user. If the user has permission to fork an organization-owned private repository, they can subsequently create and use a codespace for the new repository at the organization's expense. This is because the organization is the owner of the parent repository. Note that the organization owner can remove the user's access to the private repository, the forked repository, and therefore also the codespace. The organization owner can also delete the parent repository which will also delete the forked repository. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-forking-policy-for-your-repository)." -{% data reusables.codespaces.prebuilds-billing-for-forks %} +{% data reusables.codespaces.prebuilds-billing-for-forks %} ## How billing is handled when a repository is transferred to another organization diff --git a/content/billing/managing-billing-for-github-marketplace-apps/downgrading-the-billing-plan-for-a-github-marketplace-app.md b/content/billing/managing-billing-for-github-marketplace-apps/downgrading-the-billing-plan-for-a-github-marketplace-app.md index 954182e530..551a31b88b 100644 --- a/content/billing/managing-billing-for-github-marketplace-apps/downgrading-the-billing-plan-for-a-github-marketplace-app.md +++ b/content/billing/managing-billing-for-github-marketplace-apps/downgrading-the-billing-plan-for-a-github-marketplace-app.md @@ -49,7 +49,7 @@ When you downgrade an app, your subscription remains active until the end of you {% data reusables.enterprise-accounts.access-enterprise %} {% data reusables.enterprise-accounts.billing-tab %} -1. In the "Marketplace apps" tab, find the app you want to downgrade. +1. In the "Marketplace apps" tab, find the app you want to downgrade. 1. Next to the organization where you want to downgrade the app, select **{% octicon "kebab-horizontal" aria-label="More" %}** and then click **Change plan**. 1. Select the **Edit your plan** dropdown and click an account's plan to edit. {% data reusables.marketplace.choose-new-plan %} diff --git a/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md b/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md index 8ca5c5e360..f82dba2015 100644 --- a/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md +++ b/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md @@ -78,7 +78,7 @@ To connect your Azure subscription, you must have owner permissions to the Azure 1. In the "Access" section of the sidebar, click **{% octicon "credit-card" aria-hidden="true" %} Billing and plans**. 1. Under "Billing Management", to the right of "Metered billing via Azure", click **Add Azure Subscription**. 1. To sign in to your Microsoft account, follow the prompts. -1. Review the "Permissions requested" prompt. If you agree with the terms, click **Accept**. +1. Review the "Permissions requested" prompt. If you agree with the terms, click **Accept**. {% data reusables.enterprise-accounts.azure-admin-approval-required-message %} 1. Under "Select a subscription", select the Azure Subscription ID that you want to connect to your enterprise. {% data reusables.enterprise-accounts.tenant-app-permissions %} diff --git a/content/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan.md b/content/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan.md index 563efe9d04..2489b7ef45 100644 --- a/content/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan.md +++ b/content/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan.md @@ -89,6 +89,7 @@ To reduce the number of paid seats your organization uses, you can remove member 1. Review the information about your new payment on your next billing date, then click **Remove seats**. {% ifversion ghec %} + ## Downgrading your enterprise account's plan Enterprise accounts are only available with {% data variables.product.prodname_enterprise %}, so it's not possible to downgrade an enterprise account to another plan. diff --git a/content/code-security/adopting-github-advanced-security-at-scale/introduction-to-adopting-github-advanced-security-at-scale.md b/content/code-security/adopting-github-advanced-security-at-scale/introduction-to-adopting-github-advanced-security-at-scale.md index ba1dc0c83e..e961a2f7c0 100644 --- a/content/code-security/adopting-github-advanced-security-at-scale/introduction-to-adopting-github-advanced-security-at-scale.md +++ b/content/code-security/adopting-github-advanced-security-at-scale/introduction-to-adopting-github-advanced-security-at-scale.md @@ -21,7 +21,7 @@ redirect_from: GHAS is a suite of tools that requires active participation from developers across your enterprise. To realize the best return on your investment, you must learn how to use, apply, and maintain GHAS. -We’ve created a phased approach to GHAS rollouts developed from industry and GitHub best practices. We expect most customers will want to follow these phases, based on our experience helping customers with a successful deployment of {% data variables.product.prodname_GH_advanced_security %}, but you may need to modify this approach to meet the needs of your company. +We’ve created a phased approach to GHAS rollouts developed from industry and GitHub best practices. We expect most customers will want to follow these phases, based on our experience helping customers with a successful deployment of {% data variables.product.prodname_GH_advanced_security %}, but you may need to modify this approach to meet the needs of your company. Enabling GHAS across a large organization can be broken down into six core phases. diff --git a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning.md b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning.md index b8a03c07af..b92b8f7066 100644 --- a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning.md +++ b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning.md @@ -163,10 +163,11 @@ For information on bulk enablement, see "[AUTOTITLE](/code-security/code-scannin ![Screenshot showing a starter workflow file open for editing. The "Documentation" button is highlighted with an orange outline.](/assets/images/help/security/actions-workflows-documentation.png) - For more information, see "[AUTOTITLE](/actions/using-workflows/using-starter-workflows#using-starter-workflows)" and "[AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning)." + For more information, see "[AUTOTITLE](/actions/learn-github-actions/using-starter-workflows#choosing-and-using-a-starter-workflow)" and "[AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning)." {% endif %} {% ifversion ghes < 3.5 %} + ## Reasons for the "Analysis not found" message If you used a pull request to add {% data variables.product.prodname_code_scanning %} to the repository, you will initially see an "Analysis not found" message when you click **Details** on the "{% data variables.product.prodname_code_scanning_caps %} results / TOOL NAME" check in a pull request. diff --git a/content/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning-at-scale.md b/content/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning-at-scale.md index 49581b87bb..e606509c82 100644 --- a/content/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning-at-scale.md +++ b/content/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning-at-scale.md @@ -54,6 +54,7 @@ If the code in a repository changes to include {% ifversion code-scanning-defaul {% endif %} {% ifversion org-enable-code-scanning %} + ## Configuring default setup for all eligible repositories in an organization Through the "Code security and analysis" page of your organization's settings, you can enable default setup for all eligible repositories in your organization. For more information on repository eligibility, see "[Eligible repositories for {% data variables.product.prodname_codeql %} default setup at scale](#eligible-repositories-default-setup)." @@ -80,6 +81,7 @@ Through the "Code security and analysis" page of your organization's settings, y {% data variables.product.prodname_code_scanning_caps %} is configured at the repository level. For more information, see "[AUTOTITLE](/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning)." {% endif %} {% ifversion code-security-multi-repo-enablement %} + ## Configuring default setup for a subset of repositories in an organization Through security overview for your organization, you can find eligible repositories for default setup, then enable default setup across each of those repositories simultaneously. For more information on repository eligibility, see "[Eligible repositories for {% data variables.product.prodname_codeql %} default setup at scale](#eligible-repositories-default-setup)." diff --git a/content/code-security/code-scanning/managing-your-code-scanning-configuration/editing-your-configuration-of-default-setup.md b/content/code-security/code-scanning/managing-your-code-scanning-configuration/editing-your-configuration-of-default-setup.md index 6455b89eff..0ede64957f 100644 --- a/content/code-security/code-scanning/managing-your-code-scanning-configuration/editing-your-configuration-of-default-setup.md +++ b/content/code-security/code-scanning/managing-your-code-scanning-configuration/editing-your-configuration-of-default-setup.md @@ -26,6 +26,7 @@ If your codebase depends on a library or framework that is not recognized by the If you need to change any other aspects of your {% data variables.product.prodname_code_scanning %} configuration, consider configuring advanced setup. For more information, see "[AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning)." {% ifversion code-scanning-without-workflow-310 %} + ## Customizing your existing configuration of default setup {% data reusables.repositories.navigate-to-repo %} @@ -38,6 +39,7 @@ If you need to change any other aspects of your {% data variables.product.prodna 1. To update your configuration, as well as run an initial analysis of your code with the new configuration, click **Save changes**. All future analyses will use your new configuration. {% else %} + ## Changing the selected query suite for your configuration of default setup {% data reusables.repositories.navigate-to-repo %} diff --git a/content/code-security/code-scanning/troubleshooting-code-scanning/out-of-disk-or-memory.md b/content/code-security/code-scanning/troubleshooting-code-scanning/out-of-disk-or-memory.md index dc40d3a38e..2bcf6625d0 100644 --- a/content/code-security/code-scanning/troubleshooting-code-scanning/out-of-disk-or-memory.md +++ b/content/code-security/code-scanning/troubleshooting-code-scanning/out-of-disk-or-memory.md @@ -18,11 +18,14 @@ versions: On very large projects, you may see `Error: "Out of disk"` or `Error: "Out of memory"` on self-hosted runners when running {% data variables.product.prodname_codeql %}. In this case, you may need to increase the memory or disk space available on your runners. You can review the recommended hardware resources for running {% data variables.product.prodname_codeql %} to make sure your self-hosted runners meet those requirements. For more information, see "[AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/recommended-hardware-resources-for-running-codeql)." {% else %} + ## Use self-hosted runners Self-hosted runners offer more control of hardware, operating system, and software tools than {% data variables.product.company_short %}-hosted runners can provide. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)." You can review the recommended hardware resources for running {% data variables.product.prodname_codeql %} to make sure your self-hosted runners meet those requirements. For more information, see "[AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/recommended-hardware-resources-for-running-codeql)." {% ifversion actions-hosted-runners %} + ## Use larger runners + You can use larger runners, which are {% data variables.product.company_short %}-hosted runners with more RAM, CPU, and disk space than standard runners. These runners have the runner application and other tools preinstalled. For more information about larger runners and the specifications you can use with them, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-larger-runners)."{% endif %} {% endif %} diff --git a/content/code-security/code-scanning/troubleshooting-sarif-uploads/missing-token.md b/content/code-security/code-scanning/troubleshooting-sarif-uploads/missing-token.md index 5d0e3fe402..e50d110b78 100644 --- a/content/code-security/code-scanning/troubleshooting-sarif-uploads/missing-token.md +++ b/content/code-security/code-scanning/troubleshooting-sarif-uploads/missing-token.md @@ -21,7 +21,7 @@ redirect_from: A GitHub token is required to upload SARIF results but none was specified ``` -This error is reported if the upload process does not reference an authentication method, or if that method has the wrong permission. The permissions required to upload SARIF file to a repository are the same no matter what process you use to upload the data. +This error is reported if the upload process does not reference an authentication method, or if that method has the wrong permission. The permissions required to upload SARIF file to a repository are the same no matter what process you use to upload the data. - Fine-grained {% data variables.product.pat_generic_plural %} require `write` scope for the repository. - Classic {% data variables.product.pat_generic_plural %} require `security_events` scope for the repository{% ifversion fpt or ghec %} for private or internal repositories. You can use tokens with the `public_repo` scope for public repositories.{% endif %} diff --git a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries.md b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries.md index 2c9fd38784..6b331b6b4a 100644 --- a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries.md +++ b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries.md @@ -80,6 +80,7 @@ codeql database analyze --format= \ --sarif-category= --output= \ {% ifversion codeql-packs %}{% else %}{% endif %} ``` + {% endnote %} You must specify ``, `--format`, and `--output`. You can specify additional options depending on what analysis you want to do. @@ -130,6 +131,7 @@ $ codeql database analyze /codeql-dbs/example-repo \ ``` {% ifversion code-scanning-tool-status-page %} + ### Adding file coverage information to your results for monitoring You can optionally submit file coverage information to {% data variables.product.product_name %} for display on the {% data variables.code-scanning.tool_status_page %} for {% data variables.product.prodname_code_scanning %}. For more information about file coverage information, see "[AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/about-the-tool-status-page#how-codeql-defines-scanned-files)." diff --git a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs.md b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs.md index 5f48654147..e2ebb1b611 100644 --- a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs.md +++ b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs.md @@ -49,6 +49,7 @@ The other files and directories within the pack should be logically organized. F their own top-level directories. {% ifversion codeql-packs %} + ## Downloading and using {% data variables.product.prodname_codeql %} query packs The {% data variables.product.prodname_codeql_cli %} bundle includes queries that are maintained by {% data variables.product.company_short %} experts, security researchers, and community contributors. If you want to run queries developed by other organizations, {% data variables.product.prodname_codeql %} query packs provide an efficient and reliable way to download and run queries{% ifversion codeql-model-packs-java %}, while model packs (beta) can be used to expand {% data variables.product.prodname_code_scanning %} analysis to recognize libraries and frameworks that are not supported by default{% endif %}. For more information about query packs, see "[AUTOTITLE](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql#about-codeql-queries)." {% ifversion codeql-model-packs-java %} For information about writing your own model packs, see "[AUTOTITLE](/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-and-working-with-codeql-packs#creating-a-model-pack)."{% endif %} @@ -190,6 +191,7 @@ For more information about writing your own model packs, see "[AUTOTITLE](/code- {% endif %} {% ifversion query-pack-compatibility %} + ### About published packs When a pack is published for use in analyses, the `codeql pack create` or `codeql pack publish` command verifies that the content is complete and also adds some additional pieces of content to it: diff --git a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli.md b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli.md index 1ed2f6d110..59c8443d80 100644 --- a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli.md +++ b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli.md @@ -113,6 +113,7 @@ After you extract the {% data variables.product.prodname_codeql_cli %} bundle, y - `//codeql/codeql resolve qlpacks` otherwise. Extract from successful output: + ```shell codeql/cpp-all (//qlpacks/codeql/cpp-all/) codeql/cpp-examples (//qlpacks/codeql/cpp-examples/) diff --git a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github.md b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github.md index f07b272228..ce18f1553d 100644 --- a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github.md +++ b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github.md @@ -76,6 +76,7 @@ codeql github upload-results \ There is no output from this command unless the upload was unsuccessful. The command prompt returns when the upload is complete and data processing has begun. On smaller codebases, you should be able to explore the {% data variables.product.prodname_code_scanning %} alerts in {% data variables.product.product_name %} shortly afterward. You can see alerts directly in the pull request or on the **Security** tab for branches, depending on the code you checked out. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests)" and "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/managing-code-scanning-alerts-for-your-repository)." {% ifversion code-scanning-tool-status-page %} + ## Uploading diagnostic information to {% data variables.product.product_name %} if the analysis fails When {% data variables.product.prodname_codeql_cli %} finishes analyzing a database successfully, it gathers diagnostic information such as file coverage, warnings, and errors, and includes it in the SARIF file with the results. When you upload the SARIF file to {% data variables.product.company_short %} the diagnostic information is displayed on the {% data variables.product.prodname_code_scanning %} {% data variables.code-scanning.tool_status_page %} for the repository to make it easy to see how well {% data variables.product.prodname_codeql %} is working and debug any problems. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/about-the-tool-status-page)." diff --git a/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs.md b/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs.md index fe212f0780..f73af76a04 100644 --- a/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs.md +++ b/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs.md @@ -34,6 +34,7 @@ default-suite-file: default-queries.qls # optional, a pointer to a query-suite i license: # optional, the license under which the pack is published dependencies: # map from CodeQL pack name to version range ``` + - `name:` must follow the `/` format, where `` is the {% data variables.product.prodname_dotcom %} organization that you will publish to and is the name for the pack. - A maximum of one of `default-suite` or `default-suite-file` is allowed. These are two different ways to define a default query suite to be run, the first by specifying queries directly in the qlpack.yml file and the second by specifying a query suite in the pack. @@ -207,6 +208,7 @@ The following properties are supported in `qlpack.yml` files. - Required by all packs. - Defines the scope of the pack, where the {% data variables.product.prodname_codeql %} pack is published, and the name of the pack defined using alphanumeric characters and hyphens. It must be unique as {% data variables.product.prodname_codeql %} cannot differentiate between {% data variables.product.prodname_codeql %} packs with identical names. Use the pack name to specify queries to run using `database analyze` and to define dependencies between {% data variables.product.prodname_codeql %} packs (see examples below). For example: + ```yaml name: octo-org/security-queries ``` @@ -215,11 +217,13 @@ The following properties are supported in `qlpack.yml` files. - Required by all packs that are published. - Defines a semantic version for this {% data variables.product.prodname_codeql %} pack that must adhere to the [SemVer v2.0.0 specification](https://semver.org/spec/v2.0.0.html). For example: + ```yaml version: 0.0.0 ``` {% ifversion codeql-model-packs-java %} + #### `dataExtensions` - Required by model packs. @@ -230,6 +234,7 @@ The following properties are supported in `qlpack.yml` files. - Required by query and library packs that define {% data variables.product.prodname_codeql %} package dependencies on other packs. Model packs cannot define any dependencies and use `extensionTargets` instead. - Defines a map from pack references to the semantic version range that is compatible with this pack. Supported for {% data variables.product.prodname_codeql_cli %} versions v2.6.0 and later. For example: + ```yaml dependencies: codeql/cpp-all: ^0.0.2 @@ -239,6 +244,7 @@ The following properties are supported in `qlpack.yml` files. - Required by packs that export a set of default queries to run. - Defines the path to a query suite file relative to the package root, containing all of the queries that are run by default when this pack is passed to the `codeql database analyze` command. Supported from CLI version v2.6.0 and onwards. Only one of `defaultSuiteFile` or `defaultSuite` can be defined. For example: + ```yaml defaultSuiteFile: cpp-code-scanning.qls ``` @@ -247,6 +253,7 @@ The following properties are supported in `qlpack.yml` files. - Required by packs that export a set of default queries to run. - Defines an inlined query suite containing all of the queries that are run by default when this pack is passed to the `codeql database analyze` command. Supported from CLI version v2.6.0 and onwards. Only one of `defaultSuiteFile` or `defaultSuite` can be defined. For example: + ```yaml defaultSuite: queries: . @@ -255,6 +262,7 @@ The following properties are supported in `qlpack.yml` files. ``` {% ifversion codeql-model-packs-java %} + #### `extensionTargets` - Required by model packs. @@ -283,6 +291,7 @@ The following properties are supported in `qlpack.yml` files. - Required by library packs. - Defines a boolean value that indicates whether or not this pack is a library pack. Library packs do not contain queries and are not compiled. Query packs can ignore this field or explicitly set it to `false`. For example: + ```yaml library: true ``` @@ -291,68 +300,88 @@ The following properties are supported in `qlpack.yml` files. - Optional for packs that define query suites. - Defines the path to a directory in the pack that contains the query suites you want to make known to the {% data variables.product.prodname_codeql_cli %}, defined relative to the pack directory. {% data variables.product.prodname_codeql %} pack users can run "well-known" suites stored in this directory by specifying the pack name, without providing their full path. This is not supported for {% data variables.product.prodname_codeql %} packs downloaded from the Container registry. For more information about query suites, see "[AUTOTITLE](/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-codeql-query-suites)." For example: + ```yaml suites: octo-org-query-suites ``` #### `tests` + - Optional for packs containing {% data variables.product.prodname_codeql %} tests. Ignored for packs without tests. - Defines the path to a directory within the pack that contains tests, defined relative to the pack directory. Use `.` to specify the whole pack. Any queries in this directory are run as tests when `test run` is run with the `--strict-test-discovery` option. These queries are ignored by query suite definitions that use `queries` or `qlpack` instructions to ask for all queries in a particular pack. If this property is missing, then `.` is assumed. For example: + ```yaml tests: . ``` #### `extractor` + - Required by all packs containing {% data variables.product.prodname_codeql %} tests. - Defines the {% data variables.product.prodname_codeql %} language extractor to use when running the {% data variables.product.prodname_codeql %} tests in the pack. For more information about testing queries, see "[AUTOTITLE](/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/testing-custom-queries)." For example: + ```yaml extractor: javascript ``` #### `authors` + - Optional. - Defines metadata that will be displayed on the packaging search page in the packages section of the account that the {% data variables.product.prodname_codeql %} pack is published to. For example: + ```yaml authors: author1@github.com,author2@github.com ``` #### `license` + - Optional. - Defines metadata that will be displayed on the packaging search page in the packages section of the account that the {% data variables.product.prodname_codeql %} pack is published to. For a list of allowed licenses, see [SPDX License List](https://spdx.org/licenses/) in the SPDX Specification. For example: + ```yaml license: MIT ``` #### `description` + - Optional. - Defines metadata that will be displayed on the packaging search page in the packages section of the account that the {% data variables.product.prodname_codeql %} pack is published to. For example: + ```yaml description: Human-readable description of the contents of the {% data variables.product.prodname_codeql %} pack. ``` #### `libraryPathDependencies` + - Optional, deprecated. Use the `dependencies` property instead. - Previously used to define the names of any {% data variables.product.prodname_codeql %} packs that this {% data variables.product.prodname_codeql %} pack depends on, as an array. This gives the pack access to any libraries, database schema, and query suites defined in the dependency. For example: + ```yaml libraryPathDependencies: codeql/javascript-all ``` #### `dbscheme` + - Required by core language packs only. - Defines the path to the [database schema](https://codeql.github.com/docs/codeql-overview/codeql-glossary/#codeql-database-schema) for all libraries and queries written for this {% data variables.product.prodname_codeql %} language (see example below). For example: + ```yaml dbscheme: semmlecode.python.dbscheme ``` + #### `upgrades` + - Required by core language packs only. - Defines the path to a directory within the pack that contains database upgrade scripts, defined relative to the pack directory. Database upgrades are used internally to ensure that a database created with a different version of the {% data variables.product.prodname_codeql_cli %} is compatible with the current version of the CLI. For example: + ```yaml upgrades: . ``` #### `warnOnImplicitThis` + - Optional. Defaults to `false` if the `warnOnImplicitThis` property is not defined. - Defines a boolean that specifies whether or not the compiler should emit warnings about member predicate calls with implicit `this` call receivers, that is, without an explicit receiver. Supported from {% data variables.product.prodname_codeql_cli %} version 2.13.2 and onwards. For example: + ```yaml warnOnImplicitThis: true ``` diff --git a/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/testing-custom-queries.md b/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/testing-custom-queries.md index c00aedbcf4..4dafc1d376 100644 --- a/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/testing-custom-queries.md +++ b/content/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/testing-custom-queries.md @@ -144,7 +144,7 @@ other custom queries. For example, `custom-queries/java/queries/EmptyThen.ql`. 1. Create a {% data variables.product.prodname_codeql %} pack for your Java tests by adding a `qlpack.yml` file with the following contents to `custom-queries/java/tests`, updating the `dependencies` to match the name of your {% data variables.product.prodname_codeql %} pack of custom queries: - {% indented_data_reference reusables.codeql-cli.test-qlpack spaces=3 %} + {% data reusables.codeql-cli.test-qlpack %} 1. Run `codeql pack install` in the root of the test directory. This generates a `codeql-pack.lock.yml` file that specifies all of the transitive dependencies required to run queries in this pack. @@ -232,5 +232,6 @@ into {% data variables.product.prodname_codeql %} for VS Code, execute `EmptyThe `Test.java` example code. For more information, see "[Analyzing your projects](https://codeql.github.com/docs/codeql-for-visual-studio-code/analyzing-your-projects/#analyzing-your-projects)" in the {% data variables.product.prodname_codeql %} for VS Code help. ## Further reading + - "[{% data variables.product.prodname_codeql %} queries](https://codeql.github.com/docs/writing-codeql-queries/codeql-queries/#codeql-queries)" - "[Testing {% data variables.product.prodname_codeql %} queries in Visual Studio Code](https://codeql.github.com/docs/codeql-for-visual-studio-code/testing-codeql-queries-in-visual-studio-code/#testing-codeql-queries-in-visual-studio-code)." diff --git a/content/code-security/dependabot/dependabot-alert-rules/about-dependabot-alert-rules.md b/content/code-security/dependabot/dependabot-alert-rules/about-dependabot-alert-rules.md new file mode 100644 index 0000000000..876176f464 --- /dev/null +++ b/content/code-security/dependabot/dependabot-alert-rules/about-dependabot-alert-rules.md @@ -0,0 +1,46 @@ +--- +title: About Dependabot alert rules +intro: 'You can use {% data variables.product.prodname_dependabot %} alert rules to auto-triage alerts, so you can reduce false positives and better prioritize the alerts that you''re interested in.' +permissions: 'People with write permissions can view {% data variables.product.prodname_dependabot %} alert rules for the repository. People with with admin permissions to a repository, or the security manager role for the repository, can enable or disable {% data variables.product.prodname_dependabot %} alert rules for the repository{% ifversion dependabot-alert-custom-rules-repo-level %}, as well as create custom alert rules{% endif %}.' +versions: + feature: dependabot-alert-rules-auto-dismissal-npm-dev-dependencies +type: overview +topics: + - Dependabot + - Alerts + - Vulnerabilities + - Repositories + - Dependencies +shortTitle: About alert rules +redirect_from: + - /code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts +--- + +{% data reusables.dependabot.github-alert-rules-beta %} + +## About {% data variables.product.prodname_dependabot %} alert rules + +{% data variables.product.prodname_dependabot %} alert rules allow you to instruct {% data variables.product.prodname_dependabot %} to automatically dismiss or reopen certain alerts, based on complex logic from a variety of contextual criteria. + +{% ifversion dependabot-alert-custom-rules-repo-level %} +There are two types of {% data variables.product.prodname_dependabot %} alert rules: + +- A {% data variables.product.company_short %}-curated rule, called `Dismiss low impact alerts` +- User-created custom rules + +The {% data variables.product.company_short %}-curated rule, `Dismiss low impact alerts`, auto-dismisses certain types of vulnerabilities that are found in npm dependencies used in development. The rule has been curated to reduce false positives and reduce alert fatigue. The rule is enabled by default for public repositories and can be opted into for private repositories. However, you cannot modify {% data variables.product.company_short %}-curated rules. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alert-rules/using-github-curated-alert-rules-to-prioritize-dependabot-alerts)." + +With user-created custom rules, you can create your own rules to automatically dismiss or reopen alerts based on your own criteria, such as severity, package name, CWE, and more. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alert-rules/customizing-alert-rules-to-prioritize-dependabot-alerts)."{% endif %} + +Whilst you may find it useful to auto-dismiss alerts, you can still reopen auto-dismissed alerts and filter to see which alerts have been auto-dismissed. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alert-rules/managing-automatically-dismissed-alerts)." + +Additionally, auto-dismissed alerts are still available for reporting and reviewing, and can be auto-reopened if the alert metadata changes, for example: +- If you change the scope of a dependency from development to production. +- If {% data variables.product.company_short %} modifies certain metadata for the related advisory. + +Auto-dismissed alerts are defined by the `resolution:auto-dismiss` close reason. Automatic dismissal activity is included in alert webhooks, REST and GraphQL APIs, and the audit log. For more information, see "[AUTOTITLE](/rest/dependabot/alerts)" in the REST API documentation, and the "`repository_vulnerability_alert`" section in "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#repository_vulnerability_alert-category-actions)." + +## Further reading + +- [AUTOTITLE](/code-security/dependabot/dependabot-alert-rules/using-github-curated-alert-rules-to-prioritize-dependabot-alerts) +- [AUTOTITLE](/code-security/dependabot/dependabot-alert-rules/customizing-alert-rules-to-prioritize-dependabot-alerts) diff --git a/content/code-security/dependabot/dependabot-alert-rules/customizing-alert-rules-to-prioritize-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alert-rules/customizing-alert-rules-to-prioritize-dependabot-alerts.md new file mode 100644 index 0000000000..48ea67eeff --- /dev/null +++ b/content/code-security/dependabot/dependabot-alert-rules/customizing-alert-rules-to-prioritize-dependabot-alerts.md @@ -0,0 +1,52 @@ +--- +title: Customizing alert rules to prioritize Dependabot alerts +intro: 'You can create your own alert rules to auto-triage alerts.' +permissions: 'People with write permissions can view {% data variables.product.prodname_dependabot %} alert rules for the repository. People with with admin permissions to a repository, or the security manager role for the repository, can enable or disable {% data variables.product.prodname_dependabot %} alert rules for the repository{% ifversion dependabot-alert-custom-rules-repo-level %}, as well as create custom alert rules{% endif %}' +product: '{% data reusables.gated-features.dependabot-alert-rules %}' +versions: + feature: dependabot-alert-rules-auto-dismissal-npm-dev-dependencies +type: how_to +topics: + - Dependabot + - Alerts + - Vulnerabilities + - Repositories + - Dependencies +shortTitle: Custom alert rules +--- + +{% data reusables.dependabot.github-alert-rules-beta %} + +## About custom alert rules + +You can create your own {% data variables.product.prodname_dependabot %} alert rules based on alert criteria. You can choose to auto-dismiss alerts indefinitely, or snooze alerts until a patch becomes available. Since any rules that you create apply to both future and current alerts, you can also use alert rules to manage your {% data variables.product.prodname_dependabot_alerts %} in bulk. + +You can create rules using the following criteria: + +- Dependency scope (`devDependency` or `runtime`) +- Package name +- CWE +- Severity +- Patch availability +- Manifest path +- Ecosystem + +## Adding a custom rule to your repository + +You can add a custom rule to your {% ifversion fpt %}public and private{% elsif ghec or ghes %}public, private, and internal{% endif %} repositories. + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-settings %} +{% data reusables.repositories.navigate-to-code-security-and-analysis %} +1. Under "{% data variables.product.prodname_dependabot_alerts %}", click {% octicon "gear" aria-label="The Gear icon" %} close to "{% data variables.product.prodname_dependabot %} rules". + + ![Screenshot of the "Code security and analysis" page for a repository. The gear icon is highlighted with an orange outline.](/assets/images/help/repository/dependabot-rules-page.png) + +1. Click **New ruleset**. + + ![Screenshot of the "Code security and analysis" page for a repository. The gear icon is highlighted with an orange outline.](/assets/images/help/repository/dependabot-rules-new-ruleset.png) + +1. Under "Name", describe what this rule will do. +1. Under "Alert criteria", select the criteria you want to use to filter alerts. +1. Under "Rules", select the action you want to take on alerts that match the criteria. +1. Click **Create rule**. diff --git a/content/code-security/dependabot/dependabot-alert-rules/index.md b/content/code-security/dependabot/dependabot-alert-rules/index.md new file mode 100644 index 0000000000..8136e1eaaa --- /dev/null +++ b/content/code-security/dependabot/dependabot-alert-rules/index.md @@ -0,0 +1,21 @@ +--- +title: Prioritizing Dependabot alerts with Dependabot alert rules +shortTitle: Dependabot alert rules +intro: 'You can use {% data variables.product.prodname_dependabot %} alert rules to auto-triage {% data variables.product.prodname_dependabot_alerts %}.' +allowTitleToDifferFromFilename: true +versions: + feature: dependabot-alert-rules-auto-dismissal-npm-dev-dependencies +topics: + - Dependabot + - Alerts + - Vulnerabilities + - Repositories + - Dependencies +children: + - /about-dependabot-alert-rules + - /using-github-curated-alert-rules-to-prioritize-dependabot-alerts + - /customizing-alert-rules-to-prioritize-dependabot-alerts + - /managing-automatically-dismissed-alerts +--- + +{% data reusables.dependabot.github-alert-rules-beta %} diff --git a/content/code-security/dependabot/dependabot-alert-rules/managing-automatically-dismissed-alerts.md b/content/code-security/dependabot/dependabot-alert-rules/managing-automatically-dismissed-alerts.md new file mode 100644 index 0000000000..f1cf30952b --- /dev/null +++ b/content/code-security/dependabot/dependabot-alert-rules/managing-automatically-dismissed-alerts.md @@ -0,0 +1,39 @@ +--- +title: Managing alerts that have been automatically dismissed by an alert rule +intro: 'You can filter to see which alerts have been auto-dismissed by an alert rule, and you can reopen dismissed alerts.' +allowTitleToDifferFromFilename: true +versions: + feature: dependabot-alert-rules-auto-dismissal-npm-dev-dependencies +type: how_to +topics: + - Dependabot + - Alerts + - Vulnerabilities + - Repositories + - Dependencies +shortTitle: Manage auto-dismissed alerts +--- + +{% data reusables.dependabot.github-alert-rules-beta %} + +## Managing automatically dismissed alerts + +{% note %} + +**Note:** The {% data variables.product.prodname_dependabot_alerts %} page defaults to showing open alerts. To filter and view auto-dismissed alerts, you must first clear the `is:open` default filter from the view. + +{% endnote %} + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-security %} +1. To filter to see all closed alerts, click **{% octicon "check" aria-hidden="true" %} Closed**. Alternatively, use the `is:closed` filter query in the search bar. + + ![Screenshot of the "Dependabot Alerts" page. A button, labelled "Closed" is highlighted with an orange outline.](/assets/images/help/repository/dependabot-alerts-closed-tab.png) + +1. To see all auto-dismissed alerts, select **Closed as**, then in the dropdown menu, click **Auto-dismissed**. + + ![Screenshot of the "Dependabot Alerts" page. A button, labelled "Closed as" is highlighted with an orange outline.](/assets/images/help/repository/dependabot-alerts-closed-as.png) + +1. To reopen an auto-dismissed alert, to the left of the alert title, click the checkbox adjacent to the alert, then click **Reopen**. + + ![Screenshot of an alert title on the "Dependabot Alerts" page. To the left of the alert, a checkbox is highlighted in an orange outline.](/assets/images/help/repository/dependabot-reopen-closed-alert.png) diff --git a/content/code-security/dependabot/dependabot-alert-rules/using-github-curated-alert-rules-to-prioritize-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alert-rules/using-github-curated-alert-rules-to-prioritize-dependabot-alerts.md new file mode 100644 index 0000000000..294dea85ad --- /dev/null +++ b/content/code-security/dependabot/dependabot-alert-rules/using-github-curated-alert-rules-to-prioritize-dependabot-alerts.md @@ -0,0 +1,95 @@ +--- +title: Using GitHub-curated alert rules to prioritize Dependabot alerts +intro: 'You can use a {% data variables.product.company_short %}-curated alert rule to auto-dismiss low impact development alerts for npm dependencies.' +permissions: 'People with write permissions can view {% data variables.product.prodname_dependabot %} alert rules for the repository. People with with admin permissions to a repository, or the security manager role for the repository, can enable or disable {% data variables.product.prodname_dependabot %} alert rules for the repository.' +versions: + feature: dependabot-alert-rules-auto-dismissal-npm-dev-dependencies +type: how_to +topics: + - Dependabot + - Alerts + - Vulnerabilities + - Repositories + - Dependencies +shortTitle: GitHub-curated alert rules +--- + +{% data reusables.dependabot.github-alert-rules-beta %} + +## About {% data variables.product.company_short %}-curated alert rules + +The {% data variables.product.company_short %}-curated alert rule, `Dismiss low impact alerts`, auto-dismisses certain types of vulnerabilities that are found in npm dependencies used in development. These alerts cover cases that feel like false alarms to most developers as the associated vulnerabilities: + +- Are unlikely to be exploitable in a developer (non-production or runtime) environment. +- May relate to resource management, programming and logic, and information disclosure issues. +- At worst, have limited effects like slow builds or long-running tests. +- Are not indicative of issues in production. + +{% note %} + +**Note:** Automatic dismissal of low impact development alerts is currently only supported for npm. + +{% endnote %} + +The {% data variables.product.company_short %}-curated `Dismiss low impact alerts` rule includes vulnerabilities relating to resource management, programming and logic, and information disclosure issues. For more information, see "[Publicly disclosed CWEs used by the `Dismiss low impact alerts` rule](#publicly-disclosed-cwes-used-by-the-dismiss-low-impact-alerts-rule)." + +Filtering out these low impact alerts allows you to focus on alerts that matter to you, without having to worry about missing potentially high-risk development-scoped alerts. + +By default, {% data variables.product.company_short %}-curated {% data variables.product.prodname_dependabot %} alert rules are enabled on public repositories and disabled for private repositories. Administrators of private repositories can opt in by enabling alert rules for their repository. + +## Enabling the `Dismiss low impact alerts` rule for your private repository + +{% ifversion fpt or ghec %}You first need to enable {% data variables.product.prodname_dependabot_alerts %} for the repository. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts#managing-dependabot-alerts-for-your-repository)."{% elsif ghes %}{% data variables.product.prodname_dependabot_alerts %} for your repository can be enabled or disabled by your enterprise owner. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)."{% endif %} + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-settings %} +{% data reusables.repositories.navigate-to-code-security-and-analysis %} +{% ifversion dependabot-alert-custom-rules-repo-level %} +1. Under "{% data variables.product.prodname_dependabot_alerts %}", click {% octicon "gear" aria-label="The Gear icon" %} close to "{% data variables.product.prodname_dependabot %} rules". + + ![Screenshot of the "Code security and analysis" page for a repository. The gear icon is highlighted with an orange outline.](/assets/images/help/repository/dependabot-rules-page.png) + +1. Select **Dismiss low impact alerts**. +1. Click **Save rules**. +{% else %} +1. Under "{% data variables.product.prodname_dependabot_alerts %}", click **Dismiss low impact alerts**. + + ![Screenshot of the "Code security and analysis" page for a repository. The "Dismiss low impact alerts" option is highlighted with an orange outline.](/assets/images/help/repository/enable-autodismissal-low-impact-dependabot-alerts.png) + +{% endif %} + +## Publicly disclosed CWEs used by the `Dismiss low impact alerts` rule + +Along with the `ecosystem:npm` and `scope:development` alert metadata, we use the following {% data variables.product.company_short %}-curated Common Weakness Enumerations (CWEs) to filter out low impact alerts for the `Dismiss low impact alerts` rule. We regularly improve this list and vulnerability patterns covered by built-in rules. + +### Resource Management Issues + +- CWE-400 Uncontrolled Resource Consumption +- CWE-770 Allocation of Resources Without Limits or Throttling +- CWE-409 Improper Handling of Highly Compressed Data (Data Amplification) +- CWE-908 Use of Uninitialized Resource +- CWE-1333 Inefficient Regular Expression Complexity +- CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop') +- CWE-674 Uncontrolled Recursion +- CWE-1119 Excessive Use of Unconditional Branching + +### Programming and Logic Errors + +- CWE-185 Incorrect Regular Expression +- CWE-754 Improper Check for Unusual or Exceptional Conditions +- CWE-755 Improper Handling of Exceptional Conditions +- CWE-248 Uncaught Exception +- CWE-252 Unchecked Return Value +- CWE-391 Unchecked Error Condition +- CWE-696 Incorrect Behavior Order +- CWE-1254 Incorrect Comparison Logic Granularity +- CWE-665 Improper Initialization +- CWE-703 Improper Check or Handling of Exceptional Conditions +- CWE-178 Improper Handling of Case Sensitivity + +### Information Disclosure Issues + +- CWE-544 Missing Standardized Error Handling Mechanism +- CWE-377 Insecure Temporary File +- CWE-451 User Interface (UI) Misrepresentation of Critical Information +- CWE-668 Exposure of Resource to Wrong Sphere diff --git a/content/code-security/dependabot/dependabot-alerts/index.md b/content/code-security/dependabot/dependabot-alerts/index.md index e75fedf26d..8b67f56655 100644 --- a/content/code-security/dependabot/dependabot-alerts/index.md +++ b/content/code-security/dependabot/dependabot-alerts/index.md @@ -18,7 +18,5 @@ children: - /about-dependabot-alerts - /configuring-dependabot-alerts - /viewing-and-updating-dependabot-alerts - - /using-alert-rules-to-prioritize-dependabot-alerts - /configuring-notifications-for-dependabot-alerts --- - diff --git a/content/code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts.md deleted file mode 100644 index c372b8d52f..0000000000 --- a/content/code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Using alert rules to prioritize Dependabot alerts -intro: 'You can use {% data variables.product.prodname_dependabot %} alert rules to filter out false positive alerts or alerts you''re not interested in.' -permissions: 'People with write permissions can view {% data variables.product.prodname_dependabot %} alert rules for the repository. People with with admin permissions to a repository, or the security manager role for the repository, can enable or disable {% data variables.product.prodname_dependabot %} alert rules for the repository{% ifversion dependabot-alert-custom-rules-repo-level %}, as well as create custom alert rules{% endif %}.' -versions: - feature: dependabot-alert-rules-auto-dismissal-npm-dev-dependencies -type: how_to -topics: - - Dependabot - - Alerts - - Vulnerabilities - - Repositories - - Dependencies -shortTitle: Alert rules ---- - -{% data reusables.dependabot.github-alert-rules-beta %} - -## About {% data variables.product.prodname_dependabot %} alert rules - -{% data variables.product.prodname_dependabot %} alert rules allow you to instruct {% data variables.product.prodname_dependabot %} to automatically dismiss or reopen certain alerts, based on complex logic from a variety of contextual criteria. - -{% ifversion dependabot-alert-custom-rules-repo-level %} -There are two types of {% data variables.product.prodname_dependabot %} alert rules: - -- {% data variables.product.company_short %}-curated rules -- User-created custom rules - -{% data variables.product.company_short %}-curated rules are enabled by default for public repositories and can be opted into for private repositories. However, it's important to note that you cannot modify the {% data variables.product.company_short %}-curated rules. With user-created custom rules, you can create your own rules to automatically dismiss or reopen alerts based on your own criteria.{% endif %} - -Whilst you may find it useful to auto-dismiss low impact alerts, you can still reopen auto-dismissed alerts and filter to see which alerts have been auto-dismissed. For more information, see "[Managing automatically dismissed alerts](#managing-automatically-dismissed-alerts)." - -Additionally, auto-dismissed alerts are still available for reporting and reviewing, and can be auto-reopened if the alert metadata changes, for example: -- If you change the scope of a dependency from development to production. -- If {% data variables.product.company_short %} modifies certain metadata for the related advisory. - -Auto-dismissed alerts are defined by the `resolution:auto-dismiss` close reason. Automatic dismissal activity is included in alert webhooks, REST and GraphQL APIs, and the audit log. For more information, see "[AUTOTITLE](/rest/dependabot/alerts)" in the REST API documentation, and the "`repository_vulnerability_alert` " section in "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#repository_vulnerability_alert)." - -## About {% data variables.product.company_short %}-curated rules - -{% note %} - -**Note:** Automatic dismissal of low impact development alerts is currently only supported for npm. - -{% endnote %} - -When enabled, the built-in `Dismiss low impact alerts` rule auto-dismisses certain types of vulnerabilities that are found in npm dependencies used in development. These alerts cover cases that feel like false alarms to most developers as the associated vulnerabilities: - -- Are unlikely to be exploitable in a developer (non-production or runtime) environment. -- May relate to resource management, programming and logic, and information disclosure issues. -- At worst, have limited effects like slow builds or long-running tests. -- Are not indicative of issues in production. - -This {% data variables.product.company_short %}-curated `Dismiss low impact alerts` rule includes vulnerabilities relating to resource management, programming and logic, and information disclosure issues. For more information, see "[Publicly disclosed CWEs used by the `Dismiss low impact alerts` rule](#publicly-disclosed-cwes-used-by-the-dismiss-low-impact-alerts-rule)." - -Filtering out these low impact alerts allows you to focus on alerts that matter to you, without having to worry about missing potentially high-risk development-scoped alerts. - -By default, {% data variables.product.company_short %}-curated {% data variables.product.prodname_dependabot %} alert rules are enabled on public repositories and disabled for private repositories. Administrators of private repositories can opt in by enabling alert rules for their repository. - -### Enabling the `Dismiss low impact alerts` rule for your private repository - -{% ifversion fpt or ghec %}You first need to enable {% data variables.product.prodname_dependabot_alerts %} for the repository. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts#managing-dependabot-alerts-for-your-repository)."{% elsif ghes %}{% data variables.product.prodname_dependabot_alerts %} for your repository can be enabled or disabled by your enterprise owner. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)."{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-code-security-and-analysis %} -{% ifversion dependabot-alert-custom-rules-repo-level %} -1. Under "{% data variables.product.prodname_dependabot_alerts %}", click {% octicon "gear" aria-label="The Gear icon" %} close to "{% data variables.product.prodname_dependabot %} rules". - - ![Screenshot of the "Code security and analysis" page for a repository. The gear icon is highlighted with an orange outline.](/assets/images/help/repository/dependabot-rules-page.png) - -1. Select **Dismiss low impact alerts**. -1. Click **Save rules**. -{% else %} -1. Under "{% data variables.product.prodname_dependabot_alerts %}", click **Dismiss low impact alerts**. - - ![Screenshot of the "Code security and analysis" page for a repository. The "Dismiss low impact alerts" option is highlighted with an orange outline.](/assets/images/help/repository/enable-autodismissal-low-impact-dependabot-alerts.png) - -{% endif %} - -{% ifversion dependabot-alert-custom-rules-repo-level %} -## About user-created custom rules - -You can create your own {% data variables.product.prodname_dependabot %} alert rules based on alert criteria. - -- Dependency scope (`devDependency` or `runtime`) -- Package name -- CWE -- Severity -- Patch availability -- Manifest path -- Ecosystem - -### Adding a custom rule to your repository - -You can add a custom rule to your {% ifversion fpt %}public and private{% elsif ghec or ghes %}public, private, and internal{% endif %} repositories. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-code-security-and-analysis %} -1. Under "{% data variables.product.prodname_dependabot_alerts %}", click {% octicon "gear" aria-label="The Gear icon" %} close to "{% data variables.product.prodname_dependabot %} rules". - - ![Screenshot of the "Code security and analysis" page for a repository. The gear icon is highlighted with an orange outline.](/assets/images/help/repository/dependabot-rules-page.png) - -1. Click **New ruleset**. - - ![Screenshot of the "Code security and analysis" page for a repository. The gear icon is highlighted with an orange outline.](/assets/images/help/repository/dependabot-rules-new-ruleset.png) - -1. Under "Name", describe what this rule will do. -1. Under "Alert criteria", select the criteria you want to use to filter alerts. -1. Under "Rules", select the action you want to take on alerts that match the criteria. -1. Click **Create rule**. - -{% endif %} - -## Managing automatically dismissed alerts - -You can filter to see which alerts have been auto-dismissed, and you can reopen dismissed alerts. - -{% note %} - -**Note:** The {% data variables.product.prodname_dependabot_alerts %} page defaults to showing open alerts. To filter and view auto-dismissed alerts, you must first clear the `is:open` default filter from the view. - -{% endnote %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -1. To filter to see all closed alerts, click **{% octicon "check" aria-hidden="true" %} Closed**. Alternatively, use the `is:closed` filter query in the search bar. - - ![Screenshot of the "Dependabot Alerts" page. A button, labelled "Closed" is highlighted with an orange outline.](/assets/images/help/repository/dependabot-alerts-closed-tab.png) - -1. To see all auto-dismissed alerts, select **Closed as**, then in the dropdown menu, click **Auto-dismissed**. - - ![Screenshot of the "Dependabot Alerts" page. A button, labelled "Closed as" is highlighted with an orange outline.](/assets/images/help/repository/dependabot-alerts-closed-as.png) - -1. To reopen an auto-dismissed alert, to the left of the alert title, click the checkbox adjacent to the alert, then click **Reopen**. - - ![Screenshot of an alert title on the "Dependabot Alerts" page. To the left of the alert, a checkbox is highlighted in an orange outline.](/assets/images/help/repository/dependabot-reopen-closed-alert.png) - -## Publicly disclosed CWEs used by the `Dismiss low impact alerts` rule - -Along with the `ecosystem:npm` and `scope:development` alert metadata, we use the following {% data variables.product.company_short %}-curated Common Weakness Enumerations (CWEs) to filter out low impact alerts for the `Dismiss low impact alerts` rule. We regularly improve this list and vulnerability patterns covered by built-in rules. - -### Resource Management Issues - -- CWE-400 Uncontrolled Resource Consumption -- CWE-770 Allocation of Resources Without Limits or Throttling -- CWE-409 Improper Handling of Highly Compressed Data (Data Amplification) -- CWE-908 Use of Uninitialized Resource -- CWE-1333 Inefficient Regular Expression Complexity -- CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop') -- CWE-674 Uncontrolled Recursion -- CWE-1119 Excessive Use of Unconditional Branching - -### Programming and Logic Errors - -- CWE-185 Incorrect Regular Expression -- CWE-754 Improper Check for Unusual or Exceptional Conditions -- CWE-755 Improper Handling of Exceptional Conditions -- CWE-248 Uncaught Exception -- CWE-252 Unchecked Return Value -- CWE-391 Unchecked Error Condition -- CWE-696 Incorrect Behavior Order -- CWE-1254 Incorrect Comparison Logic Granularity -- CWE-665 Improper Initialization -- CWE-703 Improper Check or Handling of Exceptional Conditions -- CWE-178 Improper Handling of Case Sensitivity - -### Information Disclosure Issues - -- CWE-544 Missing Standardized Error Handling Mechanism -- CWE-377 Insecure Temporary File -- CWE-451 User Interface (UI) Misrepresentation of Critical Information -- CWE-668 Exposure of Resource to Wrong Sphere diff --git a/content/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts.md index 62b80c829d..322299391c 100644 --- a/content/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts.md +++ b/content/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts.md @@ -48,7 +48,7 @@ You can also audit actions taken in response to {% data variables.product.prodna {% data variables.product.company_short %} helps you prioritize fixing {% data variables.product.prodname_dependabot_alerts %}. {% ifversion dependabot-most-important-sort-option %} By default, {% data variables.product.prodname_dependabot_alerts %} are sorted by importance. The "Most important" sort order helps you prioritize which {% data variables.product.prodname_dependabot_alerts %} to focus on first. Alerts are ranked based on their potential impact, actionability, and relevance. Our prioritization calculation is constantly being improved and includes factors like CVSS score, dependency scope, and whether vulnerable function calls are found for the alert. {% ifversion dependabot-alert-rules-auto-dismissal-npm-dev-dependencies %} -You can also use alert rules to prioritize {% data variables.product.prodname_dependabot_alerts %}. For more information, see “[AUTOTITLE](/code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts).” +You can also use alert rules to prioritize {% data variables.product.prodname_dependabot_alerts %}. For more information, see “[AUTOTITLE](/code-security/dependabot/dependabot-alert-rules/about-dependabot-alert-rules).” {% endif %} {% data reusables.dependabot.dependabot-alerts-filters %} diff --git a/content/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file.md b/content/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file.md index 59066252fb..3c52b75a37 100644 --- a/content/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file.md +++ b/content/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file.md @@ -327,6 +327,7 @@ If you use the same configuration as in the example above, bumping the `requests `pip dev: bump requests from 1.0.0 to 1.0.1` {% ifversion dependabot-version-updates-groups %} + ### `groups` {% data reusables.dependabot.dependabot-version-updates-groups-supported %} diff --git a/content/code-security/dependabot/dependabot-version-updates/customizing-dependency-updates.md b/content/code-security/dependabot/dependabot-version-updates/customizing-dependency-updates.md index 937ff08de6..538779ef3e 100644 --- a/content/code-security/dependabot/dependabot-version-updates/customizing-dependency-updates.md +++ b/content/code-security/dependabot/dependabot-version-updates/customizing-dependency-updates.md @@ -141,6 +141,7 @@ updates: ``` {% ifversion dependabot-version-updates-groups %} + ## Grouping {% data variables.product.prodname_dependabot_version_updates %} into one pull request {% data reusables.dependabot.dependabot-version-updates-groups-about %} diff --git a/content/code-security/dependabot/index.md b/content/code-security/dependabot/index.md index 757cd057ed..9bcfb9daed 100644 --- a/content/code-security/dependabot/index.md +++ b/content/code-security/dependabot/index.md @@ -16,8 +16,8 @@ topics: - Dependencies children: - /dependabot-alerts + - /dependabot-alert-rules - /dependabot-security-updates - /dependabot-version-updates - /working-with-dependabot --- - diff --git a/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md b/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md index 972ec5b360..fdece9384e 100644 --- a/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md +++ b/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md @@ -117,7 +117,7 @@ registries: #### Notes -{% data variables.product.prodname_dependabot %} works with any container registries that implement the Open Container Initiative (OCI) Distribution Specification. For more information, see [https://github.com/opencontainers/distribution-spec/blob/main/spec.md](https://github.com/opencontainers/distribution-spec/blob/main/spec.md). +{% data variables.product.prodname_dependabot %} works with any container registries that implement the Open Container Initiative (OCI) Distribution Specification. For more information, see [https://github.com/opencontainers/distribution-spec/blob/main/spec.md](https://github.com/opencontainers/distribution-spec/blob/main/spec.md). {% data variables.product.prodname_dependabot %} supports authentication to private registries via a central token service or HTTP Basic Auth. For more information, see [Token Authentication Specification](https://docs.docker.com/registry/spec/auth/token/) in the Docker documentation and [Basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) on Wikipedia. @@ -238,7 +238,7 @@ registry=https:/// {% endraw %} -Aternatively you can add the private registry URL to an existing `.npmrc` file using the following command. +Aternatively you can add the private registry URL to an existing `.npmrc` file using the following command. {% raw %} @@ -277,13 +277,14 @@ npm can be configured to use the private registry's URL in lockfiles with `repla ```shell npm config set replace-registry-host "never" ``` + {% endraw %} If you use `replace-registry-host`, you must locally run `npm install` in order to regenerate the lockfile to use the private registry URL. {% data variables.product.prodname_dependabot %} will use the same URL when providing updates. Once the registry is configured, you can also run `npm login` to verify that your configuration is correct and valid. The lockfile can also be regenerated to use the new private registry by running `npm install` again. -You need to ensure that the `.npmrc` file is checked into the same directory as the project's `package.json` and that the file doesn't include any environment variables or secrets. +You need to ensure that the `.npmrc` file is checked into the same directory as the project's `package.json` and that the file doesn't include any environment variables or secrets. If you use a monorepo, the `.npmrc` file should live in the project's root directory. #### Configuring {% data variables.product.prodname_dependabot %} to send registry requests through a specified base URL @@ -332,7 +333,7 @@ registries: {% endraw %} -#### Notes +#### Notes You can also use a token in your `dependabot.yml` file. {% data reusables.dependabot.token-is-github-pat %} @@ -377,6 +378,7 @@ registries: username: octocat@example.com password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}} ``` + {% endraw %} {% raw %} @@ -387,7 +389,9 @@ registries: url: https://pypi.fury.io/my_org token: ${{secrets.MY_GEMFURY_TOKEN}} ``` + {% endraw %} + #### Notes {% data reusables.dependabot.access-private-dependencies-link %} @@ -407,6 +411,7 @@ registries: url: https://npm.pkg.github.com/ token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}} ``` + {% endraw %} - For private registries, you have to check in a `.yarnrc.yml` file (for Yarn 3) or a `.yarnrc` file (for Yarn Classic). @@ -445,12 +450,12 @@ If the `yarn.lock` file doesn't list the private registry as the dependency sour - Manually set the private registry to the `.yarnrc` file by adding the registry to a `.yarnrc.yml` file in the project root with the key registry, or - Perform the same action by running `yarn config set registry ` in your terminal. - Example of a `.yarnrc` with a private registry defined: + Example of a `.yarnrc` with a private registry defined: `registry https://nexus.example.com/repository/yarn-all` #### Yarn Berry (v3) -For information on the configuration, see [Settings (.yarnrc.yml)](https://yarnpkg.com/configuration/yarnrc/) in the Yarn documentation. +For information on the configuration, see [Settings (.yarnrc.yml)](https://yarnpkg.com/configuration/yarnrc/) in the Yarn documentation. As with Yarn Classic, you can either specify the private registry configuration in the `dependabot.yml` file, or set up Yarn Berry according to the package manager instructions. @@ -506,7 +511,7 @@ If the `yarn.lock` file doesn't list the private registry as the dependency sour Example of a `.yarnrc.yml` file with a private registry configured: `npmRegistryServer: "https://nexus.example.com/repository/yarn-all"` - + For more information, see [npmRegistryServer](https://yarnpkg.com/configuration/yarnrc#npmRegistryServer) in the Yarn documentation. #### Notes @@ -621,4 +626,4 @@ If you are restricting which IPs can reach your Nexus host, you need to add the - "3.217.93.44/32" For more information, see [Securing Nexus Repository Manager](https://help.sonatype.com/repomanager3/planning-your-implementation/securing-nexus-repository-manager) in the Sonatype documentation. - Registries can be proxied to reach out to a public registry in case a dependency is not available in the private regstry.{% ifversion dependabot-private-registries %} However, you may want {% data variables.product.prodname_dependabot %} to only access the private registry and not access the public regsitry at all. For more information, see [Quick Start Guide - Proxying Maven and NPM](https://help.sonatype.com/repomanager3/planning-your-implementation/quick-start-guide---proxying-maven-and-npm)" in the Sonatype documentation, and "[AUTOTITLE](/code-security/dependabot/working-with-dependabot/removing-dependabot-access-to-public-registries)."{% endif %} + Registries can be proxied to reach out to a public registry in case a dependency is not available in the private regstry.{% ifversion dependabot-private-registries %} However, you may want {% data variables.product.prodname_dependabot %} to only access the private registry and not access the public regsitry at all. For more information, see [Quick Start Guide - Proxying Maven and NPM](https://help.sonatype.com/repomanager3/planning-your-implementation/quick-start-guide---proxying-maven-and-npm)" in the Sonatype documentation, and "[AUTOTITLE](/code-security/dependabot/working-with-dependabot/removing-dependabot-access-to-public-registries)."{% endif %} diff --git a/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md b/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md index aed06af557..72f66d0792 100644 --- a/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md +++ b/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md @@ -165,9 +165,9 @@ allow: # this group will always be empty ``` -In this example, {% data variables.product.prodname_dependabot %} will: +In this example, {% data variables.product.prodname_dependabot %} will: 1. Look at your dependency list and restrict the job to dependencies used in `production` only. -1. Try to create a group called `development-dependencies` which is a subset of this reduced list. +1. Try to create a group called `development-dependencies` which is a subset of this reduced list. 1. Work out that the `development-dependencies` group is empty as all `development` dependencies were removed in step 1. 1. **Individually** update all the dependencies that are not in the group. As the group for dependencies in production is empty, {% data variables.product.prodname_dependabot %} will ignore the group, and create a separate pull request for each dependency. diff --git a/content/code-security/getting-started/dependabot-quickstart-guide.md b/content/code-security/getting-started/dependabot-quickstart-guide.md index 0ccd529831..3e3969500d 100644 --- a/content/code-security/getting-started/dependabot-quickstart-guide.md +++ b/content/code-security/getting-started/dependabot-quickstart-guide.md @@ -70,7 +70,7 @@ If {% data variables.product.prodname_dependabot_alerts %} are enabled for a rep ![Screenshot showing the list of Dependabot alerts for the demo repository.](/assets/images/help/repository/dependabot-alerts-list-demo-repo.png) - You can filter {% data variables.product.prodname_dependabot_alerts %} in the list, using a variety of filters or labels. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts#prioritizing-dependabot-alerts)."{% ifversion dependabot-alert-rules-auto-dismissal-npm-dev-dependencies %} You can also use {% data variables.product.prodname_dependabot %} alert rules to filter out false positive alerts or alerts you're not interested in. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts)."{% endif %} + You can filter {% data variables.product.prodname_dependabot_alerts %} in the list, using a variety of filters or labels. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts#prioritizing-dependabot-alerts)."{% ifversion dependabot-alert-rules-auto-dismissal-npm-dev-dependencies %} You can also use {% data variables.product.prodname_dependabot %} alert rules to filter out false positive alerts or alerts you're not interested in. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alert-rules/about-dependabot-alert-rules)."{% endif %} 1. Click the "Command Injection in lodash" alert on the _javascript/package-lock.json_ file. The details page for the alert will show the following information (note that some information may not apply to all alerts): - Whether {% data variables.product.prodname_dependabot %} created a pull request that will fix the vulnerability. You can review the suggested security update by clicking **Review security update**. @@ -95,6 +95,7 @@ If {% data variables.product.prodname_dependabot_alerts %} are enabled for a rep ![Screenshot of the detailed page of an alert in the demo repository, showing the information displayed on the right-side of the page.](/assets/images/help/repository/more-alert-details-demo-repo.png) For more information about viewing, prioritizing, and sorting {% data variables.product.prodname_dependabot_alerts %}, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts)." + ## Fixing or dismissing a {% data variables.product.prodname_dependabot %} alert You can fix or dismiss {% data variables.product.prodname_dependabot_alerts %} on {% data variables.product.prodname_dotcom %}. Let's continue to use the forked repository as an example, and the "Command Injection in lodash" alert described in the previous section. diff --git a/content/code-security/secret-scanning/configuring-secret-scanning-for-your-repositories.md b/content/code-security/secret-scanning/configuring-secret-scanning-for-your-repositories.md index abf04511a1..f8bfdd6aab 100644 --- a/content/code-security/secret-scanning/configuring-secret-scanning-for-your-repositories.md +++ b/content/code-security/secret-scanning/configuring-secret-scanning-for-your-repositories.md @@ -89,6 +89,7 @@ You can configure a _secret_scanning.yml_ file to exclude directories from {% da {% data reusables.files.add-file %} 1. In the file name field, type _.github/secret_scanning.yml_. 1. Under **Edit new file**, type `paths-ignore:` followed by the paths you want to exclude from {% data variables.product.prodname_secret_scanning %}. + ``` yaml paths-ignore: - "foo/bar/*.js" diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning.md index cf5cfdc96c..d0044a7014 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning.md @@ -67,6 +67,7 @@ shortTitle: Manage secret alerts {% endif %} {% ifversion secret-scanning-validity-check-partner-patterns %} + ## Validating partner patterns {% data reusables.secret-scanning.validity-check-partner-patterns-beta %} @@ -74,7 +75,7 @@ shortTitle: Manage secret alerts You can allow {% data variables.product.prodname_secret_scanning %} to check the validity of a secret found in your repository by sending it to the relevant partner. -You can enable automatic validity checks for supported partner patterns in the code security settings for your repository, organization, or enterprise. {% data variables.product.company_short %} will periodically send the pattern to the relevant partner to check the secret's validity and display the validation status of the secret in the alert view. +You can enable automatic validity checks for supported partner patterns in the code security settings for your repository, organization, or enterprise. {% data variables.product.company_short %} will periodically send the pattern to the relevant partner to check the secret's validity and display the validation status of the secret in the alert view. For more information on enabling automatic validation checks for partner patterns in your repository, organization, or enterprise, see "[Allowing validity checks for partner patterns in a repository](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#allowing-validity-checks-for-partner-patterns-in-a-repository)," "[Allowing validity checks for partner patterns in an organization](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#allowing-validity-checks-for-partner-patterns-in-an-organization)," and "[Managing Advanced Security features](/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise#managing-advanced-security-features)." diff --git a/content/codespaces/customizing-your-codespace/setting-your-default-editor-for-github-codespaces.md b/content/codespaces/customizing-your-codespace/setting-your-default-editor-for-github-codespaces.md index b952d9e121..4a14bceef0 100644 --- a/content/codespaces/customizing-your-codespace/setting-your-default-editor-for-github-codespaces.md +++ b/content/codespaces/customizing-your-codespace/setting-your-default-editor-for-github-codespaces.md @@ -17,7 +17,7 @@ On the settings page, you can set your editor preference so that when you create - {% data variables.product.prodname_vscode %} (desktop application) - {% data variables.product.prodname_vscode %} (web client application) - JetBrains Gateway - for opening codespaces in a JetBrains IDE -- JupyterLab - the web interface for Project Jupyter +- JupyterLab - the web interface for Project Jupyter {% data reusables.codespaces.template-codespaces-default-editor %} @@ -35,11 +35,11 @@ If you want to work on a codespace in a JetBrains IDE you must install the JetBr - {% data reusables.codespaces.application-installed-locally %}

- - If you choose **{% data variables.product.prodname_vscode %}**, {% data variables.product.prodname_github_codespaces %} will automatically open in the desktop application when you next create or open a codespace. + - If you choose **{% data variables.product.prodname_vscode %}**, {% data variables.product.prodname_github_codespaces %} will automatically open in the desktop application when you next create or open a codespace. You may need to allow access to both your browser and {% data variables.product.prodname_vscode %} for it to open successfully.

- - - If you choose **JetBrains Gateway**, the Gateway application will automatically open when you next create or open a codespace. + + - If you choose **JetBrains Gateway**, the Gateway application will automatically open when you next create or open a codespace. - If you choose **JetBrains Gateway**, the Gateway application will automatically open when you next create or open a codespace. diff --git a/content/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization.md b/content/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization.md index 0fc02bdc45..32a6a9ee3b 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization.md +++ b/content/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization.md @@ -66,7 +66,7 @@ When a user creates a codespace, they're told who will pay for it, and therefore When you change your ownership settings, existing codespaces can transfer to a new owner. -If you change from **organization ownership** to **user ownership**, codespaces that are currently owned by your organization will be transferred to the ownership of the user who created the codespace. Before you make this change, you should ask each user to review the codespaces that will be transferred to their ownership. These codespaces will now incur usage on the user's personal account. +If you change from **organization ownership** to **user ownership**, codespaces that are currently owned by your organization will be transferred to the ownership of the user who created the codespace. Before you make this change, you should ask each user to review the codespaces that will be transferred to their ownership. These codespaces will now incur usage on the user's personal account. If you change from **user ownership** to **organization ownership**, existing codespaces may be transferred to your organization's ownership. A codespace will be transferred if the user who currently owns the codespace is a member or collaborator, and you have enabled {% data variables.product.prodname_github_codespaces %} for this user. Otherwise, a codespace will remain under the ownership of the user. diff --git a/content/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types.md b/content/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types.md index 86c2380367..1ae1788998 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types.md +++ b/content/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types.md @@ -65,7 +65,7 @@ If you add an organization-wide policy, you should set it to the largest choice - "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports)" - "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period)" - "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces)" - + 1. After you've finished adding constraints to your policy, click **Save**. The policy will be applied to all new codespaces that are billable to your organization. The machine type constraint is also applied to existing codespaces when someone attempts to restart a stopped codespace or reconnect to an active codespace. diff --git a/content/codespaces/setting-up-your-project-for-codespaces/configuring-dev-containers/specifying-recommended-secrets-for-a-repository.md b/content/codespaces/setting-up-your-project-for-codespaces/configuring-dev-containers/specifying-recommended-secrets-for-a-repository.md index 3c2358321f..ffdd62bdb0 100644 --- a/content/codespaces/setting-up-your-project-for-codespaces/configuring-dev-containers/specifying-recommended-secrets-for-a-repository.md +++ b/content/codespaces/setting-up-your-project-for-codespaces/configuring-dev-containers/specifying-recommended-secrets-for-a-repository.md @@ -32,7 +32,7 @@ Recommended secrets are listed at the bottom of the page. Each recommended secret is displayed in one of three ways: -- If the person has not set the recommended secret in their {% data variables.product.prodname_codespaces %} settings, an input box is displayed, allowing them to create the secret now. A description and link to more information are displayed if you have configured them. Entering a value is optional. +- If the person has not set the recommended secret in their {% data variables.product.prodname_codespaces %} settings, an input box is displayed, allowing them to create the secret now. A description and link to more information are displayed if you have configured them. Entering a value is optional. - If the person has already created the recommended secret but has not associated it with this repository, they can select a checkbox to add this association. Doing so is optional. - If the person has already created the recommended secret and associated it with this repository, a preselected checkbox is displayed. diff --git a/content/codespaces/troubleshooting/troubleshooting-included-usage.md b/content/codespaces/troubleshooting/troubleshooting-included-usage.md index 3894f2c552..65507116ff 100644 --- a/content/codespaces/troubleshooting/troubleshooting-included-usage.md +++ b/content/codespaces/troubleshooting/troubleshooting-included-usage.md @@ -45,7 +45,7 @@ For billing purposes, {% data variables.product.prodname_codespaces %} storage i ### Where did my monthly storage go? -Deleting codespaces you're not using will avoid using up the free storage included in your personal account unnecessarily. However, if you have set up prebuild configurations, your included storage may continue to diminish during your monthly billing cycle. +Deleting codespaces you're not using will avoid using up the free storage included in your personal account unnecessarily. However, if you have set up prebuild configurations, your included storage may continue to diminish during your monthly billing cycle. Although prebuilds are not listed on the "Your codespaces" page, prebuilds created for a repository consume storage even if you do not currently have any codespaces for that repository. To avoid this, you can delete the prebuilds configurations you set up. For more information, see "[AUTOTITLE](/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds)" and "[AUTOTITLE](/codespaces/prebuilding-your-codespaces/managing-prebuilds#deleting-a-prebuild-configuration)." diff --git a/content/contributing/collaborating-on-github-docs/label-reference.md b/content/contributing/collaborating-on-github-docs/label-reference.md index e6e0e54e6a..77ec90da76 100644 --- a/content/contributing/collaborating-on-github-docs/label-reference.md +++ b/content/contributing/collaborating-on-github-docs/label-reference.md @@ -10,8 +10,8 @@ You can use labels to locate a particular type of issue. For example, click the | Label | Description | | --- | --- | -| [`help wanted`](https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) | Problems or updates that anyone in the community can start working on. | -| [`good first issue`](https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) | Problems or updates we think are ideal for beginners. | -| [`content`](https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3Acontent) | Problems or updates in the content on docs.github.com. These will usually require some knowledge of Markdown. | -| [`engineering`](https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3Aengineering) | Problems or updates involving the functionality of the docs.github.com website. Fixing these issues will usually require some knowledge of JavaScript/Node.js or YAML. | -| [`codespaces`](https://github.com/github/docs/labels/codespaces)
[`desktop`](https://github.com/github/docs/labels/desktop)
[`graphql`](https://github.com/github/docs/labels/graphql) | Labels for filtering issues by a product or documentation area. | +| [`help wanted`](https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) | Problems or updates that anyone in the community can start working on. | +| [`good first issue`](https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) | Problems or updates we think are ideal for beginners. | +| [`content`](https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3Acontent) | Problems or updates in the content on docs.github.com. These will usually require some knowledge of Markdown. | +| [`engineering`](https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3Aengineering) | Problems or updates involving the functionality of the docs.github.com website. Fixing these issues will usually require some knowledge of JavaScript/Node.js or YAML. | +| [`codespaces`](https://github.com/github/docs/labels/codespaces)
[`desktop`](https://github.com/github/docs/labels/desktop)
[`graphql`](https://github.com/github/docs/labels/graphql) | Labels for filtering issues by a product or documentation area. | diff --git a/content/contributing/collaborating-on-github-docs/self-review-checklist.md b/content/contributing/collaborating-on-github-docs/self-review-checklist.md index 76f097f0c8..80aeb9966e 100644 --- a/content/contributing/collaborating-on-github-docs/self-review-checklist.md +++ b/content/contributing/collaborating-on-github-docs/self-review-checklist.md @@ -9,9 +9,9 @@ versions: Before you submit your changes to the {% data variables.product.prodname_docs %} team for review, work through the list below to complete your self review. - If there is a content design plan, confirm that your changes meet the user experience and goals outlined in the plan. -- After opening your pull request, view your changes on staging to confirm the article renders as expected and matches the source. This helps spot issues like typos, content that doesn't follow the style guide, or content that isn't rendering due to versioning problems. +- After opening your pull request, view your changes on staging to confirm the article renders as expected and matches the source. This helps spot issues like typos, content that doesn't follow the style guide, or content that isn't rendering due to versioning problems. - Review your changes for technical accuracy. - Review your entire pull request to ensure it follows our guidance on creating content that can be translated. For more information, see "[AUTOTITLE](/contributing/writing-for-github-docs/writing-content-to-be-translated)." - Check your changes for grammar, spelling, and adherence to the style guide. For more information, see "[AUTOTITLE](/contributing/writing-for-github-docs/style-guide)." -- If you have added new versioning or made changes to existing versioning, confirm your changes render as expected while viewing each available version of the article. +- If you have added new versioning or made changes to existing versioning, confirm your changes render as expected while viewing each available version of the article. - If there are any failing checks in your pull request, troubleshoot them until they're all passing. diff --git a/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md b/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md index 9d5533fa32..a4b91e346b 100644 --- a/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md +++ b/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md @@ -46,7 +46,7 @@ To keep your local branches in sync with their remotes and avoid merge conflicts ``` git checkout -b my-username/new-codespace-policy - ``` + ``` {% endnote %} @@ -107,7 +107,7 @@ To keep your local branches in sync with their remotes and avoid merge conflicts ``` This commits the staged changes locally. You can now push this commit, and any other unpushed commits, to the remote repository. - + To remove this commit, use `git reset --soft HEAD~1`. After running this command our changes are no longer committed but the changed files remain in the staging area. You can make further changes and then `add` and `commit` again. 1. Push your changes to the remote repository on {% data variables.product.prodname_dotcom_the_website %}. @@ -128,7 +128,7 @@ To keep your local branches in sync with their remotes and avoid merge conflicts - Favor commits that contain small, focused groups of changes over commits with large, unfocused groups of changes, since this will help you write commit messages that other people can easily understand. An exception is the initial commit for a new project or category. These commits are sometimes large, as they often introduce the bare versions of many articles at once to provide an organizational scheme for subsequent work. - If you are incorporating feedback or want to address a set of changes to a particular person or team for review, @mention the person whose suggestions you are incorporating. For example: "Incorporating feedback from @octocat," or "Updating billing configuration steps - cc @monalisa for accuracy." -- If a commit addresses an issue, you can reference the issue number in the commit, and a link to the commit will appear in the issue conversation timeline: "Addresses #1234 - adds steps for backing up the VM before upgrading." +- If a commit addresses an issue, you can reference the issue number in the commit, and a link to the commit will appear in the issue conversation timeline: "Addresses #1234 - adds steps for backing up the VM before upgrading." {% note %} **Note**: We generally don't close an issue via a commit. To close an issue, open a pull request and add "Closes #1234" to the description. The linked issue will be closed when the pull request is merged. For more information, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)." diff --git a/content/contributing/setting-up-your-environment-to-work-on-github-docs/working-on-github-docs-in-a-codespace.md b/content/contributing/setting-up-your-environment-to-work-on-github-docs/working-on-github-docs-in-a-codespace.md index fb55e12570..94733c9d97 100644 --- a/content/contributing/setting-up-your-environment-to-work-on-github-docs/working-on-github-docs-in-a-codespace.md +++ b/content/contributing/setting-up-your-environment-to-work-on-github-docs/working-on-github-docs-in-a-codespace.md @@ -7,7 +7,7 @@ versions: feature: 'contributing' --- -## About {% data variables.product.prodname_github_codespaces %} +## About {% data variables.product.prodname_github_codespaces %} {% data variables.product.prodname_github_codespaces %} allows you to work in a development environment that's hosted remotely from your machine. You can get started quickly, without needing to set up the working environment or download files to your local computer. @@ -21,10 +21,10 @@ The following steps assume you have {% data variables.product.prodname_github_co 1. If you're an open source contributor, create a fork of the repository, then follow the rest of the steps in this procedure from your fork. For more information, see "[AUTOTITLE](/get-started/quickstart/fork-a-repo)." 1. Create a branch to work on. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository)." 1. On the main page of the repository, click **{% octicon "code" aria-hidden="true" %} Code**, then click **Create codespace on BRANCH-NAME**. - + The "Setting up your codespace" page is displayed. After a short time the browser-based version of {% data variables.product.prodname_vscode %} is displayed. 1. Use the Explorer to navigate to the markdown file you want to edit. If the file is an article, it will be located in the `content` directory. If the file is reusable content, it will be located in the `data` directory. - + In most cases, the path to an article in the `content` directory matches the path in the URL, minus the `.md` file extension. For example, the source for the article `https://docs.github.com/en/codespaces/getting-started/quickstart` is the markdown file `content/codespaces/getting-started/quickstart.md`. 1. Edit the markdown file as required. 1. Save your changes. @@ -35,7 +35,7 @@ The following steps assume you have {% data variables.product.prodname_github_co 1. Navigate to the "Pull requests" tab of the `github/docs` repository at [github.com/github/docs/pulls](https://github.com/github/docs/pulls). 1. Click **New pull request**. 1. If you're an open source contributor, click **compare across forks**, then choose the forked repository you created and your working branch. - + Otherwise, change the "compare" branch to your working branch. 1. Check that the changes displayed include all of the changes you made in the codespace. If they do not, this may indicate there are changes you have not pushed from the codespace to {% data variables.product.prodname_dotcom %}. 1. Click **Create pull request**. diff --git a/content/contributing/syntax-and-versioning-for-github-docs/configuring-redirects.md b/content/contributing/syntax-and-versioning-for-github-docs/configuring-redirects.md index 11abcb71b6..1171412a2b 100644 --- a/content/contributing/syntax-and-versioning-for-github-docs/configuring-redirects.md +++ b/content/contributing/syntax-and-versioning-for-github-docs/configuring-redirects.md @@ -34,7 +34,7 @@ See [`redirect_from`](https://github.com/github/docs/blob/main/content/README.md If a URL for a page is entered without a version (`https://docs.github.com/ARTICLE` instead of `https://docs.github.com/VERSION/ARTICLE`), the site will automatically redirect it to the first available version of the page. -The order of precedence is specified in [`lib/all-versions.js`](https://github.com/github/docs/blob/main/lib/all-versions.js). The current order of precedence is: +The order of precedence is specified in [`lib/all-versions.js`](https://github.com/github/docs/blob/main/src/versions/lib/all-versions.js). The current order of precedence is: 1. {% data variables.product.prodname_free_team %}, {% data variables.product.prodname_pro %}, or {% data variables.product.prodname_team %} (`fpt`) 1. {% data variables.product.prodname_ghe_cloud %} (`ghec`) diff --git a/content/contributing/syntax-and-versioning-for-github-docs/creating-tool-switchers-in-articles.md b/content/contributing/syntax-and-versioning-for-github-docs/creating-tool-switchers-in-articles.md index 62d514f84d..7afe05203e 100644 --- a/content/contributing/syntax-and-versioning-for-github-docs/creating-tool-switchers-in-articles.md +++ b/content/contributing/syntax-and-versioning-for-github-docs/creating-tool-switchers-in-articles.md @@ -18,16 +18,19 @@ For tasks that can be completed with different tools, the tool switcher signals When someone knows how they want to do a task and doesn’t need to see additional options, the tool switcher removes less relevant content, so they can find exactly what they need. ## Using tool tags + We use tool tags to divide information for each tool. On rare occasions, we will add new tools. Tool tags are a key value pair. The key is the tag you use to refer to the tool in the article and the value is how the tool will be identified on the tool picker at the top of the article. The existing tools are in [`lib/all-tools.js`](https://github.com/github/docs/blob/main/src/tools/lib/all-tools.js) in the {% data variables.product.prodname_docs %} repository. ### When to use tool tags + We only use tool tags if an article must have tool-specific information to help people accomplish their tasks. If the conceptual information or procedural steps for a task are significantly different depending on what tool someone uses, and we want people to be able to accomplish the task with different tools, we use tool tags to present the relevant information in an article. Do not use the tool switcher just to show examples in different languages. Only use the tool switcher if the tasks or concepts described in an article change based on what tool someone uses. ### How to use tool tags + Tool tags are Liquid tags that wrap content specific to a tool. Put tools in alphabetical order. By default, the first tool tag will be selected for an article. You can define a different default tool for an article by specifying a `defaultTool:` property in the article's frontmatter. For more information, see the [content README](https://github.com/github/docs/blob/main/content/README.md#defaulttool). @@ -37,6 +40,7 @@ You can also link to an article with a specific tool selected by adding `?tool=T Only include a maximum of eight different tools in an article. Including more tools causes the tool switcher tabs to overflow with an article's table of contents, which prevents people from using either the tool switcher or table of contents. It is unlikely that you will ever need to include eight separate tools in an article. In general, plan to use as few separate tools as possible in an article. ## Adding new tools + If a writer determines that adding a new tool is the only way to accurately document something, they should explain their reasoning in the content planning stage. Whoever reviews content plan should consider if there are any alternative ways to address the documentation need without adding a new tool. If a new tool is the only way to create accurate documentation, the new tool should be added. If there is an alternative content solution that does not add a new tool, that option should be used. To add a new tool, add an entry to the `allTools` object in the [`lib/all-tools.js`](https://github.com/github/docs/blob/main/src/tools/lib/all-tools.js) file as a key-value pair. Add new tools in alphabetical order. diff --git a/content/contributing/syntax-and-versioning-for-github-docs/using-markdown-and-liquid-in-github-docs.md b/content/contributing/syntax-and-versioning-for-github-docs/using-markdown-and-liquid-in-github-docs.md index b7df1115da..7b342e079e 100644 --- a/content/contributing/syntax-and-versioning-for-github-docs/using-markdown-and-liquid-in-github-docs.md +++ b/content/contributing/syntax-and-versioning-for-github-docs/using-markdown-and-liquid-in-github-docs.md @@ -102,6 +102,7 @@ const copyMe = true ``` ## Code sample annotations + Code sample annotations help explain longer code examples by rendering comments as annotations next to the sample code. This lets us write longer explanations of code without cluttering the code itself. Code samples with annotations are rendered in a two pane layout with the code sample on the left and the annotations on the right. The annotations are visually emphasized when someone hovers their cursor over the code example. Code annotations only work in articles with the `layout: inline` frontmatter property. For more information on how to write and style code annotations, see "[AUTOTITLE](/contributing/syntax-and-versioning-for-github-docs/annotating-code-examples)." @@ -357,14 +358,19 @@ For example, if you include the following link in a content file: ``` /github/writing-on-github/creating-a-saved-reply ``` + When viewed on {% data variables.product.prodname_dotcom_the_website %} docs, the link gets rendered with the language code: + ``` /en/github/writing-on-github/creating-a-saved-reply ``` + and when viewed on {% data variables.product.prodname_ghe_server %} docs, the version is included as well: + ``` /en/enterprise-server@2.20/github/writing-on-github/creating-a-saved-reply ``` + For more information about links, see "[AUTOTITLE](/contributing/writing-for-github-docs/style-guide#links)." ### Permalinks diff --git a/content/contributing/syntax-and-versioning-for-github-docs/using-yaml-frontmatter.md b/content/contributing/syntax-and-versioning-for-github-docs/using-yaml-frontmatter.md index 1cd52b1c12..ec03c14576 100644 --- a/content/contributing/syntax-and-versioning-for-github-docs/using-yaml-frontmatter.md +++ b/content/contributing/syntax-and-versioning-for-github-docs/using-yaml-frontmatter.md @@ -43,7 +43,7 @@ For more information, see [`lib/frontmatter.js`](https://github.com/github/docs/ ### `versions` -- Purpose: Indicates the [versions](https://github.com/github/docs/blob/main/lib/all-versions.js) to which a page applies. +- Purpose: Indicates the [versions](https://github.com/github/docs/blob/main/src/versions/lib/all-versions.js) to which a page applies. For more information about the different types of versioning, see "[Versioning documentation](/contributing/syntax-and-versioning-for-github-docs/versioning-documentation)." - Type: `Object`. Allowable keys map to product names and can be found in the `versions` object in [`lib/frontmatter.js`](https://github.com/github/docs/blob/main/lib/frontmatter.js). - This frontmatter value is currently **required** for all pages. @@ -221,6 +221,7 @@ defaultTool: cli ``` ### `learningTracks` + - Purpose: Render a list of learning tracks on a product's sub-landing page. - type: `String`. This should reference learning tracks' names defined in [`data/learning-tracks/*.yml`](https://github.com/github/docs/tree/main/data/learning-tracks). - Optional @@ -232,6 +233,7 @@ defaultTool: cli {% endnote %} ### `includeGuides` + - Purpose: Render a list of articles, filterable by `type` and `topics`. Only applicable when used with `layout: product-guides`. - Type: `Array` - Optional. @@ -247,21 +249,25 @@ includeGuides: ``` ### `type` + - Purpose: Indicate the type of article. - Type: `String`, one of the `overview`, `quick_start`, `tutorial`, `how_to`, `reference`. - Optional. ### `topics` + - Purpose: Indicate the topics covered by the article. The topics are used to filter guides on some landing pages. For example, the guides at the bottom of "[Guides for {% data variables.product.prodname_actions %}](/actions/guides#all-guides)" can be filtered by topics, and the topics are listed under the guide intro. Refer to the content models for more details about adding topics. A full list of existing topics is located in the [allowed topics file](https://github.com/github/docs/blob/main/data/allowed-topics.js). If topics in article frontmatter and the allow-topics list become out of sync, the [topics CI test](https://github.com/github/docs/blob/main/src/search/tests/topics.js) will fail. - Type: Array of `String`s - Optional: Topics are preferred for each article, but, there may be cases where existing articles don't yet have topics, or adding a topic to a new article may not add value. ### `communityRedirect` + - Purpose: Set a custom link and link name for `Ask the GitHub community` link in the footer. - Type: `Object`. Properties are `name` and `href`. - Optional. ### `effectiveDate` + - Purpose: Set an effective date for Terms of Service articles so that engineering teams can automatically re-prompt users to confirm the terms - Type: `string` YEAR-MONTH-DAY e.g. 2021-10-04 is October 4th, 2021 - Optional. diff --git a/content/contributing/syntax-and-versioning-for-github-docs/versioning-documentation.md b/content/contributing/syntax-and-versioning-for-github-docs/versioning-documentation.md index 4319b9c64a..b11070912d 100644 --- a/content/contributing/syntax-and-versioning-for-github-docs/versioning-documentation.md +++ b/content/contributing/syntax-and-versioning-for-github-docs/versioning-documentation.md @@ -65,7 +65,7 @@ For {% data variables.product.prodname_ghe_cloud %}, use `enterprise-cloud@lates ### {% data variables.product.prodname_ghe_server %} -Documentation for {% data variables.product.prodname_ghe_server %} has multiple versions and can be divided into two types: documentation for _supported releases_ (we support four at any one time), and documentation for _deprecated releases_ (we do not link to these on the Docs site but we support a "frozen" snapshot of these docs in perpetuity, so they can still be accessed if you know the URLs). See [`lib/enterprise-server-releases.js`](https://github.com/github/docs/blob/main/lib/enterprise-server-releases.js) for a list. +Documentation for {% data variables.product.prodname_ghe_server %} has multiple versions and can be divided into two types: documentation for _supported releases_ (we support four at any one time), and documentation for _deprecated releases_ (we do not link to these on the Docs site but we support a "frozen" snapshot of these docs in perpetuity, so they can still be accessed if you know the URLs). See [`lib/enterprise-server-releases.js`](https://github.com/github/docs/blob/main/src/versions/lib/enterprise-server-releases.js) for a list. The versions are named `enterprise-server@`. The short name is `ghes`. In Liquid conditionals, we can specify ranges, like `ghes > 3.0`. For more information, see "[Versioning with Liquid conditional operators](#versioning-with-liquid-conditional-operators)." @@ -259,7 +259,7 @@ You can version documentation to appear in the current {% data variables.product ### About the displayed version of {% data variables.product.prodname_ghe_managed %} documentation -We display one version of {% data variables.product.prodname_ghe_managed %} documentation on {% data variables.product.prodname_docs %}: the latest. We define "latest" in the site's source, within [`all-versions.js`](https://github.com/github/docs/blob/main/lib/all-versions.js#L58). In almost all cases, this value is a safe place to determine the latest public release of {% data variables.product.prodname_ghe_managed %}. +We display one version of {% data variables.product.prodname_ghe_managed %} documentation on {% data variables.product.prodname_docs %}: the latest. We define "latest" in the site's source, within [`all-versions.js`](https://github.com/github/docs/blob/main/src/versions/lib/all-versions.js#L58). In almost all cases, this value is a safe place to determine the latest public release of {% data variables.product.prodname_ghe_managed %}. "Latest" corresponds with the latest version of {% data variables.product.prodname_ghe_managed %} that we've deployed to the first customer using the product in production. Generally, {% data variables.product.company_short %} upgrades all production customers on {% data variables.product.prodname_ghe_managed %} to the latest version around the same time, so Product considers only showing the latest documentation an acceptable compromise. diff --git a/content/contributing/writing-for-github-docs/content-model.md b/content/contributing/writing-for-github-docs/content-model.md index f53828ce90..6fa0a60530 100644 --- a/content/contributing/writing-for-github-docs/content-model.md +++ b/content/contributing/writing-for-github-docs/content-model.md @@ -48,6 +48,7 @@ Top-level doc sets are organized around a {% data variables.product.prodname_dot - Most top-level doc sets have a landing page layout, unless there is a significant exception. For example, the "[Site policy](/free-pro-team@latest/site-policy)" doc set does not have guides or procedural articles like other doc sets, so it does not use a landing page layout. #### Titles for top-level doc sets + - Feature or product based. - Describes what part of {% data variables.product.prodname_dotcom %} someone is using. - Examples @@ -63,6 +64,7 @@ Categories are organized around a feature or a discrete set of tasks within a to - When categories have more than ten articles, consider breaking the content into map topics or additional categories. #### Titles for categories + - Task-based (begins with a gerund). - Describes the big-picture purpose or goal of using the feature or product. - General or high-level enough to scale with future product enhancements. @@ -72,6 +74,7 @@ Categories are organized around a feature or a discrete set of tasks within a to - [AUTOTITLE](/pull-requests/committing-changes-to-your-project) #### Intros for categories + All categories have intros. Intros should be one sentence long and general or high-level enough to scale with future product changes. If you significantly change a category’s structure, check its intro for needed updates. ### Map topic @@ -81,6 +84,7 @@ Map topics introduce a section of a category, grouping articles within a categor Map topics contain at least three articles. When map topics have more than eight articles, it may be useful to consider breaking the content into more specific map topics. #### Titles for map topics + - Task-based (begins with a gerund). - Describes a more specific task within the larger workflow of the category it’s in. - General or high-level enough to scale with future additions to the product. @@ -90,6 +94,7 @@ Map topics contain at least three articles. When map topics have more than eight - [AUTOTITLE](/enterprise-cloud@latest/admin/user-management/managing-users-in-your-enterprise) #### Intros for map topics + All map topics have intros. Intros should be one sentence long and general or high-level enough to scale with future product changes. If you add or remove articles in a map topic, check its intro for needed updates. ### Article @@ -113,6 +118,7 @@ We organize content predictably within categories, map topics, and articles. Fro Topics are used to filter articles and are searchable across the {% data variables.product.prodname_docs %} site. For some layouts, such as landing pages or guides, people can select which articles are displayed by filtering topics. Use these guidelines to help choose which topics to add to an article's frontmatter. For more information on adding topics to an article see, "[Topics](https://github.com/github/docs/tree/main/content#topics)" and for a list of all allowed topics, see [`allowed-topics`](https://github.com/github/docs/blob/main/data/allowed-topics.js). #### Topics for all content types + - All articles should have at least one topic - Use nouns as topics - Topics help people meaningfully group content @@ -131,6 +137,7 @@ Topics are used to filter articles and are searchable across the {% data variabl - Use: `Actions` instead of `GitHub Actions` #### Checklist for choosing topics + Consider these questions to help choose topics for an article. Not every article will have a topic for each item in the checklist. - What is the feature or product area? @@ -172,12 +179,14 @@ For the conceptual content template, see "[AUTOTITLE](/contributing/writing-for- - Include next steps for getting started with the feature (whether through further reading links or content within the article itself). #### Titles for conceptual content + - Conceptual articles or headers of conceptual sections start with "About [subject]”. - Use a noun to describe the subject. - Use: "About {% data variables.product.prodname_code_scanning %}" - Avoid: "About scanning your code for vulnerabilities" #### Examples of conceptual content + - Conceptual articles - [About GitHub Sponsors](/free-pro-team@latest/sponsors/getting-started-with-github-sponsors/about-github-sponsors) - [About Enterprise accounts](/enterprise-cloud@latest/admin/overview/about-enterprise-accounts) @@ -209,11 +218,13 @@ For the referential content template, see "[AUTOTITLE](/contributing/writing-for - Example: [AUTOTITLE](/actions/reference/workflow-syntax-for-github-actions) #### Titles for referential content + - Referential articles or headers of referential sections clearly describe the contents of the section, and generally begin with nouns. - Titles include enough information to be accessible to novice users and fully describe the contents of each section. - Titles avoid stacked nouns - use prepositions to break up long strings of nouns. #### Examples of referential content + - Referential articles - [AUTOTITLE](/get-started/using-github/keyboard-shortcuts) - [AUTOTITLE](/enterprise-cloud@latest/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise) @@ -242,6 +253,7 @@ For the procedural content template, see "[AUTOTITLE](/contributing/writing-for- - Include troubleshooting tips as frequently as possible. #### Titles for procedural content + - Procedural articles or procedural sections within articles are task-based and begin with a gerund. - Use: "Applying for a student developer pack" - Use active and specific verbs (brainstorm or use a thesaurus when needed). @@ -249,9 +261,10 @@ For the procedural content template, see "[AUTOTITLE](/contributing/writing-for- - Article title length: maximum 80 characters, 60 if possible. #### Examples of procedural content + - [AUTOTITLE](/free-pro-team@latest/billing/managing-your-github-billing-settings/adding-information-to-your-receipts) - [AUTOTITLE](/enterprise-cloud@latest/admin/user-management/managing-users-in-your-enterprise/inviting-people-to-manage-your-enterprise) -- [AUTOTITLE](/actions/using-workflows/using-starter-workflows) +- [AUTOTITLE](/actions/learn-github-actions/using-starter-workflows) ### Release notes @@ -274,6 +287,7 @@ You can find guidance for the format, style, and tone of release notes, as well Troubleshooting content includes built-in errors we expect people to encounter, common problems reported to support, and situations people might encounter while completing tasks. Use troubleshooting sections in guides or procedural articles to keep solutions close to procedures. Work with support and product managers to surface common errors and include them in the documentation. #### Known issues + Known issues are a subset of troubleshooting content specifically designed to respond to bugs, UX/UI issues, and other product quirks that generate a high volume of support tickets. Where troubleshooting content can describe errors that people *might* encounter, known issues explain problems that people *will* encounter. Like all troubleshooting content, known issues can be a section in an article or a standalone article. If a known issue applies to a specific article, document it in that article. If a known issue applies to a specific set of articles or conceptual grouping of features, or if a product or feature has multiple known issues that should be grouped together, create a dedicated "Known issues with NAME" article. @@ -288,18 +302,21 @@ Use known issues to explain the following situations. - Behavior that regularly prevents the use of the product or feature for a common purpose. - Rare or severe bugs that {% data variables.product.prodname_dotcom %} has not yet prioritized fixing, and that are not explained in the product or by existing content on {% data variables.product.prodname_docs %}. -#### How to write troubleshooting content +#### How to write troubleshooting content + - Use any {% data variables.product.prodname_docs %} content type to create troubleshooting sections. - Whenever possible, keep troubleshooting content contained within procedural content or guides. - You can create a troubleshooting article when it makes sense to keep it separate, such as when there’s a large amount of troubleshooting content on a particular topic. - You can create a troubleshooting map topic if a product or feature has many troubleshooting articles, for example "[AUTOTITLE](/authentication/troubleshooting-ssh)." #### Title guidelines for troubleshooting content + - Troubleshooting FEATURE - Error: ERROR NAME - Known issues for PRODUCT #### Examples of troubleshooting content + - "[AUTOTITLE](/authentication/troubleshooting-ssh)" - "[AUTOTITLE](/enterprise-server@latest/admin/configuration/configuring-network-settings/using-github-enterprise-server-with-a-load-balancer#troubleshooting-connectivity-through-a-load-balancer)" - "[Known issues](/enterprise-server@3.7/admin/release-notes#3.7.8-known-issues)" in the {% data variables.product.prodname_ghe_server %} release notes @@ -310,6 +327,7 @@ Use known issues to explain the following situations. Often, it's helpful to group information in context to help people complete a complex task, understand a set of related tasks, or illustrate an entire workflow. Use longer articles combining content types to ensure people find contextual content in the right place. Longer articles also help eliminate duplication of content and prepare content to scale as more options are added to the product. People most often need longer articles while actively using the product, and they may need to consult the article at different points on their journey. #### How to combine multiple content types in an article + - Use conceptual, procedural, referential, troubleshooting, or known issue content in a longer article, and do not use quickstart or tutorials. - Use sections of different content types in the article as needed, and follow title guidelines for the content type. - Most often, these articles will contain at least one procedural section plus at least one additional conceptual, referential, or procedural section. @@ -318,11 +336,13 @@ Often, it's helpful to group information in context to help people complete a co - You can replicate the article’s title in a header if needed. #### Title guidelines for articles that combine multiple content types + - If there is a procedure within the article, use a task-based title that begins with a gerund. - Titles are general enough to describe the range of information and tasks contained within the article. - Titles describe the setting being toggled and are agnostic about what setting the reader chooses, e.g., "Setting repository visibility” instead of "Making a private repository public.” #### Examples of articles that combine multiple content types + - [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility) - [AUTOTITLE](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise) - [AUTOTITLE](/free-pro-team@latest/billing/managing-billing-for-your-github-account/upgrading-your-github-subscription) @@ -358,10 +378,12 @@ Contents of quickstarts: - Include 2-3 actionable next steps that someone can take after completing the quickstart. Always link to conceptual content on the feature or product. You can also link off to other related information on docs.github.com or in {% data variables.product.prodname_learning %}. #### Title guidelines for quickstarts + - When the guide helps someone get started with a new tool, preface the title with "Quickstart", e.g. "Quickstart for GitHub Actions" or "Quickstart: Procedural title." - For other use cases, follow the title guidelines for procedures and omit the word "Quickstart." #### Examples of quickstarts + - [AUTOTITLE](/free-pro-team@latest/actions/quickstart) - [AUTOTITLE](/free-pro-team@latest/discussions/quickstart) - [Quickstart for GitHub Educators](/free-pro-team@latest/education/quickstart) @@ -403,10 +425,12 @@ Contents of tutorials: - Relevant published talks, blog posts, or Community Forum series posts by Hubbers #### Title guidelines for tutorials + - Follow the title guidelines for procedural articles. - Do not use "tutorial” or "guide” in the title. #### Examples of tutorials + Tutorials: - [AUTOTITLE](/actions/managing-issues-and-pull-requests/adding-labels-to-issues) - [AUTOTITLE](/actions/deployment/deploying-xcode-applications/installing-an-apple-certificate-on-macos-runners-for-xcode-development) @@ -448,12 +472,13 @@ Titles fully describe what a page is about, and what someone will learn by readi Titles can be challenging. Use these general guidelines to help create clear, helpful, and descriptive titles. The guidelines for each content type in this article provide more specific title rules. #### Titles for all content types + - Titles clearly describe what a page is about. They are descriptive and specific. - Use: Browsing actions in the workflow editor - Use: Example of configuring a codespace - Avoid: Using the workflow editor sidebar - Avoid: Example - - Titles have hard limits for length to keep them easy to understand (and easier to render on the site): + - Titles have hard limits for length to keep them easy to understand (and easier to render on the site): - Category titles: 67 characters and [`shortTitle`](https://github.com/github/docs/tree/main/content#shorttitle) 26 characters - Map topic titles: 63 characters and [`shortTitle`](https://github.com/github/docs/tree/main/content#shorttitle) 29 characters - Article titles: 80 characters, 60 if possible, and [`shortTitle`](https://github.com/github/docs/tree/main/content#shorttitle) 30 characters, ideally 20-25 characters @@ -480,13 +505,15 @@ Use the product callout when a feature is available in specific products only an All product callouts are stored as reusables in [`gated-features`](https://github.com/github/docs/tree/main/data/reusables/gated-features) and added in YAML frontmatter for relevant articles. #### How to write a product callout -- Product callouts follow a strict format, clearly identifying the feature and which products it’s available in. + +- Product callouts follow a strict format, clearly identifying the feature and which products it’s available in. - Product callouts also include a link to "GitHub’s products” and occasionally to another relevant article. - Examples: - [Feature name] is available in [product(s)]. For more information, see "GitHub’s products.” - [Feature name] is available in public repositories with [free product(s)], and in public and private repositories with [paid products]. For more information, see "GitHub’s products.” #### Examples of articles with product callouts + Check the source files and `gated-features` to see how source content is written. - [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule) @@ -495,14 +522,15 @@ Check the source files and `gated-features` to see how source content is written The top of every page has an intro that provides context and sets expectations, allowing readers to quickly decide if the page is relevant to them. Intros also are displayed in search results to provide contextual information to help readers choose a result. #### How to write an intro + - Article intros are one to two sentences long. - Map topic and category intros are one sentence long. - API reference intros are one sentence long. - The intro for an API page should define the feature so that someone knows whether the feature meets their needs without reading the entire article. -- Intros contain a high-level summary of the page’s content, developing the idea presented in a title with more detail. - - Use approachable synonyms of words in the page’s title to help readers understand the article’s purpose differently. Avoid repeating words from the title when possible. +- Intros contain a high-level summary of the page’s content, developing the idea presented in a title with more detail. + - Use approachable synonyms of words in the page’s title to help readers understand the article’s purpose differently. Avoid repeating words from the title when possible. - Intros are relatively evergreen and high-level, so they can scale with future changes to the content on the page without needing to be frequently updated. -- For searchability, include keywords on the page's subject in the intro. +- For searchability, include keywords on the page's subject in the intro. - When a term in the intro has an acronym we’ll use elsewhere in the article, indicate the acronym. - Intros generally don't contain permissions for any tasks contained within the article. @@ -513,8 +541,9 @@ Every procedure includes a permissions statement explaining the role required to Occasionally, it's relevant to mention required permissions in conceptual content, especially in standalone conceptual articles. Make sure to also include a permissions statement in related procedures (or write a longer article combining all of the content). #### How to write a permissions statement -- When a single set of permissions applies to all procedures in an article, use the [permissions frontmatter](https://github.com/github/docs/tree/main/content#permissions). -- When an article contains multiple procedures and different permissions apply, include a separate permissions statement under each relevant header, before each procedure. + +- When a single set of permissions applies to all procedures in an article, use the [permissions frontmatter](https://github.com/github/docs/tree/main/content#permissions). +- When an article contains multiple procedures and different permissions apply, include a separate permissions statement under each relevant header, before each procedure. - Don't include permissions in an article’s intro. - Roles exist at different levels. Refer only to the role at the same level as the action. For example, you need admin access to a repository (repository-level role) to configure protected branches. You can get admin access to a repository by being an organization owner (organization-level role), but the repository-level role is what actually governs your ability to take the action, so that is the only role that should be mentioned in the permissions statement. - Language to use in a permissions statement: @@ -523,6 +552,7 @@ Occasionally, it's relevant to mention required permissions in conceptual conten - AVOID: [ACCOUNT ROLE] and people with [FEATURE ROLE] access for a [FEATURE] can [ACTION]. #### Examples of permissions statements + - Article with single permissions statement for multiple procedures: [AUTOTITLE](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise) ### Tool switcher @@ -530,12 +560,15 @@ Occasionally, it's relevant to mention required permissions in conceptual conten Some articles have content that varies depending on what tool someone uses to complete a task, such as the {% data variables.product.prodname_cli %} or {% data variables.product.prodname_desktop %}. For most content, the same conceptual or procedural information will be accurate for multiple tools. However, if the only way to make information clear and accurate is by distinguishing content by tool, use the tool switcher. Do not use the tool switcher just to show examples in different languages. Only use the tool switcher if the tasks or concepts change based on what tool someone uses. For more information on using the tool switcher, see the [tool switcher content model](https://github.com/github/docs/blob/main/contributing/tool-switcher.md). ### Table of contents + Tables of contents are automatically generated. For more information see "[Autogenerated mini-TOCs](https://github.com/github/docs/tree/main/content#autogenerated-mini-tocs)." ### Conceptual content + Conceptual content helps people understand or learn about a topic. See "[Conceptual](#conceptual)" above. ### Referential content + Referential content provides structured information related to actively using a product or feature. See "[Referential](#referential)" above. ### Prerequisites @@ -543,6 +576,7 @@ Referential content provides structured information related to actively using a Prerequisites are information that people need to know before proceeding with a procedure, so that they can prepare everything they need before starting the task. #### How to write prerequisites + - Write prerequisites immediately before a procedure's numbered steps. - You can use a list, a sentence, or a paragraph to explain prerequisites. - You can also use a separate prerequisites section when: @@ -551,13 +585,16 @@ Prerequisites are information that people need to know before proceeding with a - To repeat or highlight important information about data loss or destructive actions, you may also use a warning or danger callout to share a prerequisite. #### Title guidelines for prerequisites + - When using a separate section, use a header called `Prerequisites` #### Examples of articles with prerequisites sections + - [AUTOTITLE](/enterprise-server@latest/admin/installation/installing-github-enterprise-server-on-aws) - [AUTOTITLE](/enterprise-server@latest/admin/configuration/enabling-subdomain-isolation) ### Procedural content + Procedural content helps people complete tasks. See "[Procedural](#procedural)" above. ### Troubleshooting content @@ -569,10 +606,12 @@ Troubleshooting content helps people avoid or work through errors. See "[Trouble Further reading sections highlight additional targeted articles that aren’t already included within the article’s content or sidebar. Use further reading sections sparingly when they provide real value. #### How to write a further reading section -- Use a bulleted list. + +- Use a bulleted list. - Use further reading sections sparingly and when they provide high value - see style guide for guidelines on linking. #### Title and format for further reading sections + ``` ### Further reading - "[Article title](article-URL)” diff --git a/content/contributing/writing-for-github-docs/style-guide.md b/content/contributing/writing-for-github-docs/style-guide.md index b705e92f11..11eaaad361 100644 --- a/content/contributing/writing-for-github-docs/style-guide.md +++ b/content/contributing/writing-for-github-docs/style-guide.md @@ -471,6 +471,7 @@ For more information, see "[AUTOTITLE](PATH-TO-ARTICLE#HEADER-TITLE)." ``` To link to two or more specific headers in a different article, use this format: + ``` For more information, see "[HEADER-TITLE-1](PATH-TO-ARTICLE#SECTION-LINK-1)" and "[HEADER-TITLE-2](PATH-TO-ARTICLE#SECTION-LINK-2)" in "ARTICLE-TITLE." ``` @@ -1006,6 +1007,7 @@ For example in the following table, in order to make sense of the "Yes" and "No" To add row headers for a Markdown table, wrap the table in the Liquid tags `{% raw %}{% rowheaders %} {% endrowheaders %}{% endraw %}`. For more information about using row headers, see "[AUTOTITLE](/contributing/syntax-and-versioning-for-github-docs/using-markdown-and-liquid-in-github-docs#table-row-headers)." ### Include a value for every cell + Every cell in a table must contain a value. If the table has row headers, the first cell (cell A1) can be empty. If there is no data, use "None" or "Not applicable". Do not use "NA" or "N/A". @@ -1022,6 +1024,7 @@ For tables that use symbols: Where table data is not truly binary (every value is either "Yes" or "No", for example), text values may be needed in addition to, or instead of, symbols. For example on the page "[AUTOTITLE](/support/learning-about-github-support/about-github-support)", some features are marked as "Available to purchase". ### Use footnotes sparingly + See "[Footnotes](#footnotes)." ### Align table content consistently @@ -1106,6 +1109,7 @@ Use quotation marks around article titles, whether the article is hosted on GitH For further guidance, see “[Formatting titles](https://docs.microsoft.com/style-guide/text-formatting/formatting-titles)” in Microsoft’s Style Guide. ## Short titles + We use short titles to populate the sidebar navigation. Since short titles appear in the sidebar navigation, they can use context to convey meaning and be slightly less precise than full titles. The goal of short titles is to help people find the content that they are looking for without having sidebar navigation items that are too long. Short titles give people contextual understanding of an article and align to the following standards. - Short titles are 2-3 words long. @@ -1195,6 +1199,7 @@ When referencing text in the user interface, reproduce the text exactly. Use quo - **Use:** Under “IP allow list”, click **Edit**. ### More resources + Microsoft Style Guide: - [Formatting text in instructions](https://docs.microsoft.com/style-guide/procedures-instructions/formatting-text-in-instructions) diff --git a/content/contributing/writing-for-github-docs/using-videos-in-github-docs.md b/content/contributing/writing-for-github-docs/using-videos-in-github-docs.md index 74461f3403..4e9a933d82 100644 --- a/content/contributing/writing-for-github-docs/using-videos-in-github-docs.md +++ b/content/contributing/writing-for-github-docs/using-videos-in-github-docs.md @@ -45,18 +45,21 @@ Good videos introduce an instructional agenda that includes steps and goals so t Videos are broadly grouped into three categories: product overviews, feature videos, and tutorials. These descriptions are generalizations of each video type. Some videos might not fit perfectly in one category, but can still be useful without meeting the exact guidelines. ### Product overviews + - **Purpose**: Briefly explain what the product is, showcase the main functionality, and get people interested - **Length**: Less than a minute - **Possible audiences**: People who want to know if a feature is useful for their goals, people who are new to {% data variables.product.company_short %} and trying to understand what the products do - **Possible locations in the docs**: Landing pages and guides ### Feature videos + - **Purpose**: Supplement conceptual or procedural content - **Length**: As short as possible, without exceeding five minutes. Break longer content into multiple shorter, focused videos - **Possible audiences**: People who are learning about or how to use a feature - **Possible locations in the docs**: Guides, conceptual articles, procedural articles ### Tutorials + - **Purpose**: Help novice users get going with a product, drive adoption, or explain complex functionalities - **Length**: Individual videos should be five minutes or less. Complex topics can have a series of shorter videos spread across an article. Total length should be a maximum of 15 minutes - **Possible audiences**: New users of features or products diff --git a/content/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment.md b/content/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment.md index a0f7d2d503..32064155cd 100644 --- a/content/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment.md +++ b/content/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment.md @@ -85,7 +85,7 @@ You can manage advanced settings for {% data variables.product.prodname_copilot ## Configuring language settings for {% data variables.product.prodname_copilot %} -You can specify which languages you want to activate or deactivate {% data variables.product.prodname_copilot %} for either in the IDE or by editing your `github-copilot.xml` file. If you make changes to language settings in your IDE, you can individually select and deselect the languages you want to activate or deactivate. +You can specify which languages you want to activate or deactivate {% data variables.product.prodname_copilot %} for either in the IDE or by editing your `github-copilot.xml` file. If you make changes to language settings in your IDE, you can individually select and deselect the languages you want to activate or deactivate. If you make changes to the language settings in your `github-copilot.xml` file, you can specify individual languages, or you can use a wildcard to activate or deactivate {% data variables.product.prodname_copilot %} for all languages. You can also specify exceptions, which will override the wild card setting for the specified languages. For example, you can deactivate {% data variables.product.prodname_copilot %} for all languages, except for Python and YAML. By default, when you install the {% data variables.product.prodname_copilot %} extension, {% data variables.product.prodname_copilot %} is activated for all languages. @@ -109,9 +109,9 @@ The file is located in the following directory: For example, if you are using IntelliJ IDEA 2021.1 on macOS, the file is located at `~/Library/Application Support/JetBrains/IdeaIC2021.1/options/github-copilot.xml`. -The `github-copilot.xml` file might not be generated until you make a change to your default language configuration in the IDE's settings. If you cannot locate the file, you should try modifying the default language settings in the IDE. For more information, see "[Configuring language settings in the IDE](#configuring-language-settings-in-the-ide)." +The `github-copilot.xml` file might not be generated until you make a change to your default language configuration in the IDE's settings. If you cannot locate the file, you should try modifying the default language settings in the IDE. For more information, see "[Configuring language settings in the IDE](#configuring-language-settings-in-the-ide)." -Alternatively, you can create the file manually and save it in the location for your operating system listed above. For more information, see "[Example language configurations](#example-language-configurations)." +Alternatively, you can create the file manually and save it in the location for your operating system listed above. For more information, see "[Example language configurations](#example-language-configurations)." 1. Open the `github-copilot.xml` file in a text editor. 1. Between the `` tags, add the line or lines for the languages you want to activate or deactivate {% data variables.product.prodname_copilot %} for. For example, to deactivate {% data variables.product.prodname_copilot %} for all languages: @@ -119,6 +119,7 @@ Alternatively, you can create the file manually and save it in the location for ```xml copy ``` + 1. Save the changes to the `github-copilot.xml` file. 1. Restart your JetBrains IDE for the changes to take effect. @@ -151,6 +152,7 @@ To deactivate {% data variables.product.prodname_copilot %} for all languages, t ``` + To specify languages individually, add an entry for each language you want to activate or deactivate {% data variables.product.prodname_copilot %} for. Specific language settings will override the wildcard. For example, to activate {% data variables.product.prodname_copilot %} for Python and YAML, and deactivate {% data variables.product.prodname_copilot %} for all other languages, add the following entries: ```xml copy diff --git a/content/copilot/getting-started-with-github-copilot.md b/content/copilot/getting-started-with-github-copilot.md index 5f308552f4..5b10df27d5 100644 --- a/content/copilot/getting-started-with-github-copilot.md +++ b/content/copilot/getting-started-with-github-copilot.md @@ -263,7 +263,7 @@ To use {% data variables.product.prodname_copilot %}, you must first install the - If you have previously authorized {% data variables.product.prodname_vscode %} for your account on {% data variables.product.prodname_dotcom %}, {% data variables.product.prodname_copilot %} will be automatically authorized. - If you don't get the prompt to authorize, click the bell icon in the bottom panel of the {% data variables.product.prodname_vscode %} window. - + ![Screenshot of the {% data variables.product.prodname_vscode %} task bar with {% data variables.product.prodname_copilot %} icons. The bell icon is outlined in dark orange.](/assets/images/help/copilot/copilot-activate.png) 1. In your browser, {% data variables.product.prodname_dotcom %} will request the necessary permissions for {% data variables.product.prodname_copilot %}. To approve these permissions, click **Authorize {% data variables.product.prodname_vscode %}**. @@ -341,6 +341,8 @@ You can also use {% data variables.product.prodname_copilot %} to generate sugge ```javascript copy // Express server on port 3000 + ``` + 1. To accept each line, press Tab, then Enter. 1. Type the following comment and then press Enter. {% data variables.product.prodname_copilot %} will suggest an implementation for the default handler. diff --git a/content/copilot/github-copilot-chat/about-github-copilot-chat.md b/content/copilot/github-copilot-chat/about-github-copilot-chat.md index 9b081cf3ba..bea7fe2b5a 100644 --- a/content/copilot/github-copilot-chat/about-github-copilot-chat.md +++ b/content/copilot/github-copilot-chat/about-github-copilot-chat.md @@ -17,7 +17,7 @@ shortTitle: About Copilot Chat {% data variables.product.prodname_copilot_chat %} works by using a combination of natural language processing and machine learning to understand your question and provide you with an answer. This process can be broken down into a number of steps. -### Input processing +### Input processing The input prompt from the user is pre-processed by the {% data variables.product.prodname_copilot_chat_short %} system and sent to a large language model to get a response based on the context and prompt. User input can take the form of code snippets or plain language. The system is only intended to respond to coding-related questions. @@ -25,7 +25,7 @@ The input prompt from the user is pre-processed by the {% data variables.product The pre-processed prompt is then passed through the {% data variables.product.prodname_copilot_chat_short %} language model, which is a neural network that has been trained on a large body of text data. The language model analyzes the input prompt. -### Response generation +### Response generation The language model generates a response based on its analysis of the input prompt. This response can take the form of generated code, code suggestions, or explanations of existing code. @@ -41,19 +41,19 @@ The response generated by {% data variables.product.prodname_copilot_chat_short ### Generating unit test cases -{% data variables.product.prodname_copilot_chat_short %} can help write unit test cases by generating code snippets based on the code open in the editor or the code snippet you highlight in the editor. This may help you write test cases without spending as much time on repetitive tasks. For example, if you are writing a test case for a specific function, you can use {% data variables.product.prodname_copilot_chat_short %} to suggest possible input parameters and expected output values based on the function's signature and body. {% data variables.product.prodname_copilot_chat_short %} can also suggest assertions that ensure the function is working correctly, based on the code's context and semantics. +{% data variables.product.prodname_copilot_chat_short %} can help write unit test cases by generating code snippets based on the code open in the editor or the code snippet you highlight in the editor. This may help you write test cases without spending as much time on repetitive tasks. For example, if you are writing a test case for a specific function, you can use {% data variables.product.prodname_copilot_chat_short %} to suggest possible input parameters and expected output values based on the function's signature and body. {% data variables.product.prodname_copilot_chat_short %} can also suggest assertions that ensure the function is working correctly, based on the code's context and semantics. {% data variables.product.prodname_copilot_chat_short %} can also help you write test cases for edge cases and boundary conditions that might be difficult to identify manually. For instance, {% data variables.product.prodname_copilot_chat_short %} can suggest test cases for error handling, null values, or unexpected input types, helping you ensure your code is robust and resilient. However, it is important to note that generated test cases may not cover all possible scenarios, and manual testing and code review are still necessary to ensure the quality of the code. For more information on generating unit test cases, see "[Asking {% data variables.product.prodname_copilot_chat %} questions about your code](/copilot/github-copilot-chat/using-github-copilot-chat#asking-github-copilot-chat-questions-about-your-code)." ### Explaining code -{% data variables.product.prodname_copilot_chat_short %} can help explain selected code by generating natural language descriptions of the code's functionality and purpose. This can be useful if you want to understand the code's behavior or for non-technical stakeholders who need to understand how the code works. For example, if you select a function or code block in the code editor, {% data variables.product.prodname_copilot_chat_short %} can generate a natural language description of what the code does and how it fits into the overall system. This can include information such as the function's input and output parameters, its dependencies, and its purpose in the larger application. +{% data variables.product.prodname_copilot_chat_short %} can help explain selected code by generating natural language descriptions of the code's functionality and purpose. This can be useful if you want to understand the code's behavior or for non-technical stakeholders who need to understand how the code works. For example, if you select a function or code block in the code editor, {% data variables.product.prodname_copilot_chat_short %} can generate a natural language description of what the code does and how it fits into the overall system. This can include information such as the function's input and output parameters, its dependencies, and its purpose in the larger application. By generating explanations and suggesting related documentation, {% data variables.product.prodname_copilot_chat_short %} may help you to understand the selected code, leading to improved collaboration and more effective software development. However, it's important to note that the generated explanations and documentation may not always be accurate or complete, so you'll need to review, and occasionally correct, {% data variables.product.prodname_copilot_chat_short %}'s output. ### Proposing code fixes -{% data variables.product.prodname_copilot_chat_short %} can propose a fix for bugs in your code by suggesting code snippets and solutions based on the context of the error or issue. This can be useful if you are struggling to identify the root cause of a bug or you need guidance on the best way to fix it. For example, if your code produces an error message or warning, {% data variables.product.prodname_copilot_chat_short %} can suggest possible fixes based on the error message, the code's syntax, and the surrounding code. +{% data variables.product.prodname_copilot_chat_short %} can propose a fix for bugs in your code by suggesting code snippets and solutions based on the context of the error or issue. This can be useful if you are struggling to identify the root cause of a bug or you need guidance on the best way to fix it. For example, if your code produces an error message or warning, {% data variables.product.prodname_copilot_chat_short %} can suggest possible fixes based on the error message, the code's syntax, and the surrounding code. {% data variables.product.prodname_copilot_chat_short %} can suggest changes to variables, control structures, or function calls that might resolve the issue and generate code snippets that can be incorporated into the codebase. However, it's important to note that the suggested fixes may not always be optimal or complete, so you'll need to review and test the suggestions. @@ -105,7 +105,7 @@ Depending on factors such as your codebase and input data, you may experience di {% data variables.product.prodname_copilot_chat_short %} is capable of generating new code, which it does in a probabilistic way. While the probability that it may produce code that matches code in the training set is low, a {% data variables.product.prodname_copilot_chat_short %} suggestion may contain some code snippets that match code in the training set. {% data variables.product.prodname_copilot_chat_short %} utilizes filters that block matches with public code on {% data variables.product.prodname_dotcom %} repositories, but you should always take the same precautions as you would with any code you write that uses material you did not independently originate, including precautions to ensure its suitability. These include rigorous testing, IP scanning, and checking for security vulnerabilities. You should make sure your IDE or editor does not automatically compile or run generated code before you review it. -### Inaccurate code +### Inaccurate code One of the limitations of {% data variables.product.prodname_copilot_chat_short %} is that it may generate code that appears to be valid but may not actually be semantically or syntactically correct or may not accurately reflect the intent of the developer. To mitigate the risk of inaccurate code, you should carefully review and test the generated code, particularly when dealing with critical or sensitive applications. You should also ensure that the generated code adheres to best practices and design patterns and fits within the overall architecture and style of the codebase. diff --git a/content/copilot/managing-copilot-for-business/managing-access-for-copilot-for-business-in-your-organization.md b/content/copilot/managing-copilot-for-business/managing-access-for-copilot-for-business-in-your-organization.md index 083ec3d7a1..f61cb033c8 100644 --- a/content/copilot/managing-copilot-for-business/managing-access-for-copilot-for-business-in-your-organization.md +++ b/content/copilot/managing-copilot-for-business/managing-access-for-copilot-for-business-in-your-organization.md @@ -11,7 +11,7 @@ shortTitle: Managing access ## About managing access to {% data variables.product.prodname_copilot_for_business %} in your organization -{% data variables.product.prodname_copilot_for_business %} is a {% data variables.product.prodname_copilot %} subscription, billed and administered at the organization {% ifversion ghec %}or enterprise {% endif %}level.{% ifversion ghec %} Enterprise owners can administer access for organizations within the enterprise.{% endif %} Organization owners can administer access for teams and individuals within the organization. Organization owners can also access usage data relating to {% data variables.product.prodname_copilot_for_business %} in their organization, and use that data to make informed decisions about seat assignment. +{% data variables.product.prodname_copilot_for_business %} is a {% data variables.product.prodname_copilot %} subscription, billed and administered at the organization {% ifversion ghec %}or enterprise {% endif %}level.{% ifversion ghec %} Enterprise owners can administer access for organizations within the enterprise.{% endif %} Organization owners can administer access for teams and individuals within the organization. Organization owners can also access usage data relating to {% data variables.product.prodname_copilot_for_business %} in their organization, and use that data to make informed decisions about seat assignment. Organization{% ifversion ghec %} and enterprise{% endif %} owners can also manage policies for {% data variables.product.prodname_copilot_for_business %}. For more information{% ifversion ghec %} about managing policies at the organization level{% endif %}, see "[AUTOTITLE](/copilot/managing-copilot-for-business/managing-policies-for-copilot-for-business-in-your-organization)."{% ifversion ghec %} For more information about managing policies at the enterprise level, see "[AUTOTITLE](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-copilot-in-your-enterprise)" {% endif %} diff --git a/content/copilot/managing-copilot-for-business/reviewing-your-organization-or-enterprises-audit-logs-for-copilot-for-business.md b/content/copilot/managing-copilot-for-business/reviewing-your-organization-or-enterprises-audit-logs-for-copilot-for-business.md index 14a1e5a47d..1d029ab98e 100644 --- a/content/copilot/managing-copilot-for-business/reviewing-your-organization-or-enterprises-audit-logs-for-copilot-for-business.md +++ b/content/copilot/managing-copilot-for-business/reviewing-your-organization-or-enterprises-audit-logs-for-copilot-for-business.md @@ -16,7 +16,9 @@ shortTitle: Audit logs Audit logs for {% data variables.product.prodname_copilot_business_short %} can help you understand what actions have been taken and by whom. You can use the audit logs to review actions taken by users in your organization{% ifversion ghec %} or enterprise{% endif %}, such as changes to an organization's {% data variables.product.prodname_copilot_short %} settings and policies, or the addition or removal of seats from your {% data variables.product.prodname_copilot_business_short %} subscription. The audit log lists events related to your {% data variables.product.prodname_copilot_business_short %} subscription for the current month and previous six months. For more information, see{% ifversion ghec %} "[AUTOTITLE](/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise)" or{% endif %} "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization)." ## Viewing your organization{%- ifversion ghec %} or enterprise{% endif %}'s audit logs + {%- ifversion ghec %} + ### Viewing your enterprise's audit logs {% data reusables.enterprise-accounts.access-enterprise %} diff --git a/content/copilot/overview-of-github-copilot/about-github-copilot-for-business.md b/content/copilot/overview-of-github-copilot/about-github-copilot-for-business.md index b9f1b964e3..268389c428 100644 --- a/content/copilot/overview-of-github-copilot/about-github-copilot-for-business.md +++ b/content/copilot/overview-of-github-copilot/about-github-copilot-for-business.md @@ -35,7 +35,7 @@ After setting up a subscription, you can enable {% data variables.product.prodna ## Requesting or granting access to {% data variables.product.prodname_copilot_for_business %} -Organization members can request access to {% data variables.product.prodname_copilot_for_business %} from their organization's owners. +Organization members can request access to {% data variables.product.prodname_copilot_for_business %} from their organization's owners. ### Submitting a request for {% data variables.product.prodname_copilot_for_business %} diff --git a/content/copilot/overview-of-github-copilot/about-github-copilot-for-individuals.md b/content/copilot/overview-of-github-copilot/about-github-copilot-for-individuals.md index 948f6979c4..7fb9533396 100644 --- a/content/copilot/overview-of-github-copilot/about-github-copilot-for-individuals.md +++ b/content/copilot/overview-of-github-copilot/about-github-copilot-for-individuals.md @@ -56,11 +56,11 @@ When you use {% data variables.product.prodname_copilot %} it will collect usage #### Prompts -A Prompt is the bundle of contextual information the {% data variables.product.prodname_copilot %} extension sends when a user is working on a file and pauses typing, or when the user opens the {% data variables.product.prodname_copilot_short %} pane. Prompts are retained unless you have disabled code snippet collection in your settings. +A Prompt is the bundle of contextual information the {% data variables.product.prodname_copilot %} extension sends when a user is working on a file and pauses typing, or when the user opens the {% data variables.product.prodname_copilot_short %} pane. Prompts are retained unless you have disabled code snippet collection in your settings. #### Suggestions -A Suggestion is one or more lines of proposed text returned to the {% data variables.product.prodname_copilot %} extension after a Prompt is received and processed by the AI-model. Suggestions are retained unless you disable code snippet collection in your settings. +A Suggestion is one or more lines of proposed text returned to the {% data variables.product.prodname_copilot %} extension after a Prompt is received and processed by the AI-model. Suggestions are retained unless you disable code snippet collection in your settings. ### How is the data in {% data variables.product.prodname_copilot_for_individuals %} used and shared? diff --git a/content/copilot/troubleshooting-github-copilot/viewing-logs-for-github-copilot-in-your-environment.md b/content/copilot/troubleshooting-github-copilot/viewing-logs-for-github-copilot-in-your-environment.md index 4cdbd81b0c..740f58043f 100644 --- a/content/copilot/troubleshooting-github-copilot/viewing-logs-for-github-copilot-in-your-environment.md +++ b/content/copilot/troubleshooting-github-copilot/viewing-logs-for-github-copilot-in-your-environment.md @@ -60,6 +60,7 @@ If you find the log file doesn't contain enough information to resolve an issue, ```text copy #com.github.copilot:trace ``` + 1. Keep using your IDE until you encounter the issue again, then collect the log file as described in "[Collecting log files](#collecting-log-files)." 1. When you have the information you need, disable debug mode by removing `#com.github.copilot:trace` from the "Custom Debug Log Configuration" window. @@ -131,6 +132,7 @@ If you find the log file doesn't contain enough information to resolve an issue, } }, ``` + 1. Keep using your IDE until you encounter the issue again, then collect the log file as described in "[Viewing and collecting log files](#viewing-and-collecting-log-files)." 1. When you have the information you need, disable debug mode by removing the content you added to your settings. diff --git a/content/desktop/configuring-and-customizing-github-desktop/configuring-basic-settings-in-github-desktop.md b/content/desktop/configuring-and-customizing-github-desktop/configuring-basic-settings-in-github-desktop.md index 208ecfb489..8c1db78d4b 100644 --- a/content/desktop/configuring-and-customizing-github-desktop/configuring-basic-settings-in-github-desktop.md +++ b/content/desktop/configuring-and-customizing-github-desktop/configuring-basic-settings-in-github-desktop.md @@ -17,7 +17,7 @@ shortTitle: Configure basic settings ![Screenshot of the "Preferences" window. The left sidebar, with menu options such as "Accounts" and "Integrations", is highlighted with an orange outline.](/assets/images/help/desktop/mac-select-preferences-pane.png) - {% indented_data_reference reusables.desktop.preferences-options-tabs spaces=3 %} + {% data reusables.desktop.preferences-options-tabs %} {% endmac %} @@ -28,7 +28,7 @@ shortTitle: Configure basic settings ![Screenshot of the "Options" window. The left sidebar, with menu options such as "Accounts" and "Integrations", is highlighted with an orange outline.](/assets/images/help/desktop/window-select-options-pane.png) - {% indented_data_reference reusables.desktop.preferences-options-tabs spaces=3 %} + {% data reusables.desktop.preferences-options-tabs %} {% endwindows %} diff --git a/content/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop.md b/content/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop.md index d84b037bc3..317335d2ea 100644 --- a/content/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop.md +++ b/content/desktop/installing-and-authenticating-to-github-desktop/authenticating-to-github-in-github-desktop.md @@ -57,7 +57,7 @@ Before you authenticate, {% data reusables.desktop.get-an-account %} {% data reusables.desktop.sign-in-browser %} - {% indented_data_reference reusables.user-settings.password-authentication-deprecation-desktop spaces=3 %} + {% data reusables.user-settings.password-authentication-deprecation-desktop %} {% data reusables.desktop.authenticate-in-browser %} {% data reusables.desktop.2fa-in-browser %} diff --git a/content/desktop/overview/about-github-desktop.md b/content/desktop/overview/about-github-desktop.md index 957cb0240f..36a7946e54 100644 --- a/content/desktop/overview/about-github-desktop.md +++ b/content/desktop/overview/about-github-desktop.md @@ -8,13 +8,13 @@ redirect_from: - /desktop/installing-and-configuring-github-desktop/overview/about-github-desktop --- -{% data variables.product.prodname_desktop %} is a free, open source application that helps you to work with files hosted on {% data variables.product.prodname_dotcom %} or other Git hosting services. +{% data variables.product.prodname_desktop %} is a free, open source application that helps you to work with files hosted on {% data variables.product.prodname_dotcom %} or other Git hosting services. You can use {% data variables.product.prodname_desktop %} alongside any tools you need to contribute to a project. For example, a typical workflow would be to use {% data variables.product.prodname_desktop %} to download a {% data variables.product.prodname_dotcom %} repository to your computer and create a new branch, use an editor such as {% data variables.product.prodname_vscode %} to make changes to the code, then return to {% data variables.product.prodname_desktop %} to commit and push the changes to {% data variables.product.prodname_dotcom %}. Like any tool for contributing changes to repositories on {% data variables.product.prodname_dotcom %}, {% data variables.product.prodname_desktop %} is built around the version control software Git. If you're new to Git and {% data variables.product.prodname_dotcom %}, you may find it easier to get started with {% data variables.product.prodname_desktop %} than you would using Git on the command line. Because {% data variables.product.prodname_desktop %} has a graphical user interface, it simplifies many of the aspects of Git that can be challenging for new users, such as memorizing commands and visualizing the changes you're making. -Even if you have experience with command-line Git, you may benefit from incorporating {% data variables.product.prodname_desktop %} into your work. If you frequently need to look up syntax for less common Git commands, such as choosing which changed lines to include in a commit or adding a co-author to a commit, you may benefit from switching to {% data variables.product.prodname_desktop %} to perform these commands. +Even if you have experience with command-line Git, you may benefit from incorporating {% data variables.product.prodname_desktop %} into your work. If you frequently need to look up syntax for less common Git commands, such as choosing which changed lines to include in a commit or adding a co-author to a commit, you may benefit from switching to {% data variables.product.prodname_desktop %} to perform these commands. Because {% data variables.product.prodname_desktop %} makes commands like these easy to find, and helps you visualize the changes you're introducing with an integrated diff view, it encourages best practices and helps you to create an accurate and easy-to-follow commit history so other collaborators on a project can easily review your work. diff --git a/content/desktop/working-with-your-remote-repository-on-github-or-github-enterprise/configuring-notifications-in-github-desktop.md b/content/desktop/working-with-your-remote-repository-on-github-or-github-enterprise/configuring-notifications-in-github-desktop.md index ac5cb7fed8..1470f8201a 100644 --- a/content/desktop/working-with-your-remote-repository-on-github-or-github-enterprise/configuring-notifications-in-github-desktop.md +++ b/content/desktop/working-with-your-remote-repository-on-github-or-github-enterprise/configuring-notifications-in-github-desktop.md @@ -50,7 +50,7 @@ For more information about macOS system notifications, see "[Use notifications o 1. In the "Options" windows, on the "Notifications" pane, select **Enable notifications**. 1. In the "Enable notifications" description field, click the **Notification Settings** link to open the "Notifications" pane in the Windows "Settings" window. 1. Under "Notifications", to enable notifications for Windows, click **On**. -1. Under "Notifications from apps and other senders", find "{% data variables.product.prodname_desktop %}" in the application list and click **On**. +1. Under "Notifications from apps and other senders", find "{% data variables.product.prodname_desktop %}" in the application list and click **On**. For more information about Windows system notifications, see "[Change notification settings in Windows](https://support.microsoft.com/en-us/windows/change-notification-settings-in-windows-8942c744-6198-fe56-4639-34320cf9444e)." diff --git a/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/register-a-learning-management-system-with-github-classroom.md b/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/register-a-learning-management-system-with-github-classroom.md index bf80b27ef1..ce9dcc2a45 100644 --- a/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/register-a-learning-management-system-with-github-classroom.md +++ b/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/register-a-learning-management-system-with-github-classroom.md @@ -102,7 +102,7 @@ You must be using Moodle version 3.0 or greater. 1. Select the **Supports Deep Linking (Content-Item Message)** checkbox. 1. Under the "Services" dropdown, next to "IMS LTI Names and Role Provisioning", select "Use this service to retrieve members' information as per privacy settings" from the dropdown menu. -1. Under the "Privacy" dropdown, set "Share launcher's name with tool" to "Always" and set "Share launcher's email with tool" to "Always." +1. Under the "Privacy" dropdown, set "Share launcher's name with tool" to "Always" and set "Share launcher's email with tool" to "Always." 1. Click **Save changes**. 1. GitHub Classroom has now been registered as an external tool. Under "Tools", on the 'GitHub Classroom" box, click the menu icon to see the "Tool configuration details" screen. This screen contains important information you'll need to input in the last step of registering your instance in {% data variables.product.prodname_classroom %} below. diff --git a/content/get-started/learning-about-github/about-github-advanced-security.md b/content/get-started/learning-about-github/about-github-advanced-security.md index fce66ddd4d..46ba04c835 100644 --- a/content/get-started/learning-about-github/about-github-advanced-security.md +++ b/content/get-started/learning-about-github/about-github-advanced-security.md @@ -106,7 +106,7 @@ If you have an enterprise account, license use for the entire enterprise is show {% data reusables.advanced-security.starter-workflows-beta %} {% data reusables.advanced-security.starter-workflow-overview %} -For more information on starter workflows, see "[AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-code-scanning-using-third-party-actions)" and "[AUTOTITLE](/actions/using-workflows/using-starter-workflows)." +For more information on starter workflows, see "[AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-code-scanning-using-third-party-actions)" and "[AUTOTITLE](/actions/learn-github-actions/using-starter-workflows)." {% endif %} diff --git a/content/get-started/signing-up-for-github/setting-up-a-trial-of-github-enterprise-cloud.md b/content/get-started/signing-up-for-github/setting-up-a-trial-of-github-enterprise-cloud.md index 95fed8813e..e5db172976 100644 --- a/content/get-started/signing-up-for-github/setting-up-a-trial-of-github-enterprise-cloud.md +++ b/content/get-started/signing-up-for-github/setting-up-a-trial-of-github-enterprise-cloud.md @@ -52,7 +52,7 @@ The following features are not included in the trial of {% data variables.produc {% note %} -**Note:** If you transfer an existing organization into your trial enterprise, all of these features will be disabled, but will be re-enabled if the organization is removed from the enterprise. +**Note:** If you invite an existing organization into your trial enterprise, all of these features will be disabled, but will be re-enabled if the organization is removed from the enterprise. {% endnote %} diff --git a/content/get-started/using-github/github-mobile.md b/content/get-started/using-github/github-mobile.md index d5db29c07d..ff658ecfc4 100644 --- a/content/get-started/using-github/github-mobile.md +++ b/content/get-started/using-github/github-mobile.md @@ -55,7 +55,7 @@ During the beta for {% data variables.product.prodname_mobile %} with {% data va ### Adding, switching, or signing out of accounts -You can sign into mobile with any {% data variables.product.company_short %} account, either on {% data variables.product.prodname_dotcom_the_website %} or on {% data variables.product.prodname_ghe_server %}. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, then tap {% octicon "plus" aria-hidden="true" %} **Add Enterprise Account**. Follow the prompts to sign in. +You can sign into mobile with any {% data variables.product.company_short %} account, either on {% data variables.product.prodname_dotcom_the_website %} or on {% data variables.product.prodname_ghe_server %}. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, then tap {% octicon "plus" aria-hidden="true" %} **Add Enterprise Account**. Follow the prompts to sign in. After signing in with an account on {% data variables.product.prodname_ghe_server %}, you can switch between any other accounts you're currently logged into within the app. At the bottom of the app, long-press {% octicon "person" aria-hidden="true" %} **Profile**, then tap the account you want to switch to. diff --git a/content/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax.md b/content/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax.md index 41c5bd06bd..2e2237544a 100644 --- a/content/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax.md +++ b/content/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax.md @@ -252,6 +252,7 @@ You can create multiple levels of nested lists using the same method. For exampl For more examples, see the [GitHub Flavored Markdown Spec](https://github.github.com/gfm/#example-265). {% ifversion task-lists-v1 %} + ## Task lists {% data reusables.repositories.task-list-markdown %} diff --git a/content/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists.md b/content/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists.md index d809b366a7..8da95a27d4 100644 --- a/content/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists.md +++ b/content/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists.md @@ -74,6 +74,7 @@ Any issues that are referenced in a task list specify that they are tracked by t {% endif %} {% ifversion code-scanning-task-lists %} + ## Further reading - "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/tracking-code-scanning-alerts-in-issues-using-task-lists)"{% endif %} diff --git a/content/github-cli/github-cli/quickstart.md b/content/github-cli/github-cli/quickstart.md index 8d8efa2872..abeb8a8319 100644 --- a/content/github-cli/github-cli/quickstart.md +++ b/content/github-cli/github-cli/quickstart.md @@ -54,7 +54,7 @@ Enter `gh status` to see details of your current work on {% data variables.produ ### Viewing a repository -Enter `gh repo view OWNER/REPO` to see the repository description and `README.md` for the repository. Enter `gh repo view OWNER/REPO --web` to view the repository in your default browser. +Enter `gh repo view OWNER/REPO` to see the repository description and `README.md` for the repository. Enter `gh repo view OWNER/REPO --web` to view the repository in your default browser. If you run the `repo` subcommand from within the directory of a local Git repository that has a remote on {% data variables.product.prodname_dotcom %} you can omit `OWNER/REPO`. @@ -68,23 +68,23 @@ Enter `gh repo create` and follow the on-screen instructions. You can create a n ### Working with issues -Enter `gh issue list --repo OWNER/REPO` to list the most recently created issues that are currently open for the specified repository. If you run the `issue` subcommand from within the directory of a local Git repository that has a remote on {% data variables.product.prodname_dotcom %} you can omit `--repo OWNER/REPO`. For example, enter `gh issue list --assignee "@me"` to list issues assigned to you in this repository, or `gh issue list --author monalisa` to list issues created by the user "monalisa." +Enter `gh issue list --repo OWNER/REPO` to list the most recently created issues that are currently open for the specified repository. If you run the `issue` subcommand from within the directory of a local Git repository that has a remote on {% data variables.product.prodname_dotcom %} you can omit `--repo OWNER/REPO`. For example, enter `gh issue list --assignee "@me"` to list issues assigned to you in this repository, or `gh issue list --author monalisa` to list issues created by the user "monalisa." -You can also create a new issue, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-with-github-cli)," or search for an issue, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/filtering-and-searching-issues-and-pull-requests?tool=cli#searching-for-issues-and-pull-requests)." +You can also create a new issue, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-with-github-cli)," or search for an issue, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/filtering-and-searching-issues-and-pull-requests?tool=cli#searching-for-issues-and-pull-requests)." ### Working with pull requests -Enter `gh pr list --repo OWNER/REPO` to list the most recently created pull requests that are currently open for the specified repository. If you run the `pr` subcommand from within the directory of a local Git repository that has a remote on {% data variables.product.prodname_dotcom %} you can omit `--repo OWNER/REPO`. For example, enter `gh pr list --author "@me"` to list open pull requests that you created in this repository. +Enter `gh pr list --repo OWNER/REPO` to list the most recently created pull requests that are currently open for the specified repository. If you run the `pr` subcommand from within the directory of a local Git repository that has a remote on {% data variables.product.prodname_dotcom %} you can omit `--repo OWNER/REPO`. For example, enter `gh pr list --author "@me"` to list open pull requests that you created in this repository. -Enter `gh pr list --label LABEL-NAME` to list open pull requests with a specific label. Enter `gh search prs --review-requested=@me --state=open` to list pull requests that you've been asked to review. +Enter `gh pr list --label LABEL-NAME` to list open pull requests with a specific label. Enter `gh search prs --review-requested=@me --state=open` to list pull requests that you've been asked to review. To create a pull request, enter `gh pr create` and follow the on-screen instructions. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request?tool=cli#creating-the-pull-request)." ### Working with codespaces -To create a new codespace, enter `gh codespace create` and follow the on-screen instructions. +To create a new codespace, enter `gh codespace create` and follow the on-screen instructions. -To display your existing codespaces, enter `gh codespace list`. To open a codespace in the web version of {% data variables.product.prodname_vscode_shortname %} enter `gh codespace code -w` and choose a codespace . +To display your existing codespaces, enter `gh codespace list`. To open a codespace in the web version of {% data variables.product.prodname_vscode_shortname %} enter `gh codespace code -w` and choose a codespace . In all of these commands you can substitute `cs` for `codespace`. @@ -96,11 +96,11 @@ For each command, and each subsidiary subcommand, you can append the `--help` fl ## Customizing {% data variables.product.prodname_cli %} -You can change configuration settings and add aliases or extensions, to make {% data variables.product.prodname_cli %} work the way that suits you best. +You can change configuration settings and add aliases or extensions, to make {% data variables.product.prodname_cli %} work the way that suits you best. -- Enter `gh config set SUBCOMMANDS` to configure {% data variables.product.prodname_cli %}'s settings, replacing `SUBCOMMANDS` with the setting you want to adjust. +- Enter `gh config set SUBCOMMANDS` to configure {% data variables.product.prodname_cli %}'s settings, replacing `SUBCOMMANDS` with the setting you want to adjust. - For example, you can specify the text editor that's used when a {% data variables.product.prodname_cli %} command requires you to edit text - such as when you add the body text for a new issue you're creating. To set your preferred text editor to {% data variables.product.prodname_vscode %} enter `gh config set editor "code -w"`. The `-w` (or `--wait`) flag in this example causes the command to wait for the file to be closed in {% data variables.product.prodname_vscode %} before proceeding with the next step in your terminal. + For example, you can specify the text editor that's used when a {% data variables.product.prodname_cli %} command requires you to edit text - such as when you add the body text for a new issue you're creating. To set your preferred text editor to {% data variables.product.prodname_vscode %} enter `gh config set editor "code -w"`. The `-w` (or `--wait`) flag in this example causes the command to wait for the file to be closed in {% data variables.product.prodname_vscode %} before proceeding with the next step in your terminal. For more information, see [`gh config set`](https://cli.github.com/manual/gh_config_set). diff --git a/content/issues/managing-your-tasks-with-tasklists/managing-tasks-in-a-tasklist.md b/content/issues/managing-your-tasks-with-tasklists/managing-tasks-in-a-tasklist.md index e30da32ab5..2078e07010 100644 --- a/content/issues/managing-your-tasks-with-tasklists/managing-tasks-in-a-tasklist.md +++ b/content/issues/managing-your-tasks-with-tasklists/managing-tasks-in-a-tasklist.md @@ -39,10 +39,10 @@ You can convert draft tasks into issues. Issues are created in the same reposito 1. In the menu, click **Convert to issue**. ## Setting labels, assignees, and projects from a tasklist - + 1. Place your cursor over the task you want to make changes to and next to the task, click {% octicon "kebab-horizontal" aria-label="tracking block item menu" %}. - ![Screenshot of a tasklist. To the right of a task, the tracking block item menu, which is labeled with a horizontal kebab icon, is outlined in dark orange.](/assets/images/help/projects-v2/tasklists-item-context-menu.png) + ![Screenshot of a tasklist. To the right of a task, the tracking block item menu, which is labeled with a horizontal kebab icon, is outlined in dark orange.](/assets/images/help/projects-v2/tasklists-item-context-menu.png) 1. Using the context menu, make your changes. - To set labels, select **Set labels**, and then select one or more labels from the menu. diff --git a/content/issues/managing-your-tasks-with-tasklists/quickstart-for-tasklists.md b/content/issues/managing-your-tasks-with-tasklists/quickstart-for-tasklists.md index 37cab7b235..9c588e0ab8 100644 --- a/content/issues/managing-your-tasks-with-tasklists/quickstart-for-tasklists.md +++ b/content/issues/managing-your-tasks-with-tasklists/quickstart-for-tasklists.md @@ -22,7 +22,7 @@ As you follow this guide, you will create several issues in a repository. You wi ## Creating an issue to track the work of adding a new landing page -In this step, we will create the parent issue to track the subtasks required to publish the new landing page. +In this step, we will create the parent issue to track the subtasks required to publish the new landing page. 1. Navigate to the repository where you want to track the work. 1. Create a new blank issue with the title "Tracking issue for landing page." For more information, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue)." @@ -69,7 +69,7 @@ You can now assign yourself to the new issue without leaving your tasklist. 1. Next to the "Design new landing page" issue in your tasklist, click {% octicon "kebab-horizontal" aria-label="tracking block item menu" %}. - ![Screenshot of a tasklist. To the right of a task, the tracking block item menu, which is labeled with a horizontal kebab icon, is outlined in dark orange.](/assets/images/help/projects-v2/tasklists-item-context-menu.png) + ![Screenshot of a tasklist. To the right of a task, the tracking block item menu, which is labeled with a horizontal kebab icon, is outlined in dark orange.](/assets/images/help/projects-v2/tasklists-item-context-menu.png) 1. In the context menu, click **Set assignees**. 1. In the list of people, select yourself. @@ -86,9 +86,9 @@ You can change the title of a tasklist to better represent the tasks it is track 1. In the menu, click **Rename**. 1. Type a new title for your tasklist and press Enter. - + For our example landing page scenario, you could rename this tasklist to "Landing page content." - + ## Creating a second tasklist using Markdown You can create multiple tasklists in a single issue. Each tasklist has its own tasks and title. You can add tasklists using the **Add tasklist** button or by entering Markdown when you edit the issue. @@ -106,6 +106,7 @@ You can create multiple tasklists in a single issue. Each tasklist has its own t - [ ] Draft task ``` ```` + 1. To change the title of this tasklist, type a new title after `### `. For example, change `### Tasks` to `### Backend changes`. In the next two sections, we will make further changes to the Markdown before saving the comment. @@ -160,6 +161,6 @@ Issues and pull requests are not automatically added to a project when they are ## Conclusion -After following this guide, you have created a tracking issue with two tasklists, made changes to those tasklists in the UI and directly with Markdown, converted a draft task into an issue, and integrated your tasklist data with a project. +After following this guide, you have created a tracking issue with two tasklists, made changes to those tasklists in the UI and directly with Markdown, converted a draft task into an issue, and integrated your tasklist data with a project. To learn more about managing the items in your tasklist, see "[AUTOTITLE](/issues/managing-your-tasks-with-tasklists/managing-tasks-in-a-tasklist)." For more information on integrating tasklists with your projects, see "[AUTOTITLE](/issues/managing-your-tasks-with-tasklists/using-projects-and-tasklists)." diff --git a/content/issues/managing-your-tasks-with-tasklists/using-projects-and-tasklists.md b/content/issues/managing-your-tasks-with-tasklists/using-projects-and-tasklists.md index 6136109a85..c022098ad0 100644 --- a/content/issues/managing-your-tasks-with-tasklists/using-projects-and-tasklists.md +++ b/content/issues/managing-your-tasks-with-tasklists/using-projects-and-tasklists.md @@ -15,7 +15,7 @@ When you add tasklists to your issues and view those issues in your projects, yo When you add an issue with a tasklist to a project, the issues and pull requests in the tasklist are not automatically added to the project. To use the "tracks" and "tracked-by" fields, you will need to add all the issues and pull requests that comprise your tasklist to the project. Consider using the auto-add workflow to automatically add issues to your project. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/automating-your-project/adding-items-automatically)." -When you group a view by "Tracked by", and some tracked issues and pull requests are not part of the project, {% data variables.product.product_name %} will include a note beneath each group with the option to add those missing issues and pull requests. +When you group a view by "Tracked by", and some tracked issues and pull requests are not part of the project, {% data variables.product.product_name %} will include a note beneath each group with the option to add those missing issues and pull requests. ## Using the "tracks" field @@ -50,11 +50,11 @@ When the issues added to your project are either tracked by tasklists or contain 1. In your project, click on an issue that either contains a tasklist or is tracked by a tasklist in another issue. 1. In the issue that opens in the side-bar, you can navigate through the associated issues. - To navigate down the issue hierarchy, and view the tasks that comprise the current issue, click on issues in the tasklist. - + ![Screenshot of the header of an issue comment. In the right corner, a horizontal kebab icon is outlined in dark orange.](/assets/images/help/projects-v2/side-panel-tasklist.png) - + - To navigate up the issue hierarchy, and view the issues that include the current issue as a task, click on an issue number in the breadcrumb menu. - + ![Screenshot of the header of an issue comment. In the right corner, a horizontal kebab icon is outlined in dark orange.](/assets/images/help/projects-v2/breadcrumb-menu.png) - + {% endif %} diff --git a/content/issues/planning-and-tracking-with-projects/creating-projects/copying-an-existing-project.md b/content/issues/planning-and-tracking-with-projects/creating-projects/copying-an-existing-project.md index 7ecbb9bd05..fbe3fcf98e 100644 --- a/content/issues/planning-and-tracking-with-projects/creating-projects/copying-an-existing-project.md +++ b/content/issues/planning-and-tracking-with-projects/creating-projects/copying-an-existing-project.md @@ -24,7 +24,7 @@ When you copy a project, the new project will contain the same {% data reusables 1. In the top-right, click {% octicon "kebab-horizontal" aria-label="More options" %} to open the menu. ![Screenshot showing a project's menu bar. The menu icon is highlighted with an orange outline.](/assets/images/help/projects-v2/open-menu.png) - + 1. In the menu, click {% octicon "copy" aria-hidden="true" %} **Make a copy**. 1. Optionally, if you want all draft issues to be copied with the project, in the "Make a copy" dialog, select **Draft issues will be copied if selected**.{%- ifversion projects-v2-org-templates-improvements %}{%- else %} diff --git a/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-board-layout.md b/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-board-layout.md index bc86b727ae..bb457a647f 100644 --- a/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-board-layout.md +++ b/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-board-layout.md @@ -65,7 +65,7 @@ In the board layout, you can can choose which columns to display. The available {% data reusables.projects.customize.slice-panel %} -{% endif %} +{% endif %} {% ifversion projects-v2-consistent-sorting %} diff --git a/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-roadmap-layout.md b/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-roadmap-layout.md index 62786bbfa7..0744945930 100644 --- a/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-roadmap-layout.md +++ b/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-roadmap-layout.md @@ -56,7 +56,7 @@ You can choose the density of items on your roadmap. You can zoom in to show one {% data reusables.projects.customize.slice-panel %} -{% endif %} +{% endif %} {% ifversion projects-v2-consistent-sorting %} diff --git a/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-table-layout.md b/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-table-layout.md index 4d7e8cb037..6f13f34af2 100644 --- a/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-table-layout.md +++ b/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-table-layout.md @@ -39,7 +39,7 @@ You can group items by a custom field value. {% data reusables.projects.customiz {% data reusables.projects.customize.slice-panel %} -{% endif %} +{% endif %} ## Reordering fields diff --git a/content/issues/planning-and-tracking-with-projects/managing-your-project/managing-project-templates-in-your-organization.md b/content/issues/planning-and-tracking-with-projects/managing-your-project/managing-project-templates-in-your-organization.md index f98873fbc9..f3af0c566f 100644 --- a/content/issues/planning-and-tracking-with-projects/managing-your-project/managing-project-templates-in-your-organization.md +++ b/content/issues/planning-and-tracking-with-projects/managing-your-project/managing-project-templates-in-your-organization.md @@ -22,15 +22,20 @@ The projects you have marked as templates are made available in the "Select a te When someone creates a project from a template, the {% data reusables.projects.what-gets-copied %} are copied from the template to the new project. {% ifversion projects-v2-org-templates-improvements %}You can find the template that a project used from the project's settings page, under the "Templates" section.{% endif %} {% ifversion projects-v2-org-templates-improvements %} + ## Creating templates + {% else %} + ## Setting a project as a template + {% endif %} {% ifversion projects-v2-org-templates-improvements %} You can either create a new template directly, or you can set a project as a template. ### Creating a new template + {% data reusables.profile.access_org %} {% data reusables.user-settings.access_org %} {% data reusables.projects.projects-tab %} @@ -38,6 +43,7 @@ You can either create a new template directly, or you can set a project as a tem 1. Click **New template**. ### Setting a project as a template + {% endif %} If you have admin permissions for a project in your organization, you can set the project as a template and make it available for others in your organization to use. diff --git a/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md b/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md index 6c5ca77cd8..e3e11a5dd0 100644 --- a/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md +++ b/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md @@ -76,6 +76,7 @@ Here is an example of an issue created for a large initiative, front-end work, i ![Screenshot of an issue called "Front-end work for Project Octocat." The issue body includes a list of tasks to complete.](/assets/images/help/issues/quickstart-create-large-initiative-issue.png) {% ifversion task-lists-v1 %} + ### Task list example You can use task lists to break larger issues down into smaller tasks and to track issues as part of a larger goal. {% ifversion fpt or ghec %} Task lists have additional functionality when added to the body of an issue. You can see the number of tasks completed out of the total at the top of the issue, and if someone closes an issue linked in the task list, the checkbox will automatically be marked as complete.{% endif %} For more information, see "[AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists)." diff --git a/content/issues/tracking-your-work-with-issues/quickstart.md b/content/issues/tracking-your-work-with-issues/quickstart.md index 0aeed6f5ce..5aa83efdc3 100644 --- a/content/issues/tracking-your-work-with-issues/quickstart.md +++ b/content/issues/tracking-your-work-with-issues/quickstart.md @@ -41,6 +41,7 @@ You can use markdown to add formatting, links, emojis, and more. For more inform ![Screenshot of the new issue form, with a title and body filled in.](/assets/images/help/issues/issue-title-body.png) {% ifversion task-lists-v1 %} + ## Adding a task list It can be helpful to break large issues into smaller tasks, or to track multiple related issues in a single larger issue. Add a task list to your issue by prefacing list items with `[ ]`. Reference existing issues by issue number or URL. You can use plain text to track tasks that don't have a corresponding issue and convert them to issues later. For more information, see "[AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists)." diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line.md index 7a15151e69..ccc662cedc 100644 --- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line.md +++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/about-source-code-imports-using-the-command-line.md @@ -40,6 +40,7 @@ You can use the command line to import source code and, if the code has been tra All of these tools import source code and revision history, only. If you also want to import your settings and your collaboration history, such as issues and pull requests, you'll need to use more advanced tools. To determine the best tool to use for your migration, see "[AUTOTITLE](/migrations/overview/planning-your-migration-to-github)." {% ifversion fpt or ghec %} + ## Further reading - "[AUTOTITLE](/get-started/using-git/troubleshooting-the-2-gb-push-limit)" diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-mercurial-repository.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-mercurial-repository.md index f4df02361f..708d1e3a6c 100644 --- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-mercurial-repository.md +++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-mercurial-repository.md @@ -62,6 +62,7 @@ To follow these steps, you must use a macOS or Linux system and have the followi {% data reusables.migrations.push-to-github %} {% ifversion fpt or ghec %} + ## Further reading - "[AUTOTITLE](/get-started/using-git/troubleshooting-the-2-gb-push-limit)" diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository.md index 97343e2af2..b6ca0e8098 100644 --- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository.md +++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository.md @@ -58,6 +58,7 @@ To follow these steps, you must use a macOS or Linux system and have the followi {% data reusables.migrations.push-to-github %} {% ifversion fpt or ghec %} + ## Further reading - "[AUTOTITLE](/get-started/using-git/troubleshooting-the-2-gb-push-limit)" diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-team-foundation-version-control-repository.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-team-foundation-version-control-repository.md index 4d9895314a..f7d72e2e3b 100644 --- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-team-foundation-version-control-repository.md +++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-team-foundation-version-control-repository.md @@ -62,6 +62,7 @@ To follow these steps, you must use Windows and have the following tools install {% data reusables.migrations.push-to-github %} {% ifversion fpt or ghec %} + ## Further reading - "[AUTOTITLE](/get-started/using-git/troubleshooting-the-2-gb-push-limit)" diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line.md index 261c22c9d9..43c2241f60 100644 --- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line.md +++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line.md @@ -56,6 +56,7 @@ For purposes of demonstration, we'll use: If the repository you are importing contains large files, you may run into a warning or error. For more information on large files and how to manage them, see "[AUTOTITLE](/repositories/working-with-files/managing-large-files/about-large-files-on-github)." {% ifversion fpt or ghec %} + ## Further reading - "[AUTOTITLE](/get-started/using-git/troubleshooting-the-2-gb-push-limit)" diff --git a/content/migrations/overview/about-locked-repositories.md b/content/migrations/overview/about-locked-repositories.md index 0b11846b7d..21707489a3 100644 --- a/content/migrations/overview/about-locked-repositories.md +++ b/content/migrations/overview/about-locked-repositories.md @@ -17,7 +17,7 @@ Whether your repositories will be locked during migration depends on the tooling > This repository is currently being migrated. It's locked while the migration is in progress. {% ifversion ghes %} -Site administrators may also lock repositories for other reasons besides migrations. +Site administrators may also lock repositories for other reasons besides migrations. {% endif %} Often, repositories are unlocked automatically when the migration is complete. In other cases, unlocking a repository is a manual step, and the process required to unlock a repository depends on the migration tool you used. diff --git a/content/migrations/overview/migration-paths-to-github.md b/content/migrations/overview/migration-paths-to-github.md index 4cccdbd0d5..646ecd1d5d 100644 --- a/content/migrations/overview/migration-paths-to-github.md +++ b/content/migrations/overview/migration-paths-to-github.md @@ -114,7 +114,7 @@ Migrations from {% data variables.product.prodname_dotcom_the_website %} include - **More information**: [{% data variables.product.prodname_expert_services %}](https://github.com/services/) website - **Caveats**: - Enterprise Cloud Importer is only available for expert-led migrations. - - {% data reusables.migrations.migration-instructions-for-any-git-repository-to-githubcom %} + - {% data reusables.migrations.migration-instructions-for-any-git-repository-to-githubcom %} ### Any Git repository to {% data variables.product.prodname_dotcom_the_website %} @@ -146,7 +146,7 @@ Migrations from {% data variables.product.prodname_dotcom_the_website %} include - **Scope**: Source and history - **Tooling**: `git-p4`, then Git CLI -- **More information**: +- **More information**: - [git-p4](https://git-scm.com/docs/git-p4) in the Git documentation - "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github#importing-a-git-repository-with-the-command-line)" @@ -219,7 +219,7 @@ Migrations from {% data variables.product.prodname_dotcom_the_website %} include - **More information**: - [{% data variables.product.prodname_expert_services %}](https://github.com/services/) website - "[AUTOTITLE](/enterprise-server/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server)" -- **Caveats**: {% data reusables.migrations.migration-instructions-for-any-git-repository-to-ghes %} +- **Caveats**: {% data reusables.migrations.migration-instructions-for-any-git-repository-to-ghes %} ### Any Git repository to {% data variables.product.prodname_ghe_server %} @@ -249,7 +249,7 @@ Migrations from {% data variables.product.prodname_dotcom_the_website %} include - **Scope**: Source and history - **Tooling**: `git-p4`, then Git CLI -- **More information**: +- **More information**: - [git-p4](https://git-scm.com/docs/git-p4) in the Git documentation - "[AUTOTITLE](/enterprise-server/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github#importing-a-git-repository-with-the-command-line)" diff --git a/content/migrations/using-ghe-migrator/preparing-to-migrate-data-to-github-enterprise-server.md b/content/migrations/using-ghe-migrator/preparing-to-migrate-data-to-github-enterprise-server.md index 3b4f82e361..122ad8d71d 100644 --- a/content/migrations/using-ghe-migrator/preparing-to-migrate-data-to-github-enterprise-server.md +++ b/content/migrations/using-ghe-migrator/preparing-to-migrate-data-to-github-enterprise-server.md @@ -43,7 +43,7 @@ shortTitle: Prepare to migrate data ## Generating a list of migration conflicts 1. Using the `ghe-migrator conflicts` command with the Migration GUID, generate a _conflicts.csv_ file: - + ```shell ghe-migrator conflicts -g MIGRATION-GUID > conflicts.csv ``` diff --git a/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer.md b/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer.md index 27839b34b1..e78fb9822b 100644 --- a/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer.md +++ b/content/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer.md @@ -73,6 +73,7 @@ If your migration source is a {% data variables.product.prodname_dotcom %} produ ```shell copy gh gei generate-mannequin-csv --github-target-org DESTINATION --output FILENAME.csv ``` + {% data reusables.enterprise-migration-tool.edit-csv %} 1. To reclaim mannequins, use the `gh gei reclaim-mannequin` command. @@ -105,6 +106,7 @@ If your migration source is Azure DevOps, you can reclaim mannequins with the {% ```shell copy gh ado2gh generate-mannequin-csv --github-org DESTINATION --output FILENAME.csv ``` + {% data reusables.enterprise-migration-tool.edit-csv %} 1. To reclaim mannequins, use the `gh ado2gh reclaim-mannequin` command. diff --git a/content/migrations/using-github-enterprise-importer/preparing-to-migrate-with-github-enterprise-importer/managing-access-for-github-enterprise-importer.md b/content/migrations/using-github-enterprise-importer/preparing-to-migrate-with-github-enterprise-importer/managing-access-for-github-enterprise-importer.md index a71f13284f..8915f717b1 100644 --- a/content/migrations/using-github-enterprise-importer/preparing-to-migrate-with-github-enterprise-importer/managing-access-for-github-enterprise-importer.md +++ b/content/migrations/using-github-enterprise-importer/preparing-to-migrate-with-github-enterprise-importer/managing-access-for-github-enterprise-importer.md @@ -150,7 +150,7 @@ You'll need to add the following IP ranges to your IP allowlist(s): - 2a0a:a440::/29 - 2606:50c0::/32 -You can get an up-to-date list of IP ranges used by {% data variables.product.prodname_importer_proper_name %} at any time with the "Get {% data variables.product.prodname_dotcom %} meta information" endpoint of the REST API. +You can get an up-to-date list of IP ranges used by {% data variables.product.prodname_importer_proper_name %} at any time with the "Get {% data variables.product.prodname_dotcom %} meta information" endpoint of the REST API. The `github_enterprise_importer` key in the response contains a list of IP ranges used for migrations. diff --git a/content/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/viewing-whether-users-in-your-organization-have-2fa-enabled.md b/content/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/viewing-whether-users-in-your-organization-have-2fa-enabled.md index 9001f7e91d..3d95b440f5 100644 --- a/content/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/viewing-whether-users-in-your-organization-have-2fa-enabled.md +++ b/content/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/viewing-whether-users-in-your-organization-have-2fa-enabled.md @@ -26,7 +26,7 @@ shortTitle: View 2FA usage {% data reusables.organizations.people %} 1. To view organization members, including organization owners, who have enabled or disabled two-factor authentication, on the right, select **2FA**, then click **Enabled** or **Disabled**. {% ifversion mandatory-2fa-required-overview %}Additionally, you can view which members are required to enable two-factor authentication by clicking **Required**.

- {% indented_data_reference reusables.two_fa.mandatory-2fa-contributors-2023 spaces=3 %}{% endif %}{% ifversion mandatory-2fa-required-overview %} + {% data reusables.two_fa.mandatory-2fa-contributors-2023 %}{% endif %}{% ifversion mandatory-2fa-required-overview %} ![Screenshot of the list of organization members. A dropdown menu, labeled "2FA", is expanded and outlined in orange.](/assets/images/help/2fa/filter-org-members-by-2fa-required.png){% else %} diff --git a/content/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization.md b/content/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization.md index 80428226fd..95fa9e0cc4 100644 --- a/content/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization.md +++ b/content/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization.md @@ -37,7 +37,7 @@ If you disallow publication of {% data variables.product.prodname_pages %} sites {% endif %} {%- ifversion fpt or ghec %} - {% indented_data_reference reusables.pages.privately-publish-ghec-only spaces=3%}{%- endif %} + {% data reusables.pages.privately-publish-ghec-only %}{%- endif %} 1. Click **Save**. diff --git a/content/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility.md b/content/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility.md index 0e340feb8f..e9eb0f6476 100644 --- a/content/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility.md +++ b/content/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility.md @@ -139,7 +139,7 @@ If you publish a package that is linked to a repository, {% data variables.produ {% note %} -**Notes:** +**Notes:** - Syncing your package with a repository {% data variables.package_registry.package-settings-actions-access-menu %} is different than connecting your package to a repository. For more information about linking a repository to your package, see "[AUTOTITLE](/packages/learn-github-packages/connecting-a-repository-to-a-package)." - You can choose to limit permissions to workflow jobs usings the `permissions` key and `packages` scope. For more information, see "[AUTOTITLE](/actions/using-jobs/assigning-permissions-to-jobs)." diff --git a/content/packages/quickstart.md b/content/packages/quickstart.md index 092e1eebea..6e5f820441 100644 --- a/content/packages/quickstart.md +++ b/content/packages/quickstart.md @@ -27,10 +27,13 @@ In this guide, you'll create a {% data variables.product.prodname_actions %} wor ``` 1. Create an `index.js` file and add a basic alert to say "Hello world!" + ```javascript copy console.log("Hello, World!"); ``` + 1. Initialize an npm package with `npm init`. In the package initialization wizard, enter your package with the name: _`@YOUR-USERNAME/YOUR-REPOSITORY`_, and set the test script to `exit 0`. This will generate a `package.json` file with information about your package. + ```shell $ npm init ... @@ -39,6 +42,7 @@ In this guide, you'll create a {% data variables.product.prodname_actions %} wor test command: exit 0 ... ``` + 1. Run `npm install` to generate the `package-lock.json` file, then commit and push your changes to {% data variables.product.prodname_dotcom %}. ```shell @@ -89,15 +93,19 @@ In this guide, you'll create a {% data variables.product.prodname_actions %} wor 1. Tell npm which scope and registry to publish packages to using one of the following methods: - Add an npm configuration file for the repository by creating a `.npmrc` file in the root directory with the contents: + ```shell @YOUR-USERNAME:registry=https://npm.pkg.github.com ``` + - Edit the `package.json` file and specify the `publishConfig` key: + ```shell "publishConfig": { "@YOUR-USERNAME:registry": "https://npm.pkg.github.com" } ``` + 1. Commit and push your changes to {% data variables.product.prodname_dotcom %}. ```shell diff --git a/content/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site.md b/content/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site.md index 9da8fad42f..bd148fe729 100644 --- a/content/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site.md +++ b/content/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site.md @@ -85,13 +85,16 @@ To set up an apex domain, such as `example.com`, you must configure a custom dom 1. Navigate to your DNS provider and create either an `ALIAS`, `ANAME`, or `A` record. You can also create `AAAA` records for IPv6 support. If you're implementing IPv6 support, we highly recommend using an `A` record in addition to your `AAAA` record, due to slow adoption of IPv6 globally. {% data reusables.pages.contact-dns-provider %} - To create an `ALIAS` or `ANAME` record, point your apex domain to the default domain for your site. {% data reusables.pages.default-domain-information %} - To create `A` records, point your apex domain to the IP addresses for {% data variables.product.prodname_pages %}. + ```shell 185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 ``` + - To create `AAAA` records, point your apex domain to the IP addresses for {% data variables.product.prodname_pages %}. + ```shell 2606:50c0:8000::153 2606:50c0:8001::153 @@ -103,6 +106,7 @@ To set up an apex domain, such as `example.com`, you must configure a custom dom {% data reusables.command_line.open_the_multi_os_terminal %} 1. To confirm that your DNS record configured correctly, use the `dig` command, replacing _EXAMPLE.COM_ with your apex domain. Confirm that the results match the IP addresses for {% data variables.product.prodname_pages %} above. - For `A` records: + ```shell $ dig EXAMPLE.COM +noall +answer -t A > EXAMPLE.COM 3600 IN A 185.199.108.153 @@ -110,7 +114,9 @@ To set up an apex domain, such as `example.com`, you must configure a custom dom > EXAMPLE.COM 3600 IN A 185.199.110.153 > EXAMPLE.COM 3600 IN A 185.199.111.153 ``` + - For `AAAA` records: + ```shell $ dig EXAMPLE.COM +noall +answer -t AAAA > EXAMPLE.COM 3600 IN AAAA 2606:50c0:8000::153 diff --git a/content/pages/getting-started-with-github-pages/about-github-pages.md b/content/pages/getting-started-with-github-pages/about-github-pages.md index cef5884a2e..ab4c5ae039 100644 --- a/content/pages/getting-started-with-github-pages/about-github-pages.md +++ b/content/pages/getting-started-with-github-pages/about-github-pages.md @@ -124,7 +124,7 @@ In addition, your use of {% data variables.product.prodname_pages %} is subject ### Educational exercises -Using {% data variables.product.prodname_pages %} to create a copy of an existing website as a learning exercise is not prohibited. However, in addition to complying with the the [GitHub Terms of Service](/free-pro-team@latest/site-policy/github-terms/github-terms-of-service), you must write the code yourself, the site must not collect any user data, and you must include a prominent disclaimer on the site indicating that the project is not associated with the original and was only created for educational purposes. +Using {% data variables.product.prodname_pages %} to create a copy of an existing website as a learning exercise is not prohibited. However, in addition to complying with the the [GitHub Terms of Service](/free-pro-team@latest/site-policy/github-terms/github-terms-of-service), you must write the code yourself, the site must not collect any user data, and you must include a prominent disclaimer on the site indicating that the project is not associated with the original and was only created for educational purposes. ### Usage limits diff --git a/content/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https.md b/content/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https.md index 53e420943e..dfe22e2b78 100644 --- a/content/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https.md +++ b/content/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https.md @@ -40,7 +40,7 @@ All {% data variables.product.prodname_pages %} sites, including sites that are When you set or change your custom domain in the Pages settings, an automatic DNS check begins. This check determines if your DNS settings are configured to allow {% data variables.product.prodname_dotcom %} to obtain a certificate automatically. If the check is successful, {% data variables.product.prodname_dotcom %} queues a job to request a TLS certificate from [Let's Encrypt](https://letsencrypt.org/). On receiving a valid certificate, {% data variables.product.prodname_dotcom %} automatically uploads it to the servers that handle TLS termination for Pages. When this process completes successfully, a check mark is displayed beside your custom domain name. -Please note that your {% data variables.product.prodname_pages %} site must be publicly available for a Let's Encrypt certificate to be issued. Once the certificate has been issued you may revert the site to private. +Please note that your {% data variables.product.prodname_pages %} site must be publicly available for a Let's Encrypt certificate to be issued. Once the certificate has been issued you may revert the site to private. The process may take some time. If the process has not completed several minutes after you clicked **Save**, try clicking **Remove** next to your custom domain name. Retype the domain name and click **Save** again. This will cancel and restart the provisioning process. diff --git a/content/pages/getting-started-with-github-pages/using-custom-workflows-with-github-pages.md b/content/pages/getting-started-with-github-pages/using-custom-workflows-with-github-pages.md index 88d785f478..e0e1f7f46d 100644 --- a/content/pages/getting-started-with-github-pages/using-custom-workflows-with-github-pages.md +++ b/content/pages/getting-started-with-github-pages/using-custom-workflows-with-github-pages.md @@ -26,7 +26,7 @@ To use the action place this snippet under your `jobs` in the desired workflow. uses: actions/configure-pages@v3 ``` -This action helps support deployment from any static site generator to {% data variables.product.prodname_pages %}. To make this process less repetitive you can use starter workflows for some of the most widely used static site generators. For more information, see "[AUTOTITLE](/actions/using-workflows/using-starter-workflows)." +This action helps support deployment from any static site generator to {% data variables.product.prodname_pages %}. To make this process less repetitive you can use starter workflows for some of the most widely used static site generators. For more information, see "[AUTOTITLE](/actions/learn-github-actions/using-starter-workflows)." ## Configuring the `upload-pages-artifact` action @@ -51,6 +51,7 @@ The `deploy-pages` action handles the necessary setup for deploying artifacts. T For more information, see the [`deploy-pages`](https://github.com/marketplace/actions/deploy-github-pages-site) action. {% raw %} + ```yaml ... @@ -71,6 +72,7 @@ jobs: uses: actions/deploy-pages@v1 ... ``` + {% endraw %} ## Linking separate build and deploy jobs diff --git a/content/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests.md b/content/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests.md index 0eecc2a3cf..9173fa4191 100644 --- a/content/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests.md +++ b/content/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests.md @@ -20,7 +20,7 @@ shortTitle: Configure commit squashing {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-settings %} -1. On the "General" settings page (which is selected by default), scroll down to the section marked "Pull Requests". +1. On the "General" settings page (which is selected by default), scroll down to the section marked "Pull Requests". 1. Under "Pull Requests", select **Allow squash merging**. This allows contributors to merge a pull request by squashing all commits into a single commit. The default commit message presented to contributors when merging is the commit title and message if the pull request contains only 1 commit, or the pull request title and list of commits if the pull request contains 2 or more commits. {% ifversion ghes = 3.6 %} To always use the title of the pull request regardless of the number of commits in the pull request select **Default to PR title for squash merge commits**.{% endif %} {% ifversion default-merge-squash-commit-message %} 1. Optionally, under **Allow squash merging**, select the dropdown menu, then click the format of the default squash commit message presented to contributors when merging. diff --git a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches.md b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches.md index c67aabe905..6411f8ea15 100644 --- a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches.md +++ b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches.md @@ -170,6 +170,7 @@ Before you can require a linear commit history, your repository must allow squas {% endif %} {% ifversion fpt or ghec or ghes > 3.6 %} + ### Require deployments to succeed before merging You can require that changes are successfully deployed to specific environments before a branch can be merged. For example, you can use this rule to ensure that changes are successfully deployed to a staging environment before the changes merge to your default branch. diff --git a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets.md b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets.md index 8e75987c34..10c0aeebf0 100644 --- a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets.md +++ b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets.md @@ -174,7 +174,7 @@ Metadata restrictions block "ref updates." If a contributor pushes work that inc Metadata restrictions can increase friction for people contributing to a repository. Generally, if you impose metadata restrictions, you should do so on a limited set of branches to avoid impacting contributors' daily work. For example, instead of requiring consistent commit messages on any topic branch that a contributor might work on, you should require consistent commit messages on `main` only, then require pull requests into `main`. -If you use squash merges, you should be aware that metadata restrictions are evaluated before the merge, so all commits on the pull request must meet the requirements. +If you use squash merges, you should be aware that metadata restrictions are evaluated before the merge, so all commits on the pull request must meet the requirements. For metadata restrictions that apply to committer emails, the pattern must also include `noreply@github.com` for squash merges to satisfy the restriction. When you add metadata restrictions to an existing branch or tag, the rules are enforced for new commits pushed to the branch or tag from that point forward, but they are not enforced against the existing history of the branch or tag. diff --git a/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository.md b/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository.md index c869f228d5..22a9a8ab37 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository.md @@ -18,7 +18,7 @@ topics: - Pull requests shortTitle: Manage GitHub Actions settings --- - + {% data reusables.actions.enterprise-github-hosted-runners %} ## About {% data variables.product.prodname_actions %} permissions for your repository @@ -44,7 +44,7 @@ You can disable {% data variables.product.prodname_actions %} for a repository, {% data reusables.repositories.settings-sidebar-actions-general %} 1. Under "Actions permissions", select an option. - {% indented_data_reference reusables.actions.actions-use-policy-settings spaces=3 %} + {% data reusables.actions.actions-use-policy-settings %} 1. Click **Save**. {% data reusables.actions.allow-specific-actions-intro %} diff --git a/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository.md b/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository.md index f45736b8b9..8c36bed4dd 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository.md @@ -105,7 +105,7 @@ You can allow {% data variables.product.prodname_secret_scanning %} to automatic {% note %} -**Note:** When you enable automatic validity checks for a repository, you also allow on-demand validity checks to be performed for patterns detected in that repository. +**Note:** When you enable automatic validity checks for a repository, you also allow on-demand validity checks to be performed for patterns detected in that repository. {% endnote %} diff --git a/content/search-github/searching-on-github/searching-issues-and-pull-requests.md b/content/search-github/searching-on-github/searching-issues-and-pull-requests.md index 8a15c3e7c3..a16cbf9775 100644 --- a/content/search-github/searching-on-github/searching-issues-and-pull-requests.md +++ b/content/search-github/searching-on-github/searching-issues-and-pull-requests.md @@ -73,6 +73,7 @@ You can filter issues and pull requests based on whether they're open or closed | `is:closed` | [**android is:closed**](https://github.com/search?utf8=%E2%9C%93&q=android+is%3Aclosed&type=) matches closed issues and pull requests with the word "android." {% ifversion merge-queue %} + ## Search for pull requests in the merge queue You can also use the `is` qualifier to find pull requests that are queued to merge. diff --git a/content/site-policy/github-terms/github-community-guidelines.md b/content/site-policy/github-terms/github-community-guidelines.md index b751163118..584a351bac 100644 --- a/content/site-policy/github-terms/github-community-guidelines.md +++ b/content/site-policy/github-terms/github-community-guidelines.md @@ -26,7 +26,7 @@ The primary purpose of the GitHub community is to collaborate on software projec - **Be welcoming and open-minded** - New users join our community each day. Some are well-established developers, while others are just beginning. Be open to other ideas and experience levels. Make room for opinions other than your own and be welcoming to new collaborators and those just getting started. -- **Be respectful** - Working in a collaborative environment means disagreements may happen. But remember to criticize ideas, not people. Share thoughtful, constructive criticism and be courteous to those you interact with. If you’re unable to engage respectfully, consider taking a step back or using some of our moderation tools to deescalate a tense situation. +- **Be respectful** - Working in a collaborative environment means disagreements may happen. But remember to criticize ideas, not people. Share thoughtful, constructive criticism and be courteous to those you interact with. If you’re unable to engage respectfully, consider taking a step back or using some of our moderation tools to deescalate a tense situation. - **Be empathetic** - GitHub is a global community with people from a wide variety of backgrounds and perspectives, many of which may not be your own. Try to put yourself in others’ shoes and understand their feelings before you address them. Do your best to help make GitHub a community where others feel safe to make contributions, participate in discussions, and share different ideas. @@ -38,7 +38,7 @@ While some disagreements can be resolved with direct, respectful communication b - **Moderate Comments** - Users with [write-access privileges](/organizations/managing-user-access-to-your-organizations-repositories/repository-roles-for-an-organization) for a repository can [edit, delete, or hide anyone's comments](/communities/moderating-comments-and-conversations/managing-disruptive-comments) on commits, pull requests, and issues. Anyone with read access to a repository can view a comment's edit history. Comment authors and people with write access to a repository can also delete sensitive information from a [comment's edit history](/communities/moderating-comments-and-conversations/tracking-changes-in-a-comment). Moderating your projects can feel like a big task if there is a lot of activity, but you can [add collaborators](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/permission-levels-for-a-personal-account-repository#collaborator-access-for-a-repository-owned-by-a-personal-account) to assist you in managing your community. -- **Lock Conversations**  - If a discussion in an issue, pull request, or commit gets out of hand, off topic, or violates your project’s code of conduct or GitHub’s policies, owners, collaborators, and anyone else with write access can put a temporary or permanent lock on the conversation. For more information, see "[AUTOTITLE](/communities/moderating-comments-and-conversations/locking-conversations)." +- **Lock Conversations**  - If a discussion in an issue, pull request, or commit gets out of hand, off topic, or violates your project’s code of conduct or GitHub’s policies, owners, collaborators, and anyone else with write access can put a temporary or permanent lock on the conversation. For more information, see "[AUTOTITLE](/communities/moderating-comments-and-conversations/locking-conversations)." - **Block Users**  - If you encounter a specific user who you would rather not engage with, you can [block the user from your personal account](/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-personal-account) or [from your organization](/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization). diff --git a/content/site-policy/github-terms/github-copilot-pre-release-license-terms.md b/content/site-policy/github-terms/github-copilot-pre-release-license-terms.md index 044ae93ff9..7313a18f26 100644 --- a/content/site-policy/github-terms/github-copilot-pre-release-license-terms.md +++ b/content/site-policy/github-terms/github-copilot-pre-release-license-terms.md @@ -11,31 +11,31 @@ topics: - Legal --- -## GitHub Copilot Pre-release License Terms +## GitHub Copilot Pre-release License Terms -These terms apply to the pre-release software made available to you by GitHub. To the extent there is a conflict between these terms and any other Agreement you have with us, these terms govern. +These terms apply to the pre-release software made available to you by GitHub. To the extent there is a conflict between these terms and any other Agreement you have with us, these terms govern. ## 1. Pre-Release Software. - The software provided is a pre-release version. “Pre-release” means software, online services, and additional products and features that are provided for preview, evaluation, demonstration, or trial purposes, as well as prerelease versions of those such as alpha, beta, or early access versions. + The software provided is a pre-release version. “Pre-release” means software, online services, and additional products and features that are provided for preview, evaluation, demonstration, or trial purposes, as well as prerelease versions of those such as alpha, beta, or early access versions. - Pre-release software may not operate correctly. It may delete your data, corrupt your data, or have other bugs. It also may not work the way a final commercial version of the software will. + Pre-release software may not operate correctly. It may delete your data, corrupt your data, or have other bugs. It also may not work the way a final commercial version of the software will. - GitHub may change or discontinue pre-release software at any time, for any reason, without notice to you. GitHub may change the software for the final commercial version, or may not release a commercial version at all. GitHub is not obligated to provide to you any maintenance, technical support, or updates for the software. + GitHub may change or discontinue pre-release software at any time, for any reason, without notice to you. GitHub may change the software for the final commercial version, or may not release a commercial version at all. GitHub is not obligated to provide to you any maintenance, technical support, or updates for the software. -## 2. Installation and Use Rights. +## 2. Installation and Use Rights. - a. **General**. GitHub grants you a limited right to use a non-production instance of the software. You may use any number of copies of the software to develop and test your applications, including deployment within your internal corporate network. You may also use the software in demonstrating your applications. + a. **General**. GitHub grants you a limited right to use a non-production instance of the software. You may use any number of copies of the software to develop and test your applications, including deployment within your internal corporate network. You may also use the software in demonstrating your applications. - b. **Inclusion of Third-Party Components.** The software may include third-party components with separate legal notices or governed by other agreements, as may be described in a license file accompanying the software. + b. **Inclusion of Third-Party Components.** The software may include third-party components with separate legal notices or governed by other agreements, as may be described in a license file accompanying the software. - c. **Optional Extensions.** The software may give you the option to download other GitHub and third-party software packages. Any third-party software packages are provided for your convenience only, and are governed by any applicable agreements between you and the third party. GitHub is not responsible or liable for any third-party software. + c. **Optional Extensions.** The software may give you the option to download other GitHub and third-party software packages. Any third-party software packages are provided for your convenience only, and are governed by any applicable agreements between you and the third party. GitHub is not responsible or liable for any third-party software. -## 3. Scope of License. +## 3. Scope of License. - GitHub reserves all rights not expressly granted to you in these terms, including retaining ownership of all aspects of the pre-release software as well as all related intellectual property rights. + GitHub reserves all rights not expressly granted to you in these terms, including retaining ownership of all aspects of the pre-release software as well as all related intellectual property rights. - Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this Agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not: + Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this Agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not: a. work around any technical limitations in the software; @@ -51,63 +51,64 @@ These terms apply to the pre-release software made available to you by GitHub. T g. use the software to create or propagate malware, or in any way that is against the law -## 4. Data Collection and Usage. +## 4. Data Collection and Usage. - a. **Consent to Data Collection.** The pre-release software may collect information about you and your use of the software, and send that information to GitHub. GitHub may use this information to provide services, to improve our products and services, or for any other purpose permitted under the GitHub Data Protection Agreement or GitHub Privacy Statement. Your use of the pre-release software operates as your consent to these practices. + a. **Consent to Data Collection.** The pre-release software may collect information about you and your use of the software, and send that information to GitHub. GitHub may use this information to provide services, to improve our products and services, or for any other purpose permitted under the GitHub Data Protection Agreement or GitHub Privacy Statement. Your use of the pre-release software operates as your consent to these practices. - b. **Use of Collected Data.** GitHub will use collected data for analytics and measurement to understand how our pre-release software and related products are used. The software will collect data and usage information about events generated when interacting with it. These events help us analyze and measure performance and features used. This usage information is used by GitHub and may be shared with affiliates and other third parties to help deliver, develop, evaluate, and improve the software and related products. We analyze data to ensure the pre-release software is working as intended, to evaluate the safety, reliability, and user experience of the software, and to investigate and detect potential abuse. We may combine the information we collect from the pre-release software with other data. + b. **Use of Collected Data.** GitHub will use collected data for analytics and measurement to understand how our pre-release software and related products are used. The software will collect data and usage information about events generated when interacting with it. These events help us analyze and measure performance and features used. This usage information is used by GitHub and may be shared with affiliates and other third parties to help deliver, develop, evaluate, and improve the software and related products. We analyze data to ensure the pre-release software is working as intended, to evaluate the safety, reliability, and user experience of the software, and to investigate and detect potential abuse. We may combine the information we collect from the pre-release software with other data. c. **Processing of Personal Data.** GitHub is the data controller in relation to the Personal Data processed in connection with the pre-release software. - d. **Data Collection by You.** There may be some features in the pre-release software that enable you and GitHub to collect data from users of your applications. If you use these features, you must comply with all applicable laws on data collection, including providing appropriate notices to users of your applications as well as a copy of GitHub’s Privacy Statement. You can learn more about data collection and use in the software documentation. + d. **Data Collection by You.** There may be some features in the pre-release software that enable you and GitHub to collect data from users of your applications. If you use these features, you must comply with all applicable laws on data collection, including providing appropriate notices to users of your applications as well as a copy of GitHub’s Privacy Statement. You can learn more about data collection and use in the software documentation. - e. **Revocation of Consent to Data Collection.** You may revoke your consent to data collection by the prerelease software by contacting GitHub and requesting removal from the technical preview. Please note that, if you request removal from the preview, you will no longer be able to use the pre-release software. + e. **Revocation of Consent to Data Collection.** You may revoke your consent to data collection by the prerelease software by contacting GitHub and requesting removal from the technical preview. Please note that, if you request removal from the preview, you will no longer be able to use the pre-release software. -## 5. Updates. +## 5. Updates. - You may obtain updates to the pre-release software only from GitHub or GitHub-authorized sources. The software may install automatic updates and download and install them for you. You agree to these automatic updates without any additional notice. Software updates may not include or support all existing software features, platforms, services, or peripheral devices. These updates are generally meant to improve and evolve the software, but they may also change or disable any part of the software, including potentially removing features and services, or revoking support for certain platforms or hardware. + You may obtain updates to the pre-release software only from GitHub or GitHub-authorized sources. The software may install automatic updates and download and install them for you. You agree to these automatic updates without any additional notice. Software updates may not include or support all existing software features, platforms, services, or peripheral devices. These updates are generally meant to improve and evolve the software, but they may also change or disable any part of the software, including potentially removing features and services, or revoking support for certain platforms or hardware. -## 6. Time-Bound Software. +## 6. Time-Bound Software. - Your use of the pre-release software will end upon any of _(i)_ commercial release of the software, or _(ii)_ at the discretion of GitHub to discontinue the support or development of the software, or _(iii)_ termination of the technical preview by either party. You may not be able to access data used in the software when it stops running. + Your use of the pre-release software will end upon any of _(i)_ commercial release of the software, or _(ii)_ at the discretion of GitHub to discontinue the support or development of the software, or _(iii)_ termination of the technical preview by either party. You may not be able to access data used in the software when it stops running. -## 7. Feedback. +## 7. Feedback. If you give feedback about the pre-release software to GitHub, you give to GitHub the right to use, share, and commercialize your feedback in any way and for any purpose, without payment to you. You agree that you will not give feedback that is subject to any license that would require GitHub to license its software or documentation to third parties if we included your feedback in them. -## 8. Communications. +## 8. Communications. - By using pre-release software, you agree to be contacted by GitHub and Microsoft regarding your participation in the technical preview, including email request(s) for feedback about the software. + By using pre-release software, you agree to be contacted by GitHub and Microsoft regarding your participation in the technical preview, including email request(s) for feedback about the software. -## 9. No Warranties. -You bear the sole risk of using the pre-release software. +## 9. No Warranties. - The pre-release software is licensed “as is” without any warranty of any kind or sort, whether such warranty would be express, implied, or statutory. To the extent permitted under your local laws, GitHub and Microsoft disclaim all warranties in the pre-release software, including implied warranties of merchantability, fitness for a particular purpose, title, quiet enjoyment, accuracy, course of dealing, usage of trade, and non-infringement. +You bear the sole risk of using the pre-release software. - Neither GitHub nor Microsoft give any express warranties, guarantees, or commitments about the pre-release software or its quality, reliability, availability, security, or function. The software may contain errors, may delete or corrupt your data, and may have defects or other bugs. + The pre-release software is licensed “as is” without any warranty of any kind or sort, whether such warranty would be express, implied, or statutory. To the extent permitted under your local laws, GitHub and Microsoft disclaim all warranties in the pre-release software, including implied warranties of merchantability, fitness for a particular purpose, title, quiet enjoyment, accuracy, course of dealing, usage of trade, and non-infringement. -## 10. No Indemnity. + Neither GitHub nor Microsoft give any express warranties, guarantees, or commitments about the pre-release software or its quality, reliability, availability, security, or function. The software may contain errors, may delete or corrupt your data, and may have defects or other bugs. - Neither GitHub nor Microsoft will have any obligation to defend, indemnify, or hold you harmless from any claim against you relating to your use of the pre-release software. +## 10. No Indemnity. -## 11. No Uptime Guarantees. + Neither GitHub nor Microsoft will have any obligation to defend, indemnify, or hold you harmless from any claim against you relating to your use of the pre-release software. - The pre-release software is not subject to an uptime guarantee or similar service level agreement. The software may be unavailable or stop working entirely at any time for any reason. +## 11. No Uptime Guarantees. -## 12. Limitation of Liability. + The pre-release software is not subject to an uptime guarantee or similar service level agreement. The software may be unavailable or stop working entirely at any time for any reason. - GitHub’s maximum liability for any claim related to your use of the pre-release software is limited to direct damages up to five hundred dollars ($500.00 USD). +## 12. Limitation of Liability. -## 13. Compliance with Export Restrictions. + GitHub’s maximum liability for any claim related to your use of the pre-release software is limited to direct damages up to five hundred dollars ($500.00 USD). - You must comply with all domestic and international export laws and regulations that apply to the pre-release software, including any applicable restrictions on destinations, end users, and end use. +## 13. Compliance with Export Restrictions. -## 14. Confidentiality. + You must comply with all domestic and international export laws and regulations that apply to the pre-release software, including any applicable restrictions on destinations, end users, and end use. - The pre-release software is non-public, confidential information of GitHub. Your use is subject to the confidentiality obligations between you and GitHub in the Agreement. +## 14. Confidentiality. - Please do not _(i)_ disclose or share the software with anyone who is not subject to these terms and a non-disclosure agreement; _(ii)_ post or allow others to post any photos or videos of the pre-release software on or via any online platform, including personal social media websites; or _(iii)_ describe or discuss any part of the software on or via any online platform, unless given advance and express permission by GitHub to do so. + The pre-release software is non-public, confidential information of GitHub. Your use is subject to the confidentiality obligations between you and GitHub in the Agreement. -## 15. Nature of Terms for Microsoft Customers. + Please do not _(i)_ disclose or share the software with anyone who is not subject to these terms and a non-disclosure agreement; _(ii)_ post or allow others to post any photos or videos of the pre-release software on or via any online platform, including personal social media websites; or _(iii)_ describe or discuss any part of the software on or via any online platform, unless given advance and express permission by GitHub to do so. + +## 15. Nature of Terms for Microsoft Customers. If you license GitHub through Microsoft, these terms shall be considered an amendment to the Microsoft Product Terms for GitHub Offerings for the duration of your use of the pre-release software. diff --git a/content/site-policy/github-terms/github-educational-use-agreement.md b/content/site-policy/github-terms/github-educational-use-agreement.md index e1bbf770b5..b8be9e823e 100644 --- a/content/site-policy/github-terms/github-educational-use-agreement.md +++ b/content/site-policy/github-terms/github-educational-use-agreement.md @@ -51,79 +51,139 @@ Capitalized terms herein shall have the meanings set forth below. Capitalized te "_Subscription License_" means the license assigned to each Qualified User to install, operate, access, and use the GitHub Products. You may only assign one Subscription License per Qualified User across your GitHub Enterprise Server instances and GitHub Enterprise Cloud Organizations. Each Qualified User will have access to as many of your Enterprise Cloud Organizations as you permit. However, a single Subscription License may not be utilized by more than one Qualified User to access separate GitHub Products. ## 2. Program Benefits and Conditions. + Provided you remain in Good Standing (as defined in Section 2.3 below) and have not breached this Agreement, you will be entitled to receive the benefits described herein (collectively “Benefits”). GitHub may change available Benefits at any time in GitHub’s sole discretion. Should GitHub elect to provide additional Benefits under the Program, GitHub may condition such Benefits on your agreeing to additional terms, restrictions and conditions (collectively “Additional Terms”) applicable to such new or additional Benefits. + ### 2.1 Your Benefits. + Benefits under the Program include the following: + #### 2.1.1 GitHub Product Benefits. + After the Agreement Effective Date, Qualified Users shall have free access to Subscription Licenses on the Service or the Software for each Organization listed on completed Order Forms submitted by the Designated Admin to the GitHub Program Manager. Access to and use of the Service and Software are subject to the terms of the [GitHub Customer Agreement](https://github.com/customer-terms). + #### 2.1.2 Additional Qualified Users. + You may add Subscription Licenses, usage or Services for Qualified Users by completing and submitting a new Order Form no more frequently than quarterly. Quarterly requests may be submitted to the GitHub Program Manager using this form: https://support.github.com/contact/campus-program. + #### 2.1.3 Other Software Benefits. + You may also obtain additional GitHub Software Products through the Program. The GitHub Program Manager will distribute such Products, which will be subject to this Section 2 and any licenses and/or terms of use applicable to such Products. ### 2.2 Conditions. + You must comply with all terms and conditions applicable to each GitHub Product made available through the Program. You must also comply with the following conditions: + #### 2.2.1 Distribution of GitHub Products. + You are responsible for informing all relevant departments at your institution of the available Program Benefits and availability of GitHub Products and for making GitHub Products available to any department interested in participating in the Program. + #### 2.2.2 Designated Admin. + You must appoint a Designated Admin prior to submitting your initial Order Form. This Designated Admin will be GitHub’s single point of contact for your account and for any technical questions from Qualified Users about GitHub Products. The Designated Admin must provide their contact information to the GitHub Program Manager prior to submission of the Order Form. If the Designated Admin changes for any reason, you must immediately provide us with both notice and the new Designated Admin’s contact information . + #### 2.2.3 Logo/Partner Material Usage. + You grant to GitHub the right to use your logo and other Partner Materials, subject to the terms of Section 5 (“Trademark Release”). All Partner Materials must be provided to GitHub for use in the Campaign no later than 30 days of the Agreement Effective Date. + #### 2.2.4 Qualified User Communications. + You must provide channels of communications and information to enable GitHub to communicate information about GitHub products and services to Qualified Users. These channels of communications may include email, SMS, social media or other means of communications designed to reach the maximum number of potential Qualified Users. To the extent required by applicable law, you represent and warrant that you have permission to provide such channels of communication and for GitHub to communication with such Qualified Users. Every potential Qualified User contacted by GitHub will have the ability to opt-out of any future communications. ### 2.3 Good Standing. + “Good Standing” means that you are in current compliance with all Conditions in this Section 2 and with the Agreement (“Conditions”). If you are not currently in compliance, GitHub may, but is not required to, allow you a period of time to cure your non-compliance and return to Good Standing. Granting a cure period is not a waiver of any term or condition of this Agreement nor a guarantee of any future cure period. You must remain in Good Standing throughout the Agreement Term and, upon request, report your compliance to GitHub. Failure to remain in Good Standing is a breach of this Agreement and may result in termination of the Agreement. ## 3. Restrictions and Limitations. + ### 3.1 General Restrictions. + You agree: (i) not to resell the GitHub Products, or to charge any service or other fee to Qualified Users in connection with their use of the GitHub Products under this Agreement; (ii) that you are responsible and liable for Qualified Users' use of the GitHub Products; and (iii) to cooperate with GitHub to enforce the terms of this Agreement in connection with Qualified Users' use of the GitHub Products, including, without limitation, sending appropriate notices to and terminating access to the GitHub Products for Qualified Users who misuse the GitHub Products in any way (iv) to support Qualified Users in the administration and maintenance of their accounts,; and (v) only your Designated Admin shall communicate with GitHub directly about program membership and administration of the Products and Services. You shall immediately terminate access to GitHub Products and Services for any Qualified User who no longer qualifies as such under this Agreement. + ### 3.2 GitHub Product Support. + GitHub’s obligation to provide technical or other support to Qualified Users is limited to that described in the [GitHub Customer Agreement](https://github.com/customer-terms) or as set forth in an Order Form. GitHub shall have no liability to you or any Qualified Users for loss or damages arising from or relating to use and access of the Services. ## 4. Trademark Release. + ### 4.1 License. + You grant GitHub, during the Agreement Term, a worldwide, non-exclusive, royalty-free license to incorporate any of the Partner Materials (including any nonmaterial modifications thereto) into the Campaign and to publicly use, distribute, reproduce, and perform/display the Partner Materials and the Campaign, and any excerpts thereof, in any format or medium, in any language, and to attribute the Partner Materials to Education Partner. GitHub is not obligated to use the Partner Materials, however, any Partner Materials used by GitHub must be submitted by Education Partner and must be approved in advance by the GitHub Program Manager. + ### 4.2 Trademarks. + Education Partner grants to GitHub, during the Agreement Term, a worldwide, non-exclusive, royalty-free license to use Education Partner’s name and trademarks (i) as they appear in the Partner Materials, if at all, and (ii) as otherwise approved by Education Partner in writing ("Education Partner Trademarks"), in the Campaign. All goodwill arising out of GitHub’s use of the Education Partner Trademarks will inure to the benefit of Education Partner, and Education Partner will retain all right and title to the Education Partner Trademarks. + ### 4.3 No Compensation. + The licenses described herein from Education Partner to GitHub are granted without compensation or any financial or other obligation. + ### 4.4 Waiver; Reps and Warranties; Indemnification. + The Campaign shall be created and conducted by GitHub and Education Partner waives any right to approve the Campaign or to enjoin or impair GitHub’s use of the Partner Materials in the Campaign. Education Partner represents and warrants that (i) it has all necessary rights to grant these licenses, (ii) the Partner Materials will not infringe any copyright, trade secret, trademark, or right of publicity/privacy, and (iii) any testimonials in the Partner Materials reflect Education Partner’s honest opinions or experiences. Unless the Partner Materials are altered by GitHub without the consent or direction of Education Partner, Education Partner will indemnify and hold GitHub harmless from and against all third-party claims arising out of Education Partner’s breach of these representations and warranties. ## 5. Term and Termination. + ### 5.1 Term. + The term of this Agreement begins on the date the license key is delivered (for Software) or the subscription is activated (for the Services) ("Agreement Effective Date"), and unless terminated in accordance with this Section, shall continue in effect for a period of one (1) year (the “Initial Term”). The Initial Term of this Agreement and each Renewal Term shall be referred to collectively as the “Agreement Term.” + ### 5.2 Termination for Convenience. + Either Party may terminate this Agreement and any Order Forms submitted and accepted pursuant to the terms and conditions of this Agreement, at any time, for any reason or no reason, upon thirty (30) days’ written notice. Termination of a portion of the Services offered herein or any Order Form will result in the termination of the entire Agreement. + ### 5.3 Termination for Breach. + If you breach this Agreement, we may terminate the Agreement or any Order Form thirty (30) days after we provide you with notice of the breach unless you cure the breach in that period. However, no such notice or cure period is required for any breach of any provision relating to intellectual property (including compliance with the license or rights grant and any license or rights restrictions). + ### 5.4 Effect of Termination. + Upon termination or expiration: (i) your license and any rights held by Qualified Users will immediately cease; and (ii) unless otherwise agreed in writing, you will, at your expense within five (5) days of the termination or expiration: (y) return or delete the Software along with any documentation in your possession or control; and (z) cease accessing and using the Services and send to GitHub a certification signed by one of your authorized employees confirming compliance with these requirements.. Sections 1 and 3 through 9 will survive the termination or expiration of this Agreement for any reason. + ### 5.5 Alternative Breach Resolution. + If you fail to maintain Good Standing or otherwise breach this Agreement, GitHub may elect not to declare a breach or otherwise terminate this agreement but, instead, continue to provide the GitHub Products for the remainder of the Agreement Term at the price of the GitHub Products then posted on GitHub’s public Website at the time of the breach. You agree to pay all fees associated with GitHub so providing the Products as set forth in this Section. ## 6. No Warranty; Disclaimer. + The GitHub Products are being provided "AS IS", and without warranty of any kind, express or implied. GITHUB DISCLAIMS ALL WARRANTIES WITH RESPECT TO THE GITHUB PRODUCTS, EXPRESS OR IMPLIED, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT, AND ANY WARRANTIES ARISING OUT OF COURSE OF DEALING OR USAGE OF TRADE. ## 7. Limitation of Liability. + ### 7.1 Waiver of Consequential Damages. + IN NO EVENT WILL EITHER PARTY BE LIABLE TO THE OTHER OR TO ANY THIRD PARTY FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOST DATA, LOST PROFITS OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT (INCLUDING WITHOUT LIMITATION PRODUCTS LIABILITY, STRICT LIABILITY AND NEGLIGENCE), OR ANY OTHER THEORY, AND WHETHER OR NOT SUCH PARTY KNEW OR SHOULD HAVE KNOWN ABOUT THE POSSIBILITY OF SUCH DAMAGE. + ### 7.2 Limitation of Total Liability. + IN NO EVENT WILL EITHER PARTY’S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT FOR ANY CAUSE WHATSOEVER, AND REGARDLESS OF THE FORM OF ACTION, EXCEED THE GREATER OF (I) AMOUNTS ONE PARTY HAS ACTUALLY PAID THE OTHER PARTY UNDER THIS AGREEMENT; OR (II) FIVE HUNDRED DOLLARS ($500). THE FOREGOING LIMITATIONS WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY STATED IN THIS AGREEMENT. ## 8. Miscellaneous. + ### 8.1 No Assignment. + You are not allowed to assign or transfer any of your rights or obligations in this Agreement, in whole or in part, by operation of law or otherwise, without our prior written consent, and any attempt by you to do so will be null and void. We can assign this Agreement in its entirety, upon notice to you, in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of our business or assets. + ### 8.2 Severability. + If any provision of this Agreement is deemed by a court of competent jurisdiction to be illegal, invalid, or unenforceable, the court will modify or reform this Agreement to give as much effect as possible to that provision. Any provision that can’t be modified or reformed in this way will be deemed deleted, and the remaining provisions of this Agreement will continue in full force and effect. + ### 8.3 No Waiver. + The failure of GitHub to exercise or enforce any right or provision of this Agreement shall not constitute a waiver of such right or provision. + ### 8.4 Force Majeure. + The Parties will be excused from performing under this Agreement to the extent they are unable to perform due to extraordinary causes beyond our reasonable control such as acts of God, strikes, lockouts, riots, acts of war, epidemics, communication line failure, and power failures. + ### 8.5 Independent Contractors. + The Parties are independent contractors and nothing contained in this Agreement (regardless if a party is described as a “Partner”) will be deemed or construed in any manner whatsoever to create a joint venture, partnership, employment, agency, fiduciary, or other similar relationship between us. Neither Party may bind the other to any obligation, whether contractual or otherwise. + ### 8.6 Governing Law. + This Agreement and your use of the GitHub Products are governed under California law and any dispute related to the GitHub Products or the subject matter of these terms must be brought in a tribunal of competent jurisdiction located in or near San Francisco, California. + ### 8.7 Changes to the Agreement; Complete Agreement. + GitHub may amend this Agreement at any time. Should GitHub materially amends this Agreement, it will notify you of such changes at least 30 days prior to the change taking effect by posting a notice on our Website. This Agreement, together with any applicable GitHub Products terms and GitHub's Privacy Statement, and Order Forms represent the complete and exclusive statement of the agreement between you and us and governs your use of the GitHub Products. This Agreement supersedes any proposal or prior agreement oral or written, and any other communications between you and GitHub relating to the subject matter of these terms (including, but not limited to, any prior versions of this Agreement). diff --git a/content/site-policy/privacy-policies/github-octernships-terms-of-service.md b/content/site-policy/privacy-policies/github-octernships-terms-of-service.md index 8c9728b986..513f6e2227 100644 --- a/content/site-policy/privacy-policies/github-octernships-terms-of-service.md +++ b/content/site-policy/privacy-policies/github-octernships-terms-of-service.md @@ -26,7 +26,7 @@ You hereby grant the Octernships Partners a non-exclusive, irrevocable, perpetua ### 2.2 Likeness -GitHub and Octernships Partners reserve all rights, including the right to edit, publish, use, adapt, modify or dispose of any work product/description, likenesses, and photographs for advertising and promotional purposes in all media (including, but not limited to, the internet) without additional compensation, except where prohibited by law. +GitHub and Octernships Partners reserve all rights, including the right to edit, publish, use, adapt, modify or dispose of any work product/description, likenesses, and photographs for advertising and promotional purposes in all media (including, but not limited to, the internet) without additional compensation, except where prohibited by law. ## 3. Confidentiality and non-disclosure diff --git a/content/webhooks/testing-and-troubleshooting-webhooks/viewing-webhook-deliveries.md b/content/webhooks/testing-and-troubleshooting-webhooks/viewing-webhook-deliveries.md index feccc7b6bc..0b12d14048 100644 --- a/content/webhooks/testing-and-troubleshooting-webhooks/viewing-webhook-deliveries.md +++ b/content/webhooks/testing-and-troubleshooting-webhooks/viewing-webhook-deliveries.md @@ -75,6 +75,7 @@ The owner of a {% data variables.product.prodname_github_app %} can view recent {% endif %} {% ifversion fpt or ghec %} + ## Viewing deliveries for {% data variables.product.prodname_sponsors %} webhooks Only the owner of the sponsored account can view deliveries for sponsorship webhooks for that account. diff --git a/content/webhooks/using-webhooks/creating-webhooks.md b/content/webhooks/using-webhooks/creating-webhooks.md index e82587451b..80112265a3 100644 --- a/content/webhooks/using-webhooks/creating-webhooks.md +++ b/content/webhooks/using-webhooks/creating-webhooks.md @@ -67,6 +67,7 @@ You can use the {% data variables.product.prodname_dotcom %} web interface or th After you create a new webhook, {% data variables.product.prodname_dotcom %} will send you a simple `ping` event to let you know you've set up the webhook correctly. For more information, see "[AUTOTITLE](/webhooks/webhook-events-and-payloads#ping)." {% ifversion ghes or ghae or ghec %} + ## Creating a global webhook for a {% data variables.product.prodname_enterprise %} Enterprise owners can create a global webhook to subscribe to events that occur within their enterprise. For more information, see "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise/managing-global-webhooks)." diff --git a/content/webhooks/using-webhooks/disabling-webhooks.md b/content/webhooks/using-webhooks/disabling-webhooks.md index b8c03f8a2a..987957b83d 100644 --- a/content/webhooks/using-webhooks/disabling-webhooks.md +++ b/content/webhooks/using-webhooks/disabling-webhooks.md @@ -46,6 +46,7 @@ You can use the {% data variables.product.prodname_dotcom %} web interface or th {% data reusables.webhooks.disable_webhook %} {% ifversion ghec or ghes or ghae %} + ## Disabling a global webhook for a {% data variables.product.prodname_enterprise %} Enterprise owners can disable a global webhook in an {% data variables.product.prodname_enterprise %}. For more information, see "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise/managing-global-webhooks)." diff --git a/content/webhooks/webhook-events-and-payloads.md b/content/webhooks/webhook-events-and-payloads.md index 706e39ade9..c5367932d6 100644 --- a/content/webhooks/webhook-events-and-payloads.md +++ b/content/webhooks/webhook-events-and-payloads.md @@ -34,13 +34,16 @@ You can create webhooks that subscribe to the events listed on this page. Each w HTTP POST payloads that are delivered to your webhook's configured URL endpoint will contain several special headers: -- `X-GitHub-Event`: Name of the event that triggered the delivery. -- `X-GitHub-Delivery`: A [GUID](https://en.wikipedia.org/wiki/Globally_unique_identifier) to identify the delivery.{% ifversion ghes or ghae %} +- `X-GitHub-Hook-ID`: The unique identifier of the webhook. +- `X-GitHub-Event`: The name of the event that triggered the delivery. +- `X-GitHub-Delivery`: A globally unique identifier (GUID) to identify the delivery.{% ifversion ghes or ghae %} - `X-GitHub-Enterprise-Version`: The version of the {% data variables.product.prodname_ghe_server %} instance that sent the HTTP POST payload. -- `X-GitHub-Enterprise-Host`: The hostname of the {% data variables.product.prodname_ghe_server %} instance that sent the HTTP POST payload.{% endif %}{% ifversion not ghae %} -- `X-Hub-Signature`: This header is sent if the webhook is configured with a [`secret`](/rest/repos#create-hook-config-params). This is the HMAC hex digest of the request body, and is generated using the SHA-1 hash function and the `secret` as the HMAC `key`.{% ifversion fpt or ghes or ghec %} `X-Hub-Signature` is provided for compatibility with existing integrations, and we recommend that you use the more secure `X-Hub-Signature-256` instead.{% endif %}{% endif %} -- `X-Hub-Signature-256`: This header is sent if the webhook is configured with a [`secret`](/rest/repos#create-hook-config-params). This is the HMAC hex digest of the request body, and is generated using the SHA-256 hash function and the `secret` as the HMAC `key`. +- `X-GitHub-Enterprise-Host`: The hostname of the {% data variables.product.prodname_ghe_server %} instance that sent the HTTP POST payload.{% endif %} +- `X-Hub-Signature-256`: This header is sent if the webhook is configured with a secret. This is the HMAC hex digest of the request body, and is generated using the SHA-256 hash function and the configured secret as the HMAC `key`. For more information, see "[AUTOTITLE](/webhooks/using-webhooks/securing-your-webhooks)."{% ifversion not ghae %} +- `X-Hub-Signature`: This header is sent if the webhook is configured with a secret. This is the HMAC hex digest of the request body, and is generated using the SHA-1 hash function and the configured secret as the HMAC `key`. `X-Hub-Signature` is provided for compatibility with existing integrations, and we recommend that you use the more secure `X-Hub-Signature-256` instead.{% endif %} - `User-Agent`: This header will always have the prefix `GitHub-Hookshot/`. +- `X-GitHub-Hook-Installation-Target-Type`: The type of resource where the webhook was created. +- `X-GitHub-Hook-Installation-Target-ID`: The unique identifier of the resource where the webhook was created. To see what each header might look like in a webhook payload, see "[Example webhook delivery](#example-webhook-delivery)." @@ -51,7 +54,6 @@ You can choose to have payloads delivered in JSON format (`application/json`) or ```shell > POST /payload HTTP/2 -> Host: localhost:4567 > X-GitHub-Delivery: 72d3162e-cc78-11e3-81ab-4c9367dc0958{% ifversion ghes or ghae %} > X-GitHub-Enterprise-Version: 2.15.0 > X-GitHub-Enterprise-Host: example.com{% endif %}{% ifversion not ghae %} @@ -61,6 +63,9 @@ You can choose to have payloads delivered in JSON format (`application/json`) or > Content-Type: application/json > Content-Length: 6615 > X-GitHub-Event: issues +> X-GitHub-Hook-ID: 292430182 +> X-GitHub-Hook-Installation-Target-ID: 79929171 +> X-GitHub-Hook-Installation-Target-Type: repository > { > "action": "opened", diff --git a/data/features/feed.yml b/data/features/feed.yml new file mode 100644 index 0000000000..e40bc378c3 --- /dev/null +++ b/data/features/feed.yml @@ -0,0 +1,5 @@ +# Issues 11279 +# Docs for the new feed +versions: + fpt: '*' + ghec: '*' diff --git a/data/graphql/ghae/schema.docs-ghae.graphql b/data/graphql/ghae/schema.docs-ghae.graphql index 99a64f284e..e9766f72f7 100644 --- a/data/graphql/ghae/schema.docs-ghae.graphql +++ b/data/graphql/ghae/schema.docs-ghae.graphql @@ -9672,6 +9672,11 @@ type Discussion implements Closable & Comment & Deletable & Labelable & Lockable """ includesCreatedEdit: Boolean! + """ + Only return answered/unanswered discussions + """ + isAnswered: Boolean + """ A list of labels associated with the object. """ @@ -34884,6 +34889,11 @@ type Repository implements Node & ProjectOwner & RepositoryInfo & Starrable & Su """ after: String + """ + Only show answered or unanswered discussions + """ + answered: Boolean = null + """ Returns the elements in the list that come before the specified cursor. """ diff --git a/data/graphql/ghec/schema.docs.graphql b/data/graphql/ghec/schema.docs.graphql index d84b1d2927..2402d7f887 100644 --- a/data/graphql/ghec/schema.docs.graphql +++ b/data/graphql/ghec/schema.docs.graphql @@ -10856,6 +10856,11 @@ type Discussion implements Closable & Comment & Deletable & Labelable & Lockable """ includesCreatedEdit: Boolean! + """ + Only return answered/unanswered discussions + """ + isAnswered: Boolean + """ A list of labels associated with the object. """ @@ -42315,6 +42320,11 @@ type Repository implements Node & PackageOwner & ProjectOwner & ProjectV2Recent """ after: String + """ + Only show answered or unanswered discussions + """ + answered: Boolean = null + """ Returns the elements in the list that come before the specified cursor. """ diff --git a/data/graphql/schema.docs.graphql b/data/graphql/schema.docs.graphql index d84b1d2927..2402d7f887 100644 --- a/data/graphql/schema.docs.graphql +++ b/data/graphql/schema.docs.graphql @@ -10856,6 +10856,11 @@ type Discussion implements Closable & Comment & Deletable & Labelable & Lockable """ includesCreatedEdit: Boolean! + """ + Only return answered/unanswered discussions + """ + isAnswered: Boolean + """ A list of labels associated with the object. """ @@ -42315,6 +42320,11 @@ type Repository implements Node & PackageOwner & ProjectOwner & ProjectV2Recent """ after: String + """ + Only show answered or unanswered discussions + """ + answered: Boolean = null + """ Returns the elements in the list that come before the specified cursor. """ diff --git a/data/release-notes/enterprise-server/3-10/1.yml b/data/release-notes/enterprise-server/3-10/1.yml index ac056d659c..6ab6a8a629 100644 --- a/data/release-notes/enterprise-server/3-10/1.yml +++ b/data/release-notes/enterprise-server/3-10/1.yml @@ -9,6 +9,9 @@ sections: security_fixes: - HTTP Strict Transport Security (HSTS) is enabled within the Management Console. - Packages have been updated to the latest security versions. + - | + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a reopened pull request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/) and was assigned [CVE-2023-23766](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23766). [Updated: 2023-09-22] + bugs: - On an instance with GitHub Actions enabled, scale sets configured at the enterprise level did not appear for use within the instance's organizations or repositories. - On an instance with a GitHub Advanced Security license and secret scanning enabled, secret scanning alerts could fail to show an error message in the UI when a failure occurred closing or reopening the alert. diff --git a/data/release-notes/enterprise-server/3-6/16.yml b/data/release-notes/enterprise-server/3-6/16.yml index bf58701161..9c0c33bb13 100644 --- a/data/release-notes/enterprise-server/3-6/16.yml +++ b/data/release-notes/enterprise-server/3-6/16.yml @@ -6,7 +6,7 @@ sections: - | Packages have been updated to the latest security versions. - | - An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a re-opened Pull Request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and was assigned [CVE-2023-23765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23765). + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a re-opened Pull Request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and was assigned [CVE-2023-23765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23765). bugs: - | diff --git a/data/release-notes/enterprise-server/3-6/17.yml b/data/release-notes/enterprise-server/3-6/17.yml index 2672c7de0e..96c30a52e6 100644 --- a/data/release-notes/enterprise-server/3-6/17.yml +++ b/data/release-notes/enterprise-server/3-6/17.yml @@ -2,7 +2,7 @@ date: '2023-08-10' sections: security_fixes: - | - **LOW:** An attacker could circumvent branch protection by changing a PR base branch to an invalid ref name. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a reopened pull request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/) and was assigned [CVE-2023-23766](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23766). [Updated: 2023-09-22] - | Packages have been updated to the latest security versions. bugs: diff --git a/data/release-notes/enterprise-server/3-7/13.yml b/data/release-notes/enterprise-server/3-7/13.yml index 22cdb95094..38996312d3 100644 --- a/data/release-notes/enterprise-server/3-7/13.yml +++ b/data/release-notes/enterprise-server/3-7/13.yml @@ -6,7 +6,7 @@ sections: - | Packages have been updated to the latest security versions. - | - An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a re-opened Pull Request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and was assigned [CVE-2023-23765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23765). + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a re-opened Pull Request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and was assigned [CVE-2023-23765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23765). bugs: - | If MinIO was configured for external blob storage on an instance with GitHub Actions enabled and MinIO was configured for bucket replication, the instance's credential validation with MinIO would occasionally fail. diff --git a/data/release-notes/enterprise-server/3-7/15.yml b/data/release-notes/enterprise-server/3-7/15.yml index 283c5e2b9d..55920617e9 100644 --- a/data/release-notes/enterprise-server/3-7/15.yml +++ b/data/release-notes/enterprise-server/3-7/15.yml @@ -2,7 +2,7 @@ date: '2023-08-10' sections: security_fixes: - | - **LOW:** An attacker could circumvent branch protection by changing a PR base branch to an invalid ref name. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a reopened pull request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/) and was assigned [CVE-2023-23766](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23766). [Updated: 2023-09-22] - | Packages have been updated to the latest security versions. bugs: diff --git a/data/release-notes/enterprise-server/3-8/6.yml b/data/release-notes/enterprise-server/3-8/6.yml index 25e8b708cb..c5c8edc1d7 100644 --- a/data/release-notes/enterprise-server/3-8/6.yml +++ b/data/release-notes/enterprise-server/3-8/6.yml @@ -6,7 +6,7 @@ sections: - | Packages have been updated to the latest security versions. - | - An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a re-opened Pull Request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and was assigned [CVE-2023-23765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23765). + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a re-opened Pull Request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and was assigned [CVE-2023-23765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23765). bugs: - | If MinIO was configured for external blob storage on an instance with GitHub Actions enabled and MinIO was configured for bucket replication, the instance's credential validation with MinIO would occasionally fail. diff --git a/data/release-notes/enterprise-server/3-8/8.yml b/data/release-notes/enterprise-server/3-8/8.yml index c365165ebc..189b805084 100644 --- a/data/release-notes/enterprise-server/3-8/8.yml +++ b/data/release-notes/enterprise-server/3-8/8.yml @@ -2,7 +2,7 @@ date: '2023-08-10' sections: security_fixes: - | - **LOW:** An attacker could circumvent branch protection by changing a PR base branch to an invalid ref name. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a reopened pull request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/) and was assigned [CVE-2023-23766](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23766). [Updated: 2023-09-22] - | Packages have been updated to the latest security versions. bugs: diff --git a/data/release-notes/enterprise-server/3-9/1.yml b/data/release-notes/enterprise-server/3-9/1.yml index d97567fc84..5a68c180e1 100644 --- a/data/release-notes/enterprise-server/3-9/1.yml +++ b/data/release-notes/enterprise-server/3-9/1.yml @@ -15,7 +15,7 @@ sections: - | Packages have been updated to the latest security versions. - | - An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a re-opened Pull Request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and was assigned [CVE-2023-23765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23765). + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a re-opened Pull Request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and was assigned [CVE-2023-23765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23765). bugs: - | If MinIO was configured for external blob storage on an instance with GitHub Actions enabled and MinIO was configured for bucket replication, the instance's credential validation with MinIO would occasionally fail. diff --git a/data/release-notes/enterprise-server/3-9/3.yml b/data/release-notes/enterprise-server/3-9/3.yml index 411258d744..a5ea39aaba 100644 --- a/data/release-notes/enterprise-server/3-9/3.yml +++ b/data/release-notes/enterprise-server/3-9/3.yml @@ -7,7 +7,7 @@ intro: | sections: security_fixes: - | - **LOW:** An attacker could circumvent branch protection by changing a PR base branch to an invalid ref name. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + **LOW:** An incorrect comparison vulnerability was identified in GitHub Enterprise Server that allowed commit smuggling by displaying an incorrect diff in a reopened pull request. To exploit this vulnerability, an attacker would need write access to the repository. This vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com/) and was assigned [CVE-2023-23766](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-23766). [Updated: 2023-09-22] bugs: - | API results were incomplete, and ordering of results was incorrect if `asc` or `desc` appeared in lowercase within the API query. diff --git a/data/reusables/actions/cd-templates-actions.md b/data/reusables/actions/cd-templates-actions.md index 595e0f554c..06ea6b1a5a 100644 --- a/data/reusables/actions/cd-templates-actions.md +++ b/data/reusables/actions/cd-templates-actions.md @@ -1,3 +1,3 @@ -{% data variables.product.product_name %} offers deployment starter workflows for several popular services, such as Azure Web App. To learn how to get started using a starter workflow, see "[AUTOTITLE](/actions/using-workflows/using-starter-workflows)" or [browse the full list of deployment starter workflows](https://github.com/actions/starter-workflows/tree/main/deployments). You can also check out our more detailed guides for specific deployment workflows, such as "[AUTOTITLE](/actions/deployment/deploying-to-your-cloud-provider/deploying-to-azure/deploying-nodejs-to-azure-app-service)." +{% data variables.product.product_name %} offers deployment starter workflows for several popular services, such as Azure Web App. To learn how to get started using a starter workflow, see "[AUTOTITLE](/actions/learn-github-actions/using-starter-workflows)" or [browse the full list of deployment starter workflows](https://github.com/actions/starter-workflows/tree/main/deployments). You can also check out our more detailed guides for specific deployment workflows, such as "[AUTOTITLE](/actions/deployment/deploying-to-your-cloud-provider/deploying-to-azure/deploying-nodejs-to-azure-app-service)." Many service providers also offer actions on {% data variables.product.prodname_marketplace %} for deploying to their service. For the full list, see [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?category=deployment&type=actions). diff --git a/data/reusables/actions/changing-repository-access-for-a-runner-group.md b/data/reusables/actions/changing-repository-access-for-a-runner-group.md index b0215d20a7..801e0d5a1c 100644 --- a/data/reusables/actions/changing-repository-access-for-a-runner-group.md +++ b/data/reusables/actions/changing-repository-access-for-a-runner-group.md @@ -10,4 +10,4 @@ Always include a security admonition above this procedure. This is either one of 1. Under "Repository access," use the dropdown menu to click **Selected organizations**. 1. To the right of the dropdown menu, click {% octicon "gear" aria-label="The Gear icon" %}. 1. In the popup, use the checkboxes to select repositories that can access this runner group. -1. Click **Save group**. +1. Click **Save group**. diff --git a/data/reusables/actions/configure-runner-group-access.md b/data/reusables/actions/configure-runner-group-access.md index 10d292e7dc..2d13b1fe70 100644 --- a/data/reusables/actions/configure-runner-group-access.md +++ b/data/reusables/actions/configure-runner-group-access.md @@ -3,7 +3,7 @@ **Warning** - {% indented_data_reference reusables.actions.self-hosted-runner-security spaces=3 %} + {% data reusables.actions.self-hosted-runner-security %} For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories)." diff --git a/data/reusables/actions/expression-syntax-if.md b/data/reusables/actions/expression-syntax-if.md index 14c942f338..ec694e3636 100644 --- a/data/reusables/actions/expression-syntax-if.md +++ b/data/reusables/actions/expression-syntax-if.md @@ -1,5 +1,5 @@ When you use expressions in an `if` conditional, you may omit the {% raw %}`${{ }}`{% endraw %} expression syntax because {% data variables.product.prodname_actions %} automatically evaluates the `if` conditional as an expression. However, this rule does not apply everywhere. -You must use the {% raw %}`${{ }}`{% endraw %} expression syntax or escape with `''`, `""`, or `()` when the expression starts with `!`, since `!` is reserved notation in YAML format. +You must use the {% raw %}`${{ }}`{% endraw %} expression syntax or escape with `''`, `""`, or `()` when the expression starts with `!`, since `!` is reserved notation in YAML format. Using the {% raw %}`${{ }}`{% endraw %} expression syntax turns the contents into a string, and strings are truthy. For example, `if: true && {% raw %}${{ false }}{% endraw %}` will evaluate to `true`. diff --git a/data/reusables/actions/github-token-scope-descriptions.md b/data/reusables/actions/github-token-scope-descriptions.md index eaedf8ff95..c451db5963 100644 --- a/data/reusables/actions/github-token-scope-descriptions.md +++ b/data/reusables/actions/github-token-scope-descriptions.md @@ -4,20 +4,20 @@ Available scopes and details of what each allows an action to do: | Scope | Allows an action using `GITHUB_TOKEN` to | | --- | --- | -| `actions` | Work with GitHub Actions. For example, `actions: write` permits an action to cancel a workflow run. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-actions)." | -| `checks` | Work with check runs and check suites. For example, `checks: write` permits an action to create a check run. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-checks)." | -| `contents` | Work with the contents of the repository. For example, `contents: read` permits an action to list the commits, and `contents:write` allows the action to create a release. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-contents)." | -| `deployments` | Work with deployments. For example, `deployments: write` permits an action to create a new deployment. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-deployments)." | +| `actions` | Work with GitHub Actions. For example, `actions: write` permits an action to cancel a workflow run. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-actions)." | +| `checks` | Work with check runs and check suites. For example, `checks: write` permits an action to create a check run. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-checks)." | +| `contents` | Work with the contents of the repository. For example, `contents: read` permits an action to list the commits, and `contents:write` allows the action to create a release. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-contents)." | +| `deployments` | Work with deployments. For example, `deployments: write` permits an action to create a new deployment. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-deployments)." | {%- ifversion discussions %} -| `discussions` | Work with GitHub Discussions. For example, `discussions: write` permits an action to close or delete a discussion. For more information, see "[AUTOTITLE](/graphql/guides/using-the-graphql-api-for-discussions)." | +| `discussions` | Work with GitHub Discussions. For example, `discussions: write` permits an action to close or delete a discussion. For more information, see "[AUTOTITLE](/graphql/guides/using-the-graphql-api-for-discussions)." | {%- endif %} {%- ifversion fpt or ghec %} -| `id-token` | Fetch an OpenID Connect (OIDC) token. This requires `id-token: write`. For more information, see "[AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#updating-your-actions-for-oidc)" | +| `id-token` | Fetch an OpenID Connect (OIDC) token. This requires `id-token: write`. For more information, see "[AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#updating-your-actions-for-oidc)" | {%- endif %} -| `issues` | Work with issues. For example, `issues: write` permits an action to add a comment to an issue. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-issues)." | -| `packages` | Work with GitHub Packages. For example, `packages: write` permits an action to upload and publish packages on GitHub Packages. For more information, see "[AUTOTITLE](/packages/learn-github-packages/about-permissions-for-github-packages#about-scopes-and-permissions-for-package-registries)." | -| `pages` | Work with GitHub Pages. For example, `pages: write` permits an action to request a GitHub Pages build. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-pages)." | -| `pull-requests` | Work with pull requests. For example, `pull-requests: write` permits an action to add a label to a pull request. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-pull-requests)." | -| `repository-projects` | Work with GitHub projects (classic). For example, `repository-projects: write` permits an action to add a column to a project (classic). For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-projects)." | -| `security-events` | Work with GitHub code scanning and Dependabot alerts. For example, `security-events: read` permits an action to list the Dependabot alerts for the repository, and `security-events: write` allows an action to update the status of a code scanning alert. For more information, see "[Repository permissions for 'Code scanning alerts'](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-code-scanning-alerts)" and "[Repository permissions for 'Dependabot alerts'](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-dependabot-alerts)" in "Permissions required for GitHub Apps." | -| `statuses` | Work with commit statuses. For example, `statuses:read` permits an action to list the commit statuses for a given reference. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-commit-statuses)." | +| `issues` | Work with issues. For example, `issues: write` permits an action to add a comment to an issue. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-issues)." | +| `packages` | Work with GitHub Packages. For example, `packages: write` permits an action to upload and publish packages on GitHub Packages. For more information, see "[AUTOTITLE](/packages/learn-github-packages/about-permissions-for-github-packages#about-scopes-and-permissions-for-package-registries)." | +| `pages` | Work with GitHub Pages. For example, `pages: write` permits an action to request a GitHub Pages build. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-pages)." | +| `pull-requests` | Work with pull requests. For example, `pull-requests: write` permits an action to add a label to a pull request. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-pull-requests)." | +| `repository-projects` | Work with GitHub projects (classic). For example, `repository-projects: write` permits an action to add a column to a project (classic). For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-projects)." | +| `security-events` | Work with GitHub code scanning and Dependabot alerts. For example, `security-events: read` permits an action to list the Dependabot alerts for the repository, and `security-events: write` allows an action to update the status of a code scanning alert. For more information, see "[Repository permissions for 'Code scanning alerts'](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-code-scanning-alerts)" and "[Repository permissions for 'Dependabot alerts'](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-dependabot-alerts)" in "Permissions required for GitHub Apps." | +| `statuses` | Work with commit statuses. For example, `statuses:read` permits an action to list the commit statuses for a given reference. For more information, see "[AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-commit-statuses)." | diff --git a/data/reusables/actions/java-jvm-architecture.md b/data/reusables/actions/java-jvm-architecture.md index 6e0d88e2b4..8a00e84de6 100644 --- a/data/reusables/actions/java-jvm-architecture.md +++ b/data/reusables/actions/java-jvm-architecture.md @@ -1,4 +1,4 @@ -### Specifying the JVM version and architecture +### Specifying the Java version and architecture The starter workflow sets up the `PATH` to contain OpenJDK 8 for the x64 platform. If you want to use a different version of Java, or target a different architecture (`x64` or `x86`), you can use the `setup-java` action to choose a different Java runtime environment. diff --git a/data/reusables/actions/more-resources-for-ghes.md b/data/reusables/actions/more-resources-for-ghes.md index 3eead59767..bd0ef02f35 100644 --- a/data/reusables/actions/more-resources-for-ghes.md +++ b/data/reusables/actions/more-resources-for-ghes.md @@ -1,3 +1,3 @@ -If you plan to enable {% data variables.product.prodname_actions %} for the users of your instance, more resources are required. +If you plan to enable {% data variables.product.prodname_actions %} for the users of your instance, more resources are required. For more information about these requirements, see "[AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-github-actions-for-github-enterprise-server#review-hardware-considerations)." diff --git a/data/reusables/actions/new-starter-workflow.md b/data/reusables/actions/new-starter-workflow.md new file mode 100644 index 0000000000..16ae627d3d --- /dev/null +++ b/data/reusables/actions/new-starter-workflow.md @@ -0,0 +1 @@ +1. If you already have a workflow in your repository, click **New workflow**. diff --git a/data/reusables/actions/oidc-permissions-token.md b/data/reusables/actions/oidc-permissions-token.md index 434a8333e0..7766ca14d1 100644 --- a/data/reusables/actions/oidc-permissions-token.md +++ b/data/reusables/actions/oidc-permissions-token.md @@ -23,8 +23,8 @@ permissions: {% ifversion restricted-permissions-oidc %} You may need to specify additional permissions here, depending on your workflow's requirements. -For reusable workflows that are owned by the same user, organization, or enterprise as the caller workflow, the OIDC token generated in the reusable workflow can be accessed from the caller's context. -For reusable workflows outside your enterprise or organization, the `permissions` setting for `id-token` should be explicitly set to `write` at the caller workflow level or in the specific job that calls the reusable workflow. +For reusable workflows that are owned by the same user, organization, or enterprise as the caller workflow, the OIDC token generated in the reusable workflow can be accessed from the caller's context. +For reusable workflows outside your enterprise or organization, the `permissions` setting for `id-token` should be explicitly set to `write` at the caller workflow level or in the specific job that calls the reusable workflow. This ensures that the OIDC token generated in the reusable workflow is only allowed to be consumed in the caller workflows when intended. For more information, see "[AUTOTITLE](/actions/using-workflows/reusing-workflows)." diff --git a/data/reusables/actions/onboarding-next-steps.md b/data/reusables/actions/onboarding-next-steps.md index d4365f2d7d..c62513544b 100644 --- a/data/reusables/actions/onboarding-next-steps.md +++ b/data/reusables/actions/onboarding-next-steps.md @@ -1,5 +1,6 @@ {% data variables.product.prodname_actions %} can help you automate nearly every aspect of your application development processes. Ready to get started? Here are some helpful resources for taking your next steps with {% data variables.product.prodname_actions %}: +- For a quick way to create a {% data variables.product.prodname_actions %} workflow, see "[AUTOTITLE](/actions/learn-github-actions/using-starter-workflows)." - For continuous integration (CI) workflows to build and test your code, see "[AUTOTITLE](/actions/automating-builds-and-tests)." - For building and publishing packages, see "[AUTOTITLE](/actions/publishing-packages)." - For deploying projects, see "[AUTOTITLE](/actions/deployment)." diff --git a/data/reusables/actions/reusable-workflow-calling-syntax.md b/data/reusables/actions/reusable-workflow-calling-syntax.md index cc904f1a05..00a8d246e3 100644 --- a/data/reusables/actions/reusable-workflow-calling-syntax.md +++ b/data/reusables/actions/reusable-workflow-calling-syntax.md @@ -1,6 +1,6 @@ - `{owner}/{repo}/.github/workflows/{filename}@{ref}` for reusable workflows in {% ifversion fpt %}public and private{% elsif ghec or ghes > 3.7 or ghae > 3.7 %}public, internal and private{% else %}public and internal{% endif %} repositories. - `./.github/workflows/{filename}` for reusable workflows in the same repository. -In the first option, `{ref}` can be a SHA, a release tag, or a branch name. If a release tag and a branch have the same name, the release tag takes precedence over the branch name. Using the commit SHA is the safest option for stability and security. For more information, see "[AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#reusing-third-party-workflows)." +In the first option, `{ref}` can be a SHA, a release tag, or a branch name. If a release tag and a branch have the same name, the release tag takes precedence over the branch name. Using the commit SHA is the safest option for stability and security. For more information, see "[AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#reusing-third-party-workflows)." If you use the second syntax option (without `{owner}/{repo}` and `@{ref}`) the called workflow is from the same commit as the caller workflow. Ref prefixes such as `refs/heads` and `refs/tags` are not allowed. diff --git a/data/reusables/actions/self-hosted-runner-navigate-to-org-enterprise.md b/data/reusables/actions/self-hosted-runner-navigate-to-org-enterprise.md index 0f412965c2..e6de7e0a0c 100644 --- a/data/reusables/actions/self-hosted-runner-navigate-to-org-enterprise.md +++ b/data/reusables/actions/self-hosted-runner-navigate-to-org-enterprise.md @@ -9,10 +9,10 @@ {% indented_data_reference reusables.enterprise-accounts.access-enterprise spaces=5 %} 1. Navigate to the {% data variables.product.prodname_actions %} settings: - - **In an organization**: + - **In an organization**: {% indented_data_reference reusables.actions.settings-ui.settings-actions-runners spaces=5 %} - - **If using an enterprise-level runner**: + - **If using an enterprise-level runner**: {% indented_data_reference reusables.enterprise-accounts.policies-tab spaces=5 %} {% indented_data_reference reusables.enterprise-accounts.actions-tab spaces=5 %} diff --git a/data/reusables/actions/starter-workflow-get-started.md b/data/reusables/actions/starter-workflow-get-started.md new file mode 100644 index 0000000000..cb107be28c --- /dev/null +++ b/data/reusables/actions/starter-workflow-get-started.md @@ -0,0 +1 @@ +To get started quickly, add a starter workflow to the `.github/workflows` directory of your repository. diff --git a/data/reusables/actions/third-party-actions.md b/data/reusables/actions/third-party-actions.md new file mode 100644 index 0000000000..d682365cb1 --- /dev/null +++ b/data/reusables/actions/third-party-actions.md @@ -0,0 +1,8 @@ +{% note %} + +**Notes**: + +- This starter workflow contains an action that is not certified by {% data variables.product.prodname_dotcom %}. Actions provided by third parties are governed by separate terms of service, privacy policy, and support documentation. +- If you use actions from third parties you should use a version specified by a commit SHA. If the action is revised and you want to use the newer version, you will need to update the SHA. You can specify a version by referencing a tag or a branch, however the action may change without warning. For more information, see "[AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#using-third-party-actions)." + +{% endnote %} diff --git a/data/reusables/actions/workflows/section-triggering-a-workflow-branches.md b/data/reusables/actions/workflows/section-triggering-a-workflow-branches.md index 5c6d02dca4..507905939b 100644 --- a/data/reusables/actions/workflows/section-triggering-a-workflow-branches.md +++ b/data/reusables/actions/workflows/section-triggering-a-workflow-branches.md @@ -26,7 +26,7 @@ on: {% note %} -**Note:** {% ifversion required-workflows %}You should not use branch filtering to skip workflow runs if the workflow has been configured to be required. For more information, see "[AUTOTITLE](/actions/using-workflows/required-workflows)." +**Note:** {% ifversion required-workflows %}You should not use branch filtering to skip workflow runs if the workflow has been configured to be required. For more information, see "[AUTOTITLE](/actions/using-workflows/required-workflows)." {% endif %}If a workflow is skipped due to branch filtering, [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), or a [commit message](/actions/managing-workflow-runs/skipping-workflow-runs), then checks associated with that workflow will remain in a "Pending" state. A pull request that requires those checks to be successful will be blocked from merging. diff --git a/data/reusables/actions/workflows/section-triggering-a-workflow-paths.md b/data/reusables/actions/workflows/section-triggering-a-workflow-paths.md index 538744a90c..519e768c86 100644 --- a/data/reusables/actions/workflows/section-triggering-a-workflow-paths.md +++ b/data/reusables/actions/workflows/section-triggering-a-workflow-paths.md @@ -29,7 +29,7 @@ on: {% note %} -**Note:** {% ifversion required-workflows %}You should not use path filtering to skip workflow runs if the workflow has been configured to be required. For more information, see "[AUTOTITLE](/actions/using-workflows/required-workflows)." +**Note:** {% ifversion required-workflows %}You should not use path filtering to skip workflow runs if the workflow has been configured to be required. For more information, see "[AUTOTITLE](/actions/using-workflows/required-workflows)." {% endif %}If a workflow is skipped due to path filtering, [branch filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore), or a [commit message](/actions/managing-workflow-runs/skipping-workflow-runs), then checks associated with that workflow will remain in a "Pending" state. A pull request that requires those checks to be successful will be blocked from merging. diff --git a/data/reusables/code-scanning/autobuild-compiled-languages.md b/data/reusables/code-scanning/autobuild-compiled-languages.md index 7dabba53e1..33dfa70581 100644 --- a/data/reusables/code-scanning/autobuild-compiled-languages.md +++ b/data/reusables/code-scanning/autobuild-compiled-languages.md @@ -1,4 +1,4 @@ -{% data variables.product.prodname_codeql %} analyzes the {% data variables.code-scanning.compiled_languages %} source files in your repository that are built. +{% data variables.product.prodname_codeql %} analyzes the {% data variables.code-scanning.compiled_languages %} source files in your repository that are built. {% ifversion code-scanning-without-workflow-310 %} diff --git a/data/reusables/code-scanning/max-paths-setting.md b/data/reusables/code-scanning/max-paths-setting.md index 27cb3ef173..57abbe3338 100644 --- a/data/reusables/code-scanning/max-paths-setting.md +++ b/data/reusables/code-scanning/max-paths-setting.md @@ -1,10 +1,12 @@ - {% data variables.product.prodname_codeql %} advanced setup for {% data variables.product.prodname_code_scanning %}: update the `analyze` step to limit the number of paths to a maximum of one or zero. + ```yaml - name: Perform CodeQL Analysis uses: {% data reusables.actions.action-codeql-action-analyze %} env: CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}' ``` + - {% data variables.product.prodname_codeql_cli %} `database analyze`: update the database analysis command to include the `--max-paths=1` flag. For more information, see "[AUTOTITLE](/code-security/codeql-cli/codeql-cli-manual/database-analyze#--max-pathsmaxpaths)." {% note %} diff --git a/data/reusables/code-scanning/using-security-overview-coverage.md b/data/reusables/code-scanning/using-security-overview-coverage.md index c942cb5468..9a4922fc46 100644 --- a/data/reusables/code-scanning/using-security-overview-coverage.md +++ b/data/reusables/code-scanning/using-security-overview-coverage.md @@ -3,4 +3,3 @@ - Click **NUMBER enabled** or **NUMBER not enabled** in the header for any feature to show only the repositories with that feature enabled or not enabled. - At the top of the list of repositories, click **NUMBER Archived** to show only repositories that are archived. - Click in the search box to add further filters to the repositories displayed. - \ No newline at end of file diff --git a/data/reusables/codespaces/linking-to-an-existing-codespace.md b/data/reusables/codespaces/linking-to-an-existing-codespace.md index c3d30460d4..4de6c72d76 100644 --- a/data/reusables/codespaces/linking-to-an-existing-codespace.md +++ b/data/reusables/codespaces/linking-to-an-existing-codespace.md @@ -1,6 +1,6 @@ ## Linking to an existing codespace -You can create links to your existing codespaces. This is useful if you have a long-lived codespace that you return to frequently. You can save the link in a location of your choice, as an alternative to using the link on https://github.com/codespaces. +You can create links to your existing codespaces. This is useful if you have a long-lived codespace that you return to frequently. You can save the link in a location of your choice, as an alternative to using the link on https://github.com/codespaces. {% note %} diff --git a/data/reusables/codespaces/opening-codespace-in-jetbrains.md b/data/reusables/codespaces/opening-codespace-in-jetbrains.md index 3a9b31cf4b..ff0396b633 100644 --- a/data/reusables/codespaces/opening-codespace-in-jetbrains.md +++ b/data/reusables/codespaces/opening-codespace-in-jetbrains.md @@ -9,7 +9,7 @@ Alternatively, you can also open the JetBrains Gateway and select an existing co ![Screenshot of the JetBrains Gateway home page, showing the "Connect to Codespaces" button.](/assets/images/help/codespaces/jetbrains-gateway-connect.png) -1. The first time you connect, you're prompted to choose whether you want to allow {% data variables.product.prodname_dotcom %} to collect anonymized usage data, to improve functionality and user experience. Click **Allow** or **Deny**. +1. The first time you connect, you're prompted to choose whether you want to allow {% data variables.product.prodname_dotcom %} to collect anonymized usage data, to improve functionality and user experience. Click **Allow** or **Deny**. You can change your choice later, if required, in the settings for the {% data variables.product.prodname_github_codespaces %} plugin, which you can access within the JetBrains Gateway settings. diff --git a/data/reusables/codespaces/prebuilds-billing-for-forks.md b/data/reusables/codespaces/prebuilds-billing-for-forks.md index 85467e1d7e..3097ce52f7 100644 --- a/data/reusables/codespaces/prebuilds-billing-for-forks.md +++ b/data/reusables/codespaces/prebuilds-billing-for-forks.md @@ -1 +1 @@ -If you create prebuilds for a forked repository, the storage cost of those prebuilds is subtracted from your monthly included storage, while available. If you have used all of your included storage, and you have set up billing, your personal account will be billed. This is true even when the codespaces you create for a fork are paid for by the organization that owns the parent repository. +If you create prebuilds for a forked repository, the storage cost of those prebuilds is subtracted from your monthly included storage, while available. If you have used all of your included storage, and you have set up billing, your personal account will be billed. This is true even when the codespaces you create for a fork are paid for by the organization that owns the parent repository. diff --git a/data/reusables/codespaces/stopping-a-codespace.md b/data/reusables/codespaces/stopping-a-codespace.md index bc1deccf8b..7927116623 100644 --- a/data/reusables/codespaces/stopping-a-codespace.md +++ b/data/reusables/codespaces/stopping-a-codespace.md @@ -1,4 +1,4 @@ -You can stop a codespace at any time. When you stop a codespace, any running processes are stopped. Any saved changes in your codespace will still be available when you next start it. The terminal history is preserved, but the visible contents of the terminal window are not preserved between codespace sessions. +You can stop a codespace at any time. When you stop a codespace, any running processes are stopped. Any saved changes in your codespace will still be available when you next start it. The terminal history is preserved, but the visible contents of the terminal window are not preserved between codespace sessions. If you do not explicitly stop a codespace, it will continue to run until it times out from inactivity. Closing a codespace does not stop the codespace. For example, if you're using a codespace in the {% data variables.product.prodname_vscode_shortname %} web client and you close the browser tab, the codespace remains running on the remote machine. For information about timeouts, see "[AUTOTITLE](/codespaces/getting-started/the-codespace-lifecycle#timeouts-for-github-codespaces)." diff --git a/data/reusables/codespaces/when-an-org-pays.md b/data/reusables/codespaces/when-an-org-pays.md index baccc47668..501901ead7 100644 --- a/data/reusables/codespaces/when-an-org-pays.md +++ b/data/reusables/codespaces/when-an-org-pays.md @@ -1,3 +1,3 @@ - The organization has set a non-zero spending limit for {% data variables.product.prodname_github_codespaces %}. -- The codespace is created from one of the organization's repositories, or from a fork of one of the organization's repositories. This includes {% ifversion ghec %}public, private, and internal{% elsif fpt %}both public and private{% endif %} repositories. +- The codespace is created from one of the organization's repositories, or from a fork of one of the organization's repositories. This includes {% ifversion ghec %}public, private, and internal{% elsif fpt %}both public and private{% endif %} repositories. - The user creating the codespace is a member or collaborator of the organization, and the organization has enabled {% data variables.product.prodname_github_codespaces %} for this user. This can include all members and collaborators if the organization has chosen to enable {% data variables.product.prodname_codespaces %} for all users. If {% data variables.product.prodname_codespaces %} isn't enabled for a user, they can still create codespaces from public repositories in the organization, but the user will pay for these codespaces. diff --git a/data/reusables/copilot/enabling-copilot-chat-beta.md b/data/reusables/copilot/enabling-copilot-chat-beta.md index 4745d30fa1..b95a259b09 100644 --- a/data/reusables/copilot/enabling-copilot-chat-beta.md +++ b/data/reusables/copilot/enabling-copilot-chat-beta.md @@ -19,7 +19,7 @@ The {% data variables.product.prodname_copilot_chat %} public beta is available {% data reusables.enterprise-accounts.policies-tab %} {% data reusables.enterprise-accounts.copilot-tab %} -1. To the right of **{% data variables.product.prodname_copilot_chat %} Beta**, select the dropdown menu, and then choose the appropriate option. - - Click **Allowed** to enable the {% data variables.product.prodname_copilot_chat %} beta for all organizations under your enterprise. - - Click **Blocked** to disable the {% data variables.product.prodname_copilot_chat %} beta for all organizations under your enterprise. +1. To the right of **{% data variables.product.prodname_copilot_chat %} Beta**, select the dropdown menu, and then choose the appropriate option. + - Click **Allowed** to enable the {% data variables.product.prodname_copilot_chat %} beta for all organizations under your enterprise. + - Click **Blocked** to disable the {% data variables.product.prodname_copilot_chat %} beta for all organizations under your enterprise. - Click **No policy** to allow each organization under your enterprise to set their own policy. diff --git a/data/reusables/copilot/vs-extensions.md b/data/reusables/copilot/vs-extensions.md index 745b4d05f4..777cb42200 100644 --- a/data/reusables/copilot/vs-extensions.md +++ b/data/reusables/copilot/vs-extensions.md @@ -1,3 +1,3 @@ 1. In the {% data variables.product.prodname_vs %} menu bar, click **Extensions**, then click **Manage Extensions**. - + ![Screenshot of the menu bar in {% data variables.product.prodname_vs %}. The "Extensions" menu is open, and the "Manage Extensions" option is highlighted with an orange outline.](/assets/images/help/copilot/visual-studio-toolbar.png) diff --git a/data/reusables/dependabot/dependabot-alert-rules.md b/data/reusables/dependabot/dependabot-alert-rules.md index 8e46966876..d20900e0d8 100644 --- a/data/reusables/dependabot/dependabot-alert-rules.md +++ b/data/reusables/dependabot/dependabot-alert-rules.md @@ -1 +1 @@ -Additionally, you can use {% data variables.product.prodname_dependabot %} alert rules to filter out false positive alerts or alerts you're not interested in, based on complex logic from a variety of contextual criteria. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts)." +Additionally, you can use {% data variables.product.prodname_dependabot %} alert rules to filter out false positive alerts or alerts you're not interested in, based on complex logic from a variety of contextual criteria. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alert-rules/about-dependabot-alert-rules)." diff --git a/data/reusables/enterprise_backup_utilities/enterprise-backup-utils-encryption-keys.md b/data/reusables/enterprise_backup_utilities/enterprise-backup-utils-encryption-keys.md index 8be8ccd5ea..c8798e564e 100644 --- a/data/reusables/enterprise_backup_utilities/enterprise-backup-utils-encryption-keys.md +++ b/data/reusables/enterprise_backup_utilities/enterprise-backup-utils-encryption-keys.md @@ -1 +1 @@ -After restoration of a backup created using {% data variables.product.prodname_enterprise_backup_utilities %} {% ifversion ghes = 3.7 %}3.7.0{% elsif ghes = 3.8 %}3.7.0 or 3.8.0{% elsif ghes = 3.9 %}3.7.0, 3.8.0, or 3.9.0{% endif %}, users may not be able to sign into the instance. To fix this issue, plus a bug that was preventing secret scanning encryption keys from being backed up, upgrade your backup host to use {% data variables.product.prodname_enterprise_backup_utilities %} {% ifversion ghes = 3.7 %}3.7.1{% elsif ghes = 3.8 %}3.8.1{% elsif ghes = 3.9 %}3.9.1{% endif %} and generate a new full backup using `ghe-backup`. For more information on using an existing backup, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/known-issues-with-backups-for-your-instance#users-cannot-sign-in-after-restoration-of-a-backup)." +After restoration of a backup created using {% data variables.product.prodname_enterprise_backup_utilities %} {% ifversion ghes = 3.7 %}3.7.0{% elsif ghes = 3.8 %}3.7.0 or 3.8.0{% elsif ghes = 3.9 %}3.7.0, 3.8.0, or 3.9.0{% endif %}, users may not be able to sign into the instance. To fix this issue, plus a bug that was preventing secret scanning encryption keys from being backed up, upgrade your backup host to use {% data variables.product.prodname_enterprise_backup_utilities %} {% ifversion ghes = 3.7 %}3.7.1{% elsif ghes = 3.8 %}3.8.1{% elsif ghes = 3.9 %}3.9.1{% endif %} and generate a new full backup using `ghe-backup`. For more information on using an existing backup, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/known-issues-with-backups-for-your-instance#users-cannot-sign-in-after-restoration-of-a-backup)." diff --git a/data/reusables/enterprise_clustering/high-availability-requires-391.md b/data/reusables/enterprise_clustering/high-availability-requires-391.md index 7f318c457b..df4da01557 100644 --- a/data/reusables/enterprise_clustering/high-availability-requires-391.md +++ b/data/reusables/enterprise_clustering/high-availability-requires-391.md @@ -2,7 +2,7 @@ {% note %} -**Note:** High availability replication is available on {% data variables.product.prodname_ghe_server %} version 3.9.1 and later. +**Note:** High availability replication is available on {% data variables.product.prodname_ghe_server %} version 3.9.1 and later. {% endnote %} diff --git a/data/reusables/gated-features/copilot-chat.md b/data/reusables/gated-features/copilot-chat.md index e5ad9f6450..9c6ca7d200 100644 --- a/data/reusables/gated-features/copilot-chat.md +++ b/data/reusables/gated-features/copilot-chat.md @@ -1,5 +1,5 @@ -{% data variables.product.prodname_copilot_chat %} is currently in public beta, and is subject to changes. +{% data variables.product.prodname_copilot_chat %} is currently in public beta, and is subject to changes.

-Owners of organizations or enterprises with a {% data variables.product.prodname_copilot_for_business %} subscription can decide whether to grant access to the {% data variables.product.prodname_copilot_chat %} beta for users in their organization or enterprise. +Owners of organizations or enterprises with a {% data variables.product.prodname_copilot_for_business %} subscription can decide whether to grant access to the {% data variables.product.prodname_copilot_chat %} beta for users in their organization or enterprise.

-If you have a {% data variables.product.prodname_copilot_for_individuals %} subscription, you now have access to the {% data variables.product.prodname_copilot_chat %} beta. +If you have a {% data variables.product.prodname_copilot_for_individuals %} subscription, you now have access to the {% data variables.product.prodname_copilot_chat %} beta. diff --git a/data/reusables/gated-features/copilot-for-business.md b/data/reusables/gated-features/copilot-for-business.md index 3383bf2047..6e2f6aaf5a 100644 --- a/data/reusables/gated-features/copilot-for-business.md +++ b/data/reusables/gated-features/copilot-for-business.md @@ -1 +1 @@ -{% data variables.product.prodname_copilot_for_business %} can be managed through organization accounts{% ifversion ghec %} and enterprise accounts{% endif %}. +{% data variables.product.prodname_copilot_for_business %} can be managed through organization accounts{% ifversion ghec %} and enterprise accounts{% endif %}. diff --git a/data/reusables/gated-features/dependabot-alert-rules.md b/data/reusables/gated-features/dependabot-alert-rules.md new file mode 100644 index 0000000000..3cfd768472 --- /dev/null +++ b/data/reusables/gated-features/dependabot-alert-rules.md @@ -0,0 +1,7 @@ +{%- ifversion fpt or ghec %} +Custom alert rules for {% data variables.product.prodname_dependabot_alerts %} are available on any public repositories (for free), and on any private repositories, when you have a license for {% data variables.product.prodname_GH_advanced_security %}. + +{%- elsif ghes %} +Custom alert rules for {% data variables.product.prodname_dependabot_alerts %} are available for all repositories in {% data variables.product.product_name %}. This feature requires a license for {% data variables.product.prodname_GH_advanced_security %}. + +{% endif %} diff --git a/data/reusables/gated-features/partner-pattern-validity-check-ghas.md b/data/reusables/gated-features/partner-pattern-validity-check-ghas.md index df663158ab..fb2b9bd79c 100644 --- a/data/reusables/gated-features/partner-pattern-validity-check-ghas.md +++ b/data/reusables/gated-features/partner-pattern-validity-check-ghas.md @@ -4,4 +4,4 @@ Validity checks for partner patterns is available on all types of repositories o {% elsif ghes %} Validity checks for partner patterns is available on all types of repositories in {% data variables.product.product_name %}. This feature requires a license for {% data variables.product.prodname_GH_advanced_security %}. -{% endif %} +{% endif %} diff --git a/data/reusables/identity-and-permissions/team-sync-org-invites.md b/data/reusables/identity-and-permissions/team-sync-org-invites.md index ef619f975f..c493269979 100644 --- a/data/reusables/identity-and-permissions/team-sync-org-invites.md +++ b/data/reusables/identity-and-permissions/team-sync-org-invites.md @@ -1 +1 @@ -Team synchronization is not a user provisioning service and does not invite non-members to join organizations in most cases. This means a user will only be successfully added to a team if they are already an organization member. However, you can optionally allow team synchronization to re-invite users who were previously organization members and have since been removed. +Team synchronization is not a user provisioning service and does not invite non-members to join organizations in most cases. This means a user will only be successfully added to a team if they are already an organization member. However, you can optionally allow team synchronization to re-invite users who were previously organization members and have since been removed. diff --git a/data/reusables/package_registry/checksum-maven-plugin.md b/data/reusables/package_registry/checksum-maven-plugin.md index 47c66dd99b..4d7f26d86b 100644 --- a/data/reusables/package_registry/checksum-maven-plugin.md +++ b/data/reusables/package_registry/checksum-maven-plugin.md @@ -1,7 +1,7 @@ {%- ifversion ghae %} 1. In the `plugins` element of the _pom.xml_ file, add the [checksum-maven-plugin](https://search.maven.org/artifact/net.nicoulaj.maven.plugins/checksum-maven-plugin) plugin, and configure the plugin to send at least SHA-256 checksums. - + ```xml diff --git a/data/reusables/release-notes/upgrade-to-3-9-or-to-3-10-io-utilization-increase.md b/data/reusables/release-notes/upgrade-to-3-9-or-to-3-10-io-utilization-increase.md index a379aa654f..bdd1fc88b1 100644 --- a/data/reusables/release-notes/upgrade-to-3-9-or-to-3-10-io-utilization-increase.md +++ b/data/reusables/release-notes/upgrade-to-3-9-or-to-3-10-io-utilization-increase.md @@ -1,3 +1,3 @@ -After an administrator upgrades from {% data variables.product.prodname_ghe_server %} 3.7 or 3.8 to 3.9 or 3.10, I/O utilization will increase, and in some cases the instance's performance will be impacted. -Reduced performance is due to the database server being upgraded from MySQL 5.7 to MySQL 8.0. +After an administrator upgrades from {% data variables.product.prodname_ghe_server %} 3.7 or 3.8 to 3.9 or 3.10, I/O utilization will increase, and in some cases the instance's performance will be impacted. +Reduced performance is due to the database server being upgraded from MySQL 5.7 to MySQL 8.0. For more information, see "[AUTOTITLE](/admin/enterprise-management/updating-the-virtual-machine-and-physical-resources/known-issues-with-upgrades-to-your-instance)." diff --git a/data/reusables/stars/stars-page-navigation.md b/data/reusables/stars/stars-page-navigation.md index f21e123840..3986a34a3f 100644 --- a/data/reusables/stars/stars-page-navigation.md +++ b/data/reusables/stars/stars-page-navigation.md @@ -1,3 +1,3 @@ -1. In the upper-right corner of any page, click your profile photo, then click **Your stars**. +1. In the upper-right corner of any page, click your profile photo, then click **Your stars**. ![Screenshot of the profile menu for octocat. The "Your stars" option is highlighted with an orange outline.](/assets/images/help/stars/navigate-to-stars-page.png) diff --git a/package-lock.json b/package-lock.json index 7c1c60bbb2..9fdcfbeb96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,6 +56,7 @@ "lodash": "^4.17.21", "lodash-es": "^4.17.21", "lowdb": "6.0.0", + "lowlight": "3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-hast": "^13.0.1", "mdast-util-to-markdown": "2.0.0", @@ -68,15 +69,14 @@ "port-used": "^2.0.8", "react": "18.2.0", "react-dom": "18.2.0", - "react-syntax-highlighter": "^15.5.0", - "rehype-highlight": "^6.0.0", - "rehype-raw": "^6.1.1", - "rehype-slug": "^5.1.0", - "rehype-stringify": "^9.0.4", + "rehype-highlight": "^7.0.0", + "rehype-raw": "^7.0.0", + "rehype-slug": "^6.0.0", + "rehype-stringify": "^10.0.0", "remark-gemoji-to-emoji": "^1.1.0", - "remark-gfm": "^3.0.1", - "remark-parse": "^10.0.2", - "remark-rehype": "^10.1.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", "rss-parser": "^3.13.0", "scroll-anchoring": "^0.1.0", "semver": "^7.5.4", @@ -104,7 +104,6 @@ "@types/lodash": "^4.14.198", "@types/react": "18.2.21", "@types/react-dom": "^18.2.7", - "@types/react-syntax-highlighter": "^15.5.7", "@typescript-eslint/eslint-plugin": "6.7.0", "@typescript-eslint/parser": "6.7.0", "chalk": "^5.0.1", @@ -133,7 +132,6 @@ "json-schema-merge-allof": "^0.8.1", "kill-port": "2.0.1", "lint-staged": "^14.0.1", - "make-promises-safe": "^5.1.0", "markdownlint": "^0.28.2", "markdownlint-rule-helpers": "^0.19.0", "markdownlint-rule-search-replace": "^1.2.0", @@ -2724,8 +2722,9 @@ "dev": true }, "node_modules/@types/mdast": { - "version": "3.0.10", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.0.tgz", + "integrity": "sha512-YLeG8CujC9adtj/kuDzq1N4tCDYKoZ5l/bnjq8d74+t/3q/tHquJOJKUQXJrLCflOHpKjXgcI/a929gpmLOEng==", "dependencies": { "@types/unist": "*" } @@ -2749,10 +2748,6 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, - "node_modules/@types/parse5": { - "version": "6.0.1", - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.4", "license": "MIT" @@ -2784,15 +2779,6 @@ "@types/react": "*" } }, - "node_modules/@types/react-syntax-highlighter": { - "version": "15.5.7", - "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.7.tgz", - "integrity": "sha512-bo5fEO5toQeyCp0zVHBeggclqf5SQ/Z5blfFmjwO5dkMVGPgmiwZsJh9nu/Bo5L7IHTuGWrja6LxJVE2uB5ZrQ==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/scheduler": { "version": "0.16.2", "license": "MIT" @@ -3967,8 +3953,9 @@ } }, "node_modules/ccount": { - "version": "2.0.0", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4022,24 +4009,18 @@ } }, "node_modules/character-entities-html4": { - "version": "2.0.0", - "license": "MIT", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/character-entities-legacy": { - "version": "2.0.0", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.0", - "license": "MIT", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4938,9 +4919,9 @@ } }, "node_modules/devlop": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.0.0.tgz", - "integrity": "sha512-DNY7Ok32YUNiFjTw9sNVqUET5c2/cqbOdDxnsI6MkfQOvMcAULqPVqABm/An9IGVRP4ulHEvpo3/w2Potw3cfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "dependencies": { "dequal": "^2.0.0" }, @@ -4950,8 +4931,9 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "license": "BSD-3-Clause", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "engines": { "node": ">=0.3.1" } @@ -6355,17 +6337,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fault": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -6600,12 +6571,6 @@ "node": ">= 14.17" } }, - "node_modules/format": { - "version": "0.2.2", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/forwarded": { "version": "0.2.0", "license": "MIT", @@ -7021,23 +6986,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-to-hyperscript": { - "version": "10.0.1", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-from-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", @@ -7109,37 +7057,46 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-has-property": { - "version": "2.0.0", - "license": "MIT", + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "dependencies": { + "@types/hast": "^3.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-heading-rank": { - "version": "2.1.0", - "license": "MIT", + "node_modules/hast-util-heading-rank/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/unist": "*" } }, "node_modules/hast-util-is-element": { - "version": "2.1.1", - "license": "MIT", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0" + "@types/hast": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-is-element/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/hast-util-parse-selector": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", @@ -7161,18 +7118,21 @@ } }, "node_modules/hast-util-raw": { - "version": "7.2.0", - "license": "MIT", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.1.tgz", + "integrity": "sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==", "dependencies": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "hast-util-from-parse5": "^7.0.0", - "hast-util-to-parse5": "^7.0.0", - "html-void-elements": "^2.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" }, @@ -7181,90 +7141,52 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-raw/node_modules/hast-util-from-parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", - "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "node_modules/hast-util-raw/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "hastscript": "^7.0.0", - "property-information": "^6.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "web-namespaces": "^2.0.0" + "@types/unist": "*" + } + }, + "node_modules/hast-util-raw/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/hast-util-raw/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-raw/node_modules/hast-util-parse-selector": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", - "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/hastscript": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^3.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/parse5": { + "node_modules/hast-util-raw/node_modules/vfile": { "version": "6.0.1", - "license": "MIT" - }, - "node_modules/hast-util-raw/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-raw/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "node_modules/hast-util-raw/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/vfile-location": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", - "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", - "dependencies": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", @@ -7272,19 +7194,47 @@ } }, "node_modules/hast-util-to-html": { - "version": "8.0.2", - "license": "MIT", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz", + "integrity": "sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==", "dependencies": { - "@types/hast": "^2.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", - "hast-util-is-element": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", - "unist-util-is": "^5.0.0" + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-html/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/hast-util-to-html/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" }, "funding": { "type": "opencollective", @@ -7292,13 +7242,15 @@ } }, "node_modules/hast-util-to-parse5": { - "version": "7.0.0", - "license": "MIT", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", "dependencies": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "hast-to-hyperscript": "^10.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" }, @@ -7307,6 +7259,14 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-parse5/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/hast-util-to-string": { "version": "2.0.0", "license": "MIT", @@ -7319,18 +7279,33 @@ } }, "node_modules/hast-util-to-text": { - "version": "3.1.1", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.0.tgz", + "integrity": "sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-is-element": "^2.0.0", - "unist-util-find-after": "^4.0.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-text/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-text/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, "node_modules/hast-util-whitespace": { "version": "2.0.0", "license": "MIT", @@ -7434,8 +7409,9 @@ "dev": true }, "node_modules/html-void-elements": { - "version": "2.0.0", - "license": "MIT", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7705,26 +7681,6 @@ "node": ">= 0.10" } }, - "node_modules/is-alphabetical": { - "version": "2.0.0", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "dev": true, @@ -7838,14 +7794,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-decimal": { - "version": "2.0.0", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-docker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", @@ -7901,14 +7849,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-hexadecimal": { - "version": "2.0.0", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -9875,22 +9815,33 @@ } }, "node_modules/lowlight": { - "version": "1.20.0", - "license": "MIT", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.0.0.tgz", + "integrity": "sha512-kedX6yxvgak8P4LGh3vKRDQuMbVcnP+qRuDJlve2w+mNJAbEhEQPjYCp9QJnpVL5F2aAAVjeIzzrbQZUKHiDJw==", "dependencies": { - "fault": "^1.0.0", - "highlight.js": "~10.7.0" + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "highlight.js": "~11.8.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/lowlight/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/lowlight/node_modules/highlight.js": { - "version": "10.7.3", - "license": "BSD-3-Clause", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", + "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", "engines": { - "node": "*" + "node": ">=12.0.0" } }, "node_modules/lru-cache": { @@ -9924,11 +9875,6 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/make-promises-safe": { - "version": "5.1.0", - "dev": true, - "license": "MIT" - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -10079,6 +10025,14 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-definitions/node_modules/@types/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", @@ -10107,21 +10061,29 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "2.1.0", - "license": "MIT", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", "dependencies": { + "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-find-and-replace/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "engines": { "node": ">=12" }, @@ -10129,12 +10091,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "license": "MIT", + "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", @@ -10164,67 +10126,11 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-from-markdown/node_modules/@types/mdast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.0.tgz", - "integrity": "sha512-YLeG8CujC9adtj/kuDzq1N4tCDYKoZ5l/bnjq8d74+t/3q/tHquJOJKUQXJrLCflOHpKjXgcI/a929gpmLOEng==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-from-markdown/node_modules/@types/unist": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, "node_modules/mdast-util-from-markdown/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -10238,14 +10144,17 @@ } }, "node_modules/mdast-util-gfm": { - "version": "2.0.0", - "license": "MIT", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", "dependencies": { - "mdast-util-gfm-autolink-literal": "^1.0.0", - "mdast-util-gfm-footnote": "^1.0.0", - "mdast-util-gfm-strikethrough": "^1.0.0", - "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", @@ -10253,13 +10162,15 @@ } }, "node_modules/mdast-util-gfm-autolink-literal": { - "version": "1.0.2", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", "dependencies": { - "@types/mdast": "^3.0.0", + "@types/mdast": "^4.0.0", "ccount": "^2.0.0", - "mdast-util-find-and-replace": "^2.0.0", - "micromark-util-character": "^1.0.0" + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" }, "funding": { "type": "opencollective", @@ -10267,123 +10178,15 @@ } }, "node_modules/mdast-util-gfm-footnote": { - "version": "1.0.0", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^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-gfm-footnote/node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "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/mdast-util-gfm-footnote/node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "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/mdast-util-gfm-footnote/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" }, "funding": { "type": "opencollective", @@ -10391,121 +10194,13 @@ } }, "node_modules/mdast-util-gfm-strikethrough": { - "version": "1.0.0", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "dependencies": { - "@types/mdast": "^3.0.3", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^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-gfm-strikethrough/node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "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/mdast-util-gfm-strikethrough/node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "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/mdast-util-gfm-strikethrough/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", @@ -10516,7 +10211,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "dev": true, "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -10529,313 +10223,15 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-gfm-table/node_modules/@types/mdast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.0.tgz", - "integrity": "sha512-YLeG8CujC9adtj/kuDzq1N4tCDYKoZ5l/bnjq8d74+t/3q/tHquJOJKUQXJrLCflOHpKjXgcI/a929gpmLOEng==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-gfm-task-list-item": { - "version": "1.0.0", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "dependencies": { - "@types/mdast": "^3.0.3", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^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-gfm-task-list-item/node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "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/mdast-util-gfm-task-list-item/node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "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/mdast-util-gfm-task-list-item/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "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-gfm/node_modules/mdast-util-gfm-table": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", - "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^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-gfm/node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@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/mdast-util-gfm/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "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/mdast-util-gfm/node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "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/mdast-util-gfm/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", @@ -10855,14 +10251,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-phrasing/node_modules/@types/mdast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.0.tgz", - "integrity": "sha512-YLeG8CujC9adtj/kuDzq1N4tCDYKoZ5l/bnjq8d74+t/3q/tHquJOJKUQXJrLCflOHpKjXgcI/a929gpmLOEng==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-phrasing/node_modules/@types/unist": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", @@ -10907,115 +10295,11 @@ "@types/unist": "*" } }, - "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.0.tgz", - "integrity": "sha512-YLeG8CujC9adtj/kuDzq1N4tCDYKoZ5l/bnjq8d74+t/3q/tHquJOJKUQXJrLCflOHpKjXgcI/a929gpmLOEng==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-to-hast/node_modules/@types/unist": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-markdown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.0.0.tgz", @@ -11035,14 +10319,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown/node_modules/@types/mdast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.0.tgz", - "integrity": "sha512-YLeG8CujC9adtj/kuDzq1N4tCDYKoZ5l/bnjq8d74+t/3q/tHquJOJKUQXJrLCflOHpKjXgcI/a929gpmLOEng==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", @@ -11060,14 +10336,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-string/node_modules/@types/mdast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.0.tgz", - "integrity": "sha512-YLeG8CujC9adtj/kuDzq1N4tCDYKoZ5l/bnjq8d74+t/3q/tHquJOJKUQXJrLCflOHpKjXgcI/a929gpmLOEng==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdurl": { "version": "1.0.1", "dev": true, @@ -11139,638 +10407,6 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "1.0.4", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "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", - "parse-entities": "^3.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^1.0.0", - "micromark-extension-gfm-footnote": "^1.0.0", - "micromark-extension-gfm-strikethrough": "^1.0.0", - "micromark-extension-gfm-table": "^1.0.0", - "micromark-extension-gfm-tagfilter": "^1.0.0", - "micromark-extension-gfm-task-list-item": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "micromark-core-commonmark": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", - "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", - "dev": true, - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "1.0.2", - "license": "MIT", - "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" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm/node_modules/micromark-extension-gfm-table": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz", - "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==", - "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" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.0.2", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "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/micromark-factory-space": { - "version": "1.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.0.2", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "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", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "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", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "1.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "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", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "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": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-decode-string/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-encode": { - "version": "1.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "1.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "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", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "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.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "1.0.1", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark/node_modules/micromark-core-commonmark": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", @@ -11803,7 +10439,121 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-factory-destination": { + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", @@ -11823,7 +10573,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-factory-label": { + "node_modules/micromark-factory-label": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", @@ -11844,7 +10594,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-factory-space": { + "node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", @@ -11863,7 +10613,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-factory-title": { + "node_modules/micromark-factory-title": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", @@ -11884,7 +10634,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-factory-whitespace": { + "node_modules/micromark-factory-whitespace": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", @@ -11905,7 +10655,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-character": { + "node_modules/micromark-util-character": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", @@ -11924,7 +10674,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-chunked": { + "node_modules/micromark-util-chunked": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", @@ -11942,7 +10692,7 @@ "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-classify-character": { + "node_modules/micromark-util-classify-character": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", @@ -11962,7 +10712,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-combine-extensions": { + "node_modules/micromark-util-combine-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", @@ -11981,7 +10731,46 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-encode": { + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", + "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "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": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", @@ -11996,7 +10785,7 @@ } ] }, - "node_modules/micromark/node_modules/micromark-util-html-tag-name": { + "node_modules/micromark-util-html-tag-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", @@ -12011,7 +10800,7 @@ } ] }, - "node_modules/micromark/node_modules/micromark-util-normalize-identifier": { + "node_modules/micromark-util-normalize-identifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", @@ -12029,7 +10818,7 @@ "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-resolve-all": { + "node_modules/micromark-util-resolve-all": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", @@ -12047,7 +10836,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-sanitize-uri": { + "node_modules/micromark-util-sanitize-uri": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", @@ -12067,7 +10856,7 @@ "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-subtokenize": { + "node_modules/micromark-util-subtokenize": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", @@ -12088,7 +10877,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark/node_modules/micromark-util-symbol": { + "node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", @@ -12103,7 +10892,7 @@ } ] }, - "node_modules/micromark/node_modules/micromark-util-types": { + "node_modules/micromark-util-types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", @@ -12257,7 +11046,8 @@ }, "node_modules/mri": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "engines": { "node": ">=4" } @@ -12956,22 +11746,6 @@ "node": ">=6" } }, - "node_modules/parse-entities": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0", - "character-entities-legacy": "^2.0.0", - "character-reference-invalid": "^2.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/parse-json": { "version": "5.2.0", "dev": true, @@ -13332,13 +12106,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/prismjs": { - "version": "1.27.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "license": "MIT" @@ -13641,6 +12408,518 @@ "react": ">=16" } }, + "node_modules/react-markdown/node_modules/@types/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/react-markdown/node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "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/react-markdown/node_modules/mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/react-markdown/node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/react-markdown/node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@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/react-markdown/node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "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/react-markdown/node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "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/react-markdown/node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "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/react-markdown/node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "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/react-markdown/node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "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/react-markdown/node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "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/react-markdown/node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "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/react-markdown/node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "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/react-markdown/node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "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/react-markdown/node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "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/react-markdown/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "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/react-markdown/node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "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/react-markdown/node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/react-markdown/node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/react-markdown/node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "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/react-markdown/node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "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/react-markdown/node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "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/react-markdown/node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "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/react-markdown/node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/react-markdown/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/react-markdown/node_modules/remark-parse": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "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/react-markdown/node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/react-markdown/node_modules/style-to-object": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz", @@ -13667,6 +12946,18 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/react-markdown/node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/react-markdown/node_modules/unist-util-visit": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", @@ -13694,27 +12985,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/react-syntax-highlighter": { - "version": "15.5.0", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.3.1", - "highlight.js": "^10.4.1", - "lowlight": "^1.17.0", - "prismjs": "^1.27.0", - "refractor": "^3.6.0" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, - "node_modules/react-syntax-highlighter/node_modules/highlight.js": { - "version": "10.7.3", - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, "node_modules/readable-stream": { "version": "3.6.0", "license": "MIT", @@ -13752,145 +13022,6 @@ "node": ">=8.10.0" } }, - "node_modules/refractor": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "hastscript": "^6.0.0", - "parse-entities": "^2.0.0", - "prismjs": "~1.27.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/character-entities": { - "version": "1.2.4", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/character-entities-legacy": { - "version": "1.1.4", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/character-reference-invalid": { - "version": "1.1.4", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/comma-separated-tokens": { - "version": "1.0.8", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/hast-util-parse-selector": { - "version": "2.2.5", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/refractor/node_modules/hastscript": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/refractor/node_modules/is-alphabetical": { - "version": "1.0.4", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/is-alphanumerical": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/is-decimal": { - "version": "1.0.4", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/is-hexadecimal": { - "version": "1.0.4", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/parse-entities": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/property-information": { - "version": "5.6.0", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/refractor/node_modules/space-separated-tokens": { - "version": "1.1.5", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -13913,90 +13044,67 @@ } }, "node_modules/rehype-highlight": { - "version": "6.0.0", - "license": "MIT", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-highlight/-/rehype-highlight-7.0.0.tgz", + "integrity": "sha512-QtobgRgYoQaK6p1eSr2SD1i61f7bjF2kZHAQHxeCHAuJf7ZUDMvQ7owDq9YTkmar5m5TSUol+2D3bp3KfJf/oA==", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-to-text": "^3.0.0", - "lowlight": "^2.0.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0" + "@types/hast": "^3.0.0", + "hast-util-to-text": "^4.0.0", + "lowlight": "^3.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-highlight/node_modules/fault": { - "version": "2.0.0", - "license": "MIT", + "node_modules/rehype-highlight/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "@types/unist": "*" } }, - "node_modules/rehype-highlight/node_modules/highlight.js": { - "version": "11.3.1", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12.0.0" - } + "node_modules/rehype-highlight/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" }, - "node_modules/rehype-highlight/node_modules/lowlight": { - "version": "2.4.0", - "license": "MIT", + "node_modules/rehype-highlight/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "@types/hast": "^2.0.0", - "fault": "^2.0.0", - "highlight.js": "~11.3.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/rehype-highlight/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "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" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-highlight/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "node_modules/rehype-highlight/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-highlight/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "node_modules/rehype-highlight/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", @@ -14004,30 +13112,65 @@ } }, "node_modules/rehype-raw": { - "version": "6.1.1", - "license": "MIT", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-raw": "^7.2.0", - "unified": "^10.0.0" + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-raw/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "node_modules/rehype-raw/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", "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" + "@types/unist": "*" + } + }, + "node_modules/rehype-raw/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/rehype-raw/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", @@ -14035,62 +13178,35 @@ } }, "node_modules/rehype-slug": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-5.1.0.tgz", - "integrity": "sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", "dependencies": { - "@types/hast": "^2.0.0", + "@types/hast": "^3.0.0", "github-slugger": "^2.0.0", - "hast-util-has-property": "^2.0.0", - "hast-util-heading-rank": "^2.0.0", - "hast-util-to-string": "^2.0.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0" + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-slug/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "node_modules/rehype-slug/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", "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" + "@types/unist": "*" } }, - "node_modules/rehype-slug/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "node_modules/rehype-slug/node_modules/hast-util-to-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-slug/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/hast": "^3.0.0" }, "funding": { "type": "opencollective", @@ -14098,35 +13214,25 @@ } }, "node_modules/rehype-stringify": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.4.tgz", - "integrity": "sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", + "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-to-html": "^8.0.0", - "unified": "^10.0.0" + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-stringify/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "node_modules/rehype-stringify/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", "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" + "@types/unist": "*" } }, "node_modules/remark-gemoji-to-emoji": { @@ -14156,31 +13262,16 @@ } }, "node_modules/remark-gfm": { - "version": "3.0.1", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-gfm": "^2.0.0", - "micromark-extension-gfm": "^2.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "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" + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -14188,139 +13279,14 @@ } }, "node_modules/remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "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-parse/node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "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/remark-parse/node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse/node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@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/remark-parse/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "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/remark-parse/node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "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/remark-parse/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "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" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -14328,77 +13294,81 @@ } }, "node_modules/remark-rehype": { - "version": "10.1.0", - "license": "MIT", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.0.0.tgz", + "integrity": "sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==", "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "node_modules/remark-rehype/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "*" + } + }, + "node_modules/remark-rehype/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/remark-rehype/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "node_modules/remark-rehype/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "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" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "node_modules/remark-rehype/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -14654,13 +13624,14 @@ } }, "node_modules/sade": { - "version": "1.7.4", - "license": "MIT", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", "dependencies": { "mri": "^1.1.0" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, "node_modules/safe-buffer": { @@ -15389,11 +14360,12 @@ } }, "node_modules/stringify-entities": { - "version": "4.0.1", - "license": "MIT", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", "dependencies": { "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^2.0.0" + "character-entities-legacy": "^3.0.0" }, "funding": { "type": "github", @@ -15483,13 +14455,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/style-to-object": { - "version": "0.3.0", - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, "node_modules/styled-components": { "version": "5.3.5", "hasInstallScript": true, @@ -15786,13 +14751,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/totalist": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/touch": { "version": "3.1.0", "dev": true, @@ -16098,11 +15056,29 @@ } }, "node_modules/unist-util-find-after": { - "version": "4.0.0", - "license": "MIT", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/unist-util-find-after/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", @@ -16127,13 +15103,22 @@ } }, "node_modules/unist-util-position": { - "version": "4.0.1", - "license": "MIT", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-position/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, "node_modules/unist-util-remove": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", @@ -16347,14 +15332,14 @@ } }, "node_modules/uvu": { - "version": "0.5.2", - "license": "MIT", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", "dependencies": { "dequal": "^2.0.0", "diff": "^5.0.0", "kleur": "^4.0.3", - "sade": "^1.7.3", - "totalist": "^2.0.0" + "sade": "^1.7.3" }, "bin": { "uvu": "bin.js" @@ -16777,13 +15762,6 @@ "node": ">=4.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -16853,8 +15831,9 @@ } }, "node_modules/zwitch": { - "version": "2.0.2", - "license": "MIT", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" diff --git a/package.json b/package.json index 9628b0d4eb..2f8ec1441b 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,7 @@ "lodash": "^4.17.21", "lodash-es": "^4.17.21", "lowdb": "6.0.0", + "lowlight": "3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-hast": "^13.0.1", "mdast-util-to-markdown": "2.0.0", @@ -117,15 +118,14 @@ "port-used": "^2.0.8", "react": "18.2.0", "react-dom": "18.2.0", - "react-syntax-highlighter": "^15.5.0", - "rehype-highlight": "^6.0.0", - "rehype-raw": "^6.1.1", - "rehype-slug": "^5.1.0", - "rehype-stringify": "^9.0.4", + "rehype-highlight": "^7.0.0", + "rehype-raw": "^7.0.0", + "rehype-slug": "^6.0.0", + "rehype-stringify": "^10.0.0", "remark-gemoji-to-emoji": "^1.1.0", - "remark-gfm": "^3.0.1", - "remark-parse": "^10.0.2", - "remark-rehype": "^10.1.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", "rss-parser": "^3.13.0", "scroll-anchoring": "^0.1.0", "semver": "^7.5.4", @@ -153,7 +153,6 @@ "@types/lodash": "^4.14.198", "@types/react": "18.2.21", "@types/react-dom": "^18.2.7", - "@types/react-syntax-highlighter": "^15.5.7", "@typescript-eslint/eslint-plugin": "6.7.0", "@typescript-eslint/parser": "6.7.0", "chalk": "^5.0.1", @@ -182,7 +181,6 @@ "json-schema-merge-allof": "^0.8.1", "kill-port": "2.0.1", "lint-staged": "^14.0.1", - "make-promises-safe": "^5.1.0", "markdownlint": "^0.28.2", "markdownlint-rule-helpers": "^0.19.0", "markdownlint-rule-search-replace": "^1.2.0", diff --git a/src/audit-logs/data/fpt/organization.json b/src/audit-logs/data/fpt/organization.json index 2e22847a50..fdc35ab717 100644 --- a/src/audit-logs/data/fpt/organization.json +++ b/src/audit-logs/data/fpt/organization.json @@ -164,29 +164,39 @@ "description": "Settings for Copilot for Business were changed at the organization level.", "docs_reference_links": "N/A" }, + { + "action": "copilot.cfb_seat_added", + "description": "A seat was added to the Copilot for Business subscription for a user and they have received access to GitHub Copilot.", + "docs_reference_links": "N/A" + }, { "action": "copilot.cfb_seat_assignment_created", - "description": "A seat was assigned to a user with no other active seat assignment.", + "description": "A seat assignment was newly created for a user.", "docs_reference_links": "/copilot/overview-of-github-copilot/about-github-copilot-for-business" }, { "action": "copilot.cfb_seat_assignment_refreshed", - "description": "A seat assignment that was already pending cancellation was created, revoking the cancellation.", + "description": "A seat assignment that was previously pending cancellation was re-assigned and the user will retain access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_reused", - "description": "A seat assignment was created for a user who already had a seat with no pending cancellation date.", + "description": "A seat assignment was re-created for a user who already had a seat with no pending cancellation date.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_unassigned", - "description": "A seat was unassigned from a user.", + "description": "A seat was unassigned from a user and they will lose access to GitHub Copilot at the end of the billing cycle.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled", + "description": "A seat was canceled from the Copilot for Business subscription and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_cancelled_by_staff", - "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub ", + "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { diff --git a/src/audit-logs/data/fpt/user.json b/src/audit-logs/data/fpt/user.json index 6030244b25..d61f68cdc4 100644 --- a/src/audit-logs/data/fpt/user.json +++ b/src/audit-logs/data/fpt/user.json @@ -149,29 +149,39 @@ "description": "Triggered when you change your personal account's access and security setting for Codespaces.", "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" }, + { + "action": "copilot.cfb_seat_added", + "description": "A seat was added to the Copilot for Business subscription for a user and they have received access to GitHub Copilot.", + "docs_reference_links": "N/A" + }, { "action": "copilot.cfb_seat_assignment_created", - "description": "A seat was assigned to a user with no other active seat assignment.", + "description": "A seat assignment was newly created for a user.", "docs_reference_links": "/copilot/overview-of-github-copilot/about-github-copilot-for-business" }, { "action": "copilot.cfb_seat_assignment_refreshed", - "description": "A seat assignment that was already pending cancellation was created, revoking the cancellation.", + "description": "A seat assignment that was previously pending cancellation was re-assigned and the user will retain access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_reused", - "description": "A seat assignment was created for a user who already had a seat with no pending cancellation date.", + "description": "A seat assignment was re-created for a user who already had a seat with no pending cancellation date.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_unassigned", - "description": "A seat was unassigned from a user.", + "description": "A seat was unassigned from a user and they will lose access to GitHub Copilot at the end of the billing cycle.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled", + "description": "A seat was canceled from the Copilot for Business subscription and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_cancelled_by_staff", - "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub ", + "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { diff --git a/src/audit-logs/data/ghec/enterprise.json b/src/audit-logs/data/ghec/enterprise.json index acd6e6b6ad..965fe2c078 100644 --- a/src/audit-logs/data/ghec/enterprise.json +++ b/src/audit-logs/data/ghec/enterprise.json @@ -649,29 +649,39 @@ "description": "Settings for Copilot for Business were changed at the organization level.", "docs_reference_links": "N/A" }, + { + "action": "copilot.cfb_seat_added", + "description": "A seat was added to the Copilot for Business subscription for a user and they have received access to GitHub Copilot.", + "docs_reference_links": "N/A" + }, { "action": "copilot.cfb_seat_assignment_created", - "description": "A seat was assigned to a user with no other active seat assignment.", + "description": "A seat assignment was newly created for a user.", "docs_reference_links": "/copilot/overview-of-github-copilot/about-github-copilot-for-business" }, { "action": "copilot.cfb_seat_assignment_refreshed", - "description": "A seat assignment that was already pending cancellation was created, revoking the cancellation.", + "description": "A seat assignment that was previously pending cancellation was re-assigned and the user will retain access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_reused", - "description": "A seat assignment was created for a user who already had a seat with no pending cancellation date.", + "description": "A seat assignment was re-created for a user who already had a seat with no pending cancellation date.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_unassigned", - "description": "A seat was unassigned from a user.", + "description": "A seat was unassigned from a user and they will lose access to GitHub Copilot at the end of the billing cycle.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled", + "description": "A seat was canceled from the Copilot for Business subscription and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_cancelled_by_staff", - "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub ", + "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { @@ -681,7 +691,7 @@ }, { "action": "copilot.clickwrap_save_event", - "description": "The Copilot for Business Product Specific Terms were accepted.", + "description": "The GitHub Copilot Product Terms or Pre-Release Preview Terms were accepted.", "docs_reference_links": "N/A" }, { @@ -989,6 +999,11 @@ "description": "An external group was updated.", "docs_reference_links": "N/A" }, + { + "action": "external_group.update_display_name", + "description": "An external group's display name was updated.", + "docs_reference_links": "N/A" + }, { "action": "external_identity.deprovision", "description": "N/A", diff --git a/src/audit-logs/data/ghec/organization.json b/src/audit-logs/data/ghec/organization.json index 2e3e2bc405..b215c96ba6 100644 --- a/src/audit-logs/data/ghec/organization.json +++ b/src/audit-logs/data/ghec/organization.json @@ -164,29 +164,39 @@ "description": "Settings for Copilot for Business were changed at the organization level.", "docs_reference_links": "N/A" }, + { + "action": "copilot.cfb_seat_added", + "description": "A seat was added to the Copilot for Business subscription for a user and they have received access to GitHub Copilot.", + "docs_reference_links": "N/A" + }, { "action": "copilot.cfb_seat_assignment_created", - "description": "A seat was assigned to a user with no other active seat assignment.", + "description": "A seat assignment was newly created for a user.", "docs_reference_links": "/copilot/overview-of-github-copilot/about-github-copilot-for-business" }, { "action": "copilot.cfb_seat_assignment_refreshed", - "description": "A seat assignment that was already pending cancellation was created, revoking the cancellation.", + "description": "A seat assignment that was previously pending cancellation was re-assigned and the user will retain access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_reused", - "description": "A seat assignment was created for a user who already had a seat with no pending cancellation date.", + "description": "A seat assignment was re-created for a user who already had a seat with no pending cancellation date.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_unassigned", - "description": "A seat was unassigned from a user.", + "description": "A seat was unassigned from a user and they will lose access to GitHub Copilot at the end of the billing cycle.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled", + "description": "A seat was canceled from the Copilot for Business subscription and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_cancelled_by_staff", - "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub ", + "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { diff --git a/src/audit-logs/data/ghec/user.json b/src/audit-logs/data/ghec/user.json index 169561ba96..285a136907 100644 --- a/src/audit-logs/data/ghec/user.json +++ b/src/audit-logs/data/ghec/user.json @@ -134,29 +134,39 @@ "description": "Triggered when you change your personal account's access and security setting for Codespaces.", "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" }, + { + "action": "copilot.cfb_seat_added", + "description": "A seat was added to the Copilot for Business subscription for a user and they have received access to GitHub Copilot.", + "docs_reference_links": "N/A" + }, { "action": "copilot.cfb_seat_assignment_created", - "description": "A seat was assigned to a user with no other active seat assignment.", + "description": "A seat assignment was newly created for a user.", "docs_reference_links": "/copilot/overview-of-github-copilot/about-github-copilot-for-business" }, { "action": "copilot.cfb_seat_assignment_refreshed", - "description": "A seat assignment that was already pending cancellation was created, revoking the cancellation.", + "description": "A seat assignment that was previously pending cancellation was re-assigned and the user will retain access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_reused", - "description": "A seat assignment was created for a user who already had a seat with no pending cancellation date.", + "description": "A seat assignment was re-created for a user who already had a seat with no pending cancellation date.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_assignment_unassigned", - "description": "A seat was unassigned from a user.", + "description": "A seat was unassigned from a user and they will lose access to GitHub Copilot at the end of the billing cycle.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled", + "description": "A seat was canceled from the Copilot for Business subscription and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { "action": "copilot.cfb_seat_cancelled_by_staff", - "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub ", + "description": "A seat was canceled from the Copilot for Business subscription manually by GitHub and the user no longer has access to GitHub Copilot.", "docs_reference_links": "N/A" }, { diff --git a/src/audit-logs/lib/config.json b/src/audit-logs/lib/config.json index 98bbc1c54d..1ad944075f 100644 --- a/src/audit-logs/lib/config.json +++ b/src/audit-logs/lib/config.json @@ -1,3 +1,3 @@ { - "sha": "97b91e3879e6fe1c33c014d226e2194fd873ec80" + "sha": "4c3a862bfeac54103227e59bdf71c1da7508ca6f" } \ No newline at end of file diff --git a/src/content-linter/lib/default-markdownlint-options.js b/src/content-linter/lib/default-markdownlint-options.js index d7e609d12f..9655eda827 100644 --- a/src/content-linter/lib/default-markdownlint-options.js +++ b/src/content-linter/lib/default-markdownlint-options.js @@ -1,7 +1,7 @@ -export function testOptions(rule, module, { strings, files }) { +export function testOptions(rule, module, { strings, files, testConfig }) { const config = { default: false, - [rule]: true, + [rule]: testConfig || true, } const options = { diff --git a/src/content-linter/lib/helpers/get-rules.js b/src/content-linter/lib/helpers/get-rules.js index 2b6dff4a0a..7bfee336f4 100644 --- a/src/content-linter/lib/helpers/get-rules.js +++ b/src/content-linter/lib/helpers/get-rules.js @@ -1,8 +1,8 @@ import rules from '../../../../node_modules/markdownlint/lib/rules.js' import { gitHubDocsMarkdownlint } from '../linting-rules/index.js' import { baseConfig } from '../../style/base.js' -import { githubDocsConfig } from '../../style/github-docs.js' +import { githubDocsConfig, searchReplaceConfig } from '../../style/github-docs.js' export const customRules = gitHubDocsMarkdownlint.rules export const allRules = [...rules, ...gitHubDocsMarkdownlint.rules] -export const allConfig = { ...baseConfig, ...githubDocsConfig } +export const allConfig = { ...baseConfig, ...githubDocsConfig, ...searchReplaceConfig } diff --git a/src/content-linter/lib/init-test.js b/src/content-linter/lib/init-test.js index 0a055504b8..610d099f43 100644 --- a/src/content-linter/lib/init-test.js +++ b/src/content-linter/lib/init-test.js @@ -2,10 +2,10 @@ import markdownlint from 'markdownlint' import { testOptions } from './default-markdownlint-options.js' -export async function runRule(module, { strings, files } = {}) { +export async function runRule(module, { strings, files, testConfig }) { if ((!strings && !files) || (strings && files)) throw new Error('Must provide either Markdown strings or files to run a rule') - const options = testOptions(module.names[0], module, { strings, files }) + const options = testOptions(module.names[0], module, { strings, files, testConfig }) return await markdownlint.promises.markdownlint(options) } diff --git a/src/content-linter/style/base.js b/src/content-linter/style/base.js index 03a83c39c1..509d025e2a 100644 --- a/src/content-linter/style/base.js +++ b/src/content-linter/style/base.js @@ -27,7 +27,7 @@ export const baseConfig = { }, 'no-trailing-spaces': { // MD009 - severity: 'warning', + severity: 'error', 'partial-markdown-files': true, }, 'no-reversed-links': { @@ -57,7 +57,7 @@ export const baseConfig = { }, 'blanks-around-headings': { // MD022 - severity: 'warning', + severity: 'error', 'partial-markdown-files': false, }, 'heading-start-left': { @@ -83,7 +83,7 @@ export const baseConfig = { }, 'blanks-around-fences': { // MD031 - severity: 'warning', + severity: 'error', 'partial-markdown-files': true, }, 'no-space-in-emphasis': { @@ -105,6 +105,7 @@ export const baseConfig = { 'no-empty-links': { // MD042 severity: 'error', + 'partial-markdown-files': true, }, 'single-trailing-newline': { // MD047 diff --git a/src/content-linter/style/github-docs.js b/src/content-linter/style/github-docs.js index 4ef6fa75df..df56487fe4 100644 --- a/src/content-linter/style/github-docs.js +++ b/src/content-linter/style/github-docs.js @@ -48,12 +48,15 @@ export const githubDocsConfig = { severity: 'error', 'partial-markdown-files': true, }, +} + +export const searchReplaceConfig = { 'search-replace': { rules: [ { name: 'todocs-placeholder', message: 'Catch occurrences of TODOCS placeholder.', - search: 'TODOCS', + searchPattern: '/todocs/gi', searchScope: 'all', severity: 'error', 'severity-local': 'warning', @@ -62,7 +65,7 @@ export const githubDocsConfig = { { name: 'docs-domain', message: 'Catch occurrences of docs.gitub.com domain.', - search: 'docs.gitub.com', + search: 'docs.github.com', searchScope: 'all', severity: 'error', 'partial-markdown-files': true, @@ -90,11 +93,65 @@ export const githubDocsConfig = { // developer.github.com/enterprise/[0-9] or // developer.github.com/enterprise/{{something}} (e.g. liquid). // There are occurences that will likely always remain in the content. - searchPattern: '/developer.github.com(?!/(changes|enterprise/([0-9]|{))).*/g', + searchPattern: '/developer\\.github\\.com(?!\\/(changes|enterprise\\/([0-9]|{))).*/g', searchScope: 'all', severity: 'error', 'partial-markdown-files': true, }, + { + // Catches usage of old liquid data reusable syntax. For example: + // {{ site.data.variables.product_releases }} + name: 'deprecated liquid syntax: site.data', + message: 'Catch occurrences of deprecated liquid data syntax.', + searchPattern: '/{{\\s*?site\\.data\\.([a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]+)+)\\s*?}}/g', + replace: '{% data $1 %}', + }, + { + // Catches usage of old octicon variable syntax. For example: + // - {{ octicon-plus }} + // - {{ octicon-plus An example label }} + name: 'deprecated liquid syntax: octicon-', + message: + 'The octicon liquid syntax used is deprecated. Use this format instead {% octicon "" aria-label="" %}', + searchPattern: '/{{\\s*?octicon-([a-z-]+)(\\s[\\w\\s\\d-]+)?\\s*?}}/g', + }, + { + // Catches usage of string personal access token, which should + // be replaced with a reusable data variable. + name: 'personal access token reusable', + message: + 'The string "personal access token" can be replaced with a variable. You should use one of the variables from data/variables/product.yml instead of the literal phrase(s):', + searchPattern: '/personal access tokens?/gi', + }, + { + // Catches usage of GitHub-owned actions that don't use a + // resuable. + // GitHub-owned actions (e.g. actions/checkout@v2) should use a + // reusable in examples. + // + // - actions/checkout@v2 + // - actions/delete-package-versions@v2 + // - actions/download-artifact@v2 + // - actions/upload-artifact@v2 + // - actions/github-script@v2 + // - actions/setup-dotnet@v2 + // - actions/setup-go@v2 + // - actions/setup-java@v2 + // - actions/setup-node@v2 + // - actions/setup-python@v2 + // - actions/stale@v2 + // - actions/cache@v2 + // - github/codeql-action/init@v2 + // - github/codeql-action/analyze@v2 + // - github/codeql-action/autobuild@v2 + // - github/codeql-action/upload-sarif@v2 + // + name: 'GitHub-owned action references should use a reusable', + message: + 'A GitHub-owned action is referenced, but should be replaced with a reusable from data/reusables/actions.', + searchPattern: + '/(actions\\/(checkout|delete-package-versions|download-artifact|upload-artifact|github-script|setup-dotnet|setup-go|setup-java|setup-node|setup-python|stale|cache)|github\\/codeql-action[/a-zA-Z-]*)/g', + }, ], }, } diff --git a/src/content-linter/tests/unit/search-replace.js b/src/content-linter/tests/unit/search-replace.js new file mode 100644 index 0000000000..9542c46dd2 --- /dev/null +++ b/src/content-linter/tests/unit/search-replace.js @@ -0,0 +1,93 @@ +import searchReplace from 'markdownlint-rule-search-replace' + +import { runRule } from '../../lib/init-test.js' +import { searchReplaceConfig } from '../../style/github-docs.js' + +describe(searchReplace.names.join(' - '), () => { + test('TODOCS placeholder occurrences cause errors', async () => { + const markdown = [ + '## TODOCS', + '- Todocs', + '[ToDOCS](/todocs)', + '![TODOCS](./ToDocs.png)', + 'HelloTODOCS', + ].join('\n') + const result = await runRule(searchReplace, { + strings: { markdown }, + testConfig: searchReplaceConfig['search-replace'], + }) + const errors = result.markdown + expect(errors.length).toBe(7) + }) + + test('docs domain occurrences cause error', async () => { + const markdown = [ + 'These are not ok:', + 'docs.github.com', + '- help.github.com', + '[help.github.com](//developer.github.com)', + '![developer.github.com](//preview.ghdocs.com)', + ' docs.github.com', + 'developer.github.com/enterprise', + 'developer.github.com/enterprise/', + '', + 'These are ok:', + 'developer.github.com/changes', + 'developer.github.com/changes/', + 'developer.github.com/changes/changes', + 'developer.github.com/enterprise/1', + ].join('\n') + const result = await runRule(searchReplace, { + strings: { markdown }, + testConfig: searchReplaceConfig['search-replace'], + }) + const errors = result.markdown + expect(errors.length).toBe(9) + }) + + test('Deprecated Liquid syntax causes error', async () => { + const markdown = [ + '{{ site.data.thing1.thing2 }}', + '{{site.data.thing1.thing2}}', + '{{ octicon-plus An example label }}', + '{{octicon-icon}}', + ].join('\n') + const result = await runRule(searchReplace, { + strings: { markdown }, + testConfig: searchReplaceConfig['search-replace'], + }) + const errors = result.markdown + expect(errors.length).toBe(4) + }) + + test('Using hardcoded personal access token string causes error', async () => { + const markdown = [ + 'Hello personal access token for apps.', + 'A Personal access token for apps.', + 'Lots of PERSONAL ACCESS TOKENS for apps.', + 'access tokens for apps.', + ].join('\n') + const result = await runRule(searchReplace, { + strings: { markdown }, + testConfig: searchReplaceConfig['search-replace'], + }) + const errors = result.markdown + expect(errors.length).toBe(3) + }) + + test('Using hardcoded personal access token string causes error', async () => { + const markdown = [ + 'Hello actions/checkout@v2 apps.', + 'A actions/delete-package-versions@v2 for apps.', + 'Hello actions/download-artifact@v2.', + 'actions/cache@432433423423', + 'actions/cache@', + ].join('\n') + const result = await runRule(searchReplace, { + strings: { markdown }, + testConfig: searchReplaceConfig['search-replace'], + }) + const errors = result.markdown + expect(errors.length).toBe(5) + }) +}) diff --git a/src/content-render/tests/render-content.js b/src/content-render/tests/render-content.js index 9ab6ddcead..073fb4ed47 100644 --- a/src/content-render/tests/render-content.js +++ b/src/content-render/tests/render-content.js @@ -149,7 +149,7 @@ describe('renderContent', () => { const html = await renderContent(template) const $ = cheerio.load(html, { xmlMode: true }) expect($('ol').length).toBe(1) - expect($.html().includes('# # ')).toBeFalsy() expect($.html().includes('')).toBeFalsy() diff --git a/src/content-render/unified/processor.js b/src/content-render/unified/processor.js index d47d27b023..98caaa15cc 100644 --- a/src/content-render/unified/processor.js +++ b/src/content-render/unified/processor.js @@ -6,6 +6,7 @@ import remark2rehype from 'remark-rehype' import raw from 'rehype-raw' import slug from 'rehype-slug' import highlight from 'rehype-highlight' +import { common } from 'lowlight' import dockerfile from 'highlight.js/lib/languages/dockerfile' import http from 'highlight.js/lib/languages/http' import groovy from 'highlight.js/lib/languages/groovy' @@ -42,7 +43,7 @@ export function createProcessor(context) { .use(codeHeader) .use(annotate) .use(highlight, { - languages: { graphql, dockerfile, http, groovy, erb, powershell }, + languages: { ...common, graphql, dockerfile, http, groovy, erb, powershell }, subset: false, }) .use(raw) diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json index ab9f8e294d..adc3f02345 100644 --- a/src/graphql/data/fpt/changelog.json +++ b/src/graphql/data/fpt/changelog.json @@ -1,4 +1,18 @@ [ + { + "schemaChanges": [ + { + "title": "The GraphQL schema includes these changes:", + "changes": [ + "

Field isAnswered was added to object type Discussion

", + "

Argument answered: Boolean added to field Repository.discussions

" + ] + } + ], + "previewChanges": [], + "upcomingChanges": [], + "date": "2023-09-22" + }, { "schemaChanges": [ { diff --git a/src/graphql/data/fpt/schema.json b/src/graphql/data/fpt/schema.json index 2cd8710917..f938c5584c 100644 --- a/src/graphql/data/fpt/schema.json +++ b/src/graphql/data/fpt/schema.json @@ -18618,6 +18618,14 @@ "kind": "scalars", "href": "/graphql/reference/scalars#boolean" }, + { + "name": "isAnswered", + "description": "

Only return answered/unanswered discussions.

", + "type": "Boolean", + "id": "boolean", + "kind": "scalars", + "href": "/graphql/reference/scalars#boolean" + }, { "name": "labels", "description": "

A list of labels associated with the object.

", @@ -58131,6 +58139,16 @@ "href": "/graphql/reference/scalars#string" } }, + { + "name": "answered", + "description": "

Only show answered or unanswered discussions.

", + "type": { + "name": "Boolean", + "id": "boolean", + "kind": "scalars", + "href": "/graphql/reference/scalars#boolean" + } + }, { "name": "before", "description": "

Returns the elements in the list that come before the specified cursor.

", @@ -92438,7 +92456,7 @@ "kind": "inputObjects", "id": "filechanges", "href": "/graphql/reference/input-objects#filechanges", - "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n

    {\n\"additions\" [\n{\n\"path\": \"docs/README.txt\",\n\"contents\": base64encode(\"hello world\\n\")\n}\n]\n}

    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", + "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", "inputFields": [ { "name": "additions", diff --git a/src/graphql/data/ghae/schema.json b/src/graphql/data/ghae/schema.json index b5cfdd17f3..ba15beb656 100644 --- a/src/graphql/data/ghae/schema.json +++ b/src/graphql/data/ghae/schema.json @@ -16275,6 +16275,14 @@ "kind": "scalars", "href": "/graphql/reference/scalars#boolean" }, + { + "name": "isAnswered", + "description": "

Only return answered/unanswered discussions.

", + "type": "Boolean", + "id": "boolean", + "kind": "scalars", + "href": "/graphql/reference/scalars#boolean" + }, { "name": "labels", "description": "

A list of labels associated with the object.

", @@ -48517,6 +48525,16 @@ "href": "/graphql/reference/scalars#string" } }, + { + "name": "answered", + "description": "

Only show answered or unanswered discussions.

", + "type": { + "name": "Boolean", + "id": "boolean", + "kind": "scalars", + "href": "/graphql/reference/scalars#boolean" + } + }, { "name": "before", "description": "

Returns the elements in the list that come before the specified cursor.

", @@ -75514,7 +75532,7 @@ "kind": "inputObjects", "id": "filechanges", "href": "/graphql/reference/input-objects#filechanges", - "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n

    {\n\"additions\" [\n{\n\"path\": \"docs/README.txt\",\n\"contents\": base64encode(\"hello world\\n\")\n}\n]\n}

    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", + "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", "inputFields": [ { "name": "additions", diff --git a/src/graphql/data/ghec/schema.json b/src/graphql/data/ghec/schema.json index 2cd8710917..f938c5584c 100644 --- a/src/graphql/data/ghec/schema.json +++ b/src/graphql/data/ghec/schema.json @@ -18618,6 +18618,14 @@ "kind": "scalars", "href": "/graphql/reference/scalars#boolean" }, + { + "name": "isAnswered", + "description": "

Only return answered/unanswered discussions.

", + "type": "Boolean", + "id": "boolean", + "kind": "scalars", + "href": "/graphql/reference/scalars#boolean" + }, { "name": "labels", "description": "

A list of labels associated with the object.

", @@ -58131,6 +58139,16 @@ "href": "/graphql/reference/scalars#string" } }, + { + "name": "answered", + "description": "

Only show answered or unanswered discussions.

", + "type": { + "name": "Boolean", + "id": "boolean", + "kind": "scalars", + "href": "/graphql/reference/scalars#boolean" + } + }, { "name": "before", "description": "

Returns the elements in the list that come before the specified cursor.

", @@ -92438,7 +92456,7 @@ "kind": "inputObjects", "id": "filechanges", "href": "/graphql/reference/input-objects#filechanges", - "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n

    {\n\"additions\" [\n{\n\"path\": \"docs/README.txt\",\n\"contents\": base64encode(\"hello world\\n\")\n}\n]\n}

    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", + "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", "inputFields": [ { "name": "additions", diff --git a/src/graphql/data/ghes-3.10/schema.json b/src/graphql/data/ghes-3.10/schema.json index d5cda860f9..548daa0efc 100644 --- a/src/graphql/data/ghes-3.10/schema.json +++ b/src/graphql/data/ghes-3.10/schema.json @@ -81012,7 +81012,7 @@ "kind": "inputObjects", "id": "filechanges", "href": "/graphql/reference/input-objects#filechanges", - "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n

    {\n\"additions\" [\n{\n\"path\": \"docs/README.txt\",\n\"contents\": base64encode(\"hello world\\n\")\n}\n]\n}

    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", + "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", "inputFields": [ { "name": "additions", diff --git a/src/graphql/data/ghes-3.6/schema.json b/src/graphql/data/ghes-3.6/schema.json index 792bac1140..4928bfe875 100644 --- a/src/graphql/data/ghes-3.6/schema.json +++ b/src/graphql/data/ghes-3.6/schema.json @@ -70770,7 +70770,7 @@ "kind": "inputObjects", "id": "filechanges", "href": "/graphql/reference/input-objects#filechanges", - "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n

    {\n\"additions\" [\n{\n\"path\": \"docs/README.txt\",\n\"contents\": base64encode(\"hello world\\n\")\n}\n]\n}

    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", + "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", "inputFields": [ { "name": "additions", diff --git a/src/graphql/data/ghes-3.7/schema.json b/src/graphql/data/ghes-3.7/schema.json index 352cca2be9..96ec0cc2ab 100644 --- a/src/graphql/data/ghes-3.7/schema.json +++ b/src/graphql/data/ghes-3.7/schema.json @@ -75785,7 +75785,7 @@ "kind": "inputObjects", "id": "filechanges", "href": "/graphql/reference/input-objects#filechanges", - "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n

    {\n\"additions\" [\n{\n\"path\": \"docs/README.txt\",\n\"contents\": base64encode(\"hello world\\n\")\n}\n]\n}

    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", + "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", "inputFields": [ { "name": "additions", diff --git a/src/graphql/data/ghes-3.8/schema.json b/src/graphql/data/ghes-3.8/schema.json index 5e9c56eec6..cbb285c75b 100644 --- a/src/graphql/data/ghes-3.8/schema.json +++ b/src/graphql/data/ghes-3.8/schema.json @@ -78044,7 +78044,7 @@ "kind": "inputObjects", "id": "filechanges", "href": "/graphql/reference/input-objects#filechanges", - "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n

    {\n\"additions\" [\n{\n\"path\": \"docs/README.txt\",\n\"contents\": base64encode(\"hello world\\n\")\n}\n]\n}

    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", + "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", "inputFields": [ { "name": "additions", diff --git a/src/graphql/data/ghes-3.9/schema.json b/src/graphql/data/ghes-3.9/schema.json index 34de948ca9..dfd15babc2 100644 --- a/src/graphql/data/ghes-3.9/schema.json +++ b/src/graphql/data/ghes-3.9/schema.json @@ -80490,7 +80490,7 @@ "kind": "inputObjects", "id": "filechanges", "href": "/graphql/reference/input-objects#filechanges", - "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n

    {\n\"additions\" [\n{\n\"path\": \"docs/README.txt\",\n\"contents\": base64encode(\"hello world\\n\")\n}\n]\n}

    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", + "description": "

A description of a set of changes to a file tree to be made as part of\na git commit, modeled as zero or more file additions and zero or more\nfile deletions.

\n

Both fields are optional; omitting both will produce a commit with no\nfile changes.

\n

deletions and additions describe changes to files identified\nby their path in the git tree using unix-style path separators, i.e.\n/. The root of a git tree is an empty string, so paths are not\nslash-prefixed.

\n

path values must be unique across all additions and deletions\nprovided. Any duplication will result in a validation error.

\n

Encoding

\n

File contents must be provided in full for each FileAddition.

\n

The contents of a FileAddition must be encoded using RFC 4648\ncompliant base64, i.e. correct padding is required and no characters\noutside the standard alphabet may be used. Invalid base64\nencoding will be rejected with a validation error.

\n

The encoded contents may be binary.

\n

For text files, no assumptions are made about the character encoding of\nthe file contents (after base64 decoding). No charset transcoding or\nline-ending normalization will be performed; it is the client's\nresponsibility to manage the character encoding of files they provide.\nHowever, for maximum compatibility we recommend using UTF-8 encoding\nand ensuring that all files in a repository use a consistent\nline-ending convention (\\n or \\r\\n), and that all files end\nwith a newline.

\n

Modeling file changes

\n

Each of the the five types of conceptual changes that can be made in a\ngit commit can be described using the FileChanges type as follows:

\n
    \n
  1. \n

    New file addition: create file hello world\\n at path docs/README.txt:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  2. \n
  3. \n

    Existing file modification: change existing docs/README.txt to have new\ncontent new content here\\n:

    \n
    {\n  \"additions\" [\n    {\n      \"path\": \"docs/README.txt\",\n      \"contents\": base64encode(\"new content here\\n\")\n    }\n  ]\n}\n
    \n
  4. \n
  5. \n

    Existing file deletion: remove existing file docs/README.txt.\nNote that the path is required to exist -- specifying a\npath that does not exist on the given branch will abort the\ncommit and return an error.

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\"\n    }\n  ]\n}\n
    \n
  6. \n
  7. \n

    File rename with no changes: rename docs/README.txt with\nprevious content hello world\\n to the same content at\nnewdocs/README.txt:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"hello world\\n\")\n    }\n  ]\n}\n
    \n
  8. \n
  9. \n

    File rename with changes: rename docs/README.txt with\nprevious content hello world\\n to a file at path\nnewdocs/README.txt with content new contents\\n:

    \n
    {\n  \"deletions\" [\n    {\n      \"path\": \"docs/README.txt\",\n    }\n  ],\n  \"additions\" [\n    {\n      \"path\": \"newdocs/README.txt\",\n      \"contents\": base64encode(\"new contents\\n\")\n    }\n  ]\n}.\n
    \n
  10. \n
", "inputFields": [ { "name": "additions", diff --git a/src/links/lib/excluded-links.js b/src/links/lib/excluded-links.js index 43d3c56608..d3d866da40 100644 --- a/src/links/lib/excluded-links.js +++ b/src/links/lib/excluded-links.js @@ -68,4 +68,8 @@ export default [ 'https://cdrdv2-public.intel.com/671488/248966-Software-Optimization-Manual-R047.pdf', 'https://www.lumendatabase.org/topics/5', 'https://www.lumendatabase.org/topics/14', + 'https://azure.microsoft.com/support/', + 'https://azure.microsoft.com/services/app-service/static/', + 'https://azure.microsoft.com/services/container-registry/', + 'https://azure.microsoft.com/products/functions/', ] diff --git a/tests/rendering/annotate.js b/tests/rendering/annotate.js index e91de93668..ffd1ab310d 100644 --- a/tests/rendering/annotate.js +++ b/tests/rendering/annotate.js @@ -18,6 +18,8 @@ describe('annotate', () => { // We don't normally use snapshots, // but in this case its a short and concise example // that won't change regularly. + // If it fails, study the output and make sure it's correct. + // If it is indeed correct, run `jest --updateSnapshot` to update it. expect(await renderContent(example)).toMatchSnapshot() }) })