diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 8f05ffdcaa9..8f256727e44 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -76,7 +76,7 @@ review-docs-hugo-cleanup: .docs-markdown-lint-image: # When updating the image version here, update it in /scripts/lint-doc.sh too. - image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.20-vale-3.7.1-markdownlint2-0.14.0-lychee-0.15.1 + image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.20-vale-3.9.3-markdownlint2-0.17.1-lychee-0.18.0 docs-lint markdown: extends: diff --git a/.rubocop_todo/rspec/be_empty.yml b/.rubocop_todo/rspec/be_empty.yml index 4ab670949ad..b5881faee7e 100644 --- a/.rubocop_todo/rspec/be_empty.yml +++ b/.rubocop_todo/rspec/be_empty.yml @@ -23,7 +23,6 @@ RSpec/BeEmpty: - 'ee/spec/support/shared_examples/lib/sidebars/menus_shared_examples.rb' - 'ee/spec/support/shared_examples/models/authz/member_roles_shared_examples.rb' - 'ee/spec/support/shared_examples/quick_actions/merge_request/unassign_reviewer_shared_examples.rb' - - 'spec/controllers/search_controller_spec.rb' - 'spec/finders/ci/group_variables_finder_spec.rb' - 'spec/finders/group_members_finder_spec.rb' - 'spec/finders/merge_request_target_project_finder_spec.rb' diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index c77f6cabff0..e5347373c6e 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -45ec21f6346697cf3b653763f573fa0a968b7128 +eb61ad156dd06f8adaee5743d180a0188dd9178a diff --git a/app/controllers/projects/pipeline_schedules_controller.rb b/app/controllers/projects/pipeline_schedules_controller.rb index 253c3586c57..10416d9cad8 100644 --- a/app/controllers/projects/pipeline_schedules_controller.rb +++ b/app/controllers/projects/pipeline_schedules_controller.rb @@ -45,7 +45,9 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController end def play - job_id = RunPipelineScheduleWorker.perform_async(schedule.id, current_user.id) # rubocop:disable CodeReuse/Worker + job_id = Ci::PipelineSchedules::PlayService + .new(schedule.project, current_user) + .execute(schedule) if job_id pipelines_link_start = "" diff --git a/app/graphql/mutations/ci/pipeline_schedule/play.rb b/app/graphql/mutations/ci/pipeline_schedule/play.rb index bd4c23a64cf..6ad11f2bb1a 100644 --- a/app/graphql/mutations/ci/pipeline_schedule/play.rb +++ b/app/graphql/mutations/ci/pipeline_schedule/play.rb @@ -16,7 +16,7 @@ module Mutations def resolve(id:) schedule = authorized_find!(id: id) - job_id = ::Ci::PipelineScheduleService + job_id = ::Ci::PipelineSchedules::PlayService .new(schedule.project, current_user) .execute(schedule) diff --git a/app/models/snippet.rb b/app/models/snippet.rb index ba30cbc71da..93acff57547 100644 --- a/app/models/snippet.rb +++ b/app/models/snippet.rb @@ -20,9 +20,6 @@ class Snippet < ApplicationRecord include CreatedAtFilterable include EachBatch include Import::HasImportSource - include SafelyChangeColumnDefault - - columns_changing_default :organization_id MAX_FILE_COUNT = 10 diff --git a/app/services/ci/pipeline_schedule_service.rb b/app/services/ci/pipeline_schedule_service.rb deleted file mode 100644 index 2422feda02d..00000000000 --- a/app/services/ci/pipeline_schedule_service.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -module Ci - class PipelineScheduleService < BaseService - include Services::ReturnServiceResponses - - def execute(schedule) - check_access!(schedule) - - return error("Failed to schedule pipeline.", :bad_request) unless project.persisted? - - # Ensure `next_run_at` is set properly before creating a pipeline. - # Otherwise, multiple pipelines could be created in a short interval. - schedule.schedule_next_run! - RunPipelineScheduleWorker.perform_async(schedule.id, current_user&.id) - end - - private - - def check_access!(schedule) - raise Gitlab::Access::AccessDeniedError unless can?(current_user, :play_pipeline_schedule, schedule) - end - end -end diff --git a/app/services/ci/pipeline_schedules/play_service.rb b/app/services/ci/pipeline_schedules/play_service.rb new file mode 100644 index 00000000000..dfdf545b8ce --- /dev/null +++ b/app/services/ci/pipeline_schedules/play_service.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module Ci + module PipelineSchedules + class PlayService < BaseService + include Services::ReturnServiceResponses + + def execute(schedule) + check_access!(schedule) + + return error("Failed to schedule pipeline.", :bad_request) unless project.persisted? + + # Ensure `next_run_at` is set properly before creating a pipeline. + # Otherwise, multiple pipelines could be created in a short interval. + schedule.schedule_next_run! + RunPipelineScheduleWorker.perform_async(schedule.id, current_user&.id) + end + + private + + def check_access!(schedule) + raise Gitlab::Access::AccessDeniedError unless can?(current_user, :play_pipeline_schedule, schedule) + end + end + end +end diff --git a/db/docs/batched_background_migrations/backfill_packages_debian_group_architectures_group_id.yml b/db/docs/batched_background_migrations/backfill_packages_debian_group_architectures_group_id.yml index 5d83ee238e7..8567d0bafa5 100644 --- a/db/docs/batched_background_migrations/backfill_packages_debian_group_architectures_group_id.yml +++ b/db/docs/batched_background_migrations/backfill_packages_debian_group_architectures_group_id.yml @@ -1,8 +1,9 @@ --- migration_job_name: BackfillPackagesDebianGroupArchitecturesGroupId -description: Backfills sharding key `packages_debian_group_architectures.group_id` from `packages_debian_group_distributions`. +description: Backfills sharding key `packages_debian_group_architectures.group_id` + from `packages_debian_group_distributions`. feature_category: package_registry introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/158027 milestone: '17.2' queued_migration_version: 20240702072519 -finalized_by: # version of the migration that finalized this BBM +finalized_by: '20250115233143' diff --git a/db/post_migrate/20250115233143_finalize_backfill_packages_debian_group_architectures_group_id.rb b/db/post_migrate/20250115233143_finalize_backfill_packages_debian_group_architectures_group_id.rb new file mode 100644 index 00000000000..ff3e128ed99 --- /dev/null +++ b/db/post_migrate/20250115233143_finalize_backfill_packages_debian_group_architectures_group_id.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class FinalizeBackfillPackagesDebianGroupArchitecturesGroupId < Gitlab::Database::Migration[2.2] + milestone '17.9' + + disable_ddl_transaction! + + restrict_gitlab_migration gitlab_schema: :gitlab_main_cell + + def up + ensure_batched_background_migration_is_finished( + job_class_name: 'BackfillPackagesDebianGroupArchitecturesGroupId', + table_name: :packages_debian_group_architectures, + column_name: :id, + job_arguments: [:group_id, :packages_debian_group_distributions, :group_id, :distribution_id], + finalize: true + ) + end + + def down; end +end diff --git a/db/schema_migrations/20250115233143 b/db/schema_migrations/20250115233143 new file mode 100644 index 00000000000..adf64d4d68b --- /dev/null +++ b/db/schema_migrations/20250115233143 @@ -0,0 +1 @@ +3ca65ec9f6fa26f6ec2ed629838c8864cbacbce81fb7c8b1129a8a81d48c5aaf \ No newline at end of file diff --git a/doc/administration/settings/continuous_integration.md b/doc/administration/settings/continuous_integration.md index b3293bcb524..d94e5091774 100644 --- a/doc/administration/settings/continuous_integration.md +++ b/doc/administration/settings/continuous_integration.md @@ -237,13 +237,13 @@ a job artifact served by GitLab Pages. This page warns about the potential for malicious user-generated content, as described in [issue 352611](https://gitlab.com/gitlab-org/gitlab/-/issues/352611). -Self-managed administrators can disable the external redirect warning page, +GitLab Self-Managed administrators can disable the external redirect warning page, so you can view job artifact pages directly: 1. On the left sidebar, at the bottom, select **Admin**. 1. Select **Settings > CI/CD**. 1. Expand **Continuous Integration and Deployment**. -1. Deselect **Enable the external redirect page for job artifacts**. +1. Clear **Enable the external redirect page for job artifacts**. ## Archive jobs diff --git a/doc/ci/components/index.md b/doc/ci/components/index.md index d2a2f12dac9..f7d2643a385 100644 --- a/doc/ci/components/index.md +++ b/doc/ci/components/index.md @@ -163,8 +163,8 @@ could extend the wrong configuration. Make sure your pipeline and the component any configuration with the same name, unless you intend to [override](../yaml/includes.md#override-included-configuration-values) the component's configuration. -To use GitLab.com components in a self-managed instance, you must -[mirror the component project](#use-a-gitlabcom-component-in-a-self-managed-instance). +To use GitLab.com components on a GitLab Self-Managed instance, you must +[mirror the component project](#use-a-gitlabcom-component-on-gitlab-self-managed). WARNING: If a component requires the use of tokens, passwords, or other sensitive data to function, @@ -364,16 +364,16 @@ full URL and path for your instance (like `https://gitlab.com/api/v4`). These [predefined variables](../variables/predefined_variables.md) ensure that your component also works when used on another instance, for example when using -[a GitLab.com component in a self-managed instance](#use-a-gitlabcom-component-in-a-self-managed-instance). +[a GitLab.com component on a GitLab Self-Managed instance](#use-a-gitlabcom-component-on-gitlab-self-managed). ### Do not assume API resources are always public -Ensure that the component and its testing pipeline work also [in a self-managed instance](#use-a-gitlabcom-component-in-a-self-managed-instance). +Ensure that the component and its testing pipeline work also [on GitLab Self-Managed](#use-a-gitlabcom-component-on-gitlab-self-managed). While some API resources of public projects on GitLab.com could be accessed via unauthenticated requests -on self-managed a component project could be mirrored as private or internal project. +on a GitLab Self-Managed instance a component project could be mirrored as private or internal project. It's important that an access token can optionally be provided via inputs or variables to -authenticate requests on self-managed instances. +authenticate requests on GitLab Self-Managed instances. ### Avoid using global keywords @@ -719,7 +719,7 @@ can be converted to a CI/CD component: You can learn more by following a practical example for [migrating the Go CI/CD template to CI/CD component](examples.md#cicd-component-migration-example-go). -## Use a GitLab.com component in a self-managed instance +## Use a GitLab.com component on GitLab Self-Managed DETAILS: **Tier:** Premium, Ultimate @@ -729,9 +729,9 @@ The CI/CD catalog of a fresh install of a GitLab instance starts with no publish To populate your instance's catalog, you can: - [Publish your own components](#publish-a-component-project). -- Mirror components from GitLab.com in your self-managed instance. +- Mirror components from GitLab.com in your GitLab Self-Managed instance. -To mirror a GitLab.com component in your self-managed instance: +To mirror a GitLab.com component in your GitLab Self-Managed instance: 1. Make sure that [network outbound requests](../../security/webhooks.md) are allowed for `gitlab.com`. 1. [Create a group](../../user/group/index.md#create-a-group) to host the component projects (recommended group: `components`). diff --git a/doc/ci/debugging.md b/doc/ci/debugging.md index ef00a560bb1..97c0c099241 100644 --- a/doc/ci/debugging.md +++ b/doc/ci/debugging.md @@ -427,7 +427,7 @@ To reduce the configuration size, you can: - Use [parent and child pipelines](pipelines/downstream_pipelines.md#parent-child-pipelines) to move some work to jobs in an independent child pipeline. -On a self-managed instance, you can [increase the size limits](../administration/instance_limits.md#maximum-size-and-depth-of-cicd-configuration-yaml-files). +On GitLab Self-Managed, you can [increase the size limits](../administration/instance_limits.md#maximum-size-and-depth-of-cicd-configuration-yaml-files). ### `500` error when editing the `.gitlab-ci.yml` file diff --git a/doc/ci/index.md b/doc/ci/index.md index 95b941d809c..3d5790a39d1 100644 --- a/doc/ci/index.md +++ b/doc/ci/index.md @@ -52,7 +52,7 @@ runners on GitLab.com if you'd like. If you don't use GitLab.com, you can: -- Register runners or use runners already registered for your self-managed instance. +- Register runners or use runners already registered for your GitLab Self-Managed instance. - Create a runner on your local machine. For more information, see: diff --git a/doc/ci/jobs/ci_job_token.md b/doc/ci/jobs/ci_job_token.md index 832b2c3f7d3..1d2a8f6ad15 100644 --- a/doc/ci/jobs/ci_job_token.md +++ b/doc/ci/jobs/ci_job_token.md @@ -87,7 +87,7 @@ project's pipeline: If your project is public or internal, some publicly accessible resources can be accessed with a job token from any project. These resources can also be [limited to only projects on the allowlist](#limit-job-token-scope-for-public-or-internal-projects). -Self-managed instance administrators can [override and enforce this setting](../../administration/settings/continuous_integration.md#job-token-permissions). +GitLab Self-Managed administrators can [override and enforce this setting](../../administration/settings/continuous_integration.md#job-token-permissions). When the setting is enforced, the CI/CD job token is always restricted to the project's allowlist. ### Add a group or project to the job token allowlist diff --git a/doc/ci/jobs/job_artifacts.md b/doc/ci/jobs/job_artifacts.md index a0e18fcf7ac..7726444fe34 100644 --- a/doc/ci/jobs/job_artifacts.md +++ b/doc/ci/jobs/job_artifacts.md @@ -402,5 +402,5 @@ After disabling this setting, all new artifacts expire according to the `expire_ Artifacts in old pipelines continue to be kept until a new pipeline runs for the same ref. Then the artifacts in the earlier pipeline for that ref are allowed to expire too. -You can disable this behavior for all projects on a self-managed instance in the +You can disable this behavior for all projects on GitLab Self-Managed in the [instance's CI/CD settings](../../administration/settings/continuous_integration.md#keep-the-latest-artifacts-for-all-jobs-in-the-latest-successful-pipelines). diff --git a/doc/ci/migration/bamboo.md b/doc/ci/migration/bamboo.md index 01832a18333..a7ee9416f23 100644 --- a/doc/ci/migration/bamboo.md +++ b/doc/ci/migration/bamboo.md @@ -29,11 +29,11 @@ pre-configured features and integrations. ### Offerings -Atlassian offers Bamboo in its Cloud (SaaS) or Data center (Self-managed) options. +Atlassian offers Bamboo in its Cloud (SaaS) or Data center (self-hosted) options. A third Server option is scheduled for [EOL on February 15, 2024](https://about.gitlab.com/blog/2023/09/26/atlassian-server-ending-move-to-a-single-devsecops-platform/). -These options are similar to GitLab [SaaS](../../subscriptions/gitlab_com/index.md) -and [Self-Managed](../../subscriptions/self_managed/index.md). GitLab also offers +These options are similar to [GitLab.com](../../subscriptions/gitlab_com/index.md) +and [GitLab Self-Managed](../../subscriptions/self_managed/index.md). GitLab also offers [GitLab Dedicated](../../subscriptions/gitlab_dedicated/index.md), a fully isolated single-tenant SaaS service. @@ -46,7 +46,7 @@ remote agents running external to the server. GitLab uses a similar concept to agents called [runners](https://docs.gitlab.com/runner/) which use [executors](https://docs.gitlab.com/runner/executors/) to run builds. -Examples of executors are shell, Docker, or Kubernetes. You can choose to use GitLab [SaaS runners](../runners/index.md) +Examples of executors are shell, Docker, or Kubernetes. You can choose to use [GitLab.com runners](../runners/index.md) or deploy your own [self-managed runners](https://docs.gitlab.com/runner/install/index.html). ### Workflow diff --git a/doc/ci/migration/jenkins.md b/doc/ci/migration/jenkins.md index 7219665840f..0001a8211cc 100644 --- a/doc/ci/migration/jenkins.md +++ b/doc/ci/migration/jenkins.md @@ -26,7 +26,10 @@ Additionally, there are some important differences between the two: - GitLab CI/CD pipelines are all configured in a YAML format configuration file. Jenkins uses either a Groovy format configuration file (declarative pipelines) or Jenkins DSL (scripted pipelines). -- GitLab can run either on SaaS (cloud) or self-managed deployments. Jenkins deployments must be self-managed. +- GitLab offers [GitLab.com](../../subscriptions/gitlab_com/index.md), a multi-tenant SaaS service, + and [GitLab Dedicated](../../subscriptions/gitlab_dedicated/index.md), a fully isolated + single-tenant SaaS service. You can also run your own [GitLab Self-Managed](../../subscriptions/self_managed/index.md) + instance. Jenkins deployments must be self-hosted. - GitLab provides source code management (SCM) out of the box. Jenkins requires a separate SCM solution to store code. - GitLab provides a built-in container registry. Jenkins requires a separate solution diff --git a/doc/ci/pipelines/compute_minutes.md b/doc/ci/pipelines/compute_minutes.md index 48eab1bb5fe..d91cbf5aee5 100644 --- a/doc/ci/pipelines/compute_minutes.md +++ b/doc/ci/pipelines/compute_minutes.md @@ -30,7 +30,7 @@ On GitLab.com: - You can [purchase additional compute minutes](../../subscriptions/gitlab_com/compute_minutes.md) if you need more than the amount of compute in your monthly quota. -Compute quotas [are disabled by default on self-managed instances](../../administration/cicd/compute_minutes.md). +Compute quotas [are disabled by default on GitLab Self-Managed](../../administration/cicd/compute_minutes.md). ## View compute usage @@ -140,7 +140,7 @@ The default cost factors for jobs running on instance runners on GitLab.com are: - Discounted dynamically for [community contributions to GitLab projects](#community-contributions-to-gitlab-projects). - Increased if you use [different types of instance runners](#gitlab-hosted-runner-cost-factors). -The cost factors on self-managed instances [are different](../../administration/cicd/compute_minutes.md). +The cost factors on GitLab Self-Managed [are different](../../administration/cicd/compute_minutes.md). #### Community contributions to GitLab projects diff --git a/doc/ci/pipelines/index.md b/doc/ci/pipelines/index.md index fdfb81ed62f..2910b018fc6 100644 --- a/doc/ci/pipelines/index.md +++ b/doc/ci/pipelines/index.md @@ -297,7 +297,7 @@ To trigger the pipeline when the upstream project is rebuilt: 1. Select **Subscribe**. The maximum number of upstream pipeline subscriptions is 2 by default, for both the upstream and -downstream projects. On self-managed instances, an administrator can change this +downstream projects. On GitLab Self-Managed, an administrator can change this [limit](../../administration/instance_limits.md#number-of-cicd-subscriptions-to-a-project). diff --git a/doc/ci/runners/runners_scope.md b/doc/ci/runners/runners_scope.md index 7fab59b7d3b..1b81175935c 100644 --- a/doc/ci/runners/runners_scope.md +++ b/doc/ci/runners/runners_scope.md @@ -25,7 +25,7 @@ Use instance runners when you have multiple jobs with similar requirements. Rath having multiple runners idling for many projects, you can have a few runners that handle multiple projects. -If you are using a self-managed instance of GitLab, administrators can: +If you are using GitLab Self-Managed, administrators can: - [Install GitLab Runner](https://docs.gitlab.com/runner/install/index.html) and register an instance runner. - Configure a maximum number of instance runner [compute minutes for each group](../../administration/cicd/compute_minutes.md#set-the-compute-quota-for-a-group). @@ -134,7 +134,7 @@ To delete a single or multiple instance runners: On GitLab.com, [instance runners](index.md) are enabled in all projects by default. -On self-managed instances of GitLab, an administrator can +On GitLab Self-Managed, an administrator can [enable them for all new projects](../../administration/settings/continuous_integration.md#enable-instance-runners-for-new-projects). For existing projects, an administrator must diff --git a/doc/ci/testing/code_quality_codeclimate_scanning.md b/doc/ci/testing/code_quality_codeclimate_scanning.md index a9b81397e1d..b8148365446 100644 --- a/doc/ci/testing/code_quality_codeclimate_scanning.md +++ b/doc/ci/testing/code_quality_codeclimate_scanning.md @@ -55,7 +55,7 @@ To enable Code Quality, either: Code Quality now runs in pipelines. WARNING: -On self-managed instances, if a malicious actor compromises the Code Quality job definition they +On GitLab Self-Managed, if a malicious actor compromises the Code Quality job definition they could execute privileged Docker commands on the runner host. Having proper access control policies mitigates this attack vector by allowing access only to trusted actors. diff --git a/doc/ci/variables/index.md b/doc/ci/variables/index.md index 703bca30ea9..b929c183639 100644 --- a/doc/ci/variables/index.md +++ b/doc/ci/variables/index.md @@ -849,7 +849,7 @@ to set `ci_pipeline_variables_minimum_override_role` to one of: - `owner`: Only users with the Owner role can run pipelines with pipeline variables. You must have the Owner role for the project to change the setting to this value. - `maintainer`: Only users with at least the Maintainer role can run pipelines with pipeline variables. - Default when not specified on self-managed and Dedicated. + Default when not specified on GitLab Self-Managed and GitLab Dedicated. - `developer`: Only users with at least the Developer role can run pipelines with pipeline variables. ## Exporting variables diff --git a/doc/ci/yaml/artifacts_reports.md b/doc/ci/yaml/artifacts_reports.md index 5abb6ea219a..cf4a96efa42 100644 --- a/doc/ci/yaml/artifacts_reports.md +++ b/doc/ci/yaml/artifacts_reports.md @@ -269,10 +269,10 @@ The exceptions to the [original dotenv rules](https://github.com/motdotla/dotenv - The variable key can contain only letters, digits, and underscores (`_`). - The maximum size of the `.env` file is 5 KB. - This limit [can be changed on self-managed instances](../../administration/instance_limits.md#limit-dotenv-file-size). + This limit [can be changed on GitLab Self-Managed](../../administration/instance_limits.md#limit-dotenv-file-size). - On GitLab.com, [the maximum number of inherited variables](../../user/gitlab_com/index.md#gitlab-cicd) is 50 for Free, 100 for Premium and 150 for Ultimate. The default for - self-managed instances is 20, and can be changed by changing the + GitLab Self-Managed is 20, and can be changed by changing the `dotenv_variables` [application limit](../../administration/instance_limits.md#limit-dotenv-variables). - Variable substitution in the `.env` file is not supported. - [Multiline values in the `.env` file](https://github.com/motdotla/dotenv#multiline-values) are not supported. diff --git a/doc/ci/yaml/includes.md b/doc/ci/yaml/includes.md index 168123b5709..8e311dc7ea5 100644 --- a/doc/ci/yaml/includes.md +++ b/doc/ci/yaml/includes.md @@ -630,7 +630,7 @@ with the [pipeline editor](../pipeline_editor/index.md), which validates if the limit is reached. You can remove one included file at a time to try to narrow down which configuration file is the source of the loop or excessive included files. -In [GitLab 16.0 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/207270) self-managed users can +In [GitLab 16.0 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/207270) users on GitLab Self-Managed can change the [maximum includes](../../administration/settings/continuous_integration.md#maximum-includes) value. ### `SSL_connect SYSCALL returned=5 errno=0 state=SSLv3/TLS write client hello` and other network failures diff --git a/doc/ci/yaml/index.md b/doc/ci/yaml/index.md index 197baab5deb..e11fc6772a2 100644 --- a/doc/ci/yaml/index.md +++ b/doc/ci/yaml/index.md @@ -194,7 +194,7 @@ And optionally: - Pipeline, the `include` files are fetched again. If they changed after the last pipeline run, the new pipeline uses the changed configuration. - You can have up to 150 includes per pipeline by default, including [nested](includes.md#use-nested-includes). Additionally: - - In [GitLab 16.0 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/207270) self-managed users can + - In [GitLab 16.0 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/207270) users on GitLab Self-Managed can change the [maximum includes](../../administration/settings/continuous_integration.md#maximum-includes) value. - In [GitLab 15.10 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/367150) you can have up to 150 includes. In nested includes, the same file can be included multiple times, but duplicated includes @@ -3072,7 +3072,7 @@ This example creates four paths of execution: - The maximum number of jobs that a single job can have in the `needs` array is limited: - For GitLab.com, the limit is 50. For more information, see [issue 350398](https://gitlab.com/gitlab-org/gitlab/-/issues/350398). - - For self-managed instances, the default limit is 50. This limit [can be changed](../../administration/cicd/index.md#set-the-needs-job-limit). + - For GitLab Self-Managed, the default limit is 50. This limit [can be changed](../../administration/cicd/index.md#set-the-needs-job-limit). - If `needs` refers to a job that uses the [`parallel`](#parallel) keyword, it depends on all jobs created in parallel, not just one job. It also downloads artifacts from all the parallel jobs by default. If the artifacts have the same diff --git a/doc/install/next_steps.md b/doc/install/next_steps.md index 91667fa7746..561cbd508c0 100644 --- a/doc/install/next_steps.md +++ b/doc/install/next_steps.md @@ -76,5 +76,5 @@ installation. ## Install the product documentation -This is an optional step. If you want to host the documentation on your own +Optional. If you want to host the documentation on your own server, see how to [self-host the product documentation](../administration/docs_self_host.md). diff --git a/lib/api/ci/pipeline_schedules.rb b/lib/api/ci/pipeline_schedules.rb index 8077e0e952e..3033a40dd20 100644 --- a/lib/api/ci/pipeline_schedules.rb +++ b/lib/api/ci/pipeline_schedules.rb @@ -192,8 +192,9 @@ module API post ':id/pipeline_schedules/:pipeline_schedule_id/play' do authorize! :play_pipeline_schedule, pipeline_schedule - job_id = RunPipelineScheduleWorker # rubocop:disable CodeReuse/Worker - .perform_async(pipeline_schedule.id, current_user.id) + job_id = ::Ci::PipelineSchedules::PlayService + .new(pipeline_schedule.project, current_user) + .execute(pipeline_schedule) if job_id created! diff --git a/package.json b/package.json index 796937fe3a8..f32d18ba566 100644 --- a/package.json +++ b/package.json @@ -289,7 +289,7 @@ "jest-jasmine2": "^29.7.0", "jest-junit": "^12.3.0", "jest-util": "^29.7.0", - "markdownlint-cli2": "^0.14.0", + "markdownlint-cli2": "^0.17.1", "markdownlint-rule-helpers": "^0.25.0", "miragejs": "^0.1.40", "mock-apollo-client": "1.2.0", diff --git a/scripts/lint-doc.sh b/scripts/lint-doc.sh index 13e72c5207e..489775be781 100755 --- a/scripts/lint-doc.sh +++ b/scripts/lint-doc.sh @@ -201,7 +201,7 @@ function run_locally_or_in_container() { local cmd=$1 local args=$2 local files=$3 - local registry_url="registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.20-vale-3.7.1-markdownlint2-0.14.0-lychee-0.15.1" + local registry_url="registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.20-vale-3.9.3-markdownlint2-0.17.1-lychee-0.18.0" if hash "${cmd}" 2>/dev/null then diff --git a/spec/controllers/projects/pipeline_schedules_controller_spec.rb b/spec/controllers/projects/pipeline_schedules_controller_spec.rb index 3c6933bab2c..e6976645488 100644 --- a/spec/controllers/projects/pipeline_schedules_controller_spec.rb +++ b/spec/controllers/projects/pipeline_schedules_controller_spec.rb @@ -519,7 +519,7 @@ RSpec.describe Projects::PipelineSchedulesController, feature_category: :continu end it 'does not allow pipeline to be executed' do - expect(RunPipelineScheduleWorker).not_to receive(:perform_async) + expect(Ci::PipelineSchedules::PlayService).not_to receive(:new) go @@ -529,7 +529,7 @@ RSpec.describe Projects::PipelineSchedulesController, feature_category: :continu context 'when a developer makes the request' do it 'executes a new pipeline' do - expect(RunPipelineScheduleWorker).to receive(:perform_async).with(pipeline_schedule.id, user.id).and_return('job-123') + expect(Ci::PipelineSchedules::PlayService).to receive_message_chain(:new, :execute).with(pipeline_schedule).and_return('job-123') go diff --git a/spec/controllers/search_controller_spec.rb b/spec/controllers/search_controller_spec.rb index 1afa1609b54..ea26f43684f 100644 --- a/spec/controllers/search_controller_spec.rb +++ b/spec/controllers/search_controller_spec.rb @@ -580,7 +580,7 @@ RSpec.describe SearchController, feature_category: :global_search do it 'returns an empty array when given abusive search term' do get :autocomplete, params: { term: ('hal' * 4000), scope: 'projects' } expect(response).to have_gitlab_http_status(:ok) - expect(json_response).to match_array([]) + expect(json_response).to be_empty end describe 'rate limit scope' do diff --git a/spec/requests/api/graphql/mutations/ci/pipeline_schedule/play_spec.rb b/spec/requests/api/graphql/mutations/ci/pipeline_schedule/play_spec.rb index fceb51d86d1..c2bad38a930 100644 --- a/spec/requests/api/graphql/mutations/ci/pipeline_schedule/play_spec.rb +++ b/spec/requests/api/graphql/mutations/ci/pipeline_schedule/play_spec.rb @@ -57,9 +57,10 @@ RSpec.describe 'PipelineSchedulePlay', feature_category: :continuous_integration context 'when mutation fails' do it do - expect(RunPipelineScheduleWorker) - .to receive(:perform_async) - .with(pipeline_schedule.id, current_user.id).and_return(nil) + expect(Ci::PipelineSchedules::PlayService) + .to receive_message_chain(:new, :execute) + .with(pipeline_schedule) + .and_return(nil) post_graphql_mutation(mutation, current_user: current_user) @@ -70,7 +71,7 @@ RSpec.describe 'PipelineSchedulePlay', feature_category: :continuous_integration context 'when PipelineScheduleService raises AccessDeniedError' do before do - allow(Ci::PipelineScheduleService).to receive_message_chain(:new, + allow(Ci::PipelineSchedules::PlayService).to receive_message_chain(:new, :execute).and_raise Gitlab::Access::AccessDeniedError end diff --git a/spec/services/ci/pipeline_schedule_service_spec.rb b/spec/services/ci/pipeline_schedules/play_service_spec.rb similarity index 77% rename from spec/services/ci/pipeline_schedule_service_spec.rb rename to spec/services/ci/pipeline_schedules/play_service_spec.rb index 3c99b5fa68b..d2acd3a14c5 100644 --- a/spec/services/ci/pipeline_schedule_service_spec.rb +++ b/spec/services/ci/pipeline_schedules/play_service_spec.rb @@ -2,14 +2,14 @@ require 'spec_helper' -RSpec.describe Ci::PipelineScheduleService, feature_category: :continuous_integration do +RSpec.describe Ci::PipelineSchedules::PlayService, feature_category: :continuous_integration do let_it_be(:user) { create(:user) } let_it_be(:project) { create(:project) } let(:service) { described_class.new(project, user) } describe '#execute' do - subject { service.execute(schedule) } + subject(:execute_service) { service.execute(schedule) } let_it_be(:schedule) { create(:ci_pipeline_schedule, project: project, owner: user) } @@ -21,21 +21,21 @@ RSpec.describe Ci::PipelineScheduleService, feature_category: :continuous_integr it 'schedules next run' do expect(schedule).to receive(:schedule_next_run!) - subject + execute_service end it 'runs RunPipelineScheduleWorker' do expect(RunPipelineScheduleWorker) .to receive(:perform_async).with(schedule.id, schedule.owner.id) - subject + execute_service end context 'when owner is nil' do let(:schedule) { create(:ci_pipeline_schedule, project: project, owner: nil) } it 'does not raise an error' do - expect { subject }.not_to raise_error + expect { execute_service }.not_to raise_error end end @@ -43,18 +43,18 @@ RSpec.describe Ci::PipelineScheduleService, feature_category: :continuous_integr let_it_be(:project) { create(:project).tap(&:delete) } it 'does not raise an exception' do - expect { subject }.not_to raise_error + expect { execute_service }.not_to raise_error end it "returns a service response error" do - expect(subject).to be_error + expect(execute_service).to be_error end it 'does not run RunPipelineScheduleWorker' do expect(RunPipelineScheduleWorker) .not_to receive(:perform_async).with(schedule.id, schedule.owner.id) - subject + execute_service end end end @@ -65,7 +65,7 @@ RSpec.describe Ci::PipelineScheduleService, feature_category: :continuous_integr end it 'raises an AccessDeniedError' do - expect { subject }.to raise_error Gitlab::Access::AccessDeniedError + expect { execute_service }.to raise_error Gitlab::Access::AccessDeniedError end end end diff --git a/yarn.lock b/yarn.lock index 897aa08e3d6..2258cd6036d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3517,6 +3517,11 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/katex@^0.16.0": + version "0.16.7" + resolved "https://registry.yarnpkg.com/@types/katex/-/katex-0.16.7.tgz#03ab680ab4fa4fbc6cb46ecf987ecad5d8019868" + integrity sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ== + "@types/linkify-it@^5": version "5.0.0" resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" @@ -5146,11 +5151,21 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + character-entities@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7" integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ== +character-reference-invalid@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + "charenc@>= 0.0.1": version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -6651,6 +6666,13 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +devlop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + dexie@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/dexie/-/dexie-3.2.3.tgz#f35c91ca797599df8e771b998e9ae9669c877f8c" @@ -8934,6 +8956,19 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + +is-alphanumerical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + dependencies: + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" @@ -9031,6 +9066,11 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= +is-decimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -9088,6 +9128,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + is-negative-zero@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" @@ -9902,10 +9947,10 @@ jszip@^3.1.3: readable-stream "~2.3.6" setimmediate "^1.0.5" -katex@^0.16.19: - version "0.16.19" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.19.tgz#698e026188876f9c8c93d3ecb27b212aaa056d0a" - integrity sha512-3IA6DYVhxhBabjSLTNO9S4+OliA3Qvb8pBQXMfC4WxXJgLwZgnfDl0BmB4z6nBMdznBsZ+CGM8DrGZ5hcguDZg== +katex@^0.16.0, katex@^0.16.19: + version "0.16.20" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.20.tgz#75c741ded0f7ee8d896a1d31bac307e61af863c3" + integrity sha512-jjuLaMGD/7P8jUTpdKhA9IoqnH+yMFB3sdAFtq5QdAqeP2PjiSbnC3EaguKPNtv6dXXanHxp1ckwvF4a86LBig== dependencies: commander "^8.3.0" @@ -10241,23 +10286,18 @@ markdownlint-cli2-formatter-default@0.0.5: resolved "https://registry.yarnpkg.com/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.5.tgz#b8fde4e127f9a9c0596e6d45eed352dd0aa0ff98" integrity sha512-4XKTwQ5m1+Txo2kuQ3Jgpo/KmnG+X90dWt4acufg6HVGadTUG5hzHF/wssp9b5MBYOMCnZ9RMPaU//uHsszF8Q== -markdownlint-cli2@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/markdownlint-cli2/-/markdownlint-cli2-0.14.0.tgz#57dd69224c6859d64d79b6e88163208e170dc310" - integrity sha512-2cqdWy56frU2FTpbuGb83mEWWYuUIYv6xS8RVEoUAuKNw/hXPar2UYGpuzUhlFMngE8Omaz4RBH52MzfRbGshw== +markdownlint-cli2@^0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/markdownlint-cli2/-/markdownlint-cli2-0.17.1.tgz#4455105fe5d75821597779f7a442ce5c5ce0fede" + integrity sha512-n1Im9lhKJJE12/u2N0GWBwPqeb0HGdylN8XpSFg9hbj35+QalY9Vi6mxwUQdG6wlSrrIq9ZDQ0Q85AQG9V2WOg== dependencies: globby "14.0.2" js-yaml "4.1.0" jsonc-parser "3.3.1" - markdownlint "0.35.0" + markdownlint "0.37.3" markdownlint-cli2-formatter-default "0.0.5" micromatch "4.0.8" -markdownlint-micromark@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/markdownlint-micromark/-/markdownlint-micromark-0.1.10.tgz#a77a1a70adad9eac18ff412baf36a0c2189875d7" - integrity sha512-no5ZfdqAdWGxftCLlySHSgddEjyW4kui4z7amQcGsSKfYC5v/ou+8mIQVyg9KQMeEZLNtz9OPDTj7nnTnoR4FQ== - markdownlint-micromark@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/markdownlint-micromark/-/markdownlint-micromark-0.1.2.tgz#5520e04febffa46741875a2f297509ffdb561f5c" @@ -10270,13 +10310,20 @@ markdownlint-rule-helpers@^0.25.0: dependencies: markdownlint-micromark "0.1.2" -markdownlint@0.35.0: - version "0.35.0" - resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.35.0.tgz#8189347fef3550045de78a96c52a7f45c2a4f91e" - integrity sha512-wgp8yesWjFBL7bycA3hxwHRdsZGJhjhyP1dSxKVKrza0EPFYtn+mHtkVy6dvP1kGSjovyG5B8yNP6Frj0UFUJg== +markdownlint@0.37.3: + version "0.37.3" + resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.37.3.tgz#061ac5462e97fedc7a96aaac5c132885e4161bfd" + integrity sha512-eoQqH0291YCCjd+Pe1PUQ9AmWthlVmS0XWgcionkZ8q34ceZyRI+pYvsWksXJJL8OBkWCPwp1h/pnXxrPFC4oA== dependencies: markdown-it "14.1.0" - markdownlint-micromark "0.1.10" + micromark "4.0.1" + micromark-core-commonmark "2.0.2" + micromark-extension-directive "3.0.2" + micromark-extension-gfm-autolink-literal "2.1.0" + micromark-extension-gfm-footnote "2.1.0" + micromark-extension-gfm-table "2.1.0" + micromark-extension-math "3.1.0" + micromark-util-types "2.0.1" marked-bidi@^1.0.3, marked-bidi@^1.0.8: version "1.0.9" @@ -10551,6 +10598,28 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +micromark-core-commonmark@2.0.2, micromark-core-commonmark@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz#6a45bbb139e126b3f8b361a10711ccc7c6e15e93" + integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w== + dependencies: + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-factory-destination "^2.0.0" + micromark-factory-label "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-title "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-html-tag-name "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" @@ -10573,6 +10642,19 @@ micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: micromark-util-types "^1.0.1" uvu "^0.5.0" +micromark-extension-directive@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz#2eb61985d1995a7c1ff7621676a4f32af29409e8" + integrity sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + parse-entities "^4.0.0" + micromark-extension-frontmatter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz#612498e6dad87c132c95e25f0918e7cc0cd535f6" @@ -10582,6 +10664,16 @@ micromark-extension-frontmatter@^1.0.0: micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" +micromark-extension-gfm-autolink-literal@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== + 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" + micromark-extension-gfm-autolink-literal@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" @@ -10593,6 +10685,20 @@ micromark-extension-gfm-autolink-literal@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-footnote@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== + 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" + micromark-extension-gfm-footnote@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz#cbfd8873b983e820c494498c6dac0105920818d5" @@ -10619,6 +10725,17 @@ micromark-extension-gfm-strikethrough@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-table@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz#5cadedfbb29fca7abf752447967003dc3b6583c9" + integrity sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g== + 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" + micromark-extension-gfm-table@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" @@ -10662,6 +10779,19 @@ micromark-extension-gfm@^2.0.0: micromark-util-combine-extensions "^1.0.0" micromark-util-types "^1.0.0" +micromark-extension-math@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz#c42ee3b1dd5a9a03584e83dd8f08e3de510212c1" + integrity sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg== + dependencies: + "@types/katex" "^0.16.0" + devlop "^1.0.0" + katex "^0.16.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" + micromark-factory-destination@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" @@ -10671,6 +10801,15 @@ micromark-factory-destination@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" +micromark-factory-destination@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" + integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-label@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" @@ -10681,6 +10820,16 @@ micromark-factory-label@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-factory-label@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" + integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== + dependencies: + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-space@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" @@ -10689,6 +10838,14 @@ micromark-factory-space@^1.0.0: micromark-util-character "^1.0.0" micromark-util-types "^1.0.0" +micromark-factory-space@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" + integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-title@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" @@ -10700,6 +10857,16 @@ micromark-factory-title@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-factory-title@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" + integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-whitespace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" @@ -10710,6 +10877,16 @@ micromark-factory-whitespace@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" +micromark-factory-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" + integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-character@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" @@ -10718,6 +10895,14 @@ micromark-util-character@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-chunked@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" @@ -10725,6 +10910,13 @@ micromark-util-chunked@^1.0.0: dependencies: micromark-util-symbol "^1.0.0" +micromark-util-chunked@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" + integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-classify-character@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" @@ -10734,6 +10926,15 @@ micromark-util-classify-character@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" +micromark-util-classify-character@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" + integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-combine-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" @@ -10742,6 +10943,14 @@ micromark-util-combine-extensions@^1.0.0: micromark-util-chunked "^1.0.0" micromark-util-types "^1.0.0" +micromark-util-combine-extensions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" + integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== + dependencies: + micromark-util-chunked "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-decode-numeric-character-reference@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" @@ -10749,6 +10958,13 @@ micromark-util-decode-numeric-character-reference@^1.0.0: dependencies: micromark-util-symbol "^1.0.0" +micromark-util-decode-numeric-character-reference@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" + integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-decode-string@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" @@ -10764,11 +10980,21 @@ micromark-util-encode@^1.0.0: resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + micromark-util-html-tag-name@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz#75737e92fef50af0c6212bd309bc5cb8dbd489ed" integrity sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g== +micromark-util-html-tag-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" + integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== + micromark-util-normalize-identifier@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" @@ -10776,6 +11002,13 @@ micromark-util-normalize-identifier@^1.0.0: dependencies: micromark-util-symbol "^1.0.0" +micromark-util-normalize-identifier@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" + integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-resolve-all@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" @@ -10783,6 +11016,13 @@ micromark-util-resolve-all@^1.0.0: dependencies: micromark-util-types "^1.0.0" +micromark-util-resolve-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" + integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== + dependencies: + micromark-util-types "^2.0.0" + micromark-util-sanitize-uri@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2" @@ -10792,6 +11032,15 @@ micromark-util-sanitize-uri@^1.0.0: micromark-util-encode "^1.0.0" micromark-util-symbol "^1.0.0" +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-subtokenize@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" @@ -10802,16 +11051,59 @@ micromark-util-subtokenize@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-util-subtokenize@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz#70ffb99a454bd8c913c8b709c3dc97baefb65f96" + integrity sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-symbol@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + +micromark-util-types@2.0.1, micromark-util-types@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" + integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== + micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== +micromark@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.1.tgz#294c2f12364759e5f9e925a767ae3dfde72223ff" + integrity sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark@^3.0.0: version "3.0.10" resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" @@ -11695,6 +11987,19 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.6: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-entities@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.2.tgz#61d46f5ed28e4ee62e9ddc43d6b010188443f159" + integrity sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw== + dependencies: + "@types/unist" "^2.0.0" + character-entities-legacy "^3.0.0" + character-reference-invalid "^2.0.0" + decode-named-character-reference "^1.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" + parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"