Secret scanning structured data (#33117)

Co-authored-by: Rachael Sewell <rachmari@github.com>
This commit is contained in:
Sarah Schneider 2023-03-03 13:20:50 -05:00 коммит произвёл GitHub
Родитель c8579c90fc
Коммит 5ee7bfe4ac
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
11 изменённых файлов: 2757 добавлений и 1068 удалений

Просмотреть файл

@ -41,7 +41,15 @@ If you believe that {% data variables.product.prodname_secret_scanning %} should
{% data reusables.secret-scanning.secret-scanning-pattern-pair-matches %}
{% data reusables.secret-scanning.partner-secret-list-public-repo %}
<!-- PUBLIC TABLE STARTS HERE -->
<!-- This recreates the table in the now deleted data/reusables/secret-scanning/partner-secret-list-public-repo.md -->
Partner | Supported secret
--- | ---
{%- for entry in secretScanning.isPublic %}
{{ entry.provider }} | {{ entry.supportedSecret }}
{%- endfor %}
<!-- PUBLIC TABLE ENDS HERE -->
{% endif %}
## Supported secrets for {% ifversion fpt or ghec %}user {% endif %}alerts
@ -60,7 +68,14 @@ If you use the REST API for secret scanning, you can use the `Secret type` to re
{% endnote %}
{% endif %}
{% data reusables.secret-scanning.partner-secret-list-private-repo %}
<!-- PRIVATE TABLE STARTS HERE -->
<!-- This recreates the table in the now deleted data/reusables/secret-scanning/partner-secret-list-private-repo.md. -->
Provider | Supported secret | Secret type
--- | --- | ---
{%- for entry in secretScanning.isPrivateWithGhas %}
{{ entry.provider }} | {{ entry.supportedSecret }} | {{ entry.secretType }} |
{%- endfor %}
<!-- PRIVATE TABLE ENDS HERE -->
{% ifversion secret-scanning-push-protection %}
## Supported secrets for push protection
@ -71,7 +86,14 @@ If you use the REST API for secret scanning, you can use the `Secret type` to re
{% data reusables.secret-scanning.push-protection-older-tokens %} For more information about push protection limitations, see "[AUTOTITLE](/code-security/secret-scanning/troubleshooting-secret-scanning#push-protection-and-pattern-versions)."
{% data reusables.secret-scanning.secret-list-private-push-protection %}
<!-- PUSH PROTECTION TABLE STARTS HERE -->
<!-- This recreates the table in the now deleted data/reusables/secret-scanning/secret-list-private-push-protection.md -->
Provider | Supported secret | Secret type
--- | --- | ---
{%- for entry in secretScanning.hasPushProtection %}
{{ entry.provider }} | {{ entry.supportedSecret }} | {{ entry.secretType }}
{%- endfor %}
<!-- PRIVATE TABLE ENDS HERE -->
{% endif %}
## Further reading

Просмотреть файл

@ -1,241 +0,0 @@
Provider | Supported secret | Secret type
--- | --- | ---
Adafruit IO | Adafruit IO Key | adafruit_io_key
Adobe | Adobe Device Token | adobe_device_token
Adobe | Adobe Service Token | adobe_service_token
Adobe | Adobe Short-Lived Access Token | adobe_short_lived_access_token
Adobe | Adobe JSON Web Token | adobe_jwt
Alibaba Cloud | Alibaba Cloud Access Key ID with Alibaba Cloud Access Key Secret| alibaba_cloud_access_key_id </br>alibaba_cloud_access_key_secret
Amazon | Amazon OAuth Client ID with Amazon OAuth Client Secret | amazon_oauth_client_id </br>amazon_oauth_client_secret
Amazon Web Services (AWS) | Amazon AWS Access Key ID with Amazon AWS Secret Access Key | aws_access_key_id </br>aws_secret_access_key
Amazon Web Services (AWS) | Amazon AWS Session Token with Amazon AWS Temporary Access Key ID and Amazon AWS Secret Access Key | aws_session_token </br>aws_temporary_access_key_id </br>aws_secret_access_key
Asana | Asana {% data variables.product.pat_generic_title_case %} | asana_personal_access_token
Atlassian | Atlassian API Token | atlassian_api_token
Atlassian | Atlassian JSON Web Token | atlassian_jwt
Atlassian | Bitbucket Server {% data variables.product.pat_generic_title_case %} | bitbucket_server_personal_access_token
Azure | Azure Active Directory Application Secret | azure_active_directory_application_secret
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Azure | Azure Batch Key Identifiable | azure_batch_key_identifiable{% endif %}
Azure | Azure Cache for Redis Access Key | azure_cache_for_redis_access_key
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Azure | Azure CosmosDB Key Identifiable | azure_cosmosdb_key_identifiable{% endif %}
Azure | Azure DevOps {% data variables.product.pat_generic_title_case %} | azure_devops_personal_access_token
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Azure | Azure ML Studio (classic) Web Service Key | azure_ml_studio_classic_web_service_key, azure_ml_web_service_classic_identifiable_key{% endif %}
Azure | Azure SAS Token | azure_sas_token
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Azure | Azure Search Admin Key | azure_search_admin_key
Azure | Azure Search Query Key | azure_search_query_key{% endif %}
Azure | Azure Service Management Certificate | azure_management_certificate
{%- ifversion ghae < 3.4 %}
Azure | Azure SQL Connection String | azure_sql_connection_string{% endif %}
Azure | Azure Storage Account Key | azure_storage_account_key
Beamer | Beamer API Key | beamer_api_key
Checkout.com | Checkout.com Production Secret Key | checkout_production_secret_key
Checkout.com | Checkout.com Test Secret Key | checkout_test_secret_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Chief Tools | Chief Tools Token | chief_tools_token{% endif %}
Clojars | Clojars Deploy Token | clojars_deploy_token
CloudBees CodeShip | CloudBees CodeShip Credential | codeship_credential
Contentful | Contentful {% data variables.product.pat_generic_title_case %} | contentful_personal_access_token
Databricks | Databricks Access Token | databricks_access_token
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
DevCycle | DevCycle Client API Key | devcycle_client_api_key
DevCycle | DevCycle Server API Key | devcycle_server_api_key
DevCycle | DevCycle Mobile API Key | devcycle_mobile_api_key{% endif %}
{%- ifversion fpt or ghec or ghes > 3.4 or ghae > 3.4 %}
DigitalOcean | DigitalOcean {% data variables.product.pat_generic_title_case %} | digitalocean_personal_access_token
DigitalOcean | DigitalOcean OAuth Token | digitalocean_oauth_token
DigitalOcean | DigitalOcean Refresh Token | digitalocean_refresh_token
DigitalOcean | DigitalOcean System Token | digitalocean_system_token{% endif %}
Discord | Discord Bot Token | discord_bot_token
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Discord | Discord API Token V2 | discord_api_token_v2{% endif %}
Doppler | Doppler Personal Token | doppler_personal_token
Doppler | Doppler Service Token | doppler_service_token
Doppler | Doppler CLI Token | doppler_cli_token
Doppler | Doppler SCIM Token | doppler_scim_token
Doppler | Doppler Audit Token | doppler_audit_token
Dropbox | Dropbox Access Token | dropbox_access_token
Dropbox | Dropbox Short Lived Access Token | dropbox_short_lived_access_token
Duffel | Duffel Live Access Token | duffel_live_access_token
Duffel | Duffel Test Access Token | duffel_test_access_token
Dynatrace | Dynatrace Access Token | dynatrace_access_token
Dynatrace | Dynatrace Internal Token | dynatrace_internal_token
EasyPost | EasyPost Production API Key | easypost_production_api_key
EasyPost | EasyPost Test API Key | easypost_test_api_key
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
eBay | eBay Production Client ID (App ID) with eBay Production Client Secret (Cert ID) | ebay_production_client_id </br>ebay_production_client_secret
eBay | eBay Sandbox Client ID (App ID) with eBay Sandbox Client Secret (Cert ID) | ebay_sandbox_client_id </br>ebay_sandbox_client_secret{% endif %}
Fastly | Fastly API Token | fastly_api_token
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Figma | Figma {% data variables.product.pat_generic_title_case %} |figma_pat{% endif %}
Finicity | Finicity App Key | finicity_app_key
Flutterwave | Flutterwave Live API Secret Key | flutterwave_live_api_secret_key
Flutterwave | Flutterwave Test API Secret Key | flutterwave_test_api_secret_key
Frame.io | Frame.io JSON Web Token | frameio_jwt
Frame.io| Frame.io Developer Token | frameio_developer_token
FullStory | FullStory API Key | fullstory_api_key
GitHub | GitHub {% data variables.product.pat_generic_title_case %} | github_personal_access_token
GitHub | GitHub OAuth Access Token | github_oauth_access_token
GitHub | GitHub Refresh Token | github_refresh_token
GitHub | GitHub App Installation Access Token | github_app_installation_access_token
GitHub | GitHub SSH Private Key | github_ssh_private_key
GitLab | GitLab Access Token | gitlab_access_token
GoCardless | GoCardless Live Access Token | gocardless_live_access_token
GoCardless | GoCardless Sandbox Access Token | gocardless_sandbox_access_token
Google | Firebase Cloud Messaging Server Key | firebase_cloud_messaging_server_key
Google | Google API Key | google_api_key
{%- ifversion fpt or ghec or ghes > 3.5 or ghae > 3.5 %}
Google | Google Cloud Private Key ID | google_cloud_private_key_id{% endif %}
Google | Google Cloud Storage Service Account Access Key ID with Google Cloud Storage Access Key Secret | google_cloud_storage_service_account_access_key_id </br>google_cloud_storage_access_key_secret
Google | Google Cloud Storage User Access Key ID with Google Cloud Storage Access Key Secret | google_cloud_storage_user_access_key_id </br>google_cloud_storage_access_key_secret
Google | Google OAuth Access Token | google_oauth_access_token
Google | Google OAuth Client ID with Google OAuth Client Secret | google_oauth_client_id </br>google_oauth_client_secret
Google | Google OAuth Refresh Token | google_oauth_refresh_token
Grafana | Grafana API Key | grafana_api_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Grafana | Grafana Cloud API Key | grafana_cloud_api_key
Grafana | Grafana Cloud API Token | grafana_cloud_api_token
Grafana | Grafana Project API Key | grafana_project_api_key
Grafana | Grafana Project Service Account Token | grafana_project_service_account_token{% endif %}
HashiCorp | Terraform Cloud / Enterprise API Token | terraform_api_token
HashiCorp | HashiCorp Vault Batch Token | hashicorp_vault_batch_token
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
HashiCorp | HashiCorp Vault Root Service Token | hashicorp_vault_root_service_token{% endif %}
HashiCorp | HashiCorp Vault Service Token | hashicorp_vault_service_token
{%- ifversion fpt or ghec or ghes > 3.9 or ghae > 3.9 %}
Highnote | Highnote RK Live Key | highnote_rk_live_key
Highnote | Highnote RK Test Key | highnote_rk_test_key
Highnote | Highnote SK Live Key | highnote_sk_live_key
Highnote | Highnote SK Test Key | highnote_sk_test_key{% endif %}
Hubspot | Hubspot API Key | hubspot_api_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Hubspot | Hubspot API Personal Access Key | hubspot_api_personal_access_key{% endif %}
Intercom | Intercom Access Token | intercom_access_token
Ionic | Ionic {% data variables.product.pat_generic_title_case %} | ionic_personal_access_token
Ionic | Ionic Refresh Token | ionic_refresh_token
{%- ifversion fpt or ghec or ghes > 3.4 or ghae > 3.4 %}
JD Cloud | JD Cloud Access Key | jd_cloud_access_key{% endif %}
JFrog | JFrog Platform Access Token | jfrog_platform_access_token
JFrog | JFrog Platform API Key | jfrog_platform_api_key
Linear | Linear API Key | linear_api_key
Linear | Linear OAuth Access Token | linear_oauth_access_token
Lob | Lob Live API Key | lob_live_api_key
Lob | Lob Test API Key | lob_test_api_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
LocalStack | LocalStack API Key | localstack_api_key
LogicMonitor | LogicMonitor Bearer Token | logicmonitor_bearer_token
LogicMonitor | LogicMonitor LMV1 Access Key | logicmonitor_lmv1_access_key{% endif %}
Mailchimp | Mailchimp API Key | mailchimp_api_key
Mailgun | Mailgun API Key | mailgun_api_key
Mapbox | Mapbox Secret Access Token | mapbox_secret_access_token
MessageBird | MessageBird API Key | messagebird_api_key
Meta | Facebook Access Token | facebook_access_token
Midtrans | Midtrans Production Server Key | midtrans_production_server_key
Midtrans | Midtrans Sandbox Server Key | midtrans_sandbox_server_key
New Relic | New Relic Personal API Key | new_relic_personal_api_key
New Relic | New Relic REST API Key | new_relic_rest_api_key
New Relic | New Relic Insights Query Key | new_relic_insights_query_key
New Relic | New Relic License Key | new_relic_license_key
Notion | Notion Integration Token | notion_integration_token
Notion | Notion OAuth Client Secret | notion_oauth_client_secret
npm | npm Access Token | npm_access_token
NuGet | NuGet API Key | nuget_api_key
{%- ifversion fpt or ghec or ghes > 3.9 or ghae > 3.9 %}
Oculus | Oculus Very Tiny Encrypted Session | oculus_very_tiny_encrypted_session{% endif %}
Octopus Deploy | Octopus Deploy API Key | octopus_deploy_api_key
Onfido | Onfido Live API Token | onfido_live_api_token
Onfido | Onfido Sandbox API Token | onfido_sandbox_api_token
OpenAI | OpenAI API Key | openai_api_key
Palantir | Palantir JSON Web Token | palantir_jwt
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Persona | Persona Production API Key | persona_production_api_key
Persona | Persona Sandbox API Key | persona_sandbox_api_key{% endif %}
PlanetScale | PlanetScale Database Password | planetscale_database_password
PlanetScale | PlanetScale OAuth Token | planetscale_oauth_token
PlanetScale | PlanetScale Service Token | planetscale_service_token
Plivo | Plivo Auth ID with Plivo Auth Token | plivo_auth_id </br>plivo_auth_token
Postman | Postman API Key | postman_api_key
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Postman | Postman Collection Key | postman_collection_key{% endif %}
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
Prefect | Prefect Server API Key | prefect_server_api_key
Prefect | Prefect User API Key | prefect_user_api_key{% endif %}
Proctorio | Proctorio Consumer Key | proctorio_consumer_key
Proctorio | Proctorio Linkage Key | proctorio_linkage_key
Proctorio | Proctorio Registration Key | proctorio_registration_key
Proctorio | Proctorio Secret Key | proctorio_secret_key
Pulumi | Pulumi Access Token | pulumi_access_token
PyPI | PyPI API Token | pypi_api_token
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
ReadMe | ReadMe API Access Key | readmeio_api_access_token{% endif %}
{%- ifversion fpt or ghec or ghes > 3.5 or ghae > 3.5 %}
redirect.pizza | redirect.pizza API Token | redirect_pizza_api_token{% endif %}
RubyGems | RubyGems API Key | rubygems_api_key
Samsara | Samsara API Token | samsara_api_token
Samsara | Samsara OAuth Access Token | samsara_oauth_access_token
{%- ifversion fpt or ghec or ghes > 3.4 or ghae > 3.4 %}
Segment | Segment Public API Token | segment_public_api_token{% endif %}
SendGrid | SendGrid API Key | sendgrid_api_key
Sendinblue | Sendinblue API Key | sendinblue_api_key
Sendinblue | Sendinblue SMTP Key | sendinblue_smtp_key
Shippo | Shippo Live API Token | shippo_live_api_token
Shippo | Shippo Test API Token | shippo_test_api_token
{%- ifversion fpt or ghec or ghes > 3.4 or ghae > 3.4 %}
Shopify | Shopify App Client Credentials | shopify_app_client_credentials
Shopify | Shopify App Client Secret | shopify_app_client_secret{% endif %}
Shopify | Shopify App Shared Secret | shopify_app_shared_secret
Shopify | Shopify Access Token | shopify_access_token
Shopify | Shopify Custom App Access Token | shopify_custom_app_access_token
{%- ifversion fpt or ghec or ghes > 3.4 or ghae > 3.4 %}
Shopify | Shopify Merchant Token | shopify_merchant_token
Shopify | Shopify Marketplace Token | shopify_marketplace_token
Shopify | Shopify Partner API Token | shopify_partner_api_token{% endif %}
Shopify | Shopify Private App Password | shopify_private_app_password
Slack | Slack API Token | slack_api_token
Slack | Slack Incoming Webhook URL | slack_incoming_webhook_url
Slack | Slack Workflow Webhook URL | slack_workflow_webhook_url
Square | Square Access Token | square_access_token
Square | Square Production Application Secret | square_production_application_secret
Square | Square Sandbox Application Secret | square_sandbox_application_secret
SSLMate | SSLMate API Key | sslmate_api_key
SSLMate | SSLMate Cluster Secret | sslmate_cluster_secret
Stripe | Stripe API Key | stripe_api_key
Stripe | Stripe Live API Secret Key | stripe_live_secret_key
Stripe | Stripe Test API Secret Key | stripe_test_secret_key
Stripe | Stripe Live API Restricted Key | stripe_live_restricted_key
Stripe | Stripe Test API Restricted Key | stripe_test_restricted_key
Stripe | Stripe Webhook Signing Secret | stripe_webhook_signing_secret
Supabase | Supabase Service Key | supabase_service_key
Tableau | Tableau {% data variables.product.pat_generic_title_case %} | tableau_personal_access_token
Telegram | Telegram Bot Token | telegram_bot_token
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Telnyx | Telnyx API V2 Key | telnyx_api_v2_key{% endif %}
Tencent Cloud | Tencent Cloud Secret ID | tencent_cloud_secret_id
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Tencent WeChat | Tencent WeChat API App ID | tencent_wechat_api_app_id{% endif %}
Twilio | Twilio Access Token | twilio_access_token
Twilio | Twilio Account String Identifier | twilio_account_sid
Twilio | Twilio API Key | twilio_api_key
Typeform | Typeform {% data variables.product.pat_generic_title_case %} | typeform_personal_access_token
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
Uniwise | WISEflow API Key | wiseflow_api_key{% endif %}
{%- ifversion fpt or ghec or ghes > 3.9 or ghae > 3.9 %}
WakaTime | WakaTime App Secret | wakatime_pp_secret
WakaTime | WakaTime OAuth Access Token | wakatime_oauth_access_token
WakaTime | WakaTime OAuth Refresh Token | wakatime_oauth_refresh_token{% endif %}
{%- ifversion fpt or ghec or ghes > 3.4 or ghae > 3.4 %}
WorkOS | WorkOS Production API Key | workos_production_api_key{% endif %}
{%- ifversion fpt or ghec or ghes > 3.4 or ghae > 3.4 %}
WorkOS | WorkOS Staging API Key | workos_staging_api_key{% endif %}
Yandex | Yandex.Cloud API Key | yandex_cloud_api_key
Yandex | Yandex.Cloud IAM Cookie | yandex_cloud_iam_cookie
Yandex | Yandex.Cloud IAM Token | yandex_cloud_iam_token
Yandex | Yandex.Dictionary API Key | yandex_dictionary_api_key
{%- ifversion fpt or ghec or ghes > 3.4 or ghae > 3.4 %}
Yandex | Yandex.Cloud Access Secret | yandex_iam_access_secret{% endif %}
Yandex | Yandex.Predictor API Key | yandex_predictor_api_key
Yandex | Yandex.Translate API Key | yandex_translate_api_key
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
Zuplo | Zuplo Consumer API Key | zuplo_consumer_api_key{% endif %}

Просмотреть файл

@ -1,134 +0,0 @@
Partner | Supported secret
--- | ---
Adafruit IO | Adafruit IO Key
Adobe | Adobe Device Token
Adobe | Adobe Service Token
Adobe | Adobe Short-Lived Access Token
Adobe | Adobe JSON Web Token
Alibaba Cloud | Alibaba Cloud Access Key ID and Access Key Secret pair
Amazon Web Services (AWS) | Amazon AWS Access Key ID and Secret Access Key pair
Atlassian | Atlassian API Token
Atlassian | Atlassian JSON Web Token
Azure | Azure Active Directory Application Secret
Azure | Azure Batch Key Identifiable
Azure | Azure CosmosDB Key Identifiable
Azure | Azure DevOps {% data variables.product.pat_generic_title_case %}
Azure | Azure ML Studio (classic) Web Service Key
Azure | Azure SAS Token
Azure | Azure Search Admin Key
Azure | Azure Search Query Key
Azure | Azure Service Management Certificate
Azure | Azure SQL Connection String
Azure | Azure Storage Account Key
Checkout.com | Checkout.com Production Secret Key
Checkout.com | Checkout.com Test Secret Key
Chief Tools | Chief Tools Token
Clojars | Clojars Deploy Token
CloudBees CodeShip | CloudBees CodeShip Credential
Contributed Systems | Contributed Systems Credentials
Crates.io | Crates.io API Token
Databricks | Databricks Access Token
Datadog | Datadog API Key
DevCycle | DevCycle Client API Key
DevCycle | DevCycle Server API Key
DigitalOcean | DigitalOcean {% data variables.product.pat_generic_title_case %}
DigitalOcean | DigitalOcean OAuth Token
DigitalOcean | DigitalOcean Refresh Token
DigitalOcean | DigitalOcean System Token
Discord | Discord Bot Token
Doppler | Doppler Personal Token
Doppler | Doppler Service Token
Doppler | Doppler CLI Token
Doppler | Doppler SCIM Token
Doppler | Doppler Audit Token
Dropbox | Dropbox Access Token
Dropbox | Dropbox Short Lived Access Token
Dynatrace | Dynatrace Access Token
Dynatrace | Dynatrace Internal Token
Figma | Figma {% data variables.product.pat_generic_title_case %}
Finicity | Finicity App Key
Frame.io | Frame.io JSON Web Token
Frame.io| Frame.io Developer Token
FullStory| FullStory API Key
GitHub | GitHub {% data variables.product.pat_generic_title_case %}
GitHub | GitHub OAuth Access Token
GitHub | GitHub Refresh Token
GitHub | GitHub App Installation Access Token
GitHub | GitHub SSH Private Key
GoCardless | GoCardless Live Access Token
GoCardless | GoCardless Sandbox Access Token
Google Cloud | Google API Key
Google Cloud | Google Cloud Private Key ID
Hashicorp Terraform | Terraform Cloud / Enterprise API Token
Hubspot | Hubspot API Key
Hubspot | Hubspot API Personal Access Key
Ionic | Ionic {% data variables.product.pat_generic_title_case %}
Ionic | Ionic Refresh Token
JD Cloud | JD Cloud Access Key
Linear | Linear API Key
Linear | Linear OAuth Access Token
LocalStack | LocalStack API Key
Mailchimp | Mailchimp API Key
Mailchimp | Mandrill API Key
Mailgun | Mailgun API Key
MessageBird | MessageBird API Key
Meta | Facebook Access Token
npm | npm Access Token
NuGet | NuGet API Key
Octopus Deploy | Octopus Deploy API Key
OpenAI | OpenAI API Key
Palantir | Palantir JSON Web Token
PlanetScale | PlanetScale Database Password
PlanetScale | PlanetScale OAuth Token
PlanetScale | PlanetScale Service Token
Plivo | Plivo Auth ID and Token
Postman | Postman API Key
Prefect | Prefect Server API Key
Prefect | Prefect User API Token
Proctorio | Proctorio Consumer Key
Proctorio | Proctorio Linkage Key
Proctorio | Proctorio Registration Key
Proctorio | Proctorio Secret Key
Pulumi | Pulumi Access Token
PyPI | PyPI API Token
ReadMe | ReadMe API Access Key
redirect.pizza | redirect.pizza API Token
RubyGems | RubyGems API Key
Samsara | Samsara API Token
Samsara | Samsara OAuth Access Token
Segment | Segment Public API Token
SendGrid | SendGrid API Key
Sendinblue | Sendinblue API Key
Sendinblue | Sendinblue SMTP Key
Shopify | Shopify App Shared Secret
Shopify | Shopify Access Token
Shopify | Shopify Custom App Access Token
Shopify | Shopify Private App Password
Slack | Slack API Token
Slack | Slack Incoming Webhook URL
Slack | Slack Workflow Webhook URL
SSLMate | SSLMate API Key
SSLMate | SSLMate Cluster Secret
Stripe | Stripe Live API Secret Key
Stripe | Stripe Test API Secret Key
Stripe | Stripe Live API Restricted Key
Stripe | Stripe Test API Restricted Key
Supabase | Supabase Service Key
Telnyx | Telnyx API V2 Key
Tencent Cloud | Tencent Cloud Secret ID
Tencent WeChat | Tencent WeChat API App ID
Twilio | Twilio Account String Identifier
Twilio | Twilio API Key
Typeform | Typeform {% data variables.product.pat_generic_title_case %}
Uniwise | WISEflow API Key
Valour | Valour Access Token
WakaTime | WakaTime App Secret
WakaTime | WakaTime OAuth Access Token
WakaTime | WakaTime OAuth Refresh Token
Yandex | Yandex.Cloud API Key
Yandex | Yandex.Cloud IAM Cookie
Yandex | Yandex.Cloud IAM Token
Yandex | Yandex.Dictionary API Key
Yandex | Yandex.Cloud Access Secret
Yandex | Yandex.Passport OAuth Token
Zuplo | Zuplo Consumer API

Просмотреть файл

@ -1,135 +0,0 @@
Provider | Supported secret | Secret type
--- | --- | ---
Adafruit IO | Adafruit IO Key | adafruit_io_key
Alibaba Cloud | Alibaba Cloud Access Key ID with Alibaba Cloud Access Key Secret| alibaba_cloud_access_key_id </br>alibaba_cloud_access_key_secret
Amazon | Amazon OAuth Client ID with Amazon OAuth Client Secret | amazon_oauth_client_id </br>amazon_oauth_client_secret
Amazon Web Services (AWS) | Amazon AWS Access Key ID with Amazon AWS Secret Access Key | aws_access_key_id </br>aws_secret_access_key
Amazon Web Services (AWS) | Amazon AWS Session Token with Amazon AWS Temporary Access Key ID and Amazon AWS Secret Access Key | aws_session_token </br>aws_temporary_access_key_id </br>aws_secret_access_key
Asana | Asana {% data variables.product.pat_generic_title_case %} | asana_personal_access_token
Atlassian | Bitbucket Server {% data variables.product.pat_generic_title_case %} | bitbucket_server_personal_access_token
Azure | Azure Active Directory Application Secret | azure_active_directory_application_secret
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Azure | Azure Batch Key Identifiable | azure_batch_key_identifiable{% endif %}
Azure | Azure Cache for Redis Access Key | azure_cache_for_redis_access_key
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Azure | Azure CosmosDB Key Identifiable | azure_cosmosdb_key_identifiable{% endif %}
Azure | Azure DevOps {% data variables.product.pat_generic_title_case %} | azure_devops_personal_access_token
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Azure | Azure ML Studio (classic) Web Service Key | azure_ml_web_service_classic_identifiable_key{% endif %}
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
Azure | Azure Search Admin Key | azure_search_admin_key
Azure | Azure Search Query Key | azure_search_query_key{% endif %}
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
Azure | Azure Storage Account Key | azure_storage_account_key{% endif %}
Checkout.com | Checkout.com Production Secret Key | checkout_production_secret_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Chief Tools | Chief Tools Token | chief_tools_token{% endif %}
Clojars | Clojars Deploy Token | clojars_deploy_token
Databricks | Databricks Access Token | databricks_access_token
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
DevCycle | DevCycle Client API Key | devcycle_client_api_key
DevCycle | DevCycle Server API Key | devcycle_server_api_key
DevCycle | DevCycle Mobile API Key | devcycle_mobile_api_key{% endif %}
DigitalOcean | DigitalOcean {% data variables.product.pat_generic_title_case %} | digitalocean_personal_access_token
DigitalOcean | DigitalOcean OAuth Token | digitalocean_oauth_token
DigitalOcean | DigitalOcean Refresh Token | digitalocean_refresh_token
DigitalOcean | DigitalOcean System Token | digitalocean_system_token
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Discord | Discord API Token V2 | discord_api_token_v2{% endif %}
Discord | Discord Bot Token | discord_bot_token
Doppler | Doppler Personal Token | doppler_personal_token
Doppler | Doppler Service Token | doppler_service_token
Doppler | Doppler CLI Token | doppler_cli_token
Doppler | Doppler SCIM Token | doppler_scim_token
Doppler | Doppler Audit Token | doppler_audit_token
Dropbox | Dropbox Short Lived Access Token | dropbox_short_lived_access_token
Duffel | Duffel Live Access Token | duffel_live_access_token
EasyPost | EasyPost Production API Key | easypost_production_api_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Figma | Figma {% data variables.product.pat_generic_title_case %} | figma_pat{% endif %}
Flutterwave | Flutterwave Live API Secret Key | flutterwave_live_api_secret_key
Fullstory | FullStory API Key | fullstory_api_key
GitHub | GitHub {% data variables.product.pat_generic_title_case %} | github_personal_access_token
GitHub | GitHub OAuth Access Token | github_oauth_access_token
GitHub | GitHub Refresh Token | github_refresh_token
GitHub | GitHub App Installation Access Token | github_app_installation_access_token
GitHub | GitHub SSH Private Key | github_ssh_private_key
Google | Google Cloud Storage Service Account Access Key ID with Google Cloud Storage Access Key Secret | google_cloud_storage_service_account_access_key_id </br>google_cloud_storage_access_key_secret
Google | Google Cloud Storage User Access Key ID with Google Cloud Storage Access Key Secret | google_cloud_storage_user_access_key_id </br>google_cloud_storage_access_key_secret
Google | Google OAuth Client ID with Google OAuth Client Secret | google_oauth_client_id </br>google_oauth_client_secret
Grafana | Grafana API Key | grafana_api_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Grafana | Grafana Cloud API Key | grafana_cloud_api_key
Grafana | Grafana Cloud API Token | grafana_cloud_api_token
Grafana | Grafana Project API Key | grafana_project_api_key
Grafana | Grafana Project Service Account Token | grafana_project_service_account_token{% endif %}
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
HashiCorp | HashiCorp Vault Batch Token (v1.10.0+) | hashicorp_vault_batch_token
HashiCorp | HashiCorp Vault Root Service Token (v1.10.0+) | hashicorp_vault_root_service_token
HashiCorp | HashiCorp Vault Service Token (v1.10.0+) | hashicorp_vault_service_token{% endif %}
{%- ifversion fpt or ghec or ghes > 3.9 or ghae > 3.9 %}
Highnote | Highnote RK Live Key | highnote_rk_live_key
Highnote | Highnote RK Test Key | highnote_rk_test_key
Highnote | Highnote SK Live Key | highnote_sk_live_key
Highnote | Highnote SK Test Key | highnote_sk_test_key{% endif %}
Hubspot | Hubspot API Key | hubspot_api_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Hubspot | Hubspot API Personal Access Key | hubspot_api_personal_access_key{% endif %}
Intercom | Intercom Access Token | intercom_access_token
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
JFrog | JFrog Platform Access Token | jfrog_platform_access_token
JFrog | JFrog Platform API Key | jfrog_platform_api_key{% endif %}
Ionic | Ionic {% data variables.product.pat_generic_title_case %} | ionic_personal_access_token
Ionic | Ionic Refresh Token | ionic_refresh_token
Linear | Linear API Key | linear_api_key
Linear | Linear OAuth Access Token | linear_oauth_access_token
{%- ifversion fpt or ghec or ghes > 3.8 or ghae > 3.8 %}
LogicMonitor | LogicMonitor Bearer Token | logicmonitor_bearer_token
LogicMonitor | LogicMonitor LMV1 Access Key | logicmonitor_lmv1_access_key{% endif %}
Midtrans | Midtrans Production Server Key | midtrans_production_server_key
New Relic | New Relic Personal API Key | new_relic_personal_api_key
New Relic | New Relic REST API Key | new_relic_rest_api_key
New Relic | New Relic Insights Query Key | new_relic_insights_query_key
npm | npm Access Token | npm_access_token
NuGet | NuGet API Key | nuget_api_key
Onfido | Onfido Live API Token | onfido_live_api_token
OpenAI | OpenAI API Key | openai_api_key
PlanetScale | PlanetScale Database Password | planetscale_database_password
PlanetScale | PlanetScale OAuth Token | planetscale_oauth_token
PlanetScale | PlanetScale Service Token | planetscale_service_token
Postman | Postman API Key | postman_api_key
{%- ifversion fpt or ghec or ghes > 3.9 or ghae > 3.9 %}
Postman | Postman Collection Key | postman_collection_key{% endif %}
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
Prefect | Prefect Server API Key | prefect_server_api_key
Prefect | Prefect User API Key | prefect_user_api_key{% endif %}
Proctorio | Proctorio Secret Key | proctorio_secret_key
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
ReadMe | ReadMe API Access Key | readmeio_api_access_token{% endif %}
{%- ifversion fpt or ghec or ghes > 3.5 or ghae > 3.5 %}
redirect.pizza | redirect.pizza API Token | redirect_pizza_api_token{% endif %}
Samsara | Samsara API Token | samsara_api_token
Samsara | Samsara OAuth Access Token | samsara_oauth_access_token
{%- ifversion fpt or ghec or ghes > 3.9 or ghae > 3.9 %}
Segment | Segment Public API Token | segment_public_api_token{% endif %}
SendGrid | SendGrid API Key | sendgrid_api_key
Sendinblue | Sendinblue API Key | sendinblue_api_key
Sendinblue | Sendinblue SMTP Key | sendinblue_smtp_key
Shippo | Shippo Live API Token | shippo_live_api_token
Shopify | Shopify App Shared Secret | shopify_app_shared_secret
Shopify | Shopify Access Token | shopify_access_token
Slack | Slack API Token | slack_api_token
Stripe | Stripe Live API Secret Key | stripe_api_key
{%- ifversion fpt or ghec or ghes > 3.7 or ghae > 3.7 %}
Telnyx | Telnyx API V2 Key | telnyx_api_v2_key{% endif %}
Tencent Cloud | Tencent Cloud Secret ID | tencent_cloud_secret_id
Typeform | Typeform {% data variables.product.pat_generic_title_case %} | typeform_personal_access_token
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
Uniwise | WISEflow API Key | wiseflow_api_key{% endif %}
{%- ifversion fpt or ghec or ghes > 3.9 or ghae > 3.9 %}
WakaTime | WakaTime App Secret | wakatime_pp_secret
WakaTime | WakaTime OAuth Access Token | wakatime_oauth_access_token
WakaTime | WakaTime OAuth Refresh Token | wakatime_oauth_refresh_token{% endif %}
WorkOS | WorkOS Production API Key | workos_production_api_key
{%- ifversion fpt or ghec or ghes > 3.6 or ghae > 3.6 %}
Zuplo | Zuplo Consumer API Key | zuplo_consumer_api_key{% endif %}

2518
data/secret-scanning.yml Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,29 @@
import fs from 'fs'
import path from 'path'
import yaml from 'js-yaml'
import getApplicableVersions from '../../lib/get-applicable-versions.js'
const secretScanningPath = path.join('data/secret-scanning.yml')
export default async function secretScanning(req, res, next) {
if (!req.pagePath.endsWith('code-security/secret-scanning/secret-scanning-patterns'))
return next()
const secretScanningData = yaml.load(fs.readFileSync(secretScanningPath, 'utf-8'))
const { currentVersion } = req.context
// Create separate properties for each table for now - this keeps things simpler in the Markdown.
// In the future if we combine the tables into a single table or some other format, we
// can just add the entire secretScanning array to the context here.
const currentVersionData = secretScanningData.filter((entry) =>
getApplicableVersions(entry.versions).includes(currentVersion)
)
req.context.secretScanning = {
isPublic: currentVersionData.filter((entry) => entry.isPublic),
isPrivateWithGhas: currentVersionData.filter((entry) => entry.isPrivateWithGhas),
hasPushProtection: currentVersionData.filter((entry) => entry.hasPushProtection),
}
return next()
}

Просмотреть файл

@ -37,6 +37,7 @@ import robots from './robots.js'
import earlyAccessLinks from './contextualizers/early-access-links.js'
import categoriesForSupport from './categories-for-support.js'
import triggerError from './trigger-error.js'
import secretScanning from './contextualizers/secret-scanning.js'
import ghesReleaseNotes from './contextualizers/ghes-release-notes.js'
import ghaeReleaseNotes from './contextualizers/ghae-release-notes.js'
import whatsNewChangelog from './contextualizers/whats-new-changelog.js'
@ -263,6 +264,7 @@ export default function (app) {
app.head('/*', fastHead)
// *** Preparation for render-page: contextualizers ***
app.use(asyncMiddleware(instrument(secretScanning, './contextualizers/secret-scanning')))
app.use(asyncMiddleware(instrument(ghesReleaseNotes, './contextualizers/ghes-release-notes')))
app.use(asyncMiddleware(instrument(ghaeReleaseNotes, './contextualizers/ghae-release-notes')))
app.use(asyncMiddleware(instrument(whatsNewChangelog, './contextualizers/whats-new-changelog')))

610
package-lock.json сгенерированный
Просмотреть файл

@ -16,6 +16,7 @@
"@primer/react": "^35.2.2",
"accept-language-parser": "^1.5.0",
"ajv": "^8.11.0",
"ajv-errors": "^3.0.0",
"ajv-formats": "^2.1.1",
"bottleneck": "2.19.5",
"cheerio": "^1.0.0-rc.11",
@ -3534,201 +3535,6 @@
"resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.4.tgz",
"integrity": "sha512-/gApFXWk5CCLFQJL5IYJXxPQuG5tz5nPX4l27A9Zm/+wJxiwFrRSP54AopDxIv4JRp/rGwcgk/lZS/0Clw8jYA=="
},
"node_modules/@next/swc-android-arm-eabi": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.4.tgz",
"integrity": "sha512-P4YSFNpmXXSnn3P1qsOAqz+MX3On9fHrlc8ovb/CFJJoU+YLCR53iCEwfw39e0IZEgDA7ttgr108plF8mxaX0g==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-android-arm64": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.4.tgz",
"integrity": "sha512-4o2n14E18O+8xHlf6dgJsWPXN9gmSmfIe2Z0EqKDIPBBkFt/2CyrH0+vwHnL2l7xkDHhOGfZYcYIWVUR5aNu0A==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-darwin-arm64": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.4.tgz",
"integrity": "sha512-DcUO6MGBL9E3jj5o86MUnTOy4WawIJJhyCcFYO4f51sbl7+uPIYIx40eo98A6NwJEXazCqq1hLeqOaNTAIvDiQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-darwin-x64": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.4.tgz",
"integrity": "sha512-IUlFMqeLjdIzDorrGC2Dt+2Ae3DbKQbRzCzmDq4/CP1+jJGeDXo/2AHnlE+WYnwQAC4KtAz6pbVnd3KstZWsVA==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-freebsd-x64": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.4.tgz",
"integrity": "sha512-475vwyWcjnyDVDWLgAATP0HI8W1rwByc+uXk1B6KkAVFhkoDgH387LW0uNqxavK+VxCzj3avQXX/58XDvxtSlg==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm-gnueabihf": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.4.tgz",
"integrity": "sha512-qZW+L3iG3XSGtlOPmD5RRWXyk6ZNdscLV0BQjuDvP+exTg+uixqHXOHz0/GVATIJEBQOF0Kew7jAXVXEP+iRTQ==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.4.tgz",
"integrity": "sha512-fEPRjItWYaKyyG9N+2HIA59OBHIhk7WC+Rh+LwXsh0pQe870Ykpek3KQs0umjsrEGe57NyMomq3f80/N8taDvA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm64-musl": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.4.tgz",
"integrity": "sha512-rnCTzXII0EBCcFn9P5s/Dho2kPUMSX/bP0iOAj8wEI/IxUEfEElbin89zJoNW30cycHu19xY8YP4K2+hzciPzQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-x64-gnu": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.4.tgz",
"integrity": "sha512-PhXX6NSuIuhHInxPY2VkG2Bl7VllsD3Cjx+pQcS1wTym7Zt7UoLvn05PkRrkiyIkvR+UXnqPUM3TYiSbnemXEw==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-x64-musl": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.4.tgz",
"integrity": "sha512-GmC/QROiUZpFirHRfPQqMyCXZ+5+ndbBZrMvL74HtQB/CKXB8K1VM+rvy9Gp/5OaU8Rxp48IcX79NOfI2LiXlA==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.4.tgz",
"integrity": "sha512-9XKoCXbNZuaMRPtcKQz3+hgVpkMosaLlcxHFXT8/j4w61k7/qvEbrkMDS9WHNrD/xVcLycwhPRgXcns2K1BdBQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-ia32-msvc": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.4.tgz",
"integrity": "sha512-hEyRieZKH9iw4AzvXaQ+Fyb98k0G/o9QcRGxA1/O/O/elf1+Qvuwb15phT8GbVtIeNziy66XTPOhKKfdr8KyUg==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-x64-msvc": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.4.tgz",
"integrity": "sha512-5Pl1tdMJWLy4rvzU1ecx0nHWgDPqoYuvYoXE/5X0Clu9si/yOuBIj573F2kOTY7mu0LX2wgCJVSnyK0abHBxIw==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@ -5185,6 +4991,14 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ajv-errors": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
"integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
"peerDependencies": {
"ajv": "^8.0.1"
}
},
"node_modules/ajv-formats": {
"version": "2.1.1",
"license": "MIT",
@ -9717,20 +9531,6 @@
"devOptional": true,
"license": "ISC"
},
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
"version": "1.1.1",
"license": "MIT"
@ -10812,9 +10612,9 @@
"license": "ISC"
},
"node_modules/image-size": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz",
"integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz",
"integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==",
"optional": true,
"dependencies": {
"queue": "6.0.2"
@ -10823,7 +10623,7 @@
"image-size": "bin/image-size.js"
},
"engines": {
"node": ">=12.0.0"
"node": ">=14.0.0"
}
},
"node_modules/immutable": {
@ -14749,11 +14549,14 @@
}
},
"node_modules/mdast-util-gfm-table": {
"version": "1.0.1",
"license": "MIT",
"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-to-markdown": "^1.0.0"
"mdast-util-from-markdown": "^1.0.0",
"mdast-util-to-markdown": "^1.3.0"
},
"funding": {
"type": "opencollective",
@ -15077,8 +14880,9 @@
}
},
"node_modules/micromark-extension-gfm-table": {
"version": "1.0.2",
"license": "MIT",
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz",
"integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==",
"dependencies": {
"micromark-factory-space": "^1.0.0",
"micromark-util-character": "^1.0.0",
@ -16250,9 +16054,9 @@
}
},
"node_modules/p-queue": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.0.tgz",
"integrity": "sha512-5fP+yVQ0qp0rEfZoDTlP2c3RYBgxvRsw30qO+VtPPc95lyvSG+x6USSh1TuLB4n96IO6I8/oXQGsTgtna4q2nQ==",
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz",
"integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==",
"optional": true,
"dependencies": {
"eventemitter3": "^4.0.7",
@ -16859,7 +16663,7 @@
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-9.1.1.tgz",
"integrity": "sha512-W+nOulP2tYd/ZG99WuZC/I5ljjQQ7EUw/jQGcIb9eu8mDlZxNY2SgcJXTLG9h5gRvqA3uJOe4hZXYsd3EqioMw==",
"deprecated": "< 18.1.0 is no longer supported",
"deprecated": "< 19.2.0 is no longer supported",
"hasInstallScript": true,
"optional": true,
"dependencies": {
@ -20537,17 +20341,16 @@
}
},
"node_modules/website-scraper": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/website-scraper/-/website-scraper-5.0.0.tgz",
"integrity": "sha512-wZP7fSQR86UZSCXfKzd5OlgBb6AdxXN6gVN07Hy2wYxp2+GeqQAIw+sbqXNlPQnpJLwmRZDWp2u6KeuaFOhotw==",
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/website-scraper/-/website-scraper-5.3.1.tgz",
"integrity": "sha512-gogqPXD2gVsxoyd2yRiympw3rA5GuEpD1CaDEJ/J8zzanx7hkbTtneoO1SGs436PpLbWVcUge+6APGLhzsuZPA==",
"optional": true,
"dependencies": {
"cheerio": "1.0.0-rc.10",
"cheerio": "1.0.0-rc.12",
"css-url-parser": "^1.0.0",
"debug": "^4.3.1",
"fs-extra": "^10.0.0",
"got": "^12.0.0",
"lodash": "^4.17.21",
"normalize-url": "^7.0.2",
"p-queue": "^7.1.0",
"sanitize-filename": "^1.6.3",
@ -20557,121 +20360,6 @@
"node": ">=14.14"
}
},
"node_modules/website-scraper/node_modules/cheerio": {
"version": "1.0.0-rc.10",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
"integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
"optional": true,
"dependencies": {
"cheerio-select": "^1.5.0",
"dom-serializer": "^1.3.2",
"domhandler": "^4.2.0",
"htmlparser2": "^6.1.0",
"parse5": "^6.0.1",
"parse5-htmlparser2-tree-adapter": "^6.0.1",
"tslib": "^2.2.0"
},
"engines": {
"node": ">= 6"
},
"funding": {
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
}
},
"node_modules/website-scraper/node_modules/cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
"integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==",
"optional": true,
"dependencies": {
"css-select": "^4.3.0",
"css-what": "^6.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.3.1",
"domutils": "^2.8.0"
},
"funding": {
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/website-scraper/node_modules/css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
"integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
"optional": true,
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.0.1",
"domhandler": "^4.3.1",
"domutils": "^2.8.0",
"nth-check": "^2.0.1"
},
"funding": {
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/website-scraper/node_modules/dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
"optional": true,
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^4.2.0",
"entities": "^2.0.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/website-scraper/node_modules/domhandler": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
"optional": true,
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/website-scraper/node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
"optional": true,
"dependencies": {
"dom-serializer": "^1.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.2.0"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/website-scraper/node_modules/htmlparser2": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
"integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
],
"optional": true,
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^4.0.0",
"domutils": "^2.5.2",
"entities": "^2.0.0"
}
},
"node_modules/website-scraper/node_modules/normalize-url": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.2.0.tgz",
@ -20684,21 +20372,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/website-scraper/node_modules/parse5": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"optional": true
},
"node_modules/website-scraper/node_modules/parse5-htmlparser2-tree-adapter": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
"integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
"optional": true,
"dependencies": {
"parse5": "^6.0.1"
}
},
"node_modules/which": {
"version": "2.0.2",
"dev": true,
@ -23427,84 +23100,6 @@
"resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.4.tgz",
"integrity": "sha512-/gApFXWk5CCLFQJL5IYJXxPQuG5tz5nPX4l27A9Zm/+wJxiwFrRSP54AopDxIv4JRp/rGwcgk/lZS/0Clw8jYA=="
},
"@next/swc-android-arm-eabi": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.4.tgz",
"integrity": "sha512-P4YSFNpmXXSnn3P1qsOAqz+MX3On9fHrlc8ovb/CFJJoU+YLCR53iCEwfw39e0IZEgDA7ttgr108plF8mxaX0g==",
"optional": true
},
"@next/swc-android-arm64": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.4.tgz",
"integrity": "sha512-4o2n14E18O+8xHlf6dgJsWPXN9gmSmfIe2Z0EqKDIPBBkFt/2CyrH0+vwHnL2l7xkDHhOGfZYcYIWVUR5aNu0A==",
"optional": true
},
"@next/swc-darwin-arm64": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.4.tgz",
"integrity": "sha512-DcUO6MGBL9E3jj5o86MUnTOy4WawIJJhyCcFYO4f51sbl7+uPIYIx40eo98A6NwJEXazCqq1hLeqOaNTAIvDiQ==",
"optional": true
},
"@next/swc-darwin-x64": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.4.tgz",
"integrity": "sha512-IUlFMqeLjdIzDorrGC2Dt+2Ae3DbKQbRzCzmDq4/CP1+jJGeDXo/2AHnlE+WYnwQAC4KtAz6pbVnd3KstZWsVA==",
"optional": true
},
"@next/swc-freebsd-x64": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.4.tgz",
"integrity": "sha512-475vwyWcjnyDVDWLgAATP0HI8W1rwByc+uXk1B6KkAVFhkoDgH387LW0uNqxavK+VxCzj3avQXX/58XDvxtSlg==",
"optional": true
},
"@next/swc-linux-arm-gnueabihf": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.4.tgz",
"integrity": "sha512-qZW+L3iG3XSGtlOPmD5RRWXyk6ZNdscLV0BQjuDvP+exTg+uixqHXOHz0/GVATIJEBQOF0Kew7jAXVXEP+iRTQ==",
"optional": true
},
"@next/swc-linux-arm64-gnu": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.4.tgz",
"integrity": "sha512-fEPRjItWYaKyyG9N+2HIA59OBHIhk7WC+Rh+LwXsh0pQe870Ykpek3KQs0umjsrEGe57NyMomq3f80/N8taDvA==",
"optional": true
},
"@next/swc-linux-arm64-musl": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.4.tgz",
"integrity": "sha512-rnCTzXII0EBCcFn9P5s/Dho2kPUMSX/bP0iOAj8wEI/IxUEfEElbin89zJoNW30cycHu19xY8YP4K2+hzciPzQ==",
"optional": true
},
"@next/swc-linux-x64-gnu": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.4.tgz",
"integrity": "sha512-PhXX6NSuIuhHInxPY2VkG2Bl7VllsD3Cjx+pQcS1wTym7Zt7UoLvn05PkRrkiyIkvR+UXnqPUM3TYiSbnemXEw==",
"optional": true
},
"@next/swc-linux-x64-musl": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.4.tgz",
"integrity": "sha512-GmC/QROiUZpFirHRfPQqMyCXZ+5+ndbBZrMvL74HtQB/CKXB8K1VM+rvy9Gp/5OaU8Rxp48IcX79NOfI2LiXlA==",
"optional": true
},
"@next/swc-win32-arm64-msvc": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.4.tgz",
"integrity": "sha512-9XKoCXbNZuaMRPtcKQz3+hgVpkMosaLlcxHFXT8/j4w61k7/qvEbrkMDS9WHNrD/xVcLycwhPRgXcns2K1BdBQ==",
"optional": true
},
"@next/swc-win32-ia32-msvc": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.4.tgz",
"integrity": "sha512-hEyRieZKH9iw4AzvXaQ+Fyb98k0G/o9QcRGxA1/O/O/elf1+Qvuwb15phT8GbVtIeNziy66XTPOhKKfdr8KyUg==",
"optional": true
},
"@next/swc-win32-x64-msvc": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.4.tgz",
"integrity": "sha512-5Pl1tdMJWLy4rvzU1ecx0nHWgDPqoYuvYoXE/5X0Clu9si/yOuBIj573F2kOTY7mu0LX2wgCJVSnyK0abHBxIw==",
"optional": true
},
"@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@ -24692,6 +24287,12 @@
"uri-js": "^4.2.2"
}
},
"ajv-errors": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
"integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
"requires": {}
},
"ajv-formats": {
"version": "2.1.1",
"requires": {
@ -27880,13 +27481,6 @@
"version": "1.0.0",
"devOptional": true
},
"fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"optional": true
},
"function-bind": {
"version": "1.1.1"
},
@ -28618,9 +28212,9 @@
"dev": true
},
"image-size": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz",
"integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz",
"integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==",
"optional": true,
"requires": {
"queue": "6.0.2"
@ -31488,10 +31082,14 @@
}
},
"mdast-util-gfm-table": {
"version": "1.0.1",
"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==",
"requires": {
"@types/mdast": "^3.0.0",
"markdown-table": "^3.0.0",
"mdast-util-to-markdown": "^1.0.0"
"mdast-util-from-markdown": "^1.0.0",
"mdast-util-to-markdown": "^1.3.0"
}
},
"mdast-util-gfm-task-list-item": {
@ -31707,7 +31305,9 @@
}
},
"micromark-extension-gfm-table": {
"version": "1.0.2",
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz",
"integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==",
"requires": {
"micromark-factory-space": "^1.0.0",
"micromark-util-character": "^1.0.0",
@ -32391,9 +31991,9 @@
}
},
"p-queue": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.0.tgz",
"integrity": "sha512-5fP+yVQ0qp0rEfZoDTlP2c3RYBgxvRsw30qO+VtPPc95lyvSG+x6USSh1TuLB4n96IO6I8/oXQGsTgtna4q2nQ==",
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz",
"integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==",
"optional": true,
"requires": {
"eventemitter3": "^4.0.7",
@ -35256,127 +34856,27 @@
"peer": true
},
"website-scraper": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/website-scraper/-/website-scraper-5.0.0.tgz",
"integrity": "sha512-wZP7fSQR86UZSCXfKzd5OlgBb6AdxXN6gVN07Hy2wYxp2+GeqQAIw+sbqXNlPQnpJLwmRZDWp2u6KeuaFOhotw==",
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/website-scraper/-/website-scraper-5.3.1.tgz",
"integrity": "sha512-gogqPXD2gVsxoyd2yRiympw3rA5GuEpD1CaDEJ/J8zzanx7hkbTtneoO1SGs436PpLbWVcUge+6APGLhzsuZPA==",
"optional": true,
"requires": {
"cheerio": "1.0.0-rc.10",
"cheerio": "1.0.0-rc.12",
"css-url-parser": "^1.0.0",
"debug": "^4.3.1",
"fs-extra": "^10.0.0",
"got": "^12.0.0",
"lodash": "^4.17.21",
"normalize-url": "^7.0.2",
"p-queue": "^7.1.0",
"sanitize-filename": "^1.6.3",
"srcset": "^5.0.0"
},
"dependencies": {
"cheerio": {
"version": "1.0.0-rc.10",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
"integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
"optional": true,
"requires": {
"cheerio-select": "^1.5.0",
"dom-serializer": "^1.3.2",
"domhandler": "^4.2.0",
"htmlparser2": "^6.1.0",
"parse5": "^6.0.1",
"parse5-htmlparser2-tree-adapter": "^6.0.1",
"tslib": "^2.2.0"
}
},
"cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
"integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==",
"optional": true,
"requires": {
"css-select": "^4.3.0",
"css-what": "^6.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.3.1",
"domutils": "^2.8.0"
}
},
"css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
"integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
"optional": true,
"requires": {
"boolbase": "^1.0.0",
"css-what": "^6.0.1",
"domhandler": "^4.3.1",
"domutils": "^2.8.0",
"nth-check": "^2.0.1"
}
},
"dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
"optional": true,
"requires": {
"domelementtype": "^2.0.1",
"domhandler": "^4.2.0",
"entities": "^2.0.0"
}
},
"domhandler": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
"optional": true,
"requires": {
"domelementtype": "^2.2.0"
}
},
"domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
"optional": true,
"requires": {
"dom-serializer": "^1.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.2.0"
}
},
"htmlparser2": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
"integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
"optional": true,
"requires": {
"domelementtype": "^2.0.1",
"domhandler": "^4.0.0",
"domutils": "^2.5.2",
"entities": "^2.0.0"
}
},
"normalize-url": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.2.0.tgz",
"integrity": "sha512-uhXOdZry0L6M2UIo9BTt7FdpBDiAGN/7oItedQwPKh8jh31ZlvC8U9Xl/EJ3aijDHaywXTW3QbZ6LuCocur1YA==",
"optional": true
},
"parse5": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"optional": true
},
"parse5-htmlparser2-tree-adapter": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
"integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
"optional": true,
"requires": {
"parse5": "^6.0.1"
}
}
}
},

Просмотреть файл

@ -18,6 +18,7 @@
"@primer/react": "^35.2.2",
"accept-language-parser": "^1.5.0",
"ajv": "^8.11.0",
"ajv-errors": "^3.0.0",
"ajv-formats": "^2.1.1",
"bottleneck": "2.19.5",
"cheerio": "^1.0.0-rc.11",

Просмотреть файл

@ -0,0 +1,88 @@
import { schema } from '../../../lib/frontmatter.js'
// Secret scanning entries have `versions` blocks that match `versions` frontmatter,
// so we can import that part of the FM schema.
const versionsProps = Object.assign({}, schema.properties.versions)
// Tweak the imported versions schema so it works with AJV.
// *** TODO: We can drop the following once the frontmatter.js schema has been updated to work with AJV. ***
const properties = {}
Object.keys(versionsProps.properties).forEach((key) => {
const value = Object.assign({}, versionsProps.properties[key])
// AJV supports errorMessage, not message.
value.errorMessage = value.message
delete value.message
// AJV doesn't support conform, so we'll add semver validation in the lint-secret-scanning-data test.
if (value.conform) {
value.format = 'semver'
delete value.conform
}
properties[key] = value
})
versionsProps.properties = properties
delete versionsProps.required
// *** End TODO ***
// The secret-scanning.json contains an array of objects that look like this:
// {
// "provider": "Azure",
// "supportedSecret": "Azure SQL Connection String",
// "secretType": "azure_sql_connection_string",
// "versions": {
// "fpt": "*",
// "ghec": "*",
// "ghes": "*",
// "ghae": "<3.4"
// },
// "isPublic": true,
// "isPrivateWithGhas": true,
// "hasPushProtection": false
// },
export default {
type: 'array',
items: {
type: 'object',
additionalProperties: false,
required: [
'provider',
'supportedSecret',
// 'secretType', // TODO: Once the secretTypes are fully populated in the JSON, make this required.
'versions',
'isPublic',
'isPrivateWithGhas',
'hasPushProtection',
],
properties: {
provider: {
description: 'the name of the provider',
type: 'string',
},
supportedSecret: {
description: 'the name of the secret',
type: 'string',
},
secretType: {
description: 'the secret type',
type: 'string',
pattern: '[A-Za-z0-9_-]',
},
versions: versionsProps,
isPublic: {
description: 'whether the secret is publicly available',
type: 'boolean',
},
isPrivateWithGhas: {
description: 'whether the secret is available in GHAS',
type: 'boolean',
},
hasPushProtection: {
description: 'whether the secret has push protection',
type: 'boolean',
},
},
},
}

Просмотреть файл

@ -0,0 +1,39 @@
import fs from 'fs'
import yaml from 'js-yaml'
import { get } from 'lodash-es'
import Ajv from 'ajv'
import addErrors from 'ajv-errors'
import semver from 'semver'
import schema from '../helpers/schemas/secret-scanning-schema.js'
const data = yaml.load(fs.readFileSync('data/secret-scanning.yml', 'utf8'))
const ajv = new Ajv({ allErrors: true, allowUnionTypes: true })
addErrors(ajv)
// *** TODO: We can drop this override once the frontmatter schema has been updated to work with AJV. ***
ajv.addFormat('semver', {
validate: (x) => semver.validRange(x),
})
// *** End TODO ***
const validate = ajv.compile(schema)
test('make sure secret scanning data matches the schema', () => {
validate(data)
const errors = (validate.errors || []).map((errorObj) => {
// We have to use AJV's instancePath, which is an index number, to find out which entries are invalid.
const split = errorObj.instancePath.split('/')
split.shift()
const index = split.shift()
const entry = data[index]
const path = split.length ? split.join('.') : null
return path
? `The entry with provider '${entry.provider}' (at '${path}: ${get(entry, path)}') ${
errorObj.message
}`
: `The entry with provider '${entry.provider}' ${errorObj.message}`
})
expect(errors.length, errors.join('\n ')).toBe(0)
})