From 711fce0fc3b6b6d7bf34b1648d8943ce42e8dc5c Mon Sep 17 00:00:00 2001 From: "webops-guacbot[bot]" <214537265+webops-guacbot[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 15:05:18 +0000 Subject: [PATCH 1/6] Translated file updates --- content/es/account_management/_index.md | 4 +- content/es/account_management/api-app-keys.md | 99 +++++-- content/es/account_management/billing/aws.md | 16 + .../guide/csv-headers-billing-migration.md | 3 + .../org_settings/custom_landing.md | 5 +- content/es/agent/_index.md | 172 +++++++++-- content/es/agent/basic_agent_usage/chef.md | 87 +++--- content/es/agent/basic_agent_usage/deb.md | 30 ++ content/es/agent/basic_agent_usage/heroku.md | 43 +-- content/es/agent/guide/dogstream.md | 2 +- .../es/agent/logs/advanced_log_collection.md | 177 ++++++++--- .../troubleshooting/agent_check_status.md | 4 +- content/es/dashboards/guide/context-links.md | 7 +- content/es/dashboards/widgets/event_stream.md | 4 +- .../es/dashboards/widgets/event_timeline.md | 6 +- content/es/dashboards/widgets/geomap.md | 30 +- .../database_monitoring/setup_mysql/aurora.md | 107 +++++-- .../database_monitoring/setup_mysql/azure.md | 107 +++++-- .../database_monitoring/setup_mysql/gcsql.md | 106 +++++-- .../setup_postgres/aurora.md | 15 +- .../setup_postgres/azure.md | 10 +- .../setup_sql_server/azure.md | 45 +-- .../setup_sql_server/gcsql.md | 43 +-- .../es/getting_started/integrations/_index.md | 9 +- .../es/getting_started/integrations/aws.md | 127 ++++---- .../es/getting_started/synthetics/api_test.md | 3 + .../synthetics/browser_test.md | 7 +- ...tric-streams-with-kinesis-data-firehose.md | 12 +- .../guide/aws-integration-troubleshooting.md | 19 +- .../guide/azure-cloud-adoption-framework.md | 2 +- content/es/integrations/guide/azure-portal.md | 9 +- content/es/logs/guide/_index.md | 14 +- ...shooting-with-cross-product-correlation.md | 41 +-- .../es/monitors/guide/create-cluster-alert.md | 3 + content/es/network_monitoring/devices/data.md | 7 +- content/es/opentelemetry/correlate/_index.md | 103 +++++++ .../browser/advanced_configuration.md | 278 +++++++++++++++--- .../browser/collecting_browser_errors.md | 11 +- .../guide/browser-sdk-upgrade.md | 9 +- .../guide/enrich-and-control-rum-data.md | 13 +- .../guide/datadog_forwarder_python.md | 42 +-- .../serverless/libraries_integrations/cli.md | 12 +- content/es/sheets/_index.md | 59 +++- content/es/synthetics/_index.md | 75 +++-- .../es/synthetics/guide/browser-tests-totp.md | 9 +- .../guide/alert_anomalies_p99_database.md | 4 +- ..._apdex_for_your_traces_with_datadog_apm.md | 3 + .../guide/configuring-primary-operation.md | 8 +- .../dd_libraries/cpp.md | 18 +- content/es/tracing/troubleshooting/_index.md | 50 ++-- .../troubleshooting/dotnet_diagnostic_tool.md | 10 +- 51 files changed, 1490 insertions(+), 589 deletions(-) create mode 100644 content/es/agent/basic_agent_usage/deb.md create mode 100644 content/es/opentelemetry/correlate/_index.md diff --git a/content/es/account_management/_index.md b/content/es/account_management/_index.md index 80adb6c7c3f0d..93167738d7c76 100644 --- a/content/es/account_management/_index.md +++ b/content/es/account_management/_index.md @@ -13,9 +13,9 @@ further_reading: title: Gestión de cuentas --- {{< site-region region="gov" >}} -
La plataforma Datadog for Government sólo admite la autenticación SAML o básica mediante nombre de usuario/correo electrónico y contraseña. Antes de configurar la autenticación SAML, asegúrate de definir al menos una cuenta con nombre de usuario/correo electrónico y contraseña para mantener el acceso durante el proceso de configuración. Datadog recomienda habilitar la autenticación multifactor (MFA) para las cuentas basadas en contraseña. +
La plataforma Datadog for Government solo admite SAML o la autenticación básica mediante nombre de usuario/correo electrónico y contraseña. Antes de configurar la autenticación SAML, asegúrate de que se ha establecido al menos una cuenta con nombre de usuario/email y contraseña para mantener el acceso durante el proceso de configuración. Datadog recomienda habilitar la autenticación multifactor (MFA) para las cuentas basadas en contraseña. -Si necesitas habilitar SAML para una cuenta de prueba, ponte en contacto con el servicio de asistencia de Datadog.
+Si necesitas habilitar SAML para una cuenta de prueba, ponte en contacto con el el servicio de asistencia de Datadog.
{{< /site-region >}} diff --git a/content/es/account_management/api-app-keys.md b/content/es/account_management/api-app-keys.md index 1b5e5e204253c..3c1c4597125a5 100644 --- a/content/es/account_management/api-app-keys.md +++ b/content/es/account_management/api-app-keys.md @@ -6,6 +6,8 @@ aliases: - /es/account_management/faq/how-do-i-reset-my-application-keys/ - /es/agent/faq/how-do-i-reset-my-datadog-api-keys/ - /es/account_management/faq/api-app-key-management/ +description: Gestiona claves de API, claves de aplicación y tokens de cliente para + aplicaciones de navegador con funciones de seguridad. title: Claves de API y aplicación --- @@ -17,26 +19,57 @@ Las claves de API son exclusivas de tu organización. El Datadog Agent requiere Las [claves de aplicación][2], junto con la clave de API de tu organización, permiten a los usuarios acceder a la API programática de Datadog. Las claves de aplicación están asociadas a la cuenta de usuario que las creó y, por defecto, tienen los permisos del usuario que las creó. +### Modo de lectura única + +El modo de lectura única (OTR) es una función de seguridad que limita la visibilidad de los secretos de las claves de aplicación únicamente al momento de la creación. Cuando el modo OTR está activado, los secretos de las claves de aplicación solo se muestran una vez durante la creación y no se pueden recuperar posteriormente por motivos de seguridad. + +#### Para las nuevas organizaciones + +Todas las claves de aplicación para nuevas organizaciones matrices (y sus organizaciones secundarias) creadas después del 20 de agosto de 2025 tienen el modo de OTR activado en forma predeterminada. Esta configuración es permanente y no puede modificarse. + +#### Para las organizaciones existentes + +Los administradores de la organización pueden activar o desactivar el modo de OTR desde [**Organization Settings** > **Application Keys** (Configuración de la organización > Claves de aplicación)][2]. Después de activar el modo de OTR: + +- Los secretos de las claves de aplicación solo son visibles una vez, en el momento de su creación +- Ya no se pueden recuperar a través de la interfaz de usuario ni la API. +- Los administradores de la organización pueden activar o desactivar la configuración durante 3 meses después de activarla. +- Transcurridos 3 meses de activación continua, el modo de OTR se convierte en permanente y se suprime la alternancia. + +**Permisos**: Los usuarios deben tener los permisos `org_app_keys_write` y `org_management` para activar o desactivar el modo de OTR para su organización. + ### Contextos + Para proteger mejor tus aplicaciones, puedes indicar contextos de autorización para tus claves de aplicación. De este modo, podrás definir permisos más específicos y minimizar el acceso que las aplicaciones tienen a tus datos de Datadog. Esto te da un control pormenorizado sobre tus aplicaciones y minimiza las vulnerabilidades de seguridad al limitar el acceso externo. Por ejemplo, una aplicación que solo lee dashboards no necesita derechos de administrador para gestionar usuarios ni eliminar los datos de tu organización. La forma recomendada de determinar el contexto de las claves de aplicación es otorgar los mínimos privilegios y permisos necesarios para que una aplicación funcione según lo previsto. A las claves de aplicación con contexto solo se les conceden los contextos indicados por el usuario y ningún otro permiso. Aunque puedes modificar los contextos de autorización de tus claves de aplicación en cualquier momento, deberás valorar cómo esos cambios podrían afectar a la funcionalidad o al acceso de tu aplicación. **Notas:** -- Los usuarios o cuentas de servicio con [permisos][4] para crear o editar claves de aplicación pueden definir el contexto de las claves de aplicación. Los usuarios deben tener el permiso `user_app_keys` para definir el contexto de sus propias claves de aplicación, o el permiso `org_app_keys_write` para definir el contexto de las claves de aplicación que pertenezcan a cualquier usuario de su organización. Los usuarios deben tener el permiso `service_account_write` para definir el contexto de las claves de aplicación en el caso de las cuentas de servicio. +- Los usuarios o cuentas de servicio con [permisos][3] para crear o editar claves de aplicación pueden abarcar claves de aplicación. Un usuario debe tener el permiso `user_app_keys` para abarcar sus propias claves de aplicación o el permiso `org_app_keys_write` para abarcar claves de aplicación propiedad de cualquier usuario de su organización. Un usuario debe tener el permiso `service_account_write` para abarcar claves de aplicación para cuentas de servicio. - Los propietarios de aplicaciones no pueden autorizar una aplicación si les faltan los permisos necesarios, ni siquiera si definen el contexto de una clave de aplicación con contextos de autorización de otra persona. -- Los errores debido a la falta de permisos al escribir claves de aplicación o autorizar aplicaciones mostrarán el código `403 Forbidden`. Encontrarás más información sobre las distintas respuestas de error en la documentación acerca de la [API de Datadog][5]. +- Los errores debidos a la falta de permisos al escribir claves de aplicación o autorizar aplicaciones muestran un error `403 Forbidden`. Encontrará más información sobre las distintas respuestas de error en la documentación de [API de Datadog][4]. - Si el rol o los permisos de algún usuario cambian, los contextos de autorización indicados para sus claves de aplicación seguirán iguales. +### Acceso a API de acciones + +Las API de acciones incluyen: +- [App Builder][5] +- [Conexiones de acciones][6] +- [Workflow Automation (automatización de procesos)][7] + +Para utilizar claves de aplicación con estas API, debes activar el acceso a API de acciones en la clave de aplicación. Esto puede hacerse [a través de la interfaz de usuario][2] o [API][21]. En forma predeterminada, las claves de aplicación no se pueden utilizar con estas API. + +{{< img src="account_management/click-enable-actions-api-access.png" alt="Activar con un clic el acceso a la API de acciones" style="width:80%;" >}} + ## Tokens de cliente Por razones de seguridad, las claves de API no pueden utilizarse para enviar datos desde un navegador, un móvil o una aplicación de TV, ya que quedarían expuestas al cliente. En su lugar, las aplicaciones destinadas al usuario final utilizan tokens de cliente para enviar datos a Datadog. Varios tipos de clientes envían datos que requieren un token de cliente, como los siguientes ejemplos: -- Los recopiladores de logs de [navegador web][6], [Android][7], [iOS][8], [React Native][9], [Flutter][10] y [Roku][11] envían logs. -- Las aplicaciones de [Real User Monitoring][12] envían eventos y logs. +- Los recopiladores de logs para [navegador web][8], [Android][9], [iOS][10], [React Native][11], [Flutter][12] y [Roku][13] envían logs. +- Las aplicaciones [Real User Monitoring][14] envían eventos y logs. Los tokens de cliente son exclusivos de tu organización. Para gestionarlos, accede a **Organization Settings** (Parámetros de organización) y haz clic en la pestaña **Client Tokens** (Tokens de cliente). @@ -46,7 +79,7 @@ Los tokens de cliente son exclusivos de tu organización. Para gestionarlos, acc Para añadir una clave de API o token de cliente de Datadog: -1. Ve a Parámetros de organización y haz clic en la pestaña [**API keys**][1] (Claves de API) o [**Client Tokens**][13] (Tokens de cliente). +1. Va a Configuración de la organización y, a continuación, haz clic en la pestaña [**API keys** (Claves de API)][1] o [**Client Tokens** (Tokens de cliente)][15]. 2. Haz clic en el botón **New Key** (Nueva clave) o **New Client Token** (Nuevo token de cliente), según lo que vayas a crear. 3. Indica un nombre para tu clave o token. 4. Haz clic en **Create API key** (Crear clave de API) o **Create Client Token** (Crear token de cliente). @@ -60,11 +93,11 @@ Para añadir una clave de API o token de cliente de Datadog: ## Eliminar claves de API o tokens de cliente -Para eliminar una clave de API o token de cliente de Datadog, accede a la lista de claves o tokens y haz clic en el icono de la **papelera** con **Revoke** (Revocar) junto a la clave o token que quieras eliminar. +Para eliminar una clave de API o un token de cliente de Datadog, ve a la lista de claves o tokens y haz clic en el icono **Delete** (Eliminar) {{< img src="icons/delete.png" inline="true" style="width:14px;">}} situado junto a la clave o token que desees eliminar. ## Añadir claves de aplicación -Para añadir una clave de aplicación de Datadog, ve a [**Organization Settings** > **Application Keys**][2] (Parámetros de organización > Claves de aplicación). Si tienes [permiso][4] para crear claves de aplicación, haz clic en **New Key** (Nueva clave). +Para añadir una clave de aplicación de Datadog, ve a [**Organization Settings** > **Application Keys** (Configuración de la organización > Claves de aplicación)][2]. Si tienes el [permiso][3] para crear claves de aplicación, haz clic en **New Key** (Nueva clave). {{< img src="account_management/app-key.png" alt="Navega a la página de Claves de aplicación para tu organización en Datadog" style="width:80%;" >}} @@ -72,13 +105,15 @@ Para añadir una clave de aplicación de Datadog, ve a [**Organization Settings
Asegúrate de almacenar de forma segura tu clave de aplicación inmediatamente después de la creación, ya que el secreto de la clave no se puede recuperar más tarde.
{{< /site-region >}} +
Si tu organización tiene activado el modo de lectura única (OTR), asegúrate de almacenar de forma segura tu clave de aplicación inmediatamente después de la creación, ya que el secreto de la clave no se puede recuperar más tarde.
+ **Notas:** - Los nombres de las claves de aplicación no pueden quedar en blanco. ## Eliminar claves de aplicación -Para eliminar una clave de aplicación de Datadog, accede a [**Organization Settings** (Parámetros de organización) > **Application Keys** (Claves de aplicación)][2]. Si tienes [permiso][4] para crear y gestionar claves de aplicación, podrás ver tus claves y hacer clic en **Revoke** (Revocar) junto a la que quieras revocar. Si tienes permiso para gestionar todas las claves de aplicaciones de tu organización, podrás buscar la que quieres revocar y hacer clic en **Revoke** junto a ella. +Para eliminar una clave de aplicación de Datadog, ve a [**Organization Settings** > **Application Keys** (Configuración de la organización > Claves de aplicación)][2]. Si tienes el [permiso][3] para crear y gestionar claves de aplicación, puedes ver tus propias claves y hacer clic en **Revoke** (Revocar) junto a la clave que deseas revocar. Si tienes el permiso para gestionar todas las claves de aplicación de la organización, puedes buscar la clave que deseas revocar y hacer clic en **Revoke** (Revocar) junto a ella. ## Retraso en la propagación de claves y coherencia final @@ -87,14 +122,14 @@ Las claves de API y de aplicación de Datadog siguen un modelo de coherencia eve Como resultado: - No utilices nuevas claves de API o de aplicación inmediatamente en flujos de trabajo críticos. Deja un breve tiempo (unos segundos) para la propagación. Puedes implementar una estrategia de reintento con un backoff exponencial corto para manejar errores transitorios durante el intervalo de propagación. -- Para validar si una clave de API está activa y utilizable, llama al endpoint [/api/v1/validate][18]. +- Para validar si una clave de API está activa y utilizable, llama al endpoint [/api/v1/validate][16]. - Para verificar que una clave de aplicación está activa, utiliza el endpoint `/api/v2/validate_keys` con el par de claves adecuado. Intentar utilizar una clave recién creada antes de que se haya propagado completamente puede provocar errores de autenticación temporales como 403 Forbidden o 401 Unauthorized. ## Definir el contexto de claves de aplicación -Para especificar contextos de autorización para claves de aplicación, [haz una solicitud a la API de Datadog][5] o a la interfaz de usuario para crear o editar una clave de aplicación. Los contextos pueden especificarse para claves de aplicación propiedad del [usuario actual][14] o de una [cuenta de servicio][15]. Si no se especifica este campo, las claves de aplicación tendrán por defecto los mismos contextos y permisos que el usuario que las creó. +Para especificar ámbitos de autorización para claves de aplicación, [realiza una solicitud a la API de Datadog ][4] o a la interfaz de usuario para crear o editar una clave de aplicación. Se pueden especificar ámbitos para claves de aplicación propiedad del [usuario actual][17] o una [cuenta de servicio][18]. Si no se especifica este campo, las claves de aplicación tendrán en forma predeterminada los mismos ámbitos y permisos que el usuario que las creó. **Notas:** @@ -106,7 +141,7 @@ Valora la posibilidad de configurar varias claves de API para tu organización. El uso de varias claves de API te permite rotar las claves como parte de tus protocolos de seguridad, o revocar una clave en concreto si se expone inadvertidamente o si quieres dejar de usar el servicio al que está asociada. -Si tu organización necesita más del límite incorporado de 50 claves de API, ponte en contacto con [Soporte][16] para solicitar información sobre cómo aumentar tu límite. +Si tu organización necesita más del límite incorporado de 50 claves de API, ponte en contacto con [Asistencia técnica][19] para solicitar información sobre cómo aumentar tu límite. ## Desactivar una cuenta de usuario @@ -114,7 +149,7 @@ Cuando la cuenta de un usuario está desactivada, se revocan todas las claves de ## Transferir claves -Por motivos de seguridad, Datadog no transfiere claves de aplicaciones de un usuario a otro. Si necesitas compartir una clave de aplicación, utiliza una [cuenta de servicio][17]. +Por motivos de seguridad, Datadog no transfiere claves de aplicaciones de un usuario a otro. Si necesitas compartir una clave de aplicación, utiliza una [cuenta de servicio][20]. ## Qué hacer si una clave de API o aplicación se ve expuesta @@ -135,26 +170,30 @@ Sigue estos pasos para proteger tu cuenta: - Nuevos recursos - Cambios en permisos o roles -Si se detecta alguna actividad inusual o si necesitas más información sobre cómo proteger tu cuenta, ponte en contacto con el [soporte de Datadog][16]. +Si detectas alguna actividad inusual o necesitas más ayuda para proteger tu cuenta, ponte en contacto con [Asistencia técnica de Datadog][19]. ## Solucionar problemas -¿Necesitas ayuda? Ponte en contacto con el [soporte de Datadog][16]. +¿Necesitas ayuda? Ponte en contacto con el [servicio de asistencia de Datadog][19]. [1]: https://app.datadoghq.com/organization-settings/api-keys -[2]: https://app.datadoghq.com/access/application-keys -[4]: /es/account_management/rbac/permissions -[5]: /es/api/latest/key-management/ -[6]: /es/logs/log_collection/javascript/ -[7]: /es/logs/log_collection/android/ -[8]: /es/logs/log_collection/ios/ -[9]: /es/logs/log_collection/reactnative/ -[10]: /es/logs/log_collection/flutter/ -[11]: /es/logs/log_collection/roku/ -[12]: /es/real_user_monitoring/ -[13]: https://app.datadoghq.com/organization-settings/client-tokens -[14]: /es/api/latest/key-management/#create-an-application-key-for-current-user -[15]: /es/api/latest/service-accounts/ -[16]: /es/help/ -[17]: /es/account_management/org_settings/service_accounts/ -[18]: /es/api/latest/authentication/#validate-api-key \ No newline at end of file +[2]: https://app.datadoghq.com/organization-settings/application-keys +[3]: /es/account_management/rbac/permissions +[4]: /es/api/latest/key-management/ +[5]: /es/api/latest/app-builder/ +[6]: /es/api/latest/action-connection/ +[7]: /es/api/latest/workflow-automation/ +[8]: /es/logs/log_collection/javascript/ +[9]: /es/logs/log_collection/android/ +[10]: /es/logs/log_collection/ios/ +[11]: /es/logs/log_collection/reactnative/ +[12]: /es/logs/log_collection/flutter/ +[13]: /es/logs/log_collection/roku/ +[14]: /es/real_user_monitoring/ +[15]: https://app.datadoghq.com/organization-settings/client-tokens +[16]: /es/api/latest/authentication/#validate-api-key +[17]: /es/api/latest/key-management/#create-an-application-key-for-current-user +[18]: /es/api/latest/service-accounts/ +[19]: /es/help/ +[20]: /es/account_management/org_settings/service_accounts/ +[21]: /es/api/latest/action-connection/#register-a-new-app-key \ No newline at end of file diff --git a/content/es/account_management/billing/aws.md b/content/es/account_management/billing/aws.md index e8282a62081b3..9c38b19d34698 100644 --- a/content/es/account_management/billing/aws.md +++ b/content/es/account_management/billing/aws.md @@ -52,6 +52,22 @@ datadog:monitored,env:production,instance-type:c1.*,!region:us-east-1 Opcionalmente, puedes [enviar métricas de CloudWatch a Datadog utilizando CloudWatch Metric Streams y Amazon Data Firehose][8], en lugar de utilizar el método de sondeo de API predeterminado. Si tu organización utiliza el método CloudWatch Metric Streams con Kinesis, no se aplican las reglas de exclusión de recursos de AWS definidas en la página de integración de AWS de Datadog. Debes gestionar todas las reglas para incluir y excluir espacios de nombres de métricas o nombres específicos de métricas en la configuración de CloudWatch Metric Streams para cada una de tus cuentas de AWS en la consola de AWS. +## Comprobar si un host es monitorizado por el Agent o por AWS + +En la lista de hosts de infraestructura: + +- **Monitorizado por la integración AWS** + + Si un host solo muestra el logotipo de AWS o si tus métricas se limitan al espacio de nombres `aws.*`, esto indica que el host está siendo monitorizado exclusivamente por la integración AWS. + + {{< img src="account_management/billing/infra-aws.png" alt="Lista de hosts de infraestructura que muestra varios hosts solo con el logotipo de AWS, lo que indica una monitorización realizada por la integración AWS." >}} + +- **Monitorizado por el Datadog Agent** + + Si un host muestra el logotipo del Datadog Agent pero no el logotipo de AWS, o si sus métricas se recopilan del Datadog Agent (como `datadog.*`, `system.*`, etc.), esto indica que el host está siendo monitorizado por el Datadog Agent. + + {{< img src="account_management/billing/infra-agent.png" alt="Lista de hosts de infraestructura que muestra un host con el logotipo del Datadog Agent, pero no con el logotipo de AWS, lo que indica una monitorización realizada por el Datadog Agent." >}} + ## Solucionar problemas Si tienes preguntas técnicas, contacta con el [soporte de Datadog][6]. diff --git a/content/es/account_management/guide/csv-headers-billing-migration.md b/content/es/account_management/guide/csv-headers-billing-migration.md index 5c27aa210a1f0..acbd4d8c35502 100644 --- a/content/es/account_management/guide/csv-headers-billing-migration.md +++ b/content/es/account_management/guide/csv-headers-billing-migration.md @@ -1,4 +1,7 @@ --- +description: Actualiza tu automatización para las nuevas cabeceras CSV de Plan y Uso + que alinearán datos de costes con visualizaciones en la aplicación a partir del + 19 de febrero de 2024. further_reading: - link: /account_management/plan_and_usage/ tag: Documentación diff --git a/content/es/account_management/org_settings/custom_landing.md b/content/es/account_management/org_settings/custom_landing.md index 8dd774c57803c..2a1fd52ae1a5b 100644 --- a/content/es/account_management/org_settings/custom_landing.md +++ b/content/es/account_management/org_settings/custom_landing.md @@ -1,4 +1,7 @@ --- +description: Configura un dashboard personalizado como página de inicio de tu organización + para definir la primera impresión y controlar la información que ven los usuarios + al iniciar sesión en Datadog. title: Página de destino personalizada de una organización --- @@ -12,7 +15,7 @@ Puedes personalizar un dashboard con la información que quieres que vean tus us ## Establecer una página de destino personalizada -Sólo los usuarios con un rol de administrador de Datadog o un permiso de gestión de la organización (`org_management`) pueden establecer la página de destino personalizada de una organización. +Solo los usuarios con el rol de administrador de Datadog o el permiso de gestión de la organización (`org_management`) pueden configurar la página de inicio personalizada de una organización. Las páginas de inicio personalizadas no están disponibles durante los periodos de pruebas gratuitos. Para configurar una página de destino personalizada, sigue los pasos que se indican a continuación: diff --git a/content/es/agent/_index.md b/content/es/agent/_index.md index 390f6e9cb2576..4b5eaad950bd8 100644 --- a/content/es/agent/_index.md +++ b/content/es/agent/_index.md @@ -4,6 +4,10 @@ aliases: - /es/agent/faq/install-core-extra - /es/logs/faq/can-the-datadog-agent-be-used-to-send-only-logs - /es/agent/faq/the-datadog-agent-for-logs-or-traces-only +- /es/agent/basic_agent_usage/ +- /es/guides/basic_agent_usage/ +- /es/agent/faq/where-is-the-configuration-file-for-the-agent/ +- /es/agent/faq/log-location cascade: - _target: lang: en @@ -45,45 +49,155 @@ La versión 7 del Agent ya está disponible. }}

-Datadog recomienda actualizar el Datadog Agent con cada versión secundaria y de parche. O bien, al menos, actualizarlo una vez al mes.

-

-Actualizar a una versión principal del Datadog Agent y mantenerla actualizada es la única forma compatible de obtener las últimas funcionalidades y correcciones del Agent. Sin embargo, el Agent cuenta con actualizaciones frecuentes y puede ser todo un reto gestionarlas a escala empresarial. Esto no significa que debas esperar a las versiones principales para actualizarlo. La frecuencia de actualización adecuada para tu organización depende de la infraestructura y la forma de gestionar la configuración, pero lo aconsejable es que sea mensual.

+Datadog recomienda actualizar el Datadog Agent con cada versión secundaria y de parche o, como mínimo, mensualmente.

-Para llevar a cabo la actualización básica del Datadog Agent entre dos versiones secundarias de un host determinado, ejecuta el comando de instalación correspondiente para tu plataforma.

-

-La numeración de las versiones del Datadog Agent sigue las reglas de SemVer.

+Actualizar a una versión principal del Datadog Agent y mantenerlo actualizado es la única forma admitida de obtener las últimas funciones y correcciones del Agent.

-{{< whatsnext desc="Esta sección incluye los siguientes temas:">}} - {{< nextlink href="/agent/basic_agent_usage">}}Uso básico del Agent: obtén más información sobre el Datadog Agent, incluido los detalles de la arquitectura, CLI, sobrecarga y herramientas de gestión de la configuración.{{< /nextlink >}} - {{< nextlink href="/agent/docker">}}Docker: instala y configura el Datadog Agent en Docker. {{< /nextlink >}} - {{< nextlink href="/agent/kubernetes">}}Kubernetes: instala y configura el Datadog Agent en Kubernetes.{{< /nextlink >}} - {{< nextlink href="/agent/cluster_agent">}}Cluster Agent: instala y configura el Cluster Agent para Kubernetes, una versión del Datadog Agent creada para recopilar de manera eficaz datos de monitorización de un clúster orquestado.{{< /nextlink >}} - {{< nextlink href="/agent/amazon_ecs">}}Amazon ECS: instala y configura el Datadog Agent en Amazon ECS.{{< /nextlink >}} - {{< nextlink href="integrations/ecs_fargate/">}}AWS Fargate: instala y configura el Datadog Agent con Amazon ECS en AWS Fargate.{{< /nextlink >}} - {{< nextlink href="/agent/iot">}}IoT: instala y configura el Datadog IoT Agent, una versión del Datadog Agent optimizada para monitorizar dispositivos IoT y aplicaciones integradas.{{< /nextlink >}} - {{< nextlink href="/agent/logs">}}Recopilación de logs: habilita y configura la recopilación de logs en el Datadog Agent.{{< /nextlink >}} - {{< nextlink href="/agent/configuration/proxy">}}Proxy: si la configuración de tu red restringe el tráfico saliente, utiliza un proxy para el tráfico del Agent.{{< /nextlink >}} - {{< nextlink href="/agent/versions/">}}Versiones: el Agent 7 es la última versión principal del Datadog Agent. Conoce los cambios entre las versiones principales del Agent y cómo actualizar.{{< /nextlink >}} - {{< nextlink href="/agent/troubleshooting">}}Solución de problemas: encuentra información para solucionar problemas relacionados con el Datadog Agent.{{< /nextlink >}} - {{< nextlink href="/agent/guide">}}Guías: tutoriales paso a paso detallados para utilizar el Agent.{{< /nextlink >}} - {{< nextlink href="/agent/security">}}Seguridad: información sobre las principales capacidades y características de seguridad disponibles para los clientes que garantizan que su entorno sea seguro.{{< /nextlink >}} - {{< nextlink href="/getting_started/observability_pipelines">}}Configuración de pipelines de observabilidad y Datadog: despliega el worker de pipelines de observabilidad como un agregador para recopilar, transformar y redirigir todos tus logs y métricas a cualquier destino.{{< /nextlink >}} +## Gestión del Agent + +### Gestión del Agent con Fleet Automation (recomendado) +[Fleet Automation][15] es el principal workflow (UI) / proceso (generic) en la aplicación para instalar, actualizar, configurar y solucionar problemas del Datadog Agent a escala. + +{{< img src="/agent/basic_agent_usage/basic_agent_2_july_25.png" alt="La vista de Fleet Automation que te permite gestionar centralmente tus Datadog Agents en un solo lugar." style="width:100%;">}} + + +- **Ver configuración e historial**: Visualiza cada Agent de tu flota, su versión, productos habilitados, archivos de configuración y cambios históricos desde una sola page (página). +- **Actualizar Agents obsoletos][13]**: Activa las actualizaciones remotas de tus Agents para mantener tu flota actualizada en unos pocos clics. +- **[Enviar una flare para compatibilidad][14]**: Desde la pestaña Compatibilidad de un host, genera una flare y adjúntala a un case (incidencia) de Compatibilidad existente o nuevo sin necesidad de utilizar la línea de comandos. +- **Uso de claves de API de auditoría**: Identifica qué Agents están utilizando una clave de API específica y rota las claves de forma segura. + + +### GUI del Datadog Agent Manager + +
La GUI del Agent no es compatible con las plataformas de Windows de 32 bits.
+ +Utiliza la GUI del Datadog Agent Manager para: +- Ver la información de estado del Agent +- Ver todos los checks en ejecución +- Ver el log del Agent +- Editar el archivo de configuración (`datadog.yaml`) del Agent +- Añadir o editar los checks del Agent +- Enviar flares + +La interfaz gráfica de usuario del administrador del Datadog Agent Manager está activada en forma predeterminada en Windows y macOS y se ejecuta en el puerto `5002`. Utiliza el comando `datadog-agent launch-gui` para abrir la interfaz gráfica de usuario en tu navegador web predeterminado. + +Puedes cambiar el puerto predeterminado de la GUI en tu archivo de configuración `datadog.yaml`. Para deshabilitar la GUI, establece el valor del puerto en `-1`. En Linux, la GUI se encuentra deshabilitada por defecto. + +Requisitos de la GUI: +- Las cookies deben estar habilitadas en tu navegador. La GUI genera y guarda un token en el navegador, que se utiliza para autenticar todas las comunicaciones con el servidor de la GUI. +- Para iniciar la GUI, el usuario debe tener los permisos necesarios. Si puedes abrir `datadog.yaml`, puedes utilizar la GUI. +- Por razones de seguridad, **solo** se puede acceder a la GUI desde la interfaz de red local (`localhost`/`127.0.0.1`), por lo que debes estar en el host donde se ejecuta el Agent. No puedes ejecutar el Agent en una VM o contenedor y acceder a este desde la máquina host. + +### Interfaz de línea de comandos + +A partir del Agent 6, la interfaz de línea de comandos del Agent se basa en subcomandos. Para obtener la lista completa de los subcomandos del Agent, consulta los [comandos del Agent][2]. + +## Aprender más sobre el Datadog Agent + +### Actualizar el Agent + +Para llevar a cabo la actualización básica del Datadog Agent de forma manual entre dos versiones secundarias de un host determinado, ejecuta el [comando de instalación correspondiente para tu plataforma][7]. + +**Nota**: Si quieres actualizar de forma manual una integración específica del Agent, consulta la [guía de gestión de integraciones][8]. + +### Archivos de configuración + +Consulta la [documentación sobre los archivos de configuración del Agent][9]. + +### Sitio Datadog + +Edita el [archivo de configuración principal del Agent][10], `datadog.yaml`, para establecer el parámetro `site` (por defecto, `datadoghq.com`). + +```yaml +site: {{< region-param key="dd_site" >}} +``` + +**Nota**: Consulta la [documentación de Empezando con los sitios de Datadog][11] para obtener más información sobre el parámetro `site`. + +### Localización de logs + +Consulta la [documentación sobre los archivos de log del Agent][12]. + +## Sobrecarga del Agent + +A continuación, se muestra un ejemplo del consumo de recursos del Datadog Agent. Las pruebas se realizaron en una instancia `c5.xlarge` de una máquina de Amazon EC2 (4 VCPU/8 GB de RAM) y se observó un rendimiento comparable para instancias basadas en ARM64 con recursos similares. El `datadog-agent` estándar se ejecutó con un check de proceso para monitorizar el propio Agent. Habilitar más integraciones puede aumentar la cantidad de recursos que consume el Agent. +Habilitar los checks de JMX obliga al Agent a utilizar más memoria dependiendo del número de beans expuestos por los JVMs monitorizados. Habilitar los Agents de rastreo y proceso también aumenta el consumo de recursos. + +* Versión de prueba del Agent: 7.34.0 +* CPU: ~ 0,08 % de la CPU utilizada en promedio +* Memoria: ~ 130 MB de RAM utilizados (memoria RSS) +* Ancho de banda de red: ~ 140 B/s ▼ | 800 B/s ▲ +* Disco: + * Linux: de 830 MB a 880 MB, dependiendo de la distribución + * Windows: 870 MB + +**Recopilación de logs**: + +Los resultados que se muestran a continuación se obtuvieron a partir de una recopilación de *110 KB de logs por segundo* de un archivo con el [Forwarder de HTTP][6] habilitado. Muestra la evolución del uso de recursos en los distintos niveles de compresión disponibles. + +{{< tabs >}} +{{% tab "Nivel 6 de compresión HTTP" %}} + +* Versión de prueba del Agent: 6.15.0 +* CPU: ~ 1,5 % de la CPU utilizada en promedio +* Memoria: ~ 95 MB de RAM utilizados. +* Ancho de banda de red: ~ 14 KB/s ▲ + +{{% /tab %}} +{{% tab "Nivel 1 de compresión HTTP" %}} + +* Versión de prueba del Agent: 6.15.0 +* CPU: ~ 1 % de la CPU utilizada en promedio +* Memoria: ~ 95 MB de RAM utilizados. +* Ancho de banda de red: ~ 20 KB/s ▲ + +{{% /tab %}} +{{% tab "HTTP sin comprimir" %}} + +* Versión de prueba del Agent: 6.15.0 +* CPU: ~ 0,7 % de la CPU utilizada en promedio +* Memoria: ~ 90 MB de RAM utilizados (memoria RSS) +* Ancho de banda de red: ~ 200 KB/s ▲ + +{{% /tab %}} +{{< /tabs >}} + + +## Recursos adicionales +{{< whatsnext desc="This section includes the following topics:">}} + {{< nextlink href="/agent/kubernetes">}}Kubernetes: Instala y configura el Datadog Agent en Kubernetes.{{< /nextlink >}} + {{< nextlink href="/agent/cluster_agent">]]Agent del clúster: Instala y configura el Agent del clúster para Kubernetes, una versión del Datadog Agent creada para recopilar eficazmente datos de monitorización de todo un clúster orquestado.{{< /nextlink >}} + {{< nextlink href="/agent/amazon_ecs">}}AmazonECS: Instala y configura el Datadog Agent en Amazon ECS.{{< /nextlink >}} + {{< nextlink href="integrations/ecs_fargate/">}}AWS Fargate: Instala y configura el Datadog Agent con Amazon ECS en AWS Fargate{{< /nextlink >}} + {{< nextlink href="/agent/iot">}}IoT: Instala y configura el Datadog IoT Agent, una versión del Datadog Agent optimizada para monitorizar dispositivos y aplicaciones integradas de IoT.{{< /nextlink >}} + {{< nextlink href="/agent/logs">}}Recopilación de logs: Activa y configura la recopilación de logs en la aplicación del Datadog Agent.{{< /nextlink >}} + {{< nextlink href="/agent/configuration/proxy">}}Proxy: Si la configuración de tu red restringe el tráfico saliente, utiliz un proxy para el tráfico del Agent.{{< /nextlink >}} + {{< nextlink href="/agent/versions/">}}Versiones: El Agent 7 es la última versión principal del Datadog Agent. Más información sobre los cambios entre las versiones principales del Agent y cómo actualizarlo.{{< /nextlink >}} + {{< nextlink href="/agent/troubleshooting">]]Solucionar problemas: Encuentra información sobre solucionar problemas para el Datadog Agent.{{< /nextlink >}} + {{< nextlink href="/agent/guide">]]Guías: Se trata de tutoriales detallados, paso a paso, para el uso del Agent.{{< /nextlink >}} + {{< nextlink href="/agent/security">]]Seguridad: Información sobre las principales capacidades y funciones de seguridad a disposición de los clientes para garantizar la seguridad de su entorno.{{< /nextlink >}} + {{< nextlink href="/getting_started/observability_pipelines">}}Configura Observability Pipelines y Datadog: Despliega Observability Pipelines Worker como agregador para recopilar, transformar y redirigir todos tus logs y métricas a cualquier destino.{{< /nextlink >}} {{< /whatsnext >}} -## Leer más +## Referencias adicionales {{< partial name="whats-next/whats-next.html" >}} [1]: https://github.com/DataDog/datadog-agent -[2]: https://app.datadoghq.com/account/settings/agent/latest?platform=aws -[3]: https://github.com/DataDog/datadog-agent/tree/main/Dockerfiles/dogstatsd/alpine \ No newline at end of file +[2]: /es/agent/configuration/agent-commands/ +[6]: /es/agent/logs/log_transport/?tab=https#enforce-a-specific-transport +[7]: https://app.datadoghq.com/account/settings/agent/latest +[8]: /es/agent/guide/integration-management/ +[9]: /es/agent/configuration/agent-configuration-files/ +[10]: /es/agent/configuration/agent-configuration-files/#agent-main-configuration-file +[11]: /es/getting_started/site/ +[12]: /es/agent/configuration/agent-log-files/ +[13]: /es/agent/fleet_automation/remote_management/#remotely-upgrade-your-agents +[14]: /es/agent/troubleshooting/send_a_flare/?tab=agent#send-a-flare-from-the-datadog-site +[15]: /es/agent/fleet_automation \ No newline at end of file diff --git a/content/es/agent/basic_agent_usage/chef.md b/content/es/agent/basic_agent_usage/chef.md index 125759fefed66..b47787ddfd8c3 100644 --- a/content/es/agent/basic_agent_usage/chef.md +++ b/content/es/agent/basic_agent_usage/chef.md @@ -3,6 +3,9 @@ dependencies: - https://github.com/DataDog/chef-datadog/blob/main/README.md title: Chef --- +El cookbook del Datadog Chef automatiza la instalación y configuración del Datadog Agent en las plataformas Linux y Windows compatibles. El libro de recetas es compatible con `chef-client >= 12.7` y admite las plataformas Windows y Linux. Para obtener referencias completas de atributos, recetas, ejemplos de uso y patrones de configuración de integraciones, consulta la [sección de configuraciones avanzadas](#advanced-configurations). + + Las recetas del Datadog Chef se usan para desplegar los componentes y la configuración de Datadog automáticamente. El cookbook es compatible con: * Datadog Agent v7.x (predeterminado) @@ -12,11 +15,9 @@ Las recetas del Datadog Chef se usan para desplegar los componentes y la configu **Nota**: Es posible que esta página describa funciones que no están disponibles en la versión que has elegido. Consulta el archivo README de la etiqueta git o la versión del GEM de la documentación de tu versión. -## Configuración - -### Requisitos +## Requisitos previos -El cookbook de Datadog Chef es compatible con `chef-client` >= 12.7. Si necesitas compatibilidad con Chef < 12.7, usa la [versión 2.x del cookbook][2]. Consulta [CHANGELOG][3] para más información. +El cookbook del Datadog Chef es compatible con `chef-client` >= 12.7. Si necesitas compatibilidad con Chef < 12.7, usa la [versión 2.x del cookbook][2]. Consulta [CHANGELOG][3] para más información. #### Platformas @@ -47,6 +48,8 @@ Los siguientes cookbooks de Opscode son dependencias: **Usuarios de Chef 13**: Con Chef 13 y `chef_handler` 1.x, puede que la receta `dd-handler` os dé algún problema. La única solución conocida es actualizar la dependencia a `chef_handler` >= 2.1. +## Configuración + ### Instalación 1. Añade el cookbook a tu servidor de Chef con [Berkshelf][5] o [Knife][6]: @@ -83,7 +86,7 @@ Los siguientes cookbooks de Opscode son dependencias: 5. Espera a que se ejecute el próximo `chef-client` programado o actívalo manualmente. -#### Atributos de Datadog +### Atributos de Datadog Puedes usar los siguientes métodos para añadir tus [claves de API y aplicación de Datadog][4]: @@ -93,11 +96,11 @@ Puedes usar los siguientes métodos para añadir tus [claves de API y aplicació **Nota**: Cuando se usa el estado de ejecución para guardar las claves de API y aplicación, hay que configurarlas en el momento de la compilación y antes que `datadog::dd-handler` en la lista de ejecuciones. -#### Configuración extra +## Configuraciones avanzadas Para añadir más elementos al archivo de configuración del Agent (generalmente, `datadog.yaml`) sin que estén directamente disponibles como atributos del cookbook, usa el atributo `node['datadog']['extra_config']`. Se trata de un atributo hash que se ordena dentro del archivo de configuración como corresponde. -##### Ejemplos +### Ejemplos El código siguiente define el campo `secret_backend_command` en el archivo de configuración `datadog.yaml`: @@ -123,7 +126,7 @@ Usa la sintaxis de objeto para los atributos anidados. El código siguiente defi default['datadog']['extra_config']['logs_config'] = { 'use_port_443' => true } ``` -#### Despliegue de Chef en AWS OpsWorks +### Despliegue de Chef en AWS OpsWorks Sigue los pasos siguientes para desplegar el Datadog Agent con Chef en AWS OpsWorks: @@ -170,7 +173,7 @@ run_list %w( **Nota**: No se usa `data_bags` en esta receta porque es improbable que haya varias claves de API con una sola clave de aplicación. -## Versiones +### Versiones Por defecto, la actual versión principal de este cookbook instala el Agent v7. Los siguientes atributos sirven para controlar la versión del Agent instalada: @@ -183,7 +186,7 @@ Por defecto, la actual versión principal de este cookbook instala el Agent v7. Consulta el ejemplo [attributes/default.rb][1] correspondiente a tu versión del cookbook para ver todos los atributos disponibles. -### Actualizar +#### Actualización Los nombres de algunos atributos han cambiado entre las versiones 3.x y 4.x del cookbook. Usa esta tabla de referencia para actualizar tu configuración: @@ -216,7 +219,7 @@ default_attributes( ) ``` -### Pasar a una versión anterior +#### Pasar a una versión anterior Para cambiar a una versión anterior del Agent, define `'agent_major_version'`, `'agent_version'` y `'agent_allow_downgrade'`. @@ -232,11 +235,11 @@ El siguiente ejemplo muestra cómo se puede cambiar del Agent v7 al v6. Para pas ) ``` -### Desinstalar +#### Desinstalar Para desinstalar el Agent, elimina la receta `dd-agent` y añade la receta `remove-dd-agent` sin atributos. -### Repositorio personalizado del Agent +#### Repositorio personalizado del Agent Para utilizar un Agent de un repositorio personalizado, puedes configurar la opción `aptrepo`. @@ -252,25 +255,25 @@ El ejemplo siguiente utiliza el repositorio de preparación: } ``` -## Recetas +### Recetas Accede a las [recetas de Datadog Chef en GitHub][7]. -### Predeterminado +#### Valor predeterminado La [receta predeterminada][8] es un parámetro. -### Agent +#### Agent La [receta dd-agent][9] instala el Datadog Agent en el sistema de destino, establece tu [clave de API de Datadog][4] e inicia el servicio para enviar métricas de sistemas locales. **Nota**: Los usuarios de Windows que actualicen las versiones del Agent <= 5.10.1 a >= 5.12.0 a otras posteriores, deben definir el atributo `windows_agent_use_exe` como `true`. Para más información, consulta la [wiki de dd-agent][10]. -### Handler +#### Handler La [receta dd-handler][11] instala el GEM [chef-handler-datadog][12] e invoca el handler al final de una ejecución de Chef para enviar los detalles al muro de noticias. -### DogStatsD +#### DogStatsD Para instalar una biblioteca en un lenguaje concreto para interactuar con DogStatsD: @@ -280,7 +283,7 @@ Para instalar una biblioteca en un lenguaje concreto para interactuar con DogSta python_package 'dogstatsd-python' # assumes python and pip are installed ``` -### Rastreo +#### Rastreo Para instalar una biblioteca en un lenguaje concreto para rastrear aplicaciones (APM): @@ -290,11 +293,11 @@ Para instalar una biblioteca en un lenguaje concreto para rastrear aplicaciones python_package 'ddtrace' # assumes python and pip are installed ``` -### Integraciones +#### Integraciones Hay muchas [recetas][7] que pueden ayudarte a desplegar los archivos de configuración y las dependencias de la integración del Agent. -### System-probe +#### System-probe La [receta system-probe][17] se incluye automáticamente por defecto y es la encargada de redactar el archivo `system-probe.yaml`. Se puede modificar este comportamiento si se establece `node['datadog']['system_probe']['manage_config']` como false. @@ -304,31 +307,31 @@ Para activar [Universal Service Monitoring][7] (USM) en `system-probe.yaml`, def **Nota para usuarios de Windows**: Windows admite NPM con el Agent v6.27/v7.27 (y posteriores). Esta herramienta se distribuye como un componente opcional que solo se instala si `node['datadog']['system_probe']['network_enabled']` está configurado como true en el momento de instalar o actualizar el Agent. Por este motivo, las instalaciones existentes podrían requerir la desinstalación y reinstalación del Agent para instalar el componente NPM, a no ser que se actualice el Agent al mismo tiempo. -## Recursos +### Recursos -### Integraciones sin recetas +#### Integraciones sin recetas Usa el recurso `datadog_monitor` para activar integraciones del Agent sin ninguna receta. -#### Acciones +##### Acciones - `:add`: (predeterminado) Prepara el archivo de configuración, añade los permisos correctos al archivo y reinicia el Agent para activar la integración. - `:remove`: Desactiva una integración. -#### Sintaxis +##### Sintaxis ```ruby datadog_monitor 'name' do - init_config Hash # valor predeterminado: {} - instances Array # valor predeterminado: [] - logs Array # valor predeterminado: [] - use_integration_template true, false # valor predeterminado: false - config_name String # valor predeterminado: 'conf' - action Symbol # con el valor predeterminado :add + init_config Hash # default value: {} + instances Array # default value: [] + logs Array # default value: [] + use_integration_template true, false # default value: false + config_name String # default value: 'conf' + action Symbol # defaults to :add end ``` -#### Propiedades +##### Propiedades | Propiedad | Descripción | |----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -339,7 +342,7 @@ end | `use_integration_template` | Establécela como `true` (recomendado) para usar la plantilla predeterminada, la cual redacta los valores de `instances`, `init_config` y `logs` en el YAML con sus claves correspondientes. Esto cambia por defecto a `false` para garantizar la compatibilidad con versiones anteriores, pero puede que se establezca de forma predeterminada como `true` en una versión principal futura del cookbook. | | `config_name` | El nombre de archivo que se utiliza al crear un archivo de configuración de integraciones. Si se reemplaza esta propiedad, se permite la creación de varios archivos de configuración para una única integración. El valor predeterminado es `conf`, que crea un archivo de configuración llamado `conf.yaml`. | -#### Ejemplo +##### Ejemplo Este ejemplo muestra cómo se activa la integración de ElasticSearch usando el recurso `datadog_monitor`. Esto proporciona la configuración de la instancia (en este caso, la URL para conectar con ElasticSearch) y define el indicador de `use_integration_template` para usar la plantilla de configuración predeterminada. Además, avisa al recurso `service[datadog-agent]` para que reinicie el Agent. @@ -357,16 +360,16 @@ end Consulta las [recetas de Chef para su integración con Datadog][7] si deseas ver más ejemplos. -### Versiones de integraciones +#### Versiones de integraciones Para instalar una versión específica de una integración de Datadog, usa el recurso `datadog_integration`. -#### Acciones +##### Acciones - `:install`: (predeterminado) Instala una integración con la versión especificada. - `:remove`: Elimina una integración. -#### Sintaxis +##### Sintaxis ```ruby datadog_integration 'name' do @@ -376,13 +379,13 @@ datadog_integration 'name' do end ``` -#### Propiedades +##### Propiedades - `'name'`: Nombre de la integración del Agent que se va a instalar. Ejemplo: `datadog-apache`. - `version`: Versión de la integración que se va a instalar (solo se necesita con la acción `:install`). - `third_party`: Debe establecerse como false si se va a instalar una integración de Datadog y como true en caso contrario. Solamente disponible para las versiones 6.21/7.21 y posteriores del Datadog Agent. -#### Ejemplo +##### Ejemplo Este ejemplo instala la versión `1.11.0` de la integración de ElasticSearch usando el recurso `datadog_integration`. @@ -400,9 +403,9 @@ Para obtener las versiones disponibles de las integraciones, consulta el `CHANGE **Nota**: En el caso de los usuarios de Chef con Windows, `chef-client` debe tener permiso para leer el archivo `datadog.yaml` cuando este recurso use el binario `datadog-agent` disponible en el nodo. -## Desarrollo +### Desarrollo -### Entorno dockerizado +#### Entorno dockerizado Para crear un entorno Docker con el cual ejecutar pruebas Kitchen, utiliza los archivos siguientes `docker_test_env`: @@ -422,8 +425,8 @@ Luego, asocia una consola al contenedor o usa la función de contenedor remoto d Para ejecutar pruebas kitchen-docker desde el contenedor: ``` -# Nota: También configura KITCHEN_DOCKER_HOSTNAME=host.docker.internal si estás en MacOS o Windows -# Ejecuta esto bajo un shell de inicio de sesión (de lo contrario, no se encontrará `bundle`) +# Note: Also set KITCHEN_DOCKER_HOSTNAME=host.docker.internal if on MacOS or Windows +# Run this under a login shell (otherwise `bundle` won't be found) KITCHEN_LOCAL_YAML=kitchen.docker.yml bundle exec rake circle ``` diff --git a/content/es/agent/basic_agent_usage/deb.md b/content/es/agent/basic_agent_usage/deb.md new file mode 100644 index 0000000000000..7a8eebc8d8421 --- /dev/null +++ b/content/es/agent/basic_agent_usage/deb.md @@ -0,0 +1,30 @@ +--- +algolia: + tags: + - desinstalar + - desinstalando +aliases: +- /es/guides/basic_agent_usage/deb/ +- /es/agent/basic_agent_usage/install_debian_5/ +- /es/agent/basic_agent_usage/debian +further_reading: +- link: /logs/ + tag: Documentación + text: Recopilar tus logs +- link: /infrastructure/process/ + tag: Documentación + text: Recopilar tus procesos +- link: /tracing/ + tag: Documentación + text: Recopilar tus trazas +- link: /agent/basic_agent_usage/#agent-architecture + tag: Documentación + text: Más información sobre la arquitectura del Agent +- link: /agent/configuration/network#configure-ports + tag: Documentación + text: Configurar puertos de entrada +platform: Debian +title: Uso básico del Agent para Debian +--- + +{{< include-markdown "/agent/basic_agent_usage/amazonlinux" >}} \ No newline at end of file diff --git a/content/es/agent/basic_agent_usage/heroku.md b/content/es/agent/basic_agent_usage/heroku.md index ec676ceb1dc49..ef2f880ae5aae 100644 --- a/content/es/agent/basic_agent_usage/heroku.md +++ b/content/es/agent/basic_agent_usage/heroku.md @@ -9,7 +9,9 @@ Este [paquete de compilación de Heroku][1] instala el Datadog Agent en tu dyno ## Instalación -En esta guía, se da por sentado que ya ejecutas tu aplicación en Heroku. Consulta la documentación de Heroku para obtener más información acerca de cómo puedes desplegar tu aplicación en Heroku. +Sigue la [guía de instalación en la aplicación en Fleet Automation][33] para instalar el Datadog Agent en Heroku. + +Esta guía supone que tu aplicación ya se está ejecutando en Heroku. Consulta la [documentación de Heroku][34] para aprender a desplegar tu aplicación en Heroku. 1. Ve a los [parámetros de la API de Datadog][3] y copia tu clave de API de Datadog. Luego, expórtala a una variable de entorno: @@ -38,14 +40,14 @@ En esta guía, se da por sentado que ya ejecutas tu aplicación en Heroku. Consu heroku labs:enable runtime-dyno-metadata -a $APPNAME # Set hostname in Datadog as appname.dynotype.dynonumber for metrics continuity - heroku config:add DD_DYNO_HOST=true + heroku config:add DD_DYNO_HOST=true -a $APPNAME # Set the DD_SITE env variable automatically - heroku config:add DD_SITE=$DD_SITE + heroku config:add DD_SITE=$DD_SITE -a $APPNAME # Add this buildpack and set your Datadog API key - heroku buildpacks:add --index 1 https://github.com/DataDog/heroku-buildpack-datadog.git - heroku config:add DD_API_KEY=$DD_API_KEY + heroku buildpacks:add --index 1 https://github.com/DataDog/heroku-buildpack-datadog.git -a $APPNAME + heroku config:add DD_API_KEY=$DD_API_KEY -a $APPNAME # Deploy to Heroku forcing a rebuild git commit --allow-empty -m "Rebuild slug" @@ -146,6 +148,7 @@ De forma predeterminada, el Datadog Agent se ejecuta en todos los dynos que form Para deshabilitar el Datadog Agent según el tipo de dyno, adapta el siguiente fragmento de código a los tipos de dyno que no desees monitorizar y añádelo a tu [script prerun.sh](#prerun-script): ```shell +DYNOTYPE=${DYNO%%.*} # Disable the Datadog Agent based on dyno type if [ "$DYNOTYPE" == "run" ] || [ "$DYNOTYPE" == "scheduler" ] || [ "$DYNOTYPE" == "release" ]; then DISABLE_DATADOG_AGENT="true" @@ -218,28 +221,28 @@ heroku config:set DD_ENABLE_DBM=true La Monitorización de bases de datos requiere la creación de credenciales de base de datos para el Datadog Agent. Por lo tanto, no se puede utilizar DBM en los planes de Heroku Postgres Essential Tier. -### Activación de los perfiles de DogStatsD Mapper (Sidekiq) +### Activación de los perfiles Dogstatsd Mapper (Sidekiq) -Algunos sitios integraciones, como [Sidekiq](https://docs.datadoghq.com/integraciones/sidekiq/), requieren perfiles [DogStatsD Mapper](https://docs.datadoghq.com/developers/DogStatsD/dogstatsd_mapper/). +Algunas integraciones, como [Sidekiq](https://docs.datadoghq.com/integrations/sidekiq/), requieren perfiles [DogStatsD Mapper](https://docs.datadoghq.com/developers/dogstatsd/dogstatsd_mapper/). -Para añadir un nuevo perfil DogStatsD Mapper, añada el siguiente fragmento en su script [prerun.sh](#prerun-script): +Para añadir un nuevo perfil DogStatsD Mapper, añade el siguiente fragmento en tu [script prerun.sh](#prerun-script): ``` cat << 'EOF' >> "$DATADOG_CONF" dogstatsd_mapper_profiles: - name: '' - prefijo: '' - mapeos: + prefix: '' + mappings: - match: '' match_type: '' - nombre: '' - etiquetas (tags): + name: '' + tags: '': '' EOF ``` -Por ejemplo, para activar Sidekiq integración, añada el siguiente fragmento: +Por ejemplo, para activar la integración Sidekiq, añade el siguiente fragmento: ``` cat << 'EOF' >> "$DATADOG_CONF" @@ -342,7 +345,8 @@ Todos los dynos terminarán compartiendo el sistema de archivos de una aplicaci Por ejemplo, si la integración de Gunicorn necesita ejecutarse únicamente en los dynos de tipo `web`, añade lo siguiente a tu script prerun: -``` +```shell +DYNOTYPE=${DYNO%%.*} if [ "$DYNOTYPE" != "web" ]; then rm -f "$DD_CONF_DIR/conf.d/gunicorn.d/conf.yaml" fi @@ -375,6 +379,9 @@ En el siguiente ejemplo, te mostramos algunas de las cosas que puedes hacer en e ```shell #!/usr/bin/env bash +# Extract dyno type from Heroku's '$DYNO' environment variable +DYNOTYPE="${DYNO%%.*}" + # Disable the Datadog Agent based on dyno type if [ "$DYNOTYPE" == "run" ]; then DISABLE_DATADOG_AGENT="true" @@ -500,7 +507,7 @@ Consulta las [directrices de contribución][29] para informarte acerca de cómo Las versiones anteriores de este proyecto se bifurcaron a partir del [proyecto miketheman/heroku-buildpack-datadog][31]. Se reescribió en gran medida para la versión 6 del Datadog Agent. Para ver los cambios y obtener más información, consulta el [log de cambios][32]. -## Resolución de problemas +## Solucionar problemas ### Cómo obtener el estado del Agent @@ -636,7 +643,7 @@ Después de actualizar el paquete de compilación o el Agent, debes volver a com [15]: https://docs.datadoghq.com/es/logs/guide/collect-heroku-logs [16]: https://docs.datadoghq.com/es/logs/logs_to_metrics/ [17]: https://docs.datadoghq.com/es/database_monitoring/ -[18]: https://docs.datadoghq.com/es/database_monitoring/setup_postgres/selfhosted/?tab=postgres10#grant-the-agent-access +[18]: https://docs.datadoghq.com/es/database_monitoring/setup_postgres/heroku/ [19]: https://docs.datadoghq.com/es/integrations/ [20]: https://docs.datadoghq.com/es/getting_started/integrations/#configuring-agent-integrations [21]: https://docs.datadoghq.com/es/integrations/mcache/ @@ -650,4 +657,6 @@ Después de actualizar el paquete de compilación o el Agent, debes volver a com [29]: https://github.com/DataDog/heroku-buildpack-datadog/blob/master/CONTRIBUTING.md [30]: https://github.com/DataDog/heroku-buildpack-datadog [31]: https://github.com/miketheman/heroku-buildpack-datadog -[32]: https://github.com/DataDog/heroku-buildpack-datadog/blob/master/CHANGELOG.md \ No newline at end of file +[32]: https://github.com/DataDog/heroku-buildpack-datadog/blob/master/CHANGELOG.md +[33]: https://app.datadoghq.com/fleet/install-agent/latest?platform=heroku +[34]: https://devcenter.heroku.com/categories/deployment \ No newline at end of file diff --git a/content/es/agent/guide/dogstream.md b/content/es/agent/guide/dogstream.md index c1c57458016af..02b4634b8cfa9 100644 --- a/content/es/agent/guide/dogstream.md +++ b/content/es/agent/guide/dogstream.md @@ -62,7 +62,7 @@ Si tu analizador personalizado de logs no funciona, el primer check que debes ha * Si todo va bien deberías ver `dogstream: parsing {filename} with {function name} (requested {config option text})`.
-Para comprobar que los dogstreams funcionan, añade (no edites) una línea a cualquier archivo de log que hayas configurado para su supervisión con el Agent. El Agent solo sigue el final de cada archivo de log, por lo que no detecta los cambios que haces en otras partes del archivo. +Para comprobar que los dogstreams funcionan, añade una línea (no edites una existente) a cualquier archivo de log que hayas configurado para ser monitorizado por el Agent. El Agent solo sigue el final de cada archivo de log, por lo que no detecta los cambios que haces en otras partes del archivo.
### Funciones de análisis de escritura diff --git a/content/es/agent/logs/advanced_log_collection.md b/content/es/agent/logs/advanced_log_collection.md index e9dd4631fee1e..88805e4af60fe 100644 --- a/content/es/agent/logs/advanced_log_collection.md +++ b/content/es/agent/logs/advanced_log_collection.md @@ -32,12 +32,13 @@ Después de establecer la [recopilación de logs][1], puedes personalizar la con - [Filtrar logs](#filter-logs) - [Excluir en la coincidencia](#exclude-at-match) - [Incluir en la coincidencia](#include-at-match) + - [Excluir truncado](#excluir-truncado) - [Limpia los datos confidenciales de tus logs](#scrub-sensitive-data-from-your-logs) - [Agregación multilínea](#manually-aggregate-multi-line-logs) - [Agregar automáticamente logs multilínea](#automatically-aggregate-multi-line-logs) - [Reglas de procesamiento de logs de uso común](#commonly-used-log-processing-rules) - [Rastrear directorios utilizando comodines](#tail-directories-using-wildcards) - - [Rastrear los archivos modificados más recientemente primero](#tail-most-recently-modified-files-first) + - [Priorizar los archivos supervisados por tiempo de modificación](#prioritize-tailed-files-by-modification-time) - [Cifrado de archivos de log](#log-file-encodings) - [Reglas de procesamiento global](#global-processing-rules) - [Referencias adicionales](#further-reading) @@ -62,7 +63,7 @@ Para enviar solo un subconjunto específico de logs a Datadog, utiliza el parám Por ejemplo, para **excluir** los logs que contienen una dirección de correo electrónico de Datadog, utiliza `log_processing_rules` de la siguiente manera: {{< tabs >}} -{{% tab "Configuration file" %}} +{{% tab "Archivo de configuración" %}} ```yaml logs: @@ -81,7 +82,7 @@ logs: {{% tab "Docker" %}}
-Para obtener más información sobre la configuración del Agent, consulta Container Discovery Management. +Para obtener más información sobre la configuración del Agent, consulta Gestión de la detección de contenedores.
En un entorno de Docker, utiliza la etiqueta (label) `com.datadoghq.ad.logs` en el **contenedor que envíe los logs que quieres filtrar** para especificar el parámetro `log_processing_rules`. Por ejemplo: @@ -100,9 +101,9 @@ En un entorno de Docker, utiliza la etiqueta (label) `com.datadoghq.ad.logs` en }] ``` -**Nota**: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses etiquetas. Por ejemplo, `\d` pasaría a ser `\\d`, `\w` pasaría a ser `\\w`. - -**Nota**: El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. +**Nota**: +- Escapa los caracteres de expresión regular en tus patrones cuando utilices etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la etiqueta debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{% tab "Kubernetes" %}} @@ -143,9 +144,9 @@ spec: image: cardpayment:latest ``` -**Nota**: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses anotaciones de pod. Por ejemplo, `\d` pasaría a ser `\\d`, `\w` pasaría a ser `\\w`. - -**Nota**: El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. +**Nota**: +- Escapa los caracteres de expresión regular de tus patrones cuando utilices anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la anotación debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{< /tabs >}} @@ -160,7 +161,7 @@ spec: Por ejemplo, utiliza la siguiente configuración del parámetro `log_processing_rules` para **incluir** los logs que contienen una dirección de correo electrónico de Datadog: {{< tabs >}} -{{% tab "Configuration file" %}} +{{% tab "Archivo de configuración" %}} ```yaml logs: @@ -224,9 +225,9 @@ En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en el conte }] ``` -**Nota**: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses etiquetas. Por ejemplo, `\d` pasaría a ser `\\d`, `\w` pasaría a ser `\\w`. - -**Nota**: El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. +**Nota**: +- Escapa los caracteres de expresión regular en tus patrones cuando utilices etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la etiqueta debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{% tab "Kubernetes" %}} @@ -263,7 +264,85 @@ spec: image: cardpayment:latest ``` -**Nota**: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses anotaciones de pod. Por ejemplo, `\d` pasaría a ser `\\d`, `\w` pasaría a ser `\\w`. +**Nota**: +- Escapa los caracteres de expresión regular de tus patrones cuando utilices anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la anotación debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. + +{{% /tab %}} +{{< /tabs >}} + +### Excluir truncado + +| Parámetro | Descripción | +|---------------------|--------------------------------------------------------------------| +| `exclude_truncated` | Cuando está presente, excluye los logs truncados y no los envía a Datadog. La regla `exclude_truncated` está disponible a partir del Agent v7.69. | + +Por ejemplo, para **filtrar** logs truncados: + +{{< tabs >}} +{{% tab "Archivo de configuración" %}} + +```yaml +logs: + - type: file + path: /my/test/file.log + service: cardpayment + source: java + log_processing_rules: + - type: exclude_truncated +``` + +{{% /tab %}} +{{% tab "Docker" %}} + +En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en el contenedor que envía los logs que quieres filtrar, para especificar el parámetro`log_processing_rules`. Por ejemplo: + +```yaml + labels: + com.datadoghq.ad.logs: >- + [{ + "source": "java", + "service": "cardpayment", + "log_processing_rules": [{ + "type": "exclude_truncated" + }] + }] +``` + +**Nota**: El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. + +{{% /tab %}} +{{% tab "Kubernetes" %}} + +En un entorno de Kubernetes, utiliza la anotación de pod `ad.datadoghq.com` en tu pod para definir el parámetro `log_processing_rules`. Por ejemplo: + +```yaml +apiVersion: apps/v1 +metadata: + name: cardpayment +spec: + selector: + matchLabels: + app: cardpayment + template: + metadata: + annotations: + ad.datadoghq.com/.logs: >- + [{ + "source": "java", + "service": "cardpayment", + "log_processing_rules": [{ + "type": "exclude_truncated" + }] + }] + labels: + app: cardpayment + name: cardpayment + spec: + containers: + - name: '' + image: cardpayment:latest +``` **Nota**: El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. @@ -279,7 +358,7 @@ Esto reemplazará todos los grupos coincidentes con el valor del parámetro `rep Por ejemplo, para ocultar los números de tarjetas de crédito: {{< tabs >}} -{{% tab "Configuration file" %}} +{{% tab "Archivo de configuración" %}} ```yaml logs: @@ -315,9 +394,9 @@ En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en tu conte }] ``` -**Nota**: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses etiquetas. Por ejemplo, `\d` pasaría a ser `\\d`, `\w` pasaría a ser `\\w`. - -**Nota**: El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. +**Nota**: +- Escapa los caracteres de expresión regular en tus patrones cuando utilices etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la etiqueta debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{% tab "Kubernetes" %}} @@ -355,14 +434,14 @@ spec: image: cardpayment:latest ``` -**Nota**: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando uses anotaciones de pod. Por ejemplo, `\d` pasaría a ser `\\d`, `\w` pasaría a ser `\\w`. - -**Nota**: El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. +**Nota**: +- Escapa los caracteres de expresión regular de tus patrones cuando utilices anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la anotación debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{< /tabs >}} -A partir de la versión 7.17 del Agent, la cadena `replace_placeholder` puede ampliar las referencias para capturar grupos como `$1`, `$2`, etc. Si quieres que una cadena vaya después del grupo de captura sin espacio de separación, utiliza el formato `${}`. +A partir de la versión 7.17 o posterior del Agent, la cadena `replace_placeholder` puede ampliar las referencias para capturar grupos como `$1`, `$2`, etc. Si quieres que una cadena vaya después del grupo de captura sin espacio de separación, utiliza el formato `${}`. Por ejemplo, para limpiar información de usuario del log`User email: foo.bar@example.com`, utiliza: @@ -396,7 +475,7 @@ Por ejemplo, cada línea de log de Java empieza con una marca de tiempo en forma ``` {{< tabs >}} -{{% tab "Configuration file" %}} +{{% tab "Archivo de configuración" %}} Para enviar los logs del ejemplo anterior con un archivo de configuración, utiliza `log_processing_rules` de la siguiente manera: @@ -466,14 +545,14 @@ spec: image: postgres:latest ``` -**Nota**: Utiliza secuencias de escape en los caracteres de expresión regular de tus patrones cuando realices una agregación multilínea con anotaciones de pod. Por ejemplo, `\d` pasaría a ser `\\d`, `\w` pasaría a ser `\\w`. - -**Nota**: El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. +**Nota**: +- Escapa los caracteres de expresión regular de tus patrones cuando realices agregaciones multilínea con anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la anotación debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{< /tabs >}} -
Importante Los patrones de expresiones regulares para logs multilínea deben comenzar al principio de un log. Los patrones no pueden coincidir a mitad de una línea. Un patrón que no coincida nunca puede provocar pérdidas de líneas de logs.

La recopilación de logs funciona con una precisión de hasta milisegundos. Los logs con mayor precisión no se envían aunque coincidan con el patrón.
+
¡Importante! Los patrones de expresión regular para logs multilíneas deben comenzar al principio de un log. Los patrones no pueden coincidir a mitad de línea. Un patrón que nunca coincida puede causar pérdidas de líneas de logs .

La recopilación de logs funciona con una precisión de hasta milisegundos. Los logs con mayor precisión no se envían aunque coincidan con el patrón.
Más ejemplos: @@ -533,20 +612,40 @@ logs: En el ejemplo anterior, hay coincidencia con `C:\\MyApp\\MyLog.log` y se excluyen `C:\\MyApp\\MyLog.20230101.log` y `C:\\MyApp\\MyLog.20230102.log`. -**Nota**: El Agent requiere permisos de lectura y ejecución en un directorio para mostrar la lista de todos los archivos disponibles que contiene. +**Nota**: +- El Agent requiere permisos de lectura y ejecución en un directorio para enumerar todos los archivos disponibles en él. +- Los valores de trayectoria y excluir_trayectorias son sensibles al case (incidencia). -**Nota**: Los valores path y exclude_paths distinguen entre mayúsculas y minúsculas. +### Priorizar los archivos supervisados por tiempo de modificación -### Rastrear los archivos modificados más recientemente primero +Para usar esta función, se necesita la versión 7.40.0 o posterior del Agent. -El Agent limita el número de archivos que puedes rastrear simultáneamente, definido por el parámetro `logs_config.open_files_limit`. -Por defecto, cuando coinciden más archivos con el patrón comodín que este límite, el Agent les da prioridad ordenando los nombres de archivo en orden lexicográfico inverso. Esto funciona bien para archivos de logs nombrados con marcas de tiempo o numeración secuencial, lo que asegura que los logs más recientes se rastrearán primero. +El Agent limita el número de archivos que puede supervisar simultáneamente con el parámetro `logs_config.open_files_limit`. Si el número de archivos que coinciden con las sources (fuentes) de logs configuradas (como comodines) está dentro del límite, el Agent los supervisa a todos. Si coinciden más archivos de los que permite el límite, el Agent prioriza ordenando los nombres de archivo en orden lexicográfico inverso, de modo que los archivos con marcas de tiempo más recientes o números más altos se supervisen primero. -Sin embargo, si los nombres de archivo de los logs no siguen estos patrones, puede que el comportamiento predeterminado no sea el ideal. Para dar prioridad a los archivos por hora de modificación, configura logs_config.file_wildcard_selection_mode como by_modification_time. Con esta configuración, el Agent ordena continuamente los archivos por su hora de modificación. Siempre rastrea primero los archivos modificados más recientemente y deja de rastrear aquellos modificados menos recientemente. +Si los nombres de los archivos no siguen patrones secuenciales o de marca de tiempo, el orden predeterminado puede no ser el ideal. Para priorizar por tiempo de modificación, configura `logs_config.file_wildcard_selection_mode` en `by_modification_time`. Con esta configuración, el Agent ordena primero los archivos modificados más recientemente. -Para definir el comportamiento predeterminado, elimina la entrada `logs_config.file_wildcard_selection_mode` o defínela explícitamente como `by_name`. +**Ejemplo**: +- `open_files_limit` = 500 +- Tu patrón de comodín coincide con 700 archivos. +- Con `by_name`: el Agent supervisa los 500 archivos con los nombres más altos en orden lexicográfico inverso (por ejemplo, app.log.700 hasta app.log.201). +- Con `by_modification_time`: el Agent supervisa los 500 archivos en los que se ha escrito más recientemente, independientemente de sus nombres. -Para usar esta función, se necesita la versión 7.40.0 o posterior del Agent. +```yaml +logs_enabled: true +logs_config: + [...] + open_files_limit: 500 + + ## @param file_wildcard_selection_mode - string - optional - default: by_name + ## The strategy used to prioritize wildcard matches if they exceed open_files_limit. + ## Choices: + ## - by_name: files are sorted in reverse lexicographic order (default). + ## - by_modification_time: files are sorted by modification time, with the most recent first. + ## WARNING: by_modification_time is less performant and increases disk I/O. + file_wildcard_selection_mode: by_modification_time +``` + +Para definir el comportamiento predeterminado, elimina la entrada `logs_config.file_wildcard_selection_mode` o defínela explícitamente como `by_name`. ## Codificaciones del archivo de logs @@ -573,7 +672,7 @@ logs: ## Reglas generales de procesamiento -A partir de la versión 6.10 o superior del Datadog Agent, es posible definir las reglas de procesamiento `exclude_at_match`, `include_at_match` y `mask_sequences` de manera general en el [archivo de configuración principal][5] del Agent o mediante una variable de entorno: +A partir de la versión 6.10 o posterior del Datadog Agent, es posible definir las reglas de procesamiento `exclude_at_match`, `include_at_match` y `mask_sequences` de manera general en el [archivo de configuración principal][5] del Agent o mediante una variable de entorno. La regla `exclude_truncated` está disponible a partir de la versión 7.69 del Agent. {{< tabs >}} {{% tab "Archivos de configuración" %}} @@ -641,13 +740,13 @@ Todos los logs recopilados por el Datadog Agent se ven afectados por las reglas **1. ¿Cuándo debo utilizar reglas multilínea manuales en lugar de la detección multilínea automática?** -Si conoces el formato de tus logs, deberías utilizar reglas multilínea manuales para un control preciso. -Si envías muchos logs multilínea y no sabes bien cuál es su formato o no puedes configurar todas las fuentes individualmente, debes utilizar la detección multilínea automática. +Si conoces el formato de tus logs, deberías utilizar reglas multilínea manuales para un control preciso. +Si envías muchos logs multilínea y no estás seguro de su formato o no tienes medios para configurar todas las sources (fuentes) individualmente, debes utilizar la detección multilínea automática. **2. ¿Qué ocurre cuando un patrón multilínea no coincide con ningún log?** Todas las líneas de logs que no son JSON se procesan individualmente como entradas de logs separadas. -Todas las líneas de logs con formato JSON se tratan como una única línea de logs. Sólo se admite el primer formato JSON válido y el resto se descartan. +Todas las líneas de logs con formato JSON se tratan como una única línea de logs. Solo se admite el primer formato JSON válido y el resto se descartan. **3. ¿Qué ocurre cuando hay reglas globales y reglas específicas de una integración? Las reglas específicas de la integración anulan por completo las reglas globales de la integración en cuestión. diff --git a/content/es/agent/troubleshooting/agent_check_status.md b/content/es/agent/troubleshooting/agent_check_status.md index d6b6e819a88a1..5b9342660d863 100644 --- a/content/es/agent/troubleshooting/agent_check_status.md +++ b/content/es/agent/troubleshooting/agent_check_status.md @@ -1,4 +1,6 @@ --- +description: Aprende a probar los checks del Datadog Agent y a solucionar sus problemas + utilizando comandos y herramientas systemd para diagnosticar problemas de integraciones. further_reading: - link: /agent/troubleshooting/debug_mode/ tag: Documentación @@ -62,7 +64,7 @@ Si el Agent no se inicia y no aparece más información, utiliza el siguiente co sudo journalctl -u datadog-agent.service ``` -## Leer más +## Referencias adicionales {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/es/dashboards/guide/context-links.md b/content/es/dashboards/guide/context-links.md index 9f4276d79f59c..01ef1cc73791e 100644 --- a/content/es/dashboards/guide/context-links.md +++ b/content/es/dashboards/guide/context-links.md @@ -1,8 +1,13 @@ --- +description: Conecta widgets de dashboards con páginas de Datadog y aplicaciones de + terceros utilizando enlaces contextuales personalizables con variables. further_reading: - link: /dashboards/widgets tag: Documentación text: Lista de widget de dashboards +- link: /metrics/units + tag: Documentación + text: Unidades de métricas title: Enlaces contextuales --- @@ -248,7 +253,7 @@ service:backend (env:{{$env.value}}) El paréntesis traduce `(env:{{$env.value}})` a `(env:*)`, lo que te permite introducir múltiples variables en tu consulta de enlaces contextuales. -## Leer más +## Referencias adicionales {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/es/dashboards/widgets/event_stream.md b/content/es/dashboards/widgets/event_stream.md index b73f1ed191a36..639861ecea458 100644 --- a/content/es/dashboards/widgets/event_stream.md +++ b/content/es/dashboards/widgets/event_stream.md @@ -1,9 +1,9 @@ --- aliases: - /es/graphing/widgets/event_stream/ -description: Muestra eventos filtrados del flujo de eventos. +description: Muestra eventos filtrados del flujo (stream) de eventos. private: true title: Widget de flujo de eventos --- -
El widget de flujo de eventos es compatible con el widget de lista.
\ No newline at end of file +
El flujo de eventos es compatible con la lista de widgets.
\ No newline at end of file diff --git a/content/es/dashboards/widgets/event_timeline.md b/content/es/dashboards/widgets/event_timeline.md index add377d57b0fe..93be8e3f5a2c3 100644 --- a/content/es/dashboards/widgets/event_timeline.md +++ b/content/es/dashboards/widgets/event_timeline.md @@ -1,9 +1,9 @@ --- aliases: - /es/graphing/widgets/event_timeline/ -description: Muestra la línea de tiempo de tu flujo de eventos en un widget. +description: Muestra la línea de tiempo de tu flujo (stream) de eventos en un widget. private: true -title: Widget de línea de tiempo del evento +title: Widget de línea de tiempo de eventos --- -
El widget de línea de tiempo del evento es compatible con el widget de serie temporal.
\ No newline at end of file +
El widget de línea de tiempo de eventos es compatible con el widget de línea de tiempo.
\ No newline at end of file diff --git a/content/es/dashboards/widgets/geomap.md b/content/es/dashboards/widgets/geomap.md index cd010e18d66b0..20d0c4d5ac85f 100644 --- a/content/es/dashboards/widgets/geomap.md +++ b/content/es/dashboards/widgets/geomap.md @@ -1,6 +1,8 @@ --- aliases: - /es/graphing/widgets/geomap/ +description: Visualiza datos geográficos con regiones o puntos sombreados para mostrar + métricas y patrones basados en ubicaciones. further_reading: - link: /dashboards/graphing_json/ tag: Documentación @@ -18,28 +20,28 @@ El widget geomap visualiza datos geográficos con regiones o puntos sombreados. - Ver sesiones de usuario filtradas por empleado. - Monitorizar las métricas de rendimiento como el tiempo de carga, los valores de estado de la web y el porcentaje de vistas con errores. -{{< img src="/dashboards/widgets/geomap/geomap-points.png" alt="Visualización de geomap con la superposición de puntos" >}} +{{< img src="/dashboards/widgets/geomap/geomap_zoom_region.mp4" alt="Haciendo zoom en una región con el widget Geomapa" video=true >}} ## Configuración -{{< img src="dashboards/widgets/geomap/geomap_setup2.png" alt="Gráfico de geomap de tu sección de datos de la configuración de widget">}} +{{< img src="dashboard/widgets/geomap/geomap_setup3.png" alt="Grafica en geomapas tu sección de datos de configuración de widgets">}} ### Configuración 1. Elige la capa de visualización: - * **Regiones**: medidas agregadas a nivel de país. + * **Regiones**: Medidas agregadas a nivel de país o subdivisiones de país. * **Puntos**: superposición de eventos como puntos en el mapa para mostrar datos geográficos del evento. 2. Elige los datos a graficar:
**Nota**: La compatibilidad con las fuentes de datos varía en función de la capa de visualización seleccionada. {{< tabs >}} {{% tab "Regions" %}} - | Fuente de datos | Notas | + | Origen de los datos | Notas | | -------------- | -------- | - |Eventos de log | El grupo por etiqueta (tag) debe incluir un código ISO de país con el formato ISO alfa-2. Puedes utilizar el [Procesador GeoIP][1] para hacer esto, o puedes incluir de forma manual las [etiquetas en la incorporación][2]. Consulta la [documentación de búsqueda de logs][3] para configurar una consulta de eventos de log.| - |Métrica | El grupo por etiqueta debe incluir un código ISO de país con el formato ISO alfa-2. Puedes [generar las métricas a partir de logs incorporados][4], o puedes incluir de forma manual las [etiquetas en la incorporación][2]. Consulta la [documentación de consulta][5] para configurar una consulta de métrica.| + |Eventos de logs | El grupo por etiqueta (tag) debe incluir un código ISO de país (formato ISO alfa-2) o un código ISO de subdivisión de país (formato ISO-3166-2). Para ello, puedes utilizar el [Procesador GeoIP][1] o incluir manualmente las [etiquetas en la ingesta][2]. Consulta la [documentación sobre la búsqueda de logs][3] para configurar una consulta de eventos de logs.| + |Métrica | El grupo por etiqueta debe incluir un código ISO de país (formato ISO alfa-2) o un código ISO de subdivisión de país (formato ISO-3166-2). Puedes [generar métricas a partir de la ingesta de logs][4] o incluir manualmente las [etiquetas en la ingesta][2]. Consulta la [documentación sobre consultas][5] para configurar una consulta de métricas.| |RUM | Consulta la [documentación de RUM][6] para configurar una consulta de RUM. | |SLO | Consulta la [documentación de búsqueda de SLO][7] para configurar una consulta de SLO. | - |Señales de seguridad
Application Security
Audit Trail | Consulta la [documentación de búsqueda de log][3] para configurar una consulta. | + |Señales de seguridad
Protección de aplicaciones y API
Audit Trail | Consulta la [documentación de búsqueda de logs][3] para configurar una consulta. | [1]: /logs/log_configuration/processors/#geoip-parser [2]: /getting_started/tagging/#define-tags @@ -50,11 +52,13 @@ El widget geomap visualiza datos geográficos con regiones o puntos sombreados. [7]: /service_management/service_level_objectives/#searching-slos {{% /tab %}} - {{% tab "Points" %}} - | Fuente de datos | Notas | - | ----------- | ----- | - |Eventos de log | El grupo por etiqueta debe incluir un código ISO de país con el formato ISO alfa-2. Puedes utilizar el [Procesador de GeoIP][1] para hacer esto, o puedes incluir de forma manual las [etiquetas en la incorporación][2]. Consulta la [documentación de búsqueda de logs][3] para configurar una consulta de evento de log. | - |RUM | Consulta la [documentación de RUM][4] para configurar una consulta de RUM. | + {{% tab "Puntos" %}} + | Origen de los datos | Notas | + | ----------- | ----- | + | Eventos de logs | El grupo por etiqueta debe incluir un código ISO de país que siga el formato ISO alfa-2. Para ello, puedes utilizar el [Procesador GeoIP][1] o incluir manualmente las [etiquetas en la ingesta][2]. Consulta la [documentación sobre la búsqueda de logs][3] para configurar una consulta de eventos de logs. | + | RUM | Consulta la [documentación de RUM][4] para configurar una consulta RUM. | + + **Nota**: La capa Puntos muestra un máximo de 100.000 eventos a la vez. [1]: /logs/log_configuration/processors/#geoip-parser [2]: /getting_started/tagging/#define-tags @@ -63,7 +67,7 @@ El widget geomap visualiza datos geográficos con regiones o puntos sombreados. {{% /tab %}} {{< /tabs >}} -3. Opcional: configura tu cuadro de vista para especificar dónde quieres enfocar el mapa inicialmente. +3. (Opcional) En **Visual Options** (Opciones visuales), utiliza el desplegable **Set widget default view** (Configurar vista por defecto del widget) para seleccionar dónde enfocar inicialmente el mapa. Selecciona **Custom* (Personalizar) para definir una región personalizada, o busca el nombre de un país, estado o provincia. ### Opciones diff --git a/content/es/database_monitoring/setup_mysql/aurora.md b/content/es/database_monitoring/setup_mysql/aurora.md index 849df461ddabc..96a5ffed54aaa 100644 --- a/content/es/database_monitoring/setup_mysql/aurora.md +++ b/content/es/database_monitoring/setup_mysql/aurora.md @@ -202,7 +202,7 @@ instances: instance_endpoint: '' ``` -
Importante: Utiliza aquí el endpoint de la instancia de Aurora, no el endpoint del clúster.
+
Utiliza el endpoint de la instancia Aurora aquí, y no el endpoint del clúster.
[Reinicia el Agent][3] para empezar a enviar métricas de MySQL a Datadog. @@ -252,7 +252,7 @@ LABEL "com.datadoghq.ad.init_configs"='[{}]' LABEL "com.datadoghq.ad.instances"='[{"dbm": true, "host": "", "port": 3306,"username": "datadog","password": "ENC[datadog_user_database_password]"}]' ``` -
Importante: Utiliza el endpoint de la instancia de Aurora como host, no el endpoint del clúster.
+
Utiliza el endpoint de la instancia Aurora como host, y no el endpoint del clúster.
[1]: /es/agent/docker/integrations/?tab=docker @@ -263,11 +263,62 @@ Si tienes un clúster Kubernetes, utiliza el [Datadog Cluster Agent][1] para la Sigue las instrucciones para [habilitar checks de clúster][2], si no están habilitados en tu clúster Kubernetes. Puedes declarar la configuración de MySQL mediante archivos estáticos integrados en el contenedor del Cluster Agent o utilizando anotaciones de servicios: -### Helm +### Operator + +Utilizando como referencia las [instrucciones para operadores en Kubernetes y en las integraciones][3], sigue los pasos que se indican a continuación para configurar la integración MySQL: + +1. Cree o actualice el archivo `datadog-agent.yaml` con la siguiente configuración: -Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu clúster Kubernetes. Sustituye los valores para que coincidan con tu cuenta y tu entorno. + ```yaml + apiVersion: datadoghq.com/v2alpha1 + kind: DatadogAgent + metadata: + name: datadog + spec: + global: + clusterName: + site: + credentials: + apiSecret: + secretName: datadog-agent-secret + keyName: api-key + + features: + clusterChecks: + enabled: true + + override: + nodeAgent: + image: + name: agent + tag: + + clusterAgent: + extraConfd: + configDataMap: + mysql.yaml: |- + cluster_check: true + init_config: + instances: + - host: + port: + username: datadog + password: 'ENC[datadog_user_database_password]' + dbm: true + aws: + instance_endpoint: + region: + ``` + +2. Aplica los cambios al Datadog Operator utilizando el siguiente comando: + + ```shell + kubectl apply -f datadog-agent.yaml + ``` -1. Sigue las [instrucciones de instalación del Datadog Agent][3] para Helm. +### Helm + +1. Completa las [instrucciones de instalación del Datadog Agent][4] para Helm. 2. Actualiza tu archivo de configuración YAML (`datadog-values.yaml` en las instrucciones de instalación del Cluster Agent) para incluir lo siguiente: ```yaml clusterAgent: @@ -277,16 +328,21 @@ Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu c init_config: instances: - dbm: true - host: - port: 3306 + host: + port: username: datadog password: 'ENC[datadog_user_database_password]' + aws: + instance_endpoint: + region: clusterChecksRunner: enabled: true ``` + 3. Despliega el Agent con el archivo de configuración anterior desde la línea de comandos: + ```shell helm install datadog-agent -f datadog-values.yaml datadog/datadog ``` @@ -295,10 +351,6 @@ Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu c For Windows, append --set targetSystem=windows to the helm install command. -[1]: https://app.datadoghq.com/organization-settings/api-keys -[2]: /es/getting_started/site -[3]: /es/containers/kubernetes/installation/?tab=helm#installation - ### Configuración con archivos integrados Para configurar un check de clúster con un archivo de configuración integrado, integra el archivo de configuración del contenedor del Cluster Agent en la ruta `/conf.d/mysql.yaml`: @@ -309,14 +361,17 @@ init_config: instances: - dbm: true host: '' - port: 3306 + port: username: datadog password: 'ENC[datadog_user_database_password]' + aws: + instance_endpoint: + region: ``` ### Configuración con anotaciones de servicios de Kubernetes -En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check en un Agent que se ejecuta en Kubernetes, crea un servicio en el mismo espacio de nombres que el Datadog Cluster Agent: +En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio con la siguiente sintaxis: ```yaml @@ -335,28 +390,34 @@ metadata: { "dbm": true, "host": "", - "port": 3306, + "port": , "username": "datadog", - "password": "ENC[datadog_user_database_password]" + "password": "ENC[datadog_user_database_password]", + "aws": { + "instance_endpoint": "", + "region": "" + } } ] spec: ports: - - port: 3306 + - port: protocol: TCP - targetPort: 3306 + targetPort: name: mysql ``` -
Importante: Utiliza aquí el endpoint de la instancia de Aurora, no el endpoint del clúster.
El Cluster Agent registra automáticamente esta configuración y comienza a ejecutar el check de SQL Server. -Para evitar exponer la contraseña del usuario `datadog` en texto simple, utiliza el [paquete de gestión de secretos][4] del Agent y declara la contraseña utilizando la sintaxis `ENC[]`. +Para evitar exponer la contraseña del usuario de `datadog` en texto plano, utilice el [paquete de gestión de secretos][6] de Agent y declare la contraseña utilizando la sintaxis de `ENC[]`. + +[1]: /es/containers/cluster_agent/setup/ +[2]: /es/containers/cluster_agent/clusterchecks/ +[3]: /es/containers/kubernetes/integrations/?tab=datadogoperator +[4]: /es/containers/kubernetes/integrations/?tab=helm +[5]: /es/containers/kubernetes/integrations/?tab=annotations#configuration +[6]: /es/agent/configuration/secrets-management -[1]: /es/agent/cluster_agent -[2]: /es/agent/cluster_agent/clusterchecks/ -[3]: https://helm.sh -[4]: /es/agent/configuration/secrets-management {{% /tab %}} {{< /tabs >}} diff --git a/content/es/database_monitoring/setup_mysql/azure.md b/content/es/database_monitoring/setup_mysql/azure.md index 3db4ae888d565..1a8751739cd33 100644 --- a/content/es/database_monitoring/setup_mysql/azure.md +++ b/content/es/database_monitoring/setup_mysql/azure.md @@ -207,13 +207,63 @@ Consulta [la especificación de la integración MySQL][4] para obtener informaci Si tienes un clúster Kubernetes, utiliza el [Datadog Cluster Agent][1] para la monitorización de bases de datos. -Sigue las instrucciones para [activar los checks de clúster][2] si no están ya habilitados en tu clúster de Kubernetes. Puedes declarar la configuración de MySQL con archivos estáticos integrados en el contenedor del Cluster Agent, o con anotaciones de servicio: +Sigue las instrucciones para [habilitar checks de clúster][2], si no están habilitados en tu clúster Kubernetes. Puedes declarar la configuración de MySQL mediante archivos estáticos integrados en el contenedor del Cluster Agent o utilizando anotaciones de servicios: -### Helm +### Operator + +Utilizando como referencia las [instrucciones para operadores en Kubernetes y en las integraciones][3], sigue los pasos que se indican a continuación para configurar la integración MySQL: + +1. Cree o actualice el archivo `datadog-agent.yaml` con la siguiente configuración: + + ```yaml + apiVersion: datadoghq.com/v2alpha1 + kind: DatadogAgent + metadata: + name: datadog + spec: + global: + clusterName: + site: + credentials: + apiSecret: + secretName: datadog-agent-secret + keyName: api-key + + features: + clusterChecks: + enabled: true + + override: + nodeAgent: + image: + name: agent + tag: + + clusterAgent: + extraConfd: + configDataMap: + mysql.yaml: |- + cluster_check: true + init_config: + instances: + - host: + port: + username: datadog + password: 'ENC[datadog_user_database_password]' + dbm: true + azure: + fully_qualified_domain_name: + ``` -Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu clúster Kubernetes. Sustituye los valores para que coincidan con tu cuenta y tu entorno. +2. Aplica los cambios al Datadog Operator utilizando el siguiente comando: -1. Sigue las [instrucciones de instalación del Datadog Agent][3] para Helm. + ```shell + kubectl apply -f datadog-agent.yaml + ``` + +### Helm + +1. Completa las [instrucciones de instalación del Datadog Agent][4] para Helm. 2. Actualiza tu archivo de configuración YAML (`datadog-values.yaml` en las instrucciones de instalación del Cluster Agent) para incluir lo siguiente: ```yaml clusterAgent: @@ -223,19 +273,19 @@ Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu c init_config: instances: - dbm: true - host: '' - port: 3306 + host: + port: username: datadog password: 'ENC[datadog_user_database_password]' azure: - deployment_type: '' - fully_qualified_domain_name: '' + fully_qualified_domain_name: clusterChecksRunner: enabled: true ``` 3. Despliega el Agent con el archivo de configuración anterior desde la línea de comandos: + ```shell helm install datadog-agent -f datadog-values.yaml datadog/datadog ``` @@ -244,10 +294,6 @@ Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu c For Windows, append --set targetSystem=windows to the helm install command. -[1]: https://app.datadoghq.com/organization-settings/api-keys -[2]: /es/getting_started/site -[3]: /es/containers/kubernetes/installation/?tab=helm#installation - ### Configuración con archivos integrados Para configurar un check de clúster con un archivo de configuración integrado, integra el archivo de configuración del contenedor del Cluster Agent en la ruta `/conf.d/mysql.yaml`: @@ -257,19 +303,17 @@ cluster_check: true # Make sure to include this flag init_config: instances: - dbm: true - host: '' - port: 3306 + host: + port: username: datadog password: 'ENC[datadog_user_database_password]' - # After adding your project and instance, configure the Datadog Azure integration to pull additional cloud data such as CPU, Memory, etc. azure: - deployment_type: '' - fully_qualified_domain_name: '' + fully_qualified_domain_name: ``` ### Configuración con anotaciones de servicios de Kubernetes -En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check en un Agent que se ejecuta en Kubernetes, crea un servicio en el mismo espacio de nombres que el Datadog Cluster Agent: +En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio con la siguiente sintaxis: ```yaml @@ -287,35 +331,34 @@ metadata: [ { "dbm": true, - "host": "", - "port": 3306, + "host": "", + "port": , "username": "datadog", "password": "ENC[datadog_user_database_password]", "azure": { - "deployment_type": "", - "fully_qualified_domain_name": "" + "fully_qualified_domain_name": "" } } ] spec: ports: - - port: 3306 + - port: protocol: TCP - targetPort: 3306 + targetPort: name: mysql ``` -Consulta [la especificación de la integración MySQL][5] para obtener información adicional sobre la configuración de los campos `deployment_type` y `name`. - El Cluster Agent registra automáticamente esta configuración y comienza a ejecutar el check de SQL Server. -Para evitar exponer la contraseña del usuario `datadog` en texto simple, utiliza el [paquete de gestión de secretos][4] del Agent y declara la contraseña utilizando la sintaxis `ENC[]`. +Para evitar exponer la contraseña del usuario de `datadog` en texto plano, utilice el [paquete de gestión de secretos][6] de Agent y declare la contraseña utilizando la sintaxis de `ENC[]`. + +[1]: /es/containers/cluster_agent/setup/ +[2]: /es/containers/cluster_agent/clusterchecks/ +[3]: /es/containers/kubernetes/integrations/?tab=datadogoperator +[4]: /es/containers/kubernetes/integrations/?tab=helm +[5]: /es/containers/kubernetes/integrations/?tab=annotations#configuration +[6]: /es/agent/configuration/secrets-management -[1]: /es/agent/cluster_agent -[2]: /es/agent/cluster_agent/clusterchecks/ -[3]: https://helm.sh -[4]: /es/agent/configuration/secrets-management -[5]: https://github.com/DataDog/integrations-core/blob/master/mysql/assets/configuration/spec.yaml#L523-L552 {{% /tab %}} {{< /tabs >}} diff --git a/content/es/database_monitoring/setup_mysql/gcsql.md b/content/es/database_monitoring/setup_mysql/gcsql.md index 68d13a3908407..a44df2058913a 100644 --- a/content/es/database_monitoring/setup_mysql/gcsql.md +++ b/content/es/database_monitoring/setup_mysql/gcsql.md @@ -45,7 +45,7 @@ Consideraciones sobre la seguridad de los datos Configura lo siguiente en los [Indicadores de base de datos][3] y, a continuación, **reinicia el servidor** para que los ajustes surtan efecto: {{< tabs >}} -{{% tab "MySQL 5.7 o posterior" %}} +{{% tab "MySQL ≥ 5.7" %}} | Parámetro | Valor | Descripción | | --- | --- | --- | | `performance_schema` | `on` | Obligatorio. Habilita el [esquema de rendimiento][9]. | @@ -278,11 +278,62 @@ Si tienes un clúster Kubernetes, utiliza el [Datadog Cluster Agent][1] para la Sigue las instrucciones para [habilitar checks de clúster][2], si no están habilitados en tu clúster Kubernetes. Puedes declarar la configuración de MySQL mediante archivos estáticos integrados en el contenedor del Cluster Agent o utilizando anotaciones de servicios: -### Helm +### Operator + +Utilizando como referencia las [instrucciones para operadores en Kubernetes y en las integraciones][3], sigue los pasos que se indican a continuación para configurar la integración MySQL: + +1. Cree o actualice el archivo `datadog-agent.yaml` con la siguiente configuración: + + ```yaml + apiVersion: datadoghq.com/v2alpha1 + kind: DatadogAgent + metadata: + name: datadog + spec: + global: + clusterName: + site: + credentials: + apiSecret: + secretName: datadog-agent-secret + keyName: api-key + + features: + clusterChecks: + enabled: true + + override: + nodeAgent: + image: + name: agent + tag: + + clusterAgent: + extraConfd: + configDataMap: + mysql.yaml: |- + cluster_check: true + init_config: + instances: + - host: + port: + username: datadog + password: 'ENC[datadog_user_database_password]' + dbm: true + gcp: + project_id: ' - port: 3306 + host: + port: username: datadog password: 'ENC[datadog_user_database_password]' gcp: - project_id: '' - instance_id: '' + project_id: '--set targetSystem=windows to the helm install command. -[1]: https://app.datadoghq.com/organization-settings/api-keys -[2]: /es/getting_started/site -[3]: /es/containers/kubernetes/installation/?tab=helm#installation - ### Configuración con archivos integrados Para configurar un check de clúster con un archivo de configuración integrado, integra el archivo de configuración del contenedor del Cluster Agent en la ruta `/conf.d/mysql.yaml`: @@ -326,19 +374,19 @@ cluster_check: true # Make sure to include this flag init_config: instances: - dbm: true - host: '' - port: 3306 + host: + port: username: datadog password: 'ENC[datadog_user_database_password]' - # After adding your project and instance, configure the Datadog Google Cloud (GCP) integration to pull additional cloud data such as CPU, Memory, etc. gcp: - project_id: '' - instance_id: '' + project_id: '", - "port": 3306, + "host": "", + "port": , "username": "datadog", "password": "ENC[datadog_user_database_password]", "gcp": { @@ -367,20 +415,22 @@ metadata: ] spec: ports: - - port: 3306 + - port: protocol: TCP - targetPort: 3306 + targetPort: name: mysql ``` -Para obtener información adicional sobre la configuración de los campos `project_id` e `instance_id`, consulta la [sección GCP del archivo `mysql.conf.yaml`][4]. - El Cluster Agent registra automáticamente esta configuración y comienza a ejecutar el check de SQL Server. -[1]: /es/agent/cluster_agent -[2]: /es/agent/cluster_agent/clusterchecks/ -[3]: https://helm.sh -[4]: https://github.com/DataDog/integrations-core/blob/master/mysql/datadog_checks/mysql/data/conf.yaml.example +Para evitar exponer la contraseña del usuario de `datadog` en texto plano, utilice el [paquete de gestión de secretos][6] de Agent y declare la contraseña utilizando la sintaxis de `ENC[]`. + +[1]: /es/containers/cluster_agent/setup/ +[2]: /es/containers/cluster_agent/clusterchecks/ +[3]: /es/containers/kubernetes/integrations/?tab=datadogoperator +[4]: /es/containers/kubernetes/integrations/?tab=helm +[5]: /es/containers/kubernetes/integrations/?tab=annotations#configuration +[6]: /es/agent/configuration/secrets-management {{% /tab %}} diff --git a/content/es/database_monitoring/setup_postgres/aurora.md b/content/es/database_monitoring/setup_postgres/aurora.md index fe31b3205cf31..7ad668d1f3ca0 100644 --- a/content/es/database_monitoring/setup_postgres/aurora.md +++ b/content/es/database_monitoring/setup_postgres/aurora.md @@ -214,15 +214,11 @@ Para configurar la recopilación de métricas de Database Monitoring para un Age instance_endpoint: '' region: '' - ## Required for Postgres 9.6: Uncomment these lines to use the functions created in the setup - # pg_stat_statements_view: datadog.pg_stat_statements() - # pg_stat_activity_view: datadog.pg_stat_activity() - ## Optional: Connect to a different database if needed for `custom_queries` # dbname: '' ``` -
Importante: Utiliza aquí el endpoint de la instancia de Aurora, no el endpoint del clúster.
+
Utiliza el endpoint de la instancia Aurora aquí, y no el endpoint del clúster.
2. [Reinicia el Agent][2]. @@ -439,14 +435,11 @@ instances: tags: - "dbinstanceidentifier:" - ## Required: For Postgres 9.6, uncomment these lines to use the functions created in the setup - # pg_stat_statements_view: datadog.pg_stat_statements() - # pg_stat_activity_view: datadog.pg_stat_activity() ``` ### Configuración con anotaciones de servicios de Kubernetes -En lugar de montar un archivo, puedes declarar la configuración de instancia como un servicio de Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio en el mismo espacio de nombres que el Datadog Cluster Agent: +En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio con la siguiente sintaxis: #### Anotaciones de Autodiscovery v2 @@ -459,7 +452,7 @@ metadata: tags.datadoghq.com/env: '' tags.datadoghq.com/service: '' annotations: - ad.datadoghq.com/.checks: | + ad.datadoghq.com/service.checks: | { "postgres": { "init_config": , @@ -480,7 +473,7 @@ metadata: } ] } - } + } spec: ports: - port: 5432 diff --git a/content/es/database_monitoring/setup_postgres/azure.md b/content/es/database_monitoring/setup_postgres/azure.md index 4401e62780f43..46adc4edc140f 100644 --- a/content/es/database_monitoring/setup_postgres/azure.md +++ b/content/es/database_monitoring/setup_postgres/azure.md @@ -250,10 +250,6 @@ Para configurar la recopilación de métricas de monitorización de Database Mon password: 'ENC[datadog_user_database_password]' ssl: 'require' - ## Required for Postgres 9.6: Uncomment these lines to use the functions created in the setup - # pg_stat_statements_view: datadog.pg_stat_statements() - # pg_stat_activity_view: datadog.pg_stat_activity() - ## Optional: Connect to a different database if needed for `custom_queries` # dbname: '' @@ -462,15 +458,11 @@ instances: azure: deployment_type: '' fully_qualified_domain_name: '' - - ## Required: For Postgres 9.6, uncomment these lines to use the functions created in the setup - # pg_stat_statements_view: datadog.pg_stat_statements() - # pg_stat_activity_view: datadog.pg_stat_activity() ``` ### Configuración con anotaciones de servicios de Kubernetes -En lugar de montar un archivo, puedes declarar la instancia de configuración como un servicio de Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio en el mismo espacio de nombres que el Datadog Cluster Agent: +En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio con la siguiente sintaxis: #### Anotaciones de Autodiscovery v2 diff --git a/content/es/database_monitoring/setup_sql_server/azure.md b/content/es/database_monitoring/setup_sql_server/azure.md index f060761a0298a..051ef1ddb7a18 100644 --- a/content/es/database_monitoring/setup_sql_server/azure.md +++ b/content/es/database_monitoring/setup_sql_server/azure.md @@ -10,6 +10,9 @@ further_reading: - link: /database_monitoring/guide/sql_deadlock/ tag: Documentación text: Configurar Deadlock Monitoring +- link: /database_monitoring/guide/sql_extended_events/ + tag: Documentación + text: Configurar la finalización de consultas y la recopilación de errores de consulta title: Configuración de Database Monitoring para Azure SQL Server --- @@ -96,7 +99,7 @@ Para obtener instrucciones más detalladas sobre cómo instalar y configurar el {{% tab "Instancia gestionada por Azure SQL" %}} -Crea un inicio de sesión de solo lectura para conectarte a tu servidor y concede los permisos necesarios: +Crea un inicio de sesión de solo lectura para conectarte a tu servidor y conceder los permisos necesarios: #### Para las versiones 2014 o posteriores de SQL Server @@ -131,7 +134,7 @@ Para [SQL Server en máquinas virtuales Windows Azure][1], sigue la documentaci ### Guarda tu contraseña de forma segura {{% dbm-secret %}} -## Instalación y configuración del Agent +## Instala y configura el Agent Dado que AWS no permite el acceso directo al host, el Datadog Agent debe instalarse en un host distinto donde pueda comunicarse con el host de SQL Server. Existen varias opciones para instalar y ejecutar el Agent. @@ -164,7 +167,7 @@ Para obtener información adicional sobre la configuración de los campos `deplo Para utilizar la [autenticación de Windows][4], configura `connection_string: "Trusted_Connection=yes"` y omite los campos `username` y `password`. -Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema de etiquetado común. Para saber cómo se utilizan estas etiquetas en Datadog, consulta [Etiquetado unificado de servicios][5]. +Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema común de etiquetado. Consulta [Etiquetado de servicio unificado][5] sobre cómo se utilizan estas etiquetas (tags) a lo largo de Datadog. ### Controladores compatibles @@ -173,10 +176,10 @@ Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de t El proveedor [ADO][6] recomendado es el [controlador de Microsoft OLE DB][7]. Asegúrate de que el controlador está instalado en el host donde se ejecuta el Agent. ```yaml connector: adodbapi -adoprovider: MSOLEDBSQL19 # Sustituye por MSOLEDBSQL para las versiones 18 y anteriores +adoprovider: MSOLEDBSQL19 # Replace with MSOLEDBSQL for versions 18 and lower ``` -Los otros dos proveedores, `SQLOLEDB` y `SQLNCLI`, se consideran obsoletos por Microsoft y ya no deben ser utilizados. +Los otros dos proveedores, `SQLOLEDB` y `SQLNCLI`, están considerados obsoletos por Microsoft y ya no deben utilizarse. #### ODBC @@ -189,7 +192,7 @@ driver: 'ODBC Driver 18 for SQL Server' Una vez terminada la configuración del Agent, [reinicia el Datadog Agent][9]. -### Validar +### Validación [Ejecuta el subcomando de estado del Agent][10] y busca `sqlserver` en la sección **Checks** o visita la página [Bases de datos][11] de Datadog para empezar. @@ -235,13 +238,13 @@ instances: Para obtener información adicional sobre la configuración de los campos `deployment_type` y `name`, consulta las [especificaciones para la integración SQL Server][4]. -Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema de etiquetado común. Para saber cómo se utilizan estas etiquetas en Datadog, consulta [Etiquetado unificado de servicios][5]. +Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema común de etiquetado. Consulta [Etiquetado de servicio unificado][5] sobre cómo se utilizan estas etiquetas (tags) a lo largo de Datadog. -Una vez terminada la configuración del Agent, [reinicia el Datadog Agent][6]. +Una vez completada la configuración del Agent, [reinicia el Datadog Agent][6]. -### Validar +### Validación -[Ejecuta el subcomando de estado del Agent][7] y busca `sqlserver` en la sección **Checks** o visita la página [Bases de datos][8] de Datadog para empezar. +[Ejecuta el subcomando de estado del Agent][7] y busca `sqlserver` en la sección **Checks**. Ve a la página [Bases de datos][8] en Datadog para empezar. [1]: https://app.datadoghq.com/account/settings/agent/latest @@ -256,7 +259,7 @@ Una vez terminada la configuración del Agent, [reinicia el Datadog Agent][6]. {{% tab "Docker" %}} Para configurar el Database Monitoring Agent que se ejecuta en un contenedor Docker, configura las [plantillas de integración Autodiscovery][1] como etiquetas (labels) de Docker en el contenedor de tu Agent. -**Nota**: El Agent debe tener permiso de lectura en el socket Docker para que las etiquetas de Autodiscovery funcionen. +**Nota**: El Agent debe tener permiso de lectura en el socket Docker para que las etiquetas (labels) de Autodiscovery funcionen. Sustituye los valores para que coincidan con tu cuenta y tu entorno. Para ver todas las opciones de configuración disponibles, consulta el [archivo de configuración de ejemplo][2]. @@ -291,7 +294,7 @@ Para obtener información adicional sobre la configuración de los campos `deplo Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema de etiquetado común. Para saber cómo se utilizan estas etiquetas en Datadog, consulta [Etiquetado unificado de servicios][4]. -### Validar +### Validación [Ejecuta el subcomando de estado del Agent][5] y busca `sqlserver` en la sección **Checks** o visita la página [Bases de datos][6] de Datadog para empezar. @@ -306,9 +309,9 @@ Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de t {{% tab "Kubernetes" %}} Si estás ejecutando un clúster de Kubernetes, utiliza el [Datadog Cluster Agent][1] para habilitar Database Monitoring. Si los checks de clúster aún no están habilitados, [sigue estas instrucciones][2] para habilitarlos antes de continuar. -### Operación +### Operador -Sigue los pasos que se indican a continuación para configurar la integración de SQL Server, utilizando como referencia las [Instrucciones del Operator en Kubernetes e integraciones][6]. +Sigue los pasos que se indican a continuación para configurar la integración SQL Server, utilizando como referencia las [instrucciones del Operator en Kubernetes e integraciones][6]. 1. Crea o actualiza el archivo `Datadog-Agent.yaml` con la siguiente configuración: @@ -350,7 +353,7 @@ Sigue los pasos que se indican a continuación para configurar la integración d driver: 'ODBC Driver 18 for SQL Server' dbm: true # Optional: For additional tags - tags: + tags: - 'service:' - 'env:' # After adding your project and instance, configure the Datadog Azure integration to pull additional cloud data such as CPU, Memory, etc. @@ -359,7 +362,7 @@ Sigue los pasos que se indican a continuación para configurar la integración d fully_qualified_domain_name: '' ``` -2. Aplica los cambios al Datadog Operator utilizando el siguiente comando: +2. Aplica los cambios al Datadog Operator con el siguiente comando: ```shell kubectl apply -f datadog-agent.yaml @@ -385,7 +388,7 @@ Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu c connector: 'odbc' driver: 'ODBC Driver 18 for SQL Server' # Optional: For additional tags - tags: + tags: - 'service:' - 'env:' # After adding your project and instance, configure the Datadog Azure integration to pull additional cloud data such as CPU, Memory, etc. @@ -403,7 +406,7 @@ Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu c ```
-For Windows, append --set targetSystem=windows to the helm install command. +Para Windows, adjunta --set targetSystem=windows al comando de instalación de Helm.
### Configuración con archivos integrados @@ -420,8 +423,8 @@ instances: password: 'ENC[datadog_user_database_password]' connector: 'odbc' driver: 'ODBC Driver 18 for SQL Server' - # Optional: For additional tags - tags: + # Optional: For additional tags + tags: - 'service:' - 'env:' # After adding your project and instance, configure the Datadog Azure integration to pull additional cloud data such as CPU, Memory, etc. @@ -432,7 +435,7 @@ instances: ### Configuración con anotaciones de servicios de Kubernetes -En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check en un Agent que se ejecuta en Kubernetes, crea un servicio en el mismo espacio de nombres que el Datadog Cluster Agent: +En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio con la siguiente sintaxis: ```yaml apiVersion: v1 diff --git a/content/es/database_monitoring/setup_sql_server/gcsql.md b/content/es/database_monitoring/setup_sql_server/gcsql.md index f15a34ef8c560..ff6ce1e383f87 100644 --- a/content/es/database_monitoring/setup_sql_server/gcsql.md +++ b/content/es/database_monitoring/setup_sql_server/gcsql.md @@ -8,6 +8,9 @@ further_reading: - link: /database_monitoring/guide/sql_deadlock/ tag: Documentación text: Configurar la monitorización de interbloqueos +- link: /database_monitoring/guide/sql_extended_events/ + tag: Documentación + text: Configurar la finalización de consultas y la recopilación de errores de consulta title: Configuración de Database Monitoring para SQL Server gestionado por Google Cloud SQL --- @@ -49,7 +52,7 @@ CREATE USER datadog FOR LOGIN datadog; Esto es necesario porque Google Cloud SQL no permite conceder el permiso `CONNECT ANY DATABASE`. El Datadog Agent necesita conectarse a cada base de datos para recopilar estadísticas de E/S de archivos específicas de la base de datos. -## Instalación y configuración del Agent +## Instala y configura el Agent Dado que Google Cloud no permite el acceso directo al host, el Datadog Agent debe instalarse en un host distinto donde pueda comunicarse con el host de SQL Server. Existen varias opciones para instalar y ejecutar el Agent. @@ -81,7 +84,7 @@ Para obtener información adicional sobre la configuración de los campos `proje Para utilizar la [autenticación de Windows][4], configura `connection_string: "Trusted_Connection=yes"` y omite los campos `username` y `password`. -Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema de etiquetado común. Para saber cómo se utilizan estas etiquetas en Datadog, consulta [Etiquetado unificado de servicios][5]. +Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema común de etiquetado. Consulta [Etiquetado de servicio unificado][5] sobre cómo se utilizan estas etiquetas (tags) a lo largo de Datadog. ### Guarda tu contraseña de forma segura {{% dbm-secret %}} @@ -93,10 +96,10 @@ Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de t El proveedor [ADO][6] recomendado es el [controlador de Microsoft OLE DB][7]. Asegúrate de que el controlador está instalado en el host donde se ejecuta el Agent. ```yaml connector: adodbapi -adoprovider: MSOLEDBSQL19 # Sustituye por MSOLEDBSQL para las versiones 18 y anteriores +adoprovider: MSOLEDBSQL19 # Replace with MSOLEDBSQL for versions 18 and lower ``` -Los otros dos proveedores, `SQLOLEDB` y `SQLNCLI`, se consideran obsoletos por Microsoft y ya no deben ser utilizados. +Los otros dos proveedores, `SQLOLEDB` y `SQLNCLI`, están considerados obsoletos por Microsoft y ya no deben utilizarse. #### ODBC @@ -109,7 +112,7 @@ driver: 'ODBC Driver 18 for SQL Server' Una vez terminada la configuración del Agent, [reinicia el Datadog Agent][9]. -### Validar +### Validación [Ejecuta el subcomando de estado del Agent][10] y busca `sqlserver` en la sección **Checks** o visita la página [Bases de datos][11] de Datadog para empezar. @@ -155,13 +158,13 @@ instances: Para obtener información adicional sobre la configuración de los campos `project_id` y `instance_id`, consulta las [especificaciones para la integración SQL Server][4]. -Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema de etiquetado común. Para saber cómo se utilizan estas etiquetas en Datadog, consulta [Etiquetado unificado de servicios][5]. +Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema común de etiquetado. Consulta [Etiquetado de servicio unificado][5] sobre cómo se utilizan estas etiquetas (tags) a lo largo de Datadog. -Una vez terminada la configuración del Agent, [reinicia el Datadog Agent][6]. +Una vez completada la configuración del Agent, [reinicia el Datadog Agent][6]. -### Validar +### Validación -[Ejecuta el subcomando de estado del Agent][7] y busca `sqlserver` en la sección **Checks** o visita la página [Bases de datos][8] de Datadog para empezar. +[Ejecuta el subcomando de estado del Agent][7] y busca `sqlserver` en la sección **Checks**. Ve a la página [Bases de datos][8] en Datadog para empezar. [1]: https://app.datadoghq.com/account/settings/agent/latest @@ -176,7 +179,7 @@ Una vez terminada la configuración del Agent, [reinicia el Datadog Agent][6]. {{% tab "Docker" %}} Para configurar el Database Monitoring Agent que se ejecuta en un contenedor Docker, configura las [plantillas de integración Autodiscovery][1] como etiquetas (labels) de Docker en el contenedor de tu Agent. -**Nota**: El Agent debe tener permiso de lectura en el socket Docker para que las etiquetas de Autodiscovery funcionen. +**Nota**: El Agent debe tener permiso de lectura en el socket Docker para que las etiquetas (labels) de Autodiscovery funcionen. Sustituye los valores para que coincidan con tu cuenta y tu entorno. Para ver todas las opciones de configuración disponibles, consulta el [archivo de configuración de ejemplo][2]. @@ -212,7 +215,7 @@ Para obtener información adicional sobre la configuración de los campos `proje Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de tu base de datos a otras telemetrías mediante un esquema de etiquetado común. Para saber cómo se utilizan estas etiquetas en Datadog, consulta [Etiquetado unificado de servicios][4]. -### Validar +### Validación [Ejecuta el subcomando de estado del Agent][5] y busca `sqlserver` en la sección **Checks** o visita la página [Bases de datos][6] de Datadog para empezar. @@ -226,9 +229,9 @@ Utiliza las etiquetas (tags) `service` y `env` para vincular la telemetría de t {{% tab "Kubernetes" %}} Si estás utilizando un clúster de Kubernetes, utiliza el [Datadog Cluster Agent ][1] para Database Monitoring. Si los checks del clúster aún no están habilitadas, [sigue estas instrucciones][2] para habilitarlos antes de continuar.. -### Operación +### Operador -Sigue los pasos que se indican a continuación para configurar la integración del servidor SQL, utilizando como referencia las [Instrucciones del operador en Kubernetes e integraciones][6]. +Sigue los pasos que se indican a continuación para configurar la integración SQL Server, utilizando como referencia las [instrucciones del Operator en Kubernetes e integraciones][6]. 1. Crea o actualiza el archivo `Datadog-Agent.yaml` con la siguiente configuración: @@ -270,7 +273,7 @@ Sigue los pasos que se indican a continuación para configurar la integración d driver: 'ODBC Driver 18 for SQL Server' dbm: true # Optional: For additional tags - tags: + tags: - 'service:' - 'env:' # After adding your project and instance, configure the Datadog Google Cloud (GCP) integration to pull additional cloud data such as CPU, Memory, etc. @@ -279,7 +282,7 @@ Sigue los pasos que se indican a continuación para configurar la integración d instance_id: '' ``` -2. Aplica los cambios al Operador de Datadog utilizando el siguiente comando: +2. Aplica los cambios al Datadog Operator con el siguiente comando: ```shell kubectl apply -f datadog-agent.yaml @@ -305,7 +308,7 @@ Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu c connector: 'odbc' driver: 'ODBC Driver 18 for SQL Server' # Optional: For additional tags - tags: + tags: - 'service:' - 'env:' # After adding your project and instance, configure the Datadog Google Cloud (GCP) integration to pull additional cloud data such as CPU, Memory, etc. @@ -323,7 +326,7 @@ Realiza los siguientes pasos para instalar el [Datadog Cluster Agent][1] en tu c ```
-For Windows, append --set targetSystem=windows to the helm install command. +Para Windows, adjunta --set targetSystem=windows al comando de instalación de Helm.
### Configuración con archivos integrados @@ -340,8 +343,8 @@ instances: password: 'ENC[datadog_user_database_password]' connector: 'odbc' driver: 'ODBC Driver 18 for SQL Server' - # Optional: For additional tags - tags: + # Optional: For additional tags + tags: - 'service:' - 'env:' # After adding your project and instance, configure the Datadog Google Cloud (GCP) integration to pull additional cloud data such as CPU, Memory, etc. @@ -352,7 +355,7 @@ instances: ### Configuración con anotaciones de servicios de Kubernetes -En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check en un Agent que se ejecuta en Kubernetes, crea un servicio en el mismo espacio de nombres que el Datadog Cluster Agent: +En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio con la siguiente sintaxis: ```yaml diff --git a/content/es/getting_started/integrations/_index.md b/content/es/getting_started/integrations/_index.md index 156e544f15dc2..61209ab19d071 100644 --- a/content/es/getting_started/integrations/_index.md +++ b/content/es/getting_started/integrations/_index.md @@ -1,4 +1,6 @@ --- +description: Unifica métricas y logs de infraestructura utilizando integraciones basadas + en el Agent, basadas en la autenticación y de biblioteca. further_reading: - link: https://learn.datadoghq.com/courses/intro-to-integrations tag: Centro de aprendizaje @@ -6,6 +8,9 @@ further_reading: - link: /integrations/ tag: Documentación text: Consulta la lista de integraciones de Datadog +- link: https://www.datadoghq.com/blog/1k-integrations-milestone/ + tag: Blog + text: 'Escalado de la observabilidad de Datadog: 1.000 integraciones y más' title: Introducción a las integraciones --- @@ -147,7 +152,7 @@ Cada integración tiene uno de los cuatro tipos de estado: Para obtener información sobre cómo Datadog maneja tus datos y otras cuestiones de seguridad, consulta la [documentación acerca de la seguridad][30]. -## Control de acceso granular +## Control de acceso preciso Por defecto, el acceso a los recursos de una integración (cuentas, servicios, webhooks) no está restringido. Se pueden utilizar controles de acceso granulares para restringir el comportamiento de usuarios, equipos, funciones o toda la organización a nivel de recursos de la integración. **Nota**: La opción de acceso restringido sólo es visible si integración admite el control de acceso granular. Para verificar si el control de acceso granular es compatible con una integración, consulta la [documentación de la integración][46]. @@ -157,7 +162,7 @@ Por defecto, el acceso a los recursos de una integración (cuentas, servicios, w 2. Haz clic en **Set Permissions** (Configurar permisos). 3. Por defecto, todos los miembros de tu organización tienen acceso total. Haz clic en **Restrict Access** (Restringir el acceso). 4. El cuadro de diálogo se actualiza para mostrar que los miembros de tu organización tienen por omisión el permiso de acceso **Viewer** (Visualización). -5. Utiliza el menú desplegable para seleccionar uno o varios roles, equipos o usuarios que pueden editar el monitor. +5. Utiliza el menú desplegable para seleccionar uno o varios equipos, roles o usuarios que puedan editar el monitor. **Nota**: El permiso de [gestión de integraciones][45] también es necesario para editar recursos individuales. 6. Haz clic en **Add** (Añadir). 7. El cuadro de diálogo se actualiza para mostrar los permisos actualizados. diff --git a/content/es/getting_started/integrations/aws.md b/content/es/getting_started/integrations/aws.md index 8318aeb82e91c..e9b1f23784b69 100644 --- a/content/es/getting_started/integrations/aws.md +++ b/content/es/getting_started/integrations/aws.md @@ -1,4 +1,7 @@ --- +description: Integra tu cuenta de Amazon Web Services con Datadog utilizando CloudFormation. + Configura roles IAM, habilita integraciones de servicios y configura el reenvío + de logs. further_reading: - link: https://www.datadoghq.com/blog/aws-monitoring/ tag: Blog @@ -24,7 +27,7 @@ further_reading: text: Monitoriza Amazon ECS en cualquier lugar con Datadog - link: /integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose/?tab=cloudformation tag: Documentación - text: Secuencias métricas de AWS CloudWatch con Kinesis Data Firehose + text: AWS CloudWatch Metric Streams con Amazon Data Firehose - link: https://www.datadoghq.com/blog/monitor-aws-graviton3-with-datadog/ tag: Blog text: Monitoriza tus instancias EC2 impulsadas por Graviton3 con Datadog @@ -33,14 +36,16 @@ title: Empezando con AWS ## Información general -Esta guía ofrece información general sobre el proceso de integración de una cuenta de Amazon Web Services (AWS) con Datadog usando la plantilla de CloudFormation de Datadog. +Esta guía proporciona una descripción general del proceso para integrar una cuenta de Amazon Web Services (AWS) con Datadog mediante la plantilla CloudFormation de Datadog. Sin entrar en detalles, esto implica la creación de una política asociada y de roles de IAM para que la cuenta de AWS de Datadog pueda hacer llamadas a la API de tu cuenta de AWS con el fin de recopilar o insertar datos. La plantilla también implementa la función lambda de [Datadog Forwarder][1] para enviar logs a Datadog. Si usas la plantilla de CloudFormation, dispondrás de todas las herramientas necesarias para enviar estos datos a tu cuenta de Datadog, y Datadog conservará la plantilla de CloudFormation para proporcionar la funcionalidad más reciente. -Una vez que esté establecida la conexión inicial, puedes habilitar las integraciones de servicios concretos de AWS que resulten pertinentes para tu entorno de AWS. Basta un solo clic para que Datadog envíe los recursos necesarios a tu cuenta de AWS y comience a consultar las métricas y eventos de los servicios que utilizas. En lo referente a los servicios populares que usas de AWS, Datadog provee dashboards predefinidos para que dispongas de una visibilidad inmediata y personalizable. Esta guía te muestra cómo configurar la integración e instalar el Datadog Agent en una instancia EC2 de Amazon Linux y, además, facilita información general sobre las funciones de la integración. Consulta la sección [Habilitar las integraciones de servicios concretos de AWS](#enable-integrations-for-individual-aws-service) para ver una lista con las subintegraciones disponibles. +Una vez que esté establecida la conexión inicial, puedes habilitar las integraciones de servicios concretos de AWS que resulten pertinentes para tu entorno de AWS. Basta un solo clic para que Datadog envíe los recursos necesarios a tu cuenta de AWS y comience a consultar las métricas y eventos de los servicios que utilizas. En lo referente a los servicios populares que usas de AWS, Datadog provee dashboards predefinidos para que dispongas de una visibilidad inmediata y personalizable. Esta guía te muestra cómo configurar la integración e instalar el Datadog Agent en una instancia EC2 de Amazon Linux y, además, facilita información general sobre las funciones de la integración. Consulta la sección [Habilitar las integraciones de servicios concretos de AWS](#enable-integrations-for-individual-aws-services) para ver una lista con las subintegraciones disponibles. Puedes repetir este proceso en todas las cuentas de AWS en las que sea necesario, aunque también puedes usar [API][3], [AWS CLI][4] o [Terraform][5] para configurar varias cuentas a la vez. Para más información, lee la [Guía de Datadog-Amazon CloudFormation][6]. +**Nota**: La plantilla de CloudFormation de Datadog sólo admite la creación y eliminación de sus recursos definidos. Consulta [Actualizar tu plantilla de stack tecnológico][59] para obtener orientación sobre cómo aplicar actualizaciones a tu stack tecnológico. + ## Requisitos previos Antes de empezar, asegúrate de que cumples los siguientes requisitos previos: @@ -69,6 +74,7 @@ Antes de empezar, asegúrate de que cumples los siguientes requisitos previos: * iam:GetRolePolicy * iam:PassRole * iam:PutRolePolicy + * iam:TagRole * iam:UpdateAssumeRolePolicy * kms:Decrypt * lambda:AddPermission @@ -97,6 +103,7 @@ Antes de empezar, asegúrate de que cumples los siguientes requisitos previos: * s3:PutBucketPolicy * s3:PutBucketPublicAccessBlock * s3:PutEncryptionConfiguration + * s3:PutLifecycleConfiguration * secretsmanager:CreateSecret * secretsmanager:DeleteSecret * secretsmanager:GetSecretValue @@ -109,49 +116,57 @@ Antes de empezar, asegúrate de que cumples los siguientes requisitos previos: 3. Configura los parámetros de la integración en la opción **Automatically using CloudFormation** (Usar CloudFormation automáticamente). a. Selecciona las regiones de AWS que desees integrar. - b. Añade tu [clave API][58] de Datadog. - c. Opcionalmente, envía logs y otros datos a Datadog con la [función lambda de Forwarder de Datadog][1]. - d. Opcionalmente, habilita la [administración de la posición de seguridad en la nube][54] (CSPM, por sus siglas en inglés) para escanear tu entorno de nube, tus hosts y tus contenedores con el objetivo de detectar errores de configuración y riesgos de seguridad. + b. Añade tu [clave de API] de Datadog[9]. + c. Opcionalmente, envía logs y otros datos a Datadog con la [función Forwarder de Lambda de Datadog][1]. + d. Opcionalmente, activa [Errores de configuración de Cloud Security][54] para escanear tu entorno de nube, hosts y contenedores en busca de errores de configuración y riesgos de seguridad. -5. Haz clic en **Launch CloudFormation Template** (Iniciar plantilla de CloudFormation) para abrir la consola de AWS y cargar el stack de CloudFormation. Todos los parámetros estarán ya rellenados en función de lo que hayas seleccionado en el anterior formulario de Datadog, por lo que no tendrás que editarlos a menos que quieras hacerlo. +4. Haz clic en **Launch CloudFormation Template** (Iniciar plantilla de CloudFormation) para abrir la consola de AWS y cargar stack de CloudFormation. Todos los parámetros estarán completados en función de lo que hayas seleccionado en el anterior formulario de Datadog, por lo que no tendrás que editarlos a menos que quieras hacerlo. **Nota:** El parámetro `DatadogAppKey` permite que el stack de CloudFormation haga llamadas a la API de Datadog para ampliar y editar la configuración de Datadog en esta cuenta de AWS. La clave se genera automáticamente y está vinculada a tu cuenta de Datadog. -6. Marca las casillas obligatorias de AWS y haz clic en **Create stack** (Crear stack). Se iniciará el proceso de creación del stack de Datadog y de tres stacks anidados. Eso podría tardar varios minutos. Asegúrate de que el stack se ha creado correctamente antes de continuar. +5. Marca las casillas obligatorias de AWS y haz clic en **Create stack** (Crear stack). Se iniciará el proceso de creación del stack de Datadog y de tres stacks anidados. Eso podría tardar varios minutos. Asegúrate de que el stack se haya creado correctamente antes de continuar. + +6. Una vez que hayas creado el stack, vuelve al cuadro de integración de AWS en Datadog y haz clic en **Ready!** (Listo). + +7. La recopilación de datos podría tardar hasta 10 minutos en iniciarse. Después, consulta el [dashboard de información general de AWS][12] predefinido para ver las métricas enviadas por tus servicios e infraestructura de AWS: +{{< img src="getting_started/integrations/aws-dashboard.png" alt="Dashboard de información general de AWS en la cuenta de Datadog. A la izquierda, está el logotipo de AWS y un gráfico de eventos de AWS que indica que no se encontraron entradas que coincidan con la búsqueda. En el centro, hay gráficos relacionados con los volúmenes de EBS que incluyen datos numéricos y un mapa de calor con los datos. A la derecha, están los gráficos relacionados con ELB, que incluyen datos numéricos y un gráfico temporal que muestra picos de datos de las tres fuentes.">}} + +## Configuración -7. Una vez que hayas creado el stack, vuelve al cuadro de integración de AWS en Datadog y haz clic en **Ready!** (Listo). +### Habilitar las integraciones de servicios concretos de AWS -8. Espera a que se inicie la recopilación de datos durante un máximo de 10 minutos. Después, consulta el [dashboard de información general de AWS][12] predefinido para ver las métricas enviadas por tus servicios e infraestructura de AWS: -{{< img src="getting_started/integrations/aws-dashboard.png" alt="Dashboard de información general de AWS en la cuenta de Datadog. A la izquierda, puede verse el logotipo de AWS y un gráfico de eventos de AWS con el mensaje 'No matching entries found' (No se encontraron entradas coincidentes). En el centro, están los gráficos relacionados con los volúmenes de almacenamiento de nivel de bloque (EBS), donde pueden verse datos numéricos y un mapa de actividad con datos coherentes. A la derecha, están los gráficos relacionados con los balanceadores de carga (ELB), donde pueden verse tanto datos numéricos como un gráfico de serie temporal con picos de información procedente de tres fuentes.">}} +Consulta la [página de integraciones][13] para ver un listado completo de las subintegraciones disponibles. Muchas de estas integraciones se instalan de forma predeterminada cuando Datadog reconoce los datos procedentes de tu cuenta de AWS. -## Habilitar las integraciones de servicios concretos de AWS +Utiliza la pestaña **Metric Collection** (Recopilación de métricas) en la [página de la integración AWS][8] para configurar de qué servicios recopilará métricas la integración Datadog. -Consulta la [página de Integrations (Integraciones)][13] para ver un listado completo de las subintegraciones disponibles. Muchas de estas integraciones se instalan de forma predeterminada cuando Datadog reconoce los datos procedentes de tu cuenta de AWS. +### Añadir regiones + +En la pestaña **General** de la [página de la integración AWS][8], puedes controlar las regiones de AWS en las que Datadog recopila métricas, eventos de CloudWatch y recursos. ## Enviar logs Existen dos formas de enviar los logs de los servicios de AWS a Datadog: -- [Destino de Kinesis Firehose][63]: Usa el destino de Datadog en tu flujo de entrega de Kinesis Firehose para transferir los logs a Datadog. Es el método recomendado cuando se trata de enviar un volumen muy alto de logs desde CloudWatch. -- [Función lambda de Forwarder][64]: Despliega la función lambda de Datadog Forwarder. Esta se suscribe a los depósitos de S3 o a tus grupos de logs de CloudWatch, y transfiere logs a Datadog. **Debes** usar este método para enviar trazas (traces), métricas mejoradas o métricas personalizadas a partir de funciones lambda, de forma asincrónica y a través de logs. Datadog también recomienda este método para enviar logs de S3 a otros recursos que no pueden transferir datos por streaming hacia Kinesis. +- [Destino de Amazon Data Firehose][10]: Utiliza el destino Datadog en tu flujo (stream) de entrega de Amazon Data Firehose para reenviar logs a Datadog. Se recomienda usar este enfoque cuando envías grandes volúmenes de logs desde CloudWatch. +- [Función de Forwarder Lambda][11]: despliega la función de Forwarder Lambda de Datadog, que se suscribe a los buckets de S3 o a tus grupos de logs de CloudWatch y reenvía logs a Datadog. **Debes** utilizar este enfoque para enviar trazas (traces), métricas mejoradas o métricas personalizadas desde funciones de Lambda de forma asíncrona a través de logs. Datadog también te recomienda usar este enfoque para enviar logs desde S3 u otros recursos que no puedan transmitir datos directamente a Kinesis. -Lee la sección [Habilitar los logs en tu servicio de AWS][14] para habilitar el flujo de logs en los servicios de AWS más utilizados. +Lee la sección [Habilitar los logs en tu servicio de AWS][14] para activar el flujo de logs en los servicios de AWS más utilizados. ### Validación -Una vez que hayas habilitado los logs, los encontrarás en el [Logs Explorer (Explorador de logs)][15] con las facetas `source` o `service` del panel de facetas, tal y como se muestra en este ejemplo de S3: -{{< img src="getting_started/integrations/logs-explorer.png" alt="Página del Logs Explorer (Explorador de logs) de la cuenta de Datadog. En el lado izquierdo de la imagen, se pueden ver las facetas `source` y `service`, ambas con la casilla 's3' marcada. A la derecha, se muestran algunas entradas de logs en formato lista.">}} +Una vez que hayas habilitado los logs, los encontrarás en el [Log Explorer][15] con las facetas `source` o `service` del panel de facetas, tal y como se muestra en este ejemplo de S3: +{{< img src="getting_started/integrations/logs-explorer.png" alt="Página del Log Explorer de la cuenta de Datadog. En el lado izquierdo de la imagen, se pueden ver las facetas `source` y `service`, ambas con la casilla "s3" marcada. A la derecha, se muestran algunas entradas de logs en formato de lista.">}} ## Saca más provecho de la plataforma Datadog -### Instala el Datadog Agent en EC2 para una mayor visibilidad +### Instala el Datadog Agent en EC2 para obtener mayor visibilidad -La integración de AWS con Datadog ya rastrea de forma predeterminada la API de CloudWatch para recopilar las métricas proporcionadas por AWS. No obstante, puedes disfrutar de una visibilidad aún mayor en tus instancias de EC2 con el [Datadog Agent][16]. El Agent es un daemon ligero que genera informes de métricas y eventos, aunque también se puede configurar para que lo haga con logs y trazas (traces). En la sección [Agent Installation (Instalación del Agent)][17] de la aplicación de Datadog, encontrarás las instrucciones para instalar el Agent en una amplia variedad de sistemas operativos. Muchos sistemas operativos (como Amazon Linux) cuentan con comandos de instalación en un único paso que puedes ejecutar para instalar el Agent desde el terminal de la instancia: -{{< img src="getting_started/integrations/integrations-agent-installation.png" alt="Sección 'Agent' de la pestaña 'Integrations' (Integraciones) de Datadog. A la izquierda, se muestra la lista de los sistemas operativos compatibles con el Datadog Agent; Amazon Linux aparece resaltado. A la derecha, se ve el enunciado 'Use our easy one-step install' (Usa nuestra sencilla instalación en un solo paso). El comando para instalar el Agent está justo debajo, con la sección confusa DD_API_KEY.">}} +La integración de AWS con Datadog ya rastrea de forma predeterminada la API de CloudWatch para recopilar las métricas proporcionadas por AWS. No obstante, puedes disfrutar de una visibilidad aún mayor en tus instancias de EC2 con el [Datadog Agent][16]. El Agent es un daemon ligero que genera informes de métricas y eventos, aunque también se puede configurar para que lo haga con logs y trazas. En la sección [Agent Installation][17] (Instalación del Agent) de la aplicación de Datadog, encontrarás las instrucciones para instalar el Agent en una amplia variedad de sistemas operativos. Muchos sistemas operativos (como Amazon Linux) cuentan con comandos de instalación en un único paso que puedes ejecutar para instalar el Agent desde el terminal de la instancia: +{{< img src="getting_started/integrations/integrations-agent-installation.png" alt="Sección "Agent" de la pestaña "Integrations" (Integraciones) de Datadog. A la izquierda, se muestra la lista de los sistemas operativos compatibles con el Datadog Agent; Amazon Linux aparece resaltado. A la derecha, se ve el enunciado "Use our easy one-step install" (Usa nuestra sencilla instalación en un solo paso). El comando para instalar el Agent está justo debajo, con la sección difusa DD_API_KEY.">}} Una vez que Agent esté instalado, se representará gráficamente en la [lista de infraestructuras][18] con un icono en forma de hueso: -{{< img src="getting_started/integrations/infrastructure-list.png" alt="Lista de infraestructuras en las que pueden verse dos hosts en formato lista. Ambos hosts tienen el icono de AWS para representar la integración de AWS, así como el texto 'aws' en un recuadro azul para indicar que están asociados a la integración de AWS. Uno de los hosts también tiene el icono de un hueso de perro y recuadros azules con los textos 'ntp' y 'system'.">}} +{{< img src="getting_started/integrations/infrastructure-list.png" alt="Lista de infraestructuras en las que pueden verse dos hosts en formato de lista. Ambos hosts tienen el icono de AWS para representar la integración de AWS, así como el texto "aws" en un recuadro azul para indicar que están asociados a la integración de AWS. Uno de los hosts también tiene el icono de un perro y recuadros azules con los textos "ntp" y "system".">}} -En la captura de pantalla de arriba, se puede observar que el host que tiene el Datadog Agent instalado genera informes de datos a partir de los checks del [sistema][19] y del [NTP][20]. El check del sistema proporciona métricas sobre la CPU, la memoria, el sistema de archivos y la E/S, lo que aporta información adicional al host. Puedes habilitar más [integraciones][21] para ajustarse al entorno y al caso de uso, o incluso utilizar [DogStatsD][22] para enviar directamente las métricas personalizadas a Datadog. +La captura de pantalla anterior muestra el host con el Datadog Agent informando de los datos de los checks de [Sistema][19] y [NTP][20]. El check de sistema proporciona métricas en torno a CPU, memoria, sistema de archivos y E/S, y brinda información adicional sobre el host. Puedes activar [integraciones][21] adicionales para adaptarte al entorno y al caso de uso, o utilizar [DogStatsD][22] para enviar métricas personalizadas directamente a Datadog. Consulta las [FAQ sobre por qué deberías instalar el Datadog Agent en tus instancias de nube][23] para obtener más información sobre las ventajas de este enfoque. @@ -167,68 +182,73 @@ Utiliza la [documentación sobre Amazon ECS][25] para ejecutar el [Datadog Docke Utiliza la [documentación sobre Amazon ECS en AWS Fargate][28] para ejecutar el Agent a modo de contenedor con la misma definición de tarea que tu aplicación. **Nota**: Se necesita la versión 6.1.1 (o posterior) del Datadog Agent para aprovechar al máximo la integración de Fargate. +#### AWS Batch con tipo de orquestación Fargate + +Utiliza la [documentación sobre Amazon ECS en AWS Fargate para AWS Batch][58] para ejecutar el Agent a modo de contenedor con la misma definición de trabajo de AWS Batch que tu aplicación. **Nota**: Se necesita la versión 6.1.1 o posterior del Datadog Agent para aprovechar al máximo la integración de Fargate. + #### EKS -No necesitas llevar a cabo ninguna configuración concreta para el Amazon Elastic Kubernetes Service (EKS), tal y como se menciona en la [documentación sobre las distribuciones de Kubernetes][29]. Utiliza la [documentación específica sobre Kubernetes][30] para implementar el Agent en tu clúster de EKS. +No necesitas llevar a cabo ninguna configuración concreta para Amazon Elastic Kubernetes Service (EKS), tal y como se menciona en la [documentación sobre las distribuciones de Kubernetes][29]. Utiliza la [documentación específica sobre Kubernetes][30] para implementar el Agent en tu clúster de EKS. #### EKS con Fargate -Dado que la gestión de los pods de Fargate corre a cargo de AWS, estos no realizan checks en los componentes del sistema del host, como la CPU y la memoria. Para recopilar los datos de tus pods de AWS Fargate, utiliza la [documentación sobre Amazon EKS en AWS Fargate][31] para ejecutar el Agent a modo de sidecar del pod de tu aplicación con control de acceso personalizado y basado en roles (RBAC). **Nota**: Se necesita la versión 7.17 (o posterior) del Datadog Agent. +Dado que AWS gestiona los pods de Fargate, no se realizan checks en los componentes del sistema del host, como la CPU y la memoria. Para recopilar los datos de tus pods de AWS Fargate, utiliza la [documentación sobre Amazon EKS en AWS Fargate][31] para ejecutar el Agent a modo de respaldo del pod de tu aplicación con control de acceso personalizado y basado en roles (RBAC). **Nota**: Se necesita la versión 7.17 (o posterior) del Datadog Agent. -#### EKS en cualquier lugar +#### EKS Anywhere -Utiliza la [documentación sobre EKS en cualquier lugar][32] para los clústeres de Kubernetes locales. +Utiliza la [documentación sobre EKS Anywhere][32] para los clústeres de Kubernetes on-premises. ### Crea recursos adicionales de Datadog -Además de usar la IU o la [API][33] de Datadog, puedes crear muchos [recursos de Datadog][34] con el [registro de CloudFormation][35]. Si quieres tener visibilidad y solucionar problemas, utiliza los [dashboards][36] para mostrar los datos clave, ejecuta las [funciones][37] y busca [correlaciones de métricas][38]. +Además de utilizar la interfaz de usuario o la [API][33] de Datadog, puedes crear muchos [recursos de Datadog][34] con el [Registro de CloudFormation][35]. Para obtener visibilidad y solucionar problemas, utiliza [dashboards][36] para mostrar datos clave, aplicar [funciones][37] y encontrar [Correlaciones de métricas][38]. -Para recibir notificaciones acerca de cualquier comportamiento indeseado o inesperado que se produzca en tu cuenta, crea [monitores][39]. Los monitores evalúan de forma coherente los datos que recibe tu cuenta y envían [notificaciones][40] para garantizar que la información llegue a los miembros del equipo pertinentes. Revisa la [lista de integraciones de notificación][41] para descubrir todas las formas mediante las que puedes notificar a tu equipo. +Para recibir notificaciones acerca de cualquier comportamiento no deseado o inesperado que se produzca en tu cuenta, crea [monitores][39]. Los monitores evalúan de forma constante los datos que recibe tu cuenta y envían [notificaciones][40] para garantizar que la información llegue a los miembros del equipo pertinentes. Revisa la [lista de integraciones de notificación][41] para descubrir todas las formas mediante las que puedes notificar a tu equipo. ## Explora productos relacionados ### Serverless -Puedes unificar las métricas, trazas y logs de las funciones lambda de AWS que ejecutan aplicaciones serverless en Datadog. Dirígete a la sección [Serverless][42] para consultar las instrucciones sobre cómo instrumentar tu aplicación, instalar [bibliotecas e integraciones serverless][43], implementar [trazas distribuidas con aplicaciones serverless][44] o [solucionar problemas en entornos serverless][45]. +Puedes unificar las métricas, trazas (traces) y logs de las funciones de AWS Lambda que ejecutan aplicaciones serverless en Datadog. Dirígete a la sección [Serverless][42] para conocer cómo instrumentar tu aplicación, instalar [bibliotecas e integraciones serverless][43], implementar [trazas (traces) distribuidas con aplicaciones serverless][44] o [solucionar problemas en entornos serverless][45]. ### APM -Para profundizar aún más y reunir más datos sobre tus aplicaciones y servicios de AWS, habilita la recopilación de trazas distribuidas desde la integración de [AWS X-Ray][46] o desde un host con el Datadog Agent que use [APM][47]. Luego, lee la sección [Explorar Datadog APM][48] para comprender mejor cómo usar estos datos a fin de conocer el rendimiento de tu aplicación. +Para conocer mejor y recopilar más datos de tus aplicaciones y servicios de AWS, habilita la recopilación distribuida de trazas (traces) desde la integración con [AWS X-Ray][46] o desde un host con el Datadog Agent mediante [APM][47]. A continuación, lee la [documentación de APM][48] para comprender mejor cómo utilizar estos datos para obtener información sobre el rendimiento de tu aplicación. -También puedes usar [Watchdog][49], una función algorítmica para las métricas de infraestructura y rendimiento de APM. Su objetivo consiste en detectar automáticamente los potenciales problemas de la aplicación y enviarte notificaciones al respecto. +También puedes usar [Watchdog][49], una función algorítmica para las métricas de infraestructura y rendimiento de APM. Su objetivo consiste en detectar automáticamente los posibles problemas de la aplicación y enviarte notificaciones al respecto. ### Seguridad #### Cloud SIEM -Revisa [Empezando con Cloud SIEM][50] para evaluar tus logs con respecto a las [reglas de detección de logs][51] predefinidas. Estas reglas se pueden personalizar y, cuando detectan alguna amenaza, generan señales de seguridad a las que se puede acceder desde el [Explorador de señales de seguridad][52]. Si quieres asegurarte de que se notifica al equipo correcto, utiliza las [reglas de notificación][53] para configurar las preferencias de notificación de varias reglas. +Revisa [Empezando con Cloud SIEM][50] para evaluar tus logs con respecto a las [reglas de detección de logs][51] predefinidas. Estas reglas se pueden personalizar y, cuando detectan alguna amenaza, generan avisos de seguridad a los que se puede acceder desde el [Explorador de avisos de seguridad][52]. Si quieres asegurarte de que se notifica al equipo correcto, utiliza las [reglas de notificación][53] para configurar las preferencias de notificación de varias reglas. -#### CSPM +#### Cloud Security Misconfigurations -Utiliza la guía [Empezando con CSPM][54] para obtener información sobre cómo detectar y evaluar los errores de configuración en tu entorno de nube. Los datos de configuración de los recursos se evalúan con respecto a las reglas de detección predefinidas de administración de la posición en la [nube][55] y la [infraestructura][56] para señalar técnicas de ataque y potenciales errores de configuración, lo que permite actuar y buscar soluciones rápido. +Utiliza la guía de [Ajuste de errores de configuración de Cloud Security][54] para aprender a detectar y evaluar los errores de configuración en tu entorno en la nube. Los datos de configuración de recursos se evalúan en función de las reglas de cumplimiento listas para usar de [la nube][55] y [la infraestructura][56], a fin de detectar técnicas de ataque y posibles errores de configuración, y así lograr una respuesta y corrección rápidas. ### Solucionar problemas -Si tienes algún problema, no olvides consultar la sección [Solucionar problemas][57]. -## Leer más +Si te encuentras con el error `Datadog is not authorized to perform sts:AssumeRole`, consulta su página específica para [Solucionar problemas][2]. Para cualquier otro problema, consulta la [Guía de solución de problemas de la integración con AWS][57]. + +## Referencias adicionales {{< partial name="whats-next/whats-next.html" >}} [1]: /es/logs/guide/forwarder/ -[2]: https://aws.amazon.com/cloudtrail/ +[2]: /es/integrations/guide/error-datadog-not-authorized-sts-assume-role/ [3]: /es/api/latest/aws-integration/#create-an-aws-integration [4]: https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/index.html [5]: https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws [6]: /es/integrations/guide/amazon_cloudformation/ [7]: https://aws.amazon.com/getting-started/?nc1=f_cc [8]: https://app.datadoghq.com/integrations/amazon-web-services -[9]: /es/integrations/amazon_ec2/#ec2-automuting -[10]: /es/integrations/amazon_web_services/?tab=roledelegation#alarm-collection -[11]: /es/events/explorer -[12]: https://app.datadoghq.com/screen/integration/7/aws-overview +[9]: https://app.datadoghq.com/organization-settings/api-keys +[10]: https://docs.datadoghq.com/es/logs/guide/send-aws-services-logs-with-the-datadog-kinesis-firehose-destination/ +[11]: https://docs.datadoghq.com/es/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/ +[12]: https://app.datadoghq.com/dash/integration/7/aws-overview [13]: /es/integrations/#cat-aws [14]: /es/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/?tab=awsconsole#enable-logging-for-your-aws-service [15]: https://app.datadoghq.com/logs [16]: /es/getting_started/agent/ -[17]: https://app.datadoghq.com/account/settings#agent +[17]: https://app.datadoghq.com/account/settings/agent/latest [18]: https://app.datadoghq.com/infrastructure [19]: /es/integrations/system/ [20]: /es/integrations/ntp/ @@ -256,23 +276,18 @@ Si tienes algún problema, no olvides consultar la sección [Solucionar problema [42]: /es/serverless [43]: /es/serverless/libraries_integrations [44]: /es/serverless/distributed_tracing -[45]: /es/serverless/troubleshooting +[45]: /es/serverless/aws_lambda/troubleshooting/ [46]: /es/integrations/amazon_xray/ [47]: /es/tracing/trace_collection/ -[48]: /es/tracing/#explore-datadog-apm +[48]: /es/tracing/ [49]: /es/watchdog/ -[50]: /es/security/cloud_siem/getting_started/ +[50]: /es/getting_started/cloud_siem/ [51]: /es/security/default_rules/#cat-log-detection -[52]: /es/security/explorer/ +[52]: /es/security/cloud_siem/triage_and_investigate/investigate_security_signals [53]: /es/security/notifications/rules/ -[54]: /es/security/cspm/getting_started/ +[54]: /es/security/cloud_security_management/setup/ [55]: /es/security/default_rules/#cat-posture-management-cloud [56]: /es/security/default_rules/#cat-posture-management-infra -[57]: /es/integrations/amazon_web_services/?tab=roledelegation#troubleshooting -[58]: https://app.datadoghq.com/organization-settings/api-keys -[59]: /es/integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose/??tab=cloudformation -[60]: /es/logs/guide/send-aws-services-logs-with-the-datadog-kinesis-firehose-destination/?tab=kinesisfirehosedeliverystream -[61]: /es/integrations/amazon_xray/ -[62]: /es/getting_started/tagging/using_tags?tab=aws#integrations -[63]: https://docs.datadoghq.com/es/logs/guide/send-aws-services-logs-with-the-datadog-kinesis-firehose-destination/ -[64]: https://docs.datadoghq.com/es/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/ \ No newline at end of file +[57]: /es/integrations/guide/aws-integration-troubleshooting/ +[58]: /es/integrations/ecs_fargate/?tab=webui#installation-for-aws-batch +[59]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-get-template.html \ No newline at end of file diff --git a/content/es/getting_started/synthetics/api_test.md b/content/es/getting_started/synthetics/api_test.md index 3cbdae00597dd..0ce7db7bc78da 100644 --- a/content/es/getting_started/synthetics/api_test.md +++ b/content/es/getting_started/synthetics/api_test.md @@ -1,4 +1,7 @@ --- +description: Crea tests de API en Datadog para monitorizar tus endpoints de forma + proactiva. Crea tests de API de uno o varios pasos con aserciones, configura alertas + y soluciona problemas. further_reading: - link: /api/latest/synthetics/#create-an-api-test tag: API diff --git a/content/es/getting_started/synthetics/browser_test.md b/content/es/getting_started/synthetics/browser_test.md index ff1b4a5aeb445..8e8a08d14d36a 100644 --- a/content/es/getting_started/synthetics/browser_test.md +++ b/content/es/getting_started/synthetics/browser_test.md @@ -1,8 +1,11 @@ --- +description: Crea tests de navegador en Datadog para monitorizar las experiencias + de los usuarios con los dispositivos y los navegadores. Graba escenarios de test, + configura alertas y confirma transacciones empresariales. further_reading: -- link: https://learn.datadoghq.com/courses/intro-to-synthetic-tests +- link: https://learn.datadoghq.com/courses/getting-started-with-synthetic-browser-testing tag: Centro de aprendizaje - text: Introducción a los tests Synthetic + text: Empezando con los tests de monitorización Synthetic - link: /synthetics/browser_tests tag: Documentación text: Más información sobre los tests de navegador diff --git a/content/es/integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose.md b/content/es/integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose.md index 3130f5bed50b8..6da003f42855b 100644 --- a/content/es/integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose.md +++ b/content/es/integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose.md @@ -10,20 +10,20 @@ title: AWS CloudWatch Metric Streams con Amazon Data Firehose --- {{% site-region region="gov" %}} -
AWS CloudWatch Metric Streams con Amazon Data Firehose no está disponible en el sitio seleccionado ({{< region-param key="dd_site_name" >}}).
+
Los flujos de métricas de AWS CloudWatch con Amazon Data Firehose no están disponibles en el sitio seleccionado ({{< region-param key="dd_site_name" >}}).
{{% /site-region %}} -Utilizando AWS CloudWatch Metric Streams y Amazon Data Firehose, puedes obtener métricas de CloudWatch en Datadog con sólo una latencia de dos a tres minutos. Esta opción es mucho más rápida que el método de sondeo de la API predeterminado de Datadog, que proporciona métricas actualizadas cada 10 minutos. Puedes obtener más información sobre el método de sondeo de la API en la [documentación sobre el retraso de métricas de Cloud][1]. +Cuando utilizas los flujos de métricas de AWS CloudWatch con Amazon Data Firehose, puedes obtener métricas de CloudWatch en Datadog con una latencia de solo dos a tres minutos. Esta estrategia es significativamente más rápida que la estrategia de sondeo de API por defecto de Datadog, que proporciona métricas actualizadas cada 10 minutos. Puedes obtener más información sobre la estrategia de sondeo de API en la [documentación sobre el retraso de métricas en la nube][1]. ## Información general {{< img src="integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose/metric_streaming_diagram.png" alt="Diagrama del flujo de métricas" responsive="true">}} -1. Crea un CloudWatch Metric Stream en cada cuenta y región de AWS para las que quieras transmitir métricas. - - Opcionalmente, especifica un conjunto limitado de espacios de nombres o métricas para transmitir. -2. Una vez creado el Metric Stream, Datadog comienza inmediatamente a recibir las métricas transmitidas y las muestra en el sitio Datadog sin necesidad de una configuración adicional. +1. Crea un flujo de métricas de CloudWatch en cada cuenta y región de AWS de la que quieras transmitir métricas. + - También puedes especificar un conjunto limitado de espacios de nombres o de métricas para transmitir. +2. Una vez creado el flujo de métricas de CloudWatch, Datadog empieza inmediatamente a recibir las métricas transmitidas y las muestra en el sitio Datadog sin necesidad de otra configuración adicional. -
El filtrado por espacio de nombres configurado en el cuadro de la integración AWS también se aplica a CloudWatch Metric Streams
. +
El filtrado por cada espacio de nombre configurado en el cuadro de la integración de AWS también se aplica a los flujos de métricas de CloudWatch.
### Transmisión de métricas versus sondeo de API {#streaming-vs-polling} diff --git a/content/es/integrations/guide/aws-integration-troubleshooting.md b/content/es/integrations/guide/aws-integration-troubleshooting.md index e5db1b730ed8d..c0ea42b3a661f 100644 --- a/content/es/integrations/guide/aws-integration-troubleshooting.md +++ b/content/es/integrations/guide/aws-integration-troubleshooting.md @@ -19,6 +19,19 @@ El error de permiso `sts:Assumerole` indica un problema con la política de conf **Nota**: Este error puede persistir en la interfaz de usuario de Datadog durante algunas horas mientras se propagan los cambios. +### Resolver todos los incidentes relacionados con permisos de AWS +La opción **Resolver todos los incidentes relacionados con permisos de AWS** en el cuadro de integración de AWS te permite utilizar un stack tecnológico QuickStart CloudFormation para actualizar tu rol IAM y resolver los incidentes relacionados con permisos faltantes. +En **Issues** (Incidentes), haz clic en **Resolve All AWS Permissions Issues** (Resolver todos los incidentes relacionados con permisos de AWS). Esto inicia un stack tecnológico CloudFormation que llama al [endpoint][13] de nuestra API pública y obtiene los últimos permisos de IAM necesarios para la integración, crea nuevas políticas de IAM que contienen esos permisos y los adjunta al rol de la integración. También adjunta la política gestionada por AWS `SecurityAudit`, si no está presente. + +**Notas**: + +* La opción **Resolver todos los incidentes relacionados con permisos de AWS** no soluciona los problemas de autenticaciones rotas con el rol (donde el nombre del rol, el ID externo o la configuración de la política de confianza no permiten que Datadog se autentique con tu cuenta de AWS). +* La plantilla de CloudFormation está en nuestro [repositorio] público[14]. +* Las políticas creadas se nombran con un prefijo `datadog-aws-integration-iam-permissions-` seguido de un hash único para evitar conflictos con cualquier política existente que hayas configurado. +* Si haces clic varias veces en **Resolve All AWS Permissions Issues** (Resolver todos los incidentes relacionados con permisos de AWS), se eliminarán todas las políticas antiguas creadas con ese prefijo antes de crear las nuevas. +* NO se verán afectadas las políticas que hayas asignado al rol. +* La opción **Resolver todos los incidentes relacionados con permisos de AWS** no soluciona los casos en los que se aplique una política de control de servicios (SCP) que deniegue explícitamente los permisos necesarios. + ## Discrepancias en los datos ### Discrepancia entre tus datos en CloudWatch y Datadog @@ -81,7 +94,7 @@ La actualización del Datadog Agent a la v7.64.0 o posterior debería resolver e A partir de la versión 7.64.0, el Datadog Agent utiliza por defecto IMDSv2 y vuelve a IMDSv1 en caso de fallo. Para volver al comportamiento anterior, configura `ec2_imdsv2_transition_payload_enabled` como `false` en la configuración de tu host. Para obtener más información, consulta la documentación [Transición al uso de Instance Metadata Service, versión 2][7]. -## Etiquetas (Tags) +## Etiquetas ### Los hosts aún tienen etiquetas de AWS después de eliminar la integración de Amazon EC2 @@ -106,4 +119,6 @@ Por defecto, las etiquetas de nivel de host permanecen adjuntas a hosts AWS. Si [9]: https://github.com/DataDog/helm-charts/blob/58bf52e4e342c79dbec95659458f7de8c5de7e6c/charts/datadog/values.yaml#L1683-L1688 [10]: https://github.com/DataDog/helm-charts/blob/58bf52e4e342c79dbec95659458f7de8c5de7e6c/charts/datadog/values.yaml#L930-L937 [11]: /es/api/latest/tags/#remove-host-tags -[12]: https://github.com/DataDog/Miscellany/blob/master/remove_lingering_aws_host_tags.py \ No newline at end of file +[12]: https://github.com/DataDog/Miscellany/blob/master/remove_lingering_aws_host_tags.py +[13]: https://api.datadoghq.com/api/v2/integration/aws/iam_permissions +[14]: https://github.com/DataDog/cloudformation-template/tree/master/aws_attach_integration_permissions \ No newline at end of file diff --git a/content/es/integrations/guide/azure-cloud-adoption-framework.md b/content/es/integrations/guide/azure-cloud-adoption-framework.md index b924688133f00..25ab2a0e9f5fc 100644 --- a/content/es/integrations/guide/azure-cloud-adoption-framework.md +++ b/content/es/integrations/guide/azure-cloud-adoption-framework.md @@ -11,7 +11,7 @@ title: Azure Cloud Adoption Framework con Datadog ## Información general -El uso de Cloud Adoption Framework de Azure con Datadog puede ayudarte a garantizar migraciones seguras y rápidas a un nuevo entorno de nube, ya sea desde instalaciones on-premise u otros entornos de nube. +El uso del marco de adopción de la nube de Azure con Datadog puede ayudarte a garantizar migraciones seguras y rápidas a un nuevo entorno de nube, ya sea desde entornos on-premises u otros entornos de nube. Puedes hacer lo siguiente: diff --git a/content/es/integrations/guide/azure-portal.md b/content/es/integrations/guide/azure-portal.md index 9b69983f88e8a..8d68cfe05ee78 100644 --- a/content/es/integrations/guide/azure-portal.md +++ b/content/es/integrations/guide/azure-portal.md @@ -15,7 +15,7 @@ title: Gestión de la integración nativa de Azure ---
- Esta guía es para la gestión de la integración nativa de Azure con el recurso de Datadog. + Esta guía sirve para gestionar la integración nativa de Azure con el recurso Datadog.
Esta guía es para gestionar la integración entre Azure y Datadog en el portal de Azure mediante el recurso de Datadog. El recurso de Datadog en Azure representa la conexión entre tu organización de Datadog y tu entorno de Azure. Puedes configurar un recurso de Datadog para vincular tantas suscripciones como desees monitorizar. [Crea un recurso de Datadog][1] en Azure antes de continuar con esta guía. @@ -270,7 +270,6 @@ Para instalar la [extensión de Datadog][6], selecciona la aplicación adecuada - `DD_API_KEY:` - `DD_SITE:us3.datadoghq.com` -- `DD_LOGS_INJECTION:true` Azure muestra el estado `Installing` hasta que el Agent esté instalado y aprovisionado. Una vez instalado el Datadog Agent, el estado cambia a `Installed`. @@ -280,7 +279,7 @@ Azure muestra el estado `Installing` hasta que el Agent esté instalado y aprovi Para desinstalar la extensión de Datadog, selecciona la aplicación correspondiente y haz clic en **Uninstall Extension**. -## Parámetros +## Configuración ### Inicio de sesión único Selecciona **Single sign-on** en la barra lateral izquierda para volver a configurar el inicio de sesión único. @@ -299,7 +298,7 @@ El portal de Azure ofrece una vista de solo lectura de las claves de API. Para g La integración de Azure de Datadog te permite instalar el Datadog Agent en una máquina virtual o un servicio de aplicaciones. Si no se selecciona ninguna clave predeterminada, se produce un error en la instalación del Datadog Agent. -### Errores de configuración de Cloud Security +### Cloud Security Misconfigurations Selecciona `Cloud Security Posture Management` en la barra lateral izquierda para configurar [Errores de configuración de Cloud Security][8]. @@ -309,7 +308,7 @@ Para deshabilitarlo, desmarca la casilla y haz clic en **Save**. {{< img src="integrations/guide/azure_portal/enable-CSPM.png" alt="La página Azure Portal con Cloud Security Posture Management seleccionado en la pestaña Settings" responsive="true" style="width:100%;">}} -## Leer más +## Referencias adicionales {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/es/logs/guide/_index.md b/content/es/logs/guide/_index.md index d4740f7fef812..b5aceb6f968d1 100644 --- a/content/es/logs/guide/_index.md +++ b/content/es/logs/guide/_index.md @@ -70,16 +70,18 @@ title: Guías de logs
-{{< whatsnext desc="Logs Workspaces Use Cases" >}} - {{< nextlink href="/Logs/workspaces/use_cases/analyze_login_attempts/" >}}Analizar los intentos de inicio de sesión para e-PHI{{< /nextlink >}} +{{< whatsnext desc="Análisis de logs con Notebooks" >}} + {{< nextlink href="/logs/guide/analyze_ecommerce_ops" >}}Analizar operaciones de comercio electrónico utilizando datos de pago y opiniones de clientes{{< /nextlink >}} + {{< nextlink href="/logs/guide/analyze_finance_operations" >}}Analizar operaciones financieras utilizando datos de pago y de transacciones{{< /nextlink >}} + {{< nextlink href="/logs/guide/analyze_login_attempts" >}}Analizar la seguridad y la conformidad de los intentos de inicio de sesión{{< /nextlink >}} {{< /whatsnext >}}
-{{< whatsnext desc="Sensitive Data Management" >}} - {{< nextlink href="logs/guide/logs-rbac" >}}Cómo configurar RBAC para logs{{< /nextlink >}} - {{< nextlink href="logs/guide/logs-rbac-permissions" >}}Más información sobre los permisos RBAC para logs{{< /nextlink >}} - {{< nextlink href="/logs/guide/restrict-access-to-sensitive-data-with-rbac/" >}}Restringir el acceso a datos confidenciales con controles basados en consultas{{< /nextlink >}} +{{< whatsnext desc="Gestión de datos confidenciales" >}} + {{< nextlink href="logs/guide/logs-rbac" >}}Configuración de RBAC para logs{{< /nextlink >}} + {{< nextlink href="logs/guide/logs-rbac-permissions" >}}Más información sobre permisos RBAC para logs{{< /nextlink >}} + {{< nextlink href="/logs/guide/manage-sensitive-logs-data-access" >}}Gestionar el acceso a datos confidenciales en logs{{< /nextlink >}} {{< nextlink href="/logs/guide/delete_logs_with_sensitive_data/" >}}Eliminar logs con datos confidenciales{{< /nextlink >}} {{< /whatsnext >}} diff --git a/content/es/logs/guide/ease-troubleshooting-with-cross-product-correlation.md b/content/es/logs/guide/ease-troubleshooting-with-cross-product-correlation.md index 1bd7ffa6ec8a5..51692ccdcc2e0 100644 --- a/content/es/logs/guide/ease-troubleshooting-with-cross-product-correlation.md +++ b/content/es/logs/guide/ease-troubleshooting-with-cross-product-correlation.md @@ -17,7 +17,7 @@ title: Facilitar la resolución de problemas a través de la correlación entre ## Información general -El [etiquetado unificado de servicios][1] ofrece capacidades de correlación de alto nivel. En ocasiones, es posible que los puntos de partida de tu investigación sean un log, una traza, una vista o un test Synthetic únicos. Correlacionar logs, trazas y vistas con otros datos proporciona un contexto útil que te permite calcular el impacto en tus actividades e identificar la causa raíz de un problema rápidamente. +El [etiquetado unificado de servicios][1] ofrece capacidades de correlación de alto nivel. En ocasiones, es posible que los puntos de partida de tu investigación sean un log, una traza (trace), una vista o un test Synthetic únicos. Correlacionar logs, trazas y vistas con otros datos proporciona un contexto útil que te permite calcular el impacto en tus actividades e identificar la causa raíz de un problema rápidamente. {{< img src="logs/guide/ease-troubleshooting-with-cross-product-correlation/full-stack-cover.png" alt="Correlación de pila completa" style="width:100%;" >}} @@ -66,39 +66,9 @@ El rastreador de aplicaciones genera los ID de rastreo por defecto. Esto se pued #### NGINX -##### Configurar OpenTracing +Para correlacionar logs de NGINX con trazas, debes configurar tu `log_format` de NGINX para incluir el ID de rastreo y luego configurar un pipeline de Datadog para analizar ese ID en tus logs. -Consulta la [integración de rastreo NGINX][5]. - -##### Inyectar ID de rastreo en logs - -El ID de traza se almacena como variable `opentelemetry_trace_id`. Actualiza el formato de log de NGINX añadiendo el siguiente bloque de configuración en la sección HTTP de tu archivo de configuración de NGINX `/etc/nginx/nginx.conf`: - -```conf -http { - log_format main '$remote_addr - $opentelemetry_trace_id $http_x_forwarded_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for" '; - - access_log /var/log/nginx/access.log; -} -``` - -##### Analizar los ID de rastreo en pipelines - -1. Clona el pipeline NGINX. - -2. Personaliza el primer [analizador grok][6]: - - En **Parsing rules** (Reglas de análisis), sustituye la primera regla de análisis por: - ```text - access.common %{_client_ip} %{_ident} %{_trace_id} %{_auth} \[%{_date_access}\] "(?>%{_method} |)%{_url}(?> %{_version}|)" %{_status_code} (?>%{_bytes_written}|-) - ``` - - En **Advanced settings** (Configuración avanzada), en **Helper Rules** (Reglas de ayuda), añade la línea: - ```text - _trace_id %{notSpace:dd.trace_id:nullIf("-")} - ``` - -3. Añade un [reasignador de ID de rastreo][7] en el atributo `dd.trace_id`. +Consulta la [Instrumentación NGINX][20] para obtener instrucciones completas de configuración de extremo a extremo. ### Correlacionar logs de base de datos @@ -219,7 +189,7 @@ Después de habilitar APM en el endpoint de tu aplicación, puedes acceder a las Para obtener más información, consulta [Conectar tests Synthetic y trazas][19]. -## Leer más +## Referencias adicionales {{< partial name="whats-next/whats-next.html" >}} @@ -241,4 +211,5 @@ Para obtener más información, consulta [Conectar tests Synthetic y trazas][19] [16]: /es/real_user_monitoring/correlate_with_other_telemetry/apm [17]: /es/synthetics/browser_tests/ [18]: https://app.datadoghq.com/synthetics/tests -[19]: /es/synthetics/apm \ No newline at end of file +[19]: /es/synthetics/apm +[20]: /es/tracing/trace_collection/proxy_setup/nginx \ No newline at end of file diff --git a/content/es/monitors/guide/create-cluster-alert.md b/content/es/monitors/guide/create-cluster-alert.md index aa76837850650..5cc9035d079be 100644 --- a/content/es/monitors/guide/create-cluster-alert.md +++ b/content/es/monitors/guide/create-cluster-alert.md @@ -1,4 +1,7 @@ --- +description: Aprende a crear alertas de clúster que avisen cuando un porcentaje de + grupos cumple ciertas condiciones, como por ejemplo cuando el 40% de los hosts tienen + un uso elevado de CPU. further_reading: - link: /monitors/ tag: Documentación diff --git a/content/es/network_monitoring/devices/data.md b/content/es/network_monitoring/devices/data.md index b5d852e90d8c0..0196f094c2412 100644 --- a/content/es/network_monitoring/devices/data.md +++ b/content/es/network_monitoring/devices/data.md @@ -15,10 +15,11 @@ Network Device Monitoring no incluye ningún eventos. ## Métricas -Network Device Monitoring envía métricas especificados en el espacio de nombres `snmp.*`. Las métricas recopiladas están determinadas por el `[configured profile]`. -Si las métricas que quieres no están en la siguiente lista, busca el OID y su nombre en la [base de datos de referencia global de OID][1] para añadir a tus perfiles. +Network Device Monitoring envía las métricas especificadas en el espacio de nombres `snmp.*`. Las métricas recopiladas vienen determinadas por el [perfil configurado][2]. +Si las métricas que buscas no se encuentran en la siguiente lista, busca el OID y su nombre en la [base de datos de referencia global de OID][1] para añadirlos a tus perfiles. {{< get-metrics-from-git "snmp" >}} -[1]: http://oidref.com \ No newline at end of file +[1]: http://oidref.com +[2]: /es/network_monitoring/devices/profiles \ No newline at end of file diff --git a/content/es/opentelemetry/correlate/_index.md b/content/es/opentelemetry/correlate/_index.md new file mode 100644 index 0000000000000..27612d7a7923c --- /dev/null +++ b/content/es/opentelemetry/correlate/_index.md @@ -0,0 +1,103 @@ +--- +aliases: +- /es/opentelemetry/otel_logs/ +description: Aprende a correlacionar tus traces (trazas), métricas, logs y demás telemetría + de OpenTelemetry en Datadog para obtener una visión unificada del rendimiento de + tu aplicación. +further_reading: +- link: https://www.datadoghq.com/blog/opentelemetry-instrumentation/ + tag: Blog + text: Asociación de Datadog con OpenTelemetry +title: Correlacionar datos de OpenTelemetry +--- + +## Información general + +Para obtener una visión unificada del rendimiento de tu aplicación es necesario conectar sus traces (trazas), métricas, logs, interacciones de usuario y mucho más. Al correlacionar tus datos de OpenTelemetry en Datadog, puedes navegar entre toda la telemetría relacionada en una sola vista, lo que te permite diagnosticar y resolver problemas más rápidamente. + + +## Requisito previo: Etiquetado unificado de servicios + +Datadog utiliza tres etiquetas estándar para enlazar la telemetría: `env`, `service` y `version`. + +Para garantizar que los datos de OpenTelemetry se correlacionen correctamente, debes configurar tu aplicación o sistema para utilizar estas etiquetas mediante la configuración de un conjunto estándar de atributos de recursos de OpenTelemetry. Datadog asigna automáticamente estos atributos a las etiquetas correctas. + +| Atributo de recurso de OpenTelemetry | Etiqueta de Datadog | Notas | +|----------------------------------|-------------|---------------------------------------------------------------------------------------------------------| +| `deployment.environment.name` | `env` | **Recomendado**. Compatible con el Agent v7.58.0+ y Collector Exporter v0.110.0+. | +| `deployment.environment` | `env` | Utilízalo en lugar de `deployment.environment.name` si ejecutas una versión del Agent anterior a v7.58.0 o un Collector Exporter anterior a v0.110.0. | +| `service.name` | `service` | | +| `service.version` | `version` | | + +Puedes configurar estos atributos en las variables de entorno de tu aplicación, kit de desarrollo de software (SDK) o en el recopilador de OpenTelemetry. + +{{< tabs >}} +{{% tab "Variables de entorno" %}} + +Configura la variable de entorno `OTEL_RESOURCE_ATTRIBUTES` con la información de tu servicio: + +```sh +export OTEL_SERVICE_NAME="my-service" +export OTEL_RESOURCE_ATTRIBUTES="deployment.environment.name=production,service.version=1.2.3" +``` + +{{% /tab %}} +{{% tab "Kit de desarrollo de software (SDK)" %}} + +Crea un recurso con los atributos requeridos y asócialo con tu TracerProvider en el código de tu aplicación. + +He aquí un ejemplo que utiliza el kit de desarrollo de software (SDK) de Opentelemetry para Python: + +```python +from opentelemetry.sdk.resources import Resource +from opentelemetry.sdk.trace import TracerProvider + +resource = Resource(attributes={ + "service.name": "", + "deployment.environment.name": "", + "service.version": "" +}) +tracer_provider = TracerProvider(resource=resource) +``` + +{{% /tab %}} +{{% tab "Recopilador" %}} + +Utiliza el procesador `resource` en la configuración del recopilador para configurar los atributos de recursos en los datos de telemetría: + +```yaml +processors: + resource: + attributes: + - key: service.name + value: "my-service" + action: upsert + - key: deployment.environment.name + value: "production" + action: upsert + - key: service.version + value: "1.2.3" + action: upsert +... +``` + +{{% /tab %}} +{{< /tabs >}} + +## Correlacionar telemetría + +Una vez configurado el etiquetado unificado de servicios, puedes conectar tus distintos streams (flujos) de telemetría. Selecciona una de las siguientes guías para obtener instrucciones específicas de la plataforma. + +- [Correlacionar logs y traces (trazas)][1] +- [Correlacionar métricas y traces (trazas)][2] +- [Correlacionar RUM y traces (trazas)][3] +- [Correlacionar DBM y traces (trazas)][4] + +## Referencias adicionales + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /es/opentelemetry/correlate/logs_and_traces +[2]: /es/opentelemetry/correlate/metrics_and_traces +[3]: /es/opentelemetry/correlate/rum_and_traces +[4]: /es/opentelemetry/correlate/dbm_and_traces \ No newline at end of file diff --git a/content/es/real_user_monitoring/browser/advanced_configuration.md b/content/es/real_user_monitoring/browser/advanced_configuration.md index 4b96dcc1eafb1..c6828a464b3ca 100644 --- a/content/es/real_user_monitoring/browser/advanced_configuration.md +++ b/content/es/real_user_monitoring/browser/advanced_configuration.md @@ -2,6 +2,9 @@ aliases: - /es/real_user_monitoring/installation/advanced_configuration/ - /es/real_user_monitoring/browser/modifying_data_and_context/ +description: Configura el kit de desarrollo de software (SDK) del navegador de RUM + para modificar la recopilación de datos, sustituir los nombres de las vistas, gestionar + las sesiones de usuario y controlar el muestreo según las necesidades de tu aplicación. further_reading: - link: /real_user_monitoring/browser/tracking_user_actions tag: Documentación @@ -43,6 +46,7 @@ A partir de la [versión 2.17.0][3], puedes añadir nombres de vistas y asignarl {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -52,8 +56,10 @@ A partir de la [versión 2.17.0][3], puedes añadir nombres de vistas y asignarl ... }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.init({ @@ -63,8 +69,10 @@ A partir de la [versión 2.17.0][3], puedes añadir nombres de vistas y asignarl }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.init({ @@ -73,15 +81,16 @@ A partir de la [versión 2.17.0][3], puedes añadir nombres de vistas y asignarl ... }); ``` + {{% /tab %}} {{< /tabs >}} -2. Debes iniciar vistas para cada nueva página o cambio de ruta (para aplicaciones de página única). Los datos de RUM se recopilan cuando se inicia la vista. A partir de la [versión 4.13.0][17], también puedes definir opcionalmente el nombre y la versión de servicios asociados. +2. Debes iniciar las vistas para cada nueva page (página) o cambio de ruta (para aplicaciones de una sola page (página) ). Los datos de RUM se recopilan cuando se inicia la vista. A partir de la [versión 4.13.0][16], también puedes definir opcionalmente el nombre y la versión del servicio asociado. - Nombre de la vista: por defecto es la ruta URL de la página. - Servicio: por defecto es el servicio especificado al crear tu aplicación RUM. - Versión: por defecto es la versión especificada al crear tu aplicación RUM. - - Contexto: A partir de la [versión 5.28.0][20], puedes añadir contexto a las vistas y a los eventos secundarios de las vistas. + - Contexto: A partir de la [versión 5.28.0][19], puedes añadir contexto a las vistas y a los eventos secundarios de las vistas. Para más información, consulta [Configuración de la monitorización del navegador][4]. @@ -91,6 +100,7 @@ A partir de la [versión 2.17.0][3], puedes añadir nombres de vistas y asignarl {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.startView({ name: 'checkout', @@ -104,6 +114,7 @@ A partir de la [versión 2.17.0][3], puedes añadir nombres de vistas y asignarl {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.startView({ @@ -116,8 +127,10 @@ A partir de la [versión 2.17.0][3], puedes añadir nombres de vistas y asignarl }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.startView({ name: 'checkout', @@ -128,16 +141,18 @@ A partir de la [versión 2.17.0][3], puedes añadir nombres de vistas y asignarl }, }) ``` + {{% /tab %}} {{< /tabs >}}
antes de v5.28.0 -El siguiente ejemplo rastrea manualmente las vistas a la página checkout en una aplicación de RUM. Utiliza checkout como nombre de la vista y asocia el servicio purchase con la versión 1.2.3. +El siguiente ejemplo rastrea en forma manual las pages (páginas) vistas en la page (página) de pago en una aplicación de RUM. Utiliza el pago para el nombre de la vista y asocia el servicio de compra con la versión 1.2.3. {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.startView({ name: 'checkout', @@ -147,7 +162,8 @@ datadogRum.startView({ ``` {{% /tab %}} -{{% tab "CDN asíncrono" %}} +{{% tab "CDN asincrónico" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.startView({ @@ -157,8 +173,10 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} -{{% tab "CDN síncrono" %}} +{{% tab "CDN sincrónico" %}} + ```javascript window.DD_RUM && window.DD_RUM.startView({ name: 'checkout', @@ -166,32 +184,38 @@ window.DD_RUM && window.DD_RUM.startView({ version: '1.2.3' }) ``` + {{% /tab %}} {{< /tabs >}}
antes de v4.13.0 - El siguiente ejemplo rastrea manualmente las vistas a la página checkout en una aplicación de RUM. No se puede especificar el servicio ni la versión. + El siguiente ejemplo rastrea en forma manual las pages (páginas) vistas en la page (página) de pago en una aplicación de RUM. No se puede especificar ningún servicio ni versión. {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.startView('checkout') ``` {{% /tab %}} - {{% tab "CDN asíncrono" %}} + {{% tab "CDN asincrónico" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.startView('checkout') }) ``` + {{% /tab %}} - {{% tab "CDN síncrono" %}} + {{% tab "CDN sincrónico" %}} + ```javascript window.DD_RUM && window.DD_RUM.startView('checkout') ``` + {{% /tab %}} {{< /tabs >}} @@ -203,7 +227,7 @@ Si utilizas React, Angular, Vue o cualquier otro marco de frontend, Datadog reco Para sustituir los nombres por defecto de las vistas de RUM de forma que se ajusten a cómo los has definido en tu aplicación React, debes seguir los pasos a continuación. -**Nota**: Estas instrucciones son específicas para la librería del **React Router v6**. +**Nota**: Estas instrucciones son específicas para la biblioteca del **React Router v6**. 1. Configura `trackViewsManually` en `true` al inicializar el SDK del RUM Browser como se describe [anteriormente](#override-default-rum-view-names). @@ -211,6 +235,7 @@ Para sustituir los nombres por defecto de las vistas de RUM de forma que se ajus {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { matchRoutes, useLocation } from 'react-router-dom'; import { routes } from 'path/to/routes'; @@ -257,6 +282,7 @@ Para sustituir los nombres por defecto de las vistas de RUM de forma que se ajus {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript import { matchRoutes, useLocation } from 'react-router-dom'; import { routes } from 'path/to/routes'; @@ -301,8 +327,10 @@ Para sustituir los nombres por defecto de las vistas de RUM de forma que se ajus return viewName || '/'; } ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript import { matchRoutes, useLocation } from 'react-router-dom'; import { routes } from 'path/to/routes'; @@ -346,6 +374,7 @@ Para sustituir los nombres por defecto de las vistas de RUM de forma que se ajus return viewName || '/'; } ``` + {{% /tab %}} {{< /tabs >}} @@ -355,6 +384,7 @@ Utiliza `setViewName(name: string)` para actualizar el nombre de la vista actual {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -363,8 +393,10 @@ datadogRum.setViewName(''); // Code example datadogRum.setViewName('Checkout'); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setViewName(''); @@ -375,16 +407,19 @@ window.DD_RUM.onReady(function() { window.DD_RUM.setViewName('Checkout'); }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.setViewName(''); // Code example window.DD_RUM && window.DD_RUM.setViewName('Checkout'); ``` -{{% /tab%}} -{{< /tabs>}} + +{{% /tab %}} +{{< /tabs >}} **Nota**: Cambiar el nombre de la vista afecta a la vista y a sus eventos secundarios desde el momento en que se llama al método. @@ -396,7 +431,7 @@ Interceptar los eventos del RUM te permite: - Enriquecer los eventos del RUM con atributos de contexto adicionales - Modificar tus eventos del RUM para alterar su contenido o eliminar secuencias sensibles (consulta la [lista de propiedades editables](#modify-the-content-of-a-rum-event)) -- Descartar eventos seleccionados del RUM +- Descartar eventos RUM seleccionados A partir de la [versión 2.13.0][5], `beforeSend` toma dos argumentos: el `event` generado por el SDK del RUM Browser y el `context` que desencadenó la creación del evento del RUM. @@ -424,6 +459,7 @@ Junto con los atributos añadidos con la [API de Global Context](#global-context {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -439,8 +475,10 @@ datadogRum.init({ ... }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.init({ @@ -456,8 +494,10 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.init({ @@ -472,8 +512,9 @@ window.DD_RUM && ... }); ``` -{{% /tab%}} -{{< /tabs>}} + +{{% /tab %}} +{{< /tabs >}} Si un usuario pertenece a varios equipos, añade pares clave-valor adicionales en tus llamadas a la API de Global Context. @@ -489,6 +530,7 @@ Por ejemplo, para eliminar las direcciones de correo electrónico de las URL de {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -501,8 +543,10 @@ datadogRum.init({ ... }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.init({ @@ -515,8 +559,10 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.init({ @@ -528,6 +574,7 @@ window.DD_RUM && ... }); ``` + {{% /tab %}} {{< /tabs >}} @@ -543,7 +590,7 @@ Puedes actualizar las siguientes propiedades de eventos: | `version` | Cadena | La versión de la aplicación. Por ejemplo: 1.2.3, 6c44da20 o 2020.02.13. | | `action.target.name` | Cadena | El elemento con el que ha interactuado el usuario. Solo para acciones recopiladas automáticamente. | | `error.message` | Cadena | Un mensaje conciso, legible, de una línea, en el cual se explica el error. | -| `error.stack ` | Cadena | La traza (trace) de stack tecnológico o la información adicional sobre el error. | +| `error.stack` | Cadena | La traza de stack tecnológico o la información adicional sobre el error. | | `error.resource.url` | Cadena | La URL del recurso que provocó el error. | | `resource.url` | Cadena | La URL del recurso. | | `long_task.scripts.source_url` | Cadena | La url del recurso de script | @@ -563,6 +610,7 @@ beforeSend: (event) => { event.view.name = getViewNameForUrl(event.view.url) } ``` + ### Descartar un evento de RUM Con la API `beforeSend`, descarta un evento de RUM devolviendo `false`: @@ -584,8 +632,10 @@ datadogRum.init({ ... }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.init({ @@ -600,8 +650,10 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.init({ @@ -615,6 +667,7 @@ window.DD_RUM && ... }); ``` + {{% /tab %}} {{< /tabs >}} @@ -624,14 +677,14 @@ window.DD_RUM && Añadir información del usuario a tus sesiones de RUM te ayuda a: -* Seguir el recorrido de un usuario concreto -* Conocer qué usuarios se han visto más afectados por los errores -* Monitorizar el rendimiento de tus usuarios más importantes +- Seguir el recorrido de un usuario concreto +- Conocer qué usuarios se han visto más afectados por los errores +- Monitorizar el rendimiento de tus usuarios más importantes {{< img src="real_user_monitoring/browser/advanced_configuration/user-api.png" alt="API de usuario en la interfaz de usuario de RUM" >}} {{< tabs >}} -{{% tab "6.4.0 and above" %}} +{{% tab "v6.4.0 y posterior" %}} Están disponibles los siguientes atributos: @@ -642,7 +695,7 @@ Están disponibles los siguientes atributos: | `usr.email` | Cadena | No | Correo electrónico del usuario, que se muestra en la interfaz de usuario de RUM si el nombre de usuario no está presente. También se usa para obtener Gravatars. | {{% /tab %}} -{{% tab "Before 6.4.0" %}} +{{% tab "Anterior a v6.4.0" %}} Los siguientes atributos son opcionales, pero Datadog recomienda encarecidamente proporcionar al menos uno de ellos. Por ejemplo, debes establecer el ID de usuario en tus sesiones para ver los datos relevantes en algunos dashboards predeterminados de RUM, que dependen de `usr.id` como parte de la consulta. @@ -667,6 +720,7 @@ Cuando se realizan cambios en el objeto de la sesión del usuario, todos los eve {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.setUser({ id: '1234', @@ -676,8 +730,10 @@ datadogRum.setUser({ ... }) ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setUser({ @@ -689,8 +745,10 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.setUser({ id: '1234', @@ -710,18 +768,23 @@ window.DD_RUM && window.DD_RUM.setUser({ {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.getUser() ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.getUser() }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.getUser() ``` @@ -735,18 +798,23 @@ window.DD_RUM && window.DD_RUM.getUser() {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.setUserProperty('name', 'John Doe') ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setUserProperty('name', 'John Doe') }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.setUserProperty('name', 'John Doe') ``` @@ -760,21 +828,27 @@ window.DD_RUM && window.DD_RUM.setUserProperty('name', 'John Doe') {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.removeUserProperty('name') ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.removeUserProperty('name') }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.removeUserProperty('name') ``` + {{% /tab %}} {{< /tabs >}} @@ -784,21 +858,27 @@ window.DD_RUM && window.DD_RUM.removeUserProperty('name') {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.clearUser() ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.clearUser() }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.clearUser() ``` + {{% /tab %}} {{< /tabs >}} @@ -819,6 +899,7 @@ Están disponibles los siguientes atributos: {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.setAccount({ id: '1234', @@ -826,8 +907,10 @@ datadogRum.setAccount({ ... }) ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setAccount({ @@ -837,8 +920,10 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.setAccount({ id: '1234', @@ -856,18 +941,23 @@ window.DD_RUM && window.DD_RUM.setAccount({ {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.getAccount() ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.getAccount() }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.getAccount() ``` @@ -881,18 +971,23 @@ window.DD_RUM && window.DD_RUM.getAccount() {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.setAccountProperty('name', 'My Company Name') ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setAccountProperty('name', 'My Company Name') }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.setAccountProperty('name', 'My Company Name') ``` @@ -906,21 +1001,27 @@ window.DD_RUM && window.DD_RUM.setAccountProperty('name', 'My Company Name') {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.removeAccountProperty('name') ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.removeAccountProperty('name') }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.removeAccountProperty('name') ``` + {{% /tab %}} {{< /tabs >}} @@ -930,21 +1031,27 @@ window.DD_RUM && window.DD_RUM.removeAccountProperty('name') {{< tabs >}} {{% tab "NPM" %}} + ```javascript datadogRum.clearAccount() ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.clearAccount() }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.clearAccount() ``` + {{% /tab %}} {{< /tabs >}} @@ -956,6 +1063,7 @@ El siguiente ejemplo recopila solo el 90 % de las sesiones de una aplicación d {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -966,8 +1074,10 @@ datadogRum.init({ sessionSampleRate: 90, }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.init({ @@ -978,8 +1088,10 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.init({ @@ -989,6 +1101,7 @@ window.DD_RUM && sessionSampleRate: 90, }); ``` + {{% /tab %}} {{< /tabs >}} @@ -996,17 +1109,17 @@ Para una sesión muestreada, no se recopilan todas las páginas de vistas ni la ## Consentimiento de rastreo del usuario -Para cumplir con GDPR, CCPA y regulaciones similares, el SDK del RUM Browser te permite proporcionar el valor del consentimiento de rastreo en la inicialización. Para obtener más información sobre el consentimiento de rastreo, consulta [Seguridad de datos][18]. +Para cumplir con GDPR, CCPA y normativas similares, el kit de desarrollo de software (SDK) del navegador de RUM te permite proporcionar el valor de consentimiento de rastreo en la inicialización. Para obtener más información sobre el consentimiento de rastreo, consulta [Seguridad de datos][17]. El parámetro de inicialización `trackingConsent` puede ser uno de los siguientes valores: -1. `"granted"`: el SDK del RUM Browser comienza a recopilar datos y los envía a Datadog. +1. `"granted"` (predeterminado): El kit de desarrollo de software (SDK) del navegador de RUM comienza a recopilar datos y los envía a Datadog. 2. `"not-granted"`: el SDK del RUM Browser no recopila ningún dato. Para cambiar el valor del consentimiento de rastreo después de que el SDK del RUM Browser se inicialice, utiliza la llamada a la API `setTrackingConsent()`. El SDK del RUM Browser cambia su comportamiento de acuerdo con el nuevo valor: -* cuando se cambia de `"granted"` a `"not-granted"`, la sesión de RUM se detiene, los datos ya no se envían a Datadog. -* cuando se cambia de `"not-granted"` a `"granted"`, se crea una nueva sesión de RUM si no hay ninguna sesión anterior activa y se reanuda la recopilación de datos. +- cuando se cambia de `"granted"` a `"not-granted"`, la sesión de RUM se detiene, los datos ya no se envían a Datadog. +- cuando se cambia de `"not-granted"` a `"granted"`, se crea una nueva sesión de RUM si no hay ninguna sesión anterior activa y se reanuda la recopilación de datos. Este estado no se sincroniza entre pestañas ni persiste entre navegaciones. Es tu responsabilidad proporcionar la decisión del usuario durante la inicialización del SDK del RUM Browser o mediante el uso de `setTrackingConsent()`. @@ -1014,6 +1127,7 @@ Cuando se utiliza `setTrackingConsent()` antes que `init()`, el valor proporcion {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -1026,8 +1140,10 @@ acceptCookieBannerButton.addEventListener('click', function() { datadogRum.setTrackingConsent('granted'); }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.init({ @@ -1042,8 +1158,10 @@ acceptCookieBannerButton.addEventListener('click', () => { }); }); ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.init({ ..., @@ -1054,6 +1172,7 @@ acceptCookieBannerButton.addEventListener('click', () => { window.DD_RUM && window.DD_RUM.setTrackingConsent('granted'); }); ``` + {{% /tab %}} {{< /tabs >}} @@ -1071,6 +1190,7 @@ Enriquece o modifica el contexto de los eventos de vista del RUM y los eventos s {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -1082,8 +1202,10 @@ datadogRum.setViewContextProperty('activity', { amount: 23.42 }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setViewContextProperty('', ''); @@ -1097,8 +1219,10 @@ window.DD_RUM.onReady(function() { }); }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.setViewContextProperty('', ''); @@ -1108,10 +1232,10 @@ window.DD_RUM && window.DD_RUM.setViewContextProperty('activity', { amount: 23.42 }); ``` + {{% /tab %}} {{< /tabs >}} - ### Sustituir el contexto de la vista Sustituye el contexto de tus eventos de vista del RUM y de los eventos secundarios correspondientes por la API `setViewContext(context: Context)`. @@ -1131,6 +1255,7 @@ datadogRum.setViewContext({ {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setViewContext({ '': '' }); @@ -1143,6 +1268,7 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} @@ -1180,6 +1306,7 @@ Después de inicializar el RUM, añade contexto adicional a todos los eventos de {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -1191,8 +1318,10 @@ datadogRum.setGlobalContextProperty('activity', { amount: 23.42 }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setGlobalContextProperty('', ''); @@ -1206,8 +1335,10 @@ window.DD_RUM.onReady(function() { }); }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript window.DD_RUM && window.DD_RUM.setGlobalContextProperty('', ''); @@ -1217,6 +1348,7 @@ window.DD_RUM && window.DD_RUM.setGlobalContextProperty('activity', { amount: 23.42 }); ``` + {{% /tab %}} {{< /tabs >}} @@ -1237,6 +1369,7 @@ datadogRum.removeGlobalContextProperty('codeVersion'); {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.removeGlobalContextProperty(''); @@ -1247,6 +1380,7 @@ window.DD_RUM.onReady(function() { window.DD_RUM.removeGlobalContextProperty('codeVersion'); }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} @@ -1262,7 +1396,6 @@ window.DD_RUM && {{% /tab %}} {{< /tabs >}} - ### Sustituir el contexto global Sustituye el contexto por defecto de todos tus eventos de RUM con la API `setGlobalContext(context: Context)`. @@ -1282,6 +1415,7 @@ datadogRum.setGlobalContext({ {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.setGlobalContext({ '': '' }); @@ -1294,6 +1428,7 @@ window.DD_RUM.onReady(function() { }) }) ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} @@ -1326,11 +1461,13 @@ datadogRum.clearGlobalContext(); {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.clearGlobalContext(); }); ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} @@ -1356,11 +1493,13 @@ const context = datadogRum.getGlobalContext(); {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript window.DD_RUM.onReady(function() { const context = window.DD_RUM.getGlobalContext(); }); ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} @@ -1380,7 +1519,7 @@ Por defecto, el contexto global y el contexto de usuario se almacenan en la memo Para añadirlas a todos los eventos de la sesión, deben adjuntarse a cada página. -Con la introducción de la opción de configuración de `storeContextsAcrossPages` en la v4.49.0 del SDK del navegador, esos contextos pueden almacenarse en [`localStorage`][19], lo cual permite los siguientes comportamientos: +Con la introducción de la opción de configuración `storeContextsAcrossPages` en la v4.49.0 del kit de desarrollo de software (SDK) del navegador, esos contextos pueden almacenarse en [`localStorage`][18], que permite los siguientes comportamientos: - Los contextos se conservan tras una recarga completa. - Los contextos se sincronizan entre pestañas abiertas en el mismo origen. @@ -1391,6 +1530,71 @@ Sin embargo, esta función tiene algunas **limitaciones**: - La función no es compatible con las opciones de `trackSessionAcrossSubdomains` porque los datos de `localStorage` solo se comparten entre el mismo origen (login.site.com ≠ app.site.com) - `localStorage` está limitado a 5 MiB por origen, por lo que los datos específicos de la aplicación, los contextos de Datadog y otros datos de terceros almacenados en la memoria local deben estar dentro de este límite para evitar problemas. +## Contexto interno + +Una vez inicializado el kit de desarrollo de software (SDK) del navegador de RUM, puedes acceder al contexto interno del kit de desarrollo de software (SDK). Este proporciona identificadores y metadatos básicos que el kit de desarrollo de software (SDK) utiliza internamente, como identificadores de sesión y detalles de la aplicación. + +Puedes explorar los siguientes atributos: + +| Atributo | Descripción | +| -------------- | ----------------------------------------------------------------- | +| application_id | ID de la aplicación. | +| session_id | ID de la sesión. | +| user_action | Objeto que contiene un ID de acción (o no definido si no se encuentra ninguna acción). | +| view | Objeto que contiene detalles sobre el evento de vista actual. | + +Para obtener más información, consulta [Datos de RUM Browser recopilados][2]. + +### Ejemplo + +```json +{ + application_id : "xxx", + session_id : "xxx", + user_action: { id: "xxx" }, + view : { + id : "xxx", + referrer : "", + url: "http://localhost:8080/", + name: "homepage" + } +} +``` + +También puedes utilizar el parámetro `startTime` para obtener el contexto de un momento específico. Si se omite el parámetro, se regresa el contexto actual. + +```typescript +getInternalContext (startTime?: 'number' | undefined) +``` + +{{< tabs >}} +{{% tab "NPM" %}} + +```JavaScript +importar { datadogRum } desde '@datadog/browser-rum' + +datadogRum.getInternalContext() // { session_id: "xxxx", application_id: "xxxx" ... } +``` + +{{% /tab %}} +{{% tab "CDN asíncrono" %}} + +```JavaScript +window.DD_RUM.onReady(function () { + window.DD_RUM.getInternalContext() // { session_id: "xxxx", application_id: "xxxx" ... } +}) +``` + +{{% /tab %}} +{{% tab "CDN síncrono" %}} + +```JavaScript +window.DD_RUM && window.DD_RUM.getInternalContext() // { session_id: "xxxx", application_id: "xxxx" ... } +``` + +{{% /tab %}} +{{< /tabs >}} + ## Micro frontend A partir de la versión 5.22, el SDK del navegador RUM admite arquitecturas micro frontend. El mecanismo se basa en trazas del stack tecnológico. Para utilizarlo, debes poder extraer servicios y propiedades de versiones de las rutas y nombres de archivo de tu aplicación. @@ -1401,6 +1605,7 @@ En la propiedad `beforeSend`, puede anular las propiedades servicio y version. P {{< tabs >}} {{% tab "NPM" %}} + ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -1421,8 +1626,10 @@ datadogRum.init({ }, }); ``` + {{% /tab %}} {{% tab "CDN asíncrono" %}} + ```javascript const SERVICE_REGEX = /some-pathname\/(?\w+)\/(?\w+)\//; @@ -1443,8 +1650,10 @@ window.DD_RUM.onReady(function() { }); }); ``` + {{% /tab %}} {{% tab "CDN síncrono" %}} + ```javascript const SERVICE_REGEX = /some-pathname\/(?\w+)\/(?\w+)\//; @@ -1463,6 +1672,7 @@ window.DD_RUM && window.DD_RUM.init({ }, }); ``` + {{% /tab %}} {{< /tabs >}} @@ -1471,9 +1681,10 @@ Cualquier consulta realizada en el Explorador RUM puede utilizar el atributo ser ### Limitaciones Algunos eventos no pueden atribuirse a un origen, por lo que no tienen una pila de manipulación asociada. Esto incluye: + - Acción eventos recogida automáticamente - Eventos de recursos distintos de XHR y Fetch. -- Ver eventos (pero en su lugar puedes [sobrescribir los nombres de vistas de RUM predeterminados][21]) +- Visualiza eventos (pero puedes [sustituir los nombres de vista de RUM predeterminados][20] en su lugar) - Violaciones de CORS y CSP ## Referencias adicionales @@ -1495,9 +1706,8 @@ Algunos eventos no pueden atribuirse a un origen, por lo que no tienen una pila [13]: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming [14]: /es/real_user_monitoring/guide/enrich-and-control-rum-data [15]: https://github.com/DataDog/browser-sdk/blob/main/packages/rum-core/src/rumEvent.types.ts -[16]: /es/logs/log_configuration/attributes_naming_convention/#user-related-attributes -[17]: https://github.com/DataDog/browser-sdk/blob/main/CHANGELOG.md#v4130 -[18]: /es/data_security/real_user_monitoring/#browser-rum-use-of-cookies -[19]: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage -[20]: https://github.com/DataDog/browser-sdk/blob/main/CHANGELOG.md#v5280 -[21]: /es/real_user_monitoring/browser/advanced_configuration#override-default-rum-view-names +[16]: https://github.com/DataDog/browser-sdk/blob/main/CHANGELOG.md#v4130 +[17]: /es/data_security/real_user_monitoring/#browser-rum-use-of-cookies +[18]: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage +[19]: https://github.com/DataDog/browser-sdk/blob/main/CHANGELOG.md#v5280 +[20]: /es/real_user_monitoring/browser/advanced_configuration#override-default-rum-view-names \ No newline at end of file diff --git a/content/es/real_user_monitoring/browser/collecting_browser_errors.md b/content/es/real_user_monitoring/browser/collecting_browser_errors.md index 2f88ac12ebf9b..7e3610505ee21 100644 --- a/content/es/real_user_monitoring/browser/collecting_browser_errors.md +++ b/content/es/real_user_monitoring/browser/collecting_browser_errors.md @@ -1,6 +1,9 @@ --- -aliases: -- /es/error_tracking/standalone_frontend/collecting_browser_errors +alias: +- /error_tracking/standalone_frontend/collecting_browser_errors +descripción: Aprende a recopilar y realizar un seguimiento de errores frontend de + varias fuentes utilizando el SDK del navegador RUM, incluida la recopilación manual + de errores y los límites de errores React. further_reading: - enlace: /error_tracking/explorer/ etiqueta: Documentation @@ -11,7 +14,7 @@ further_reading: - etiqueta: Documentation link: /real_user_monitoring texto: Medir el rendimiento y el impacto en el usuario -title: Recopilación de errores del navegador +título: Recopilación de errores del navegador --- ## Información general @@ -50,7 +53,7 @@ Los errores de origen incluyen información a nivel de código sobre el error. P Excepciones manejadas por Monitor, rechazos de promesas manejados y otros errores no rastreados automáticamente por el SDK del navegador con la API `addError()`: -{{< code-block lang="JavaScript" >}} +{{< code-block lang="javascript" >}} addError( error: unknown, context?: Context diff --git a/content/es/real_user_monitoring/guide/browser-sdk-upgrade.md b/content/es/real_user_monitoring/guide/browser-sdk-upgrade.md index 36130bcc6863f..f2ce5aa01133c 100644 --- a/content/es/real_user_monitoring/guide/browser-sdk-upgrade.md +++ b/content/es/real_user_monitoring/guide/browser-sdk-upgrade.md @@ -1,4 +1,7 @@ --- +description: Guía de actualización para migrar entre versiones principales de SDK + de navegador RUM con los últimos cambios, nuevas funciones y actualizaciones de + compatibilidad. further_reading: - link: /real_user_monitoring/explorer tag: Documentación @@ -194,7 +197,7 @@ En la v5, el valor predeterminado de `sessionReplaySampleRate` es 0 en lugar de Para promover la compatibilidad y el uso de OpenTelemetry, se han modificado los tipos de propagadores por defecto para incluir `tracecontext` además de `datadog`. -**Acción a realizar**: Si aún no estás especificando el propagador deseado en el parámetro de inicialización `allowedTracingUrls`, configura los encabezados Access-Control-Allow-Headers de tu servidor para aceptar también el encabezado `traceparent`. Para obtener más información, consulta [Conectar RUM y trazas][25]. +**Acción a realizar**: Si aún no estás especificando el propagador deseado en el parámetro de inicialización `allowedTracingUrls`, configura los encabezados Access-Control-Allow-de tu servidor para aceptar también el encabezado `traceparent`. Para obtener más información, consulta [Conectar RUM y trazas][25]. ### Campo del plan de sesión @@ -404,10 +407,10 @@ El SDK del Navegador RUM ya no permite especificar el origen de un error recopil [23]: /es/real_user_monitoring/browser/advanced_configuration/?tab=npm#enrich-and-control-rum-data [24]: /es/help/ [26]: /es/real_user_monitoring/browser/ -[25]: /es/real_user_monitoring/platform/connect_rum_and_traces#opentelemetry-support +[25]: /es/real_user_monitoring/correlate_with_other_telemetry/apm#opentelemetry-support [27]: /es/real_user_monitoring/guide/proxy-rum-data [28]: /es/real_user_monitoring/browser/setup/#initialization-parameters -[29]: /es/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum#:~:text=configure%20the%20traceContextInjection +[29]: /es/real_user_monitoring/correlate_with_other_telemetry/apm?tab=browserrum#:~:text=configure%20the%20traceContextInjection [30]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import [31]: https://webpack.js.org/guides/code-splitting/#dynamic-imports [32]: https://esbuild.github.io/api/#splitting diff --git a/content/es/real_user_monitoring/guide/enrich-and-control-rum-data.md b/content/es/real_user_monitoring/guide/enrich-and-control-rum-data.md index 1caf231ff6c3c..9a01b9cfdfd8f 100644 --- a/content/es/real_user_monitoring/guide/enrich-and-control-rum-data.md +++ b/content/es/real_user_monitoring/guide/enrich-and-control-rum-data.md @@ -1,4 +1,7 @@ --- +description: Utiliza la llamada de retorno beforeSend para enriquecer, modificar o + filtrar eventos RUM antes de enviarlos a Datadog para mejorar el control de los + datos. further_reading: - link: /real_user_monitoring/explorer tag: Documentación @@ -10,9 +13,9 @@ title: Enriquecer y controlar datos RUM de navegador con beforeSend El SDK del Navegador RUM captura eventos RUM y rellena sus atributos principales. La función de devolución de llamada `beforeSend` te da acceso a cada evento recopilado por el SDK RUM antes de enviarlo a Datadog. -Interceptar eventos RUM te permite: +Interceptar los eventos del RUM te permite: -* Enriquecer tus eventos RUM con atributos de contexto adicionales +* Enriquecer los eventos del RUM con atributos de contexto adicionales * Modificar tus eventos RUM para cambiar su contenido u ocultar secuencias confidenciales (consulta la [lista de propiedades editables][1]) * Descartar eventos RUM seleccionados @@ -204,9 +207,9 @@ import { datadogRum } from '@datadog/browser-rum'; datadogRum.init({ ..., beforeSend: (event, context) => { - // descartar un error de RUM si su mensaje incluye 'el perfil no está definido' - si (event.type === 'error' && event.error.message.includes('profile is not defined')) { - devuelve un falso + // discard a RUM error if its message includes 'profile is not defined' + if (event.type === 'error' && event.error.message.includes('profile is not defined')) { + return false } }, ... diff --git a/content/es/serverless/guide/datadog_forwarder_python.md b/content/es/serverless/guide/datadog_forwarder_python.md index 4b6c62f1cc232..dcc705e18658e 100644 --- a/content/es/serverless/guide/datadog_forwarder_python.md +++ b/content/es/serverless/guide/datadog_forwarder_python.md @@ -4,7 +4,7 @@ title: Instrumentación de aplicaciones serverless de Python mediante el Datadog ## Información general
-Si recién empiezas a utilizar Datadog Serverless, sigue las instrucciones para instrumentar tus funciones de Lambda mediante la Datadog Lambda Extension. Si configuraste Datadog Serverless con el Datadog Forwarder antes de que Lambda ofreciera la funcionalidad lista para usar, utiliza esta guía para mantener tu instancia. +Si recién empiezas a utilizar Datadog Serverless, sigue las instrucciones para instrumentar tus funciones Lambda utilizando la extensión Lambda en Datadog. Si configuraste Datadog Serverless con el Datadog Forwarder antes de que Lambda ofreciera la funcionalidad predefinida, utiliza esta guía para conservar tu instancia.
## Requisitos previos @@ -43,7 +43,7 @@ datadog-ci lambda instrument -f -f -r ` y `` por los nombres de tu función de Lambda. - Reemplaza `` por el nombre de la región de AWS. -- Reemplaza `` por la versión de la librería Lambda de Datadog que quieres utilizar. La última versión es `{{< latest-lambda-layer-version layer="python" >}}`. +- Reemplaza `` por la versión de la biblioteca Lambda de Datadog que quieres utilizar. La última versión es `{{< latest-lambda-layer-version layer="python" >}}`. - Reemplaza `` por el nombre de recurso de Amazon (ARN) del Forwarder (consulta la [documentación del Forwarder][2]). Por ejemplo: @@ -63,7 +63,7 @@ Obtén más información y parámetros adicionales en la [documentación de la C {{% /tab %}} {{% tab "Serverless Framework" %}} -El complemento [Datadog Serverless Plugin][1] añade la librería Lambda de Datadog automáticamente a tus funciones mediante una capa y configura las funciones para enviar métricas, trazas y logs a Datadog a través del [Datadog Forwarder][2]. +El complemento [Datadog Serverless Plugin][1] añade la biblioteca Lambda de Datadog automáticamente a tus funciones mediante una capa y configura las funciones para enviar métricas, trazas y logs a Datadog a través del [Datadog Forwarder][2]. Si configuraste tu función de Lambda para utilizar la firma de código, debes añadir el ARN del perfil de firma de Datadog (`arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc`) a la [configuración de firma de código][4] de tu función antes de poder instalar el Datadog Serverless Plugin. @@ -92,7 +92,7 @@ Para instalar y configurar el Datadog Serverless Plugin, sigue estos pasos: {{% /tab %}} {{% tab "AWS SAM" %}} -La [macro de CloudFormation de Datadog][1] transforma automáticamente tu plantilla de aplicación de SAM para añadir la librería Lambda de Datadog a tus funciones mediante las capas. Además, configura las funciones para enviar métricas, trazas y logs a Datadog a través del [Datadog Forwarder][2]. +La [macro de CloudFormation de Datadog][1] transforma automáticamente tu plantilla de aplicación de SAM para añadir la biblioteca Lambda de Datadog a tus funciones mediante las capas. Además, configura las funciones para enviar métricas, trazas y logs a Datadog a través del [Datadog Forwarder][2]. ### Instalar @@ -119,8 +119,8 @@ Transform: pythonLayerVersion: "{{< latest-lambda-layer-version layer="python" >}}" stackName: !Ref "AWS::StackName" forwarderArn: "" - service: "" # Opcional - env: "" # Opcional + service: "" # Optional + env: "" # Optional ``` Para rellenar los parámetros, haz lo siguiente: @@ -138,7 +138,7 @@ Obtén más información y parámetros adicionales en la [documentación de la m {{% /tab %}} {{% tab "AWS CDK" %}} -La [macro de CloudFormation de Datadog][1] transforma automáticamente tu plantilla de aplicación de CloudFormation generada con el AWS CDK para añadir la librería Lambda de Datadog a tus funciones mediante capas. Además, configura las funciones para enviar métricas, trazas y logs a Datadog a través del [Datadog Forwarder][2]. +La [macro de CloudFormation de Datadog][1] transforma automáticamente tu plantilla de aplicación de CloudFormation generada con el AWS CDK para añadir la biblioteca Lambda de Datadog a tus funciones mediante capas. Además, configura las funciones para enviar métricas, trazas y logs a Datadog a través del [Datadog Forwarder][2]. ### Instalar @@ -171,8 +171,8 @@ class CdkStack(core.Stack): "pythonLayerVersion": "{{< latest-lambda-layer-version layer="python" >}}", "forwarderArn": "", "stackName": self.stackName, - "service": "", # Opcional - "env": "", # Opcional + "service": "", # Optional + "env": "", # Optional } }) ``` @@ -282,7 +282,7 @@ Suscribe la función de Lambda del Datadog Forwarder a cada uno de los grupos de ### Instalar -Si vas a desplegar tu función de Lambda como una imagen de contenedor, no puedes utilizar la librería Lambda de Datadog como una capa. En su lugar, debes instalar la librería Lambda de Datadog como una dependencia de tu función dentro de la imagen. +Si vas a desplegar tu función de Lambda como una imagen de contenedor, no puedes utilizar la biblioteca Lambda de Datadog como una capa. En su lugar, debes instalar la biblioteca Lambda de Datadog como una dependencia de tu función dentro de la imagen. ```sh @@ -317,7 +317,7 @@ Suscribe la función de Lambda del Datadog Forwarder a cada uno de los grupos de ### Instalar -Puedes instalar la librería Lambda de Datadog como una capa (recomendado) o como un paquete de Python. +Puedes instalar la biblioteca Lambda de Datadog como una capa (recomendado) o como un paquete de Python. La versión secundaria del paquete `datadog-lambda` siempre coincide con la versión de la capa. Por ejemplo, la versión 0.5.0 de datadog-lambda coincide con el contenido de la versión 5 de la capa. @@ -326,10 +326,10 @@ La versión secundaria del paquete `datadog-lambda` siempre coincide con la vers [Configura las capas][1] de tu función de Lambda con el ARN en el siguiente formato: ``` -# Para las regiones us, us3, us5, ap1 y eu +# For us,us3,us5,ap1, ap2, and eu regions arn:aws:lambda::464622532012:layer:Datadog-: -# Para las regiones us-gov +# For us-gov regions arn:aws-us-gov:lambda::002406178527:layer:Datadog-: ``` @@ -339,7 +339,7 @@ Las opciones disponibles en `RUNTIME` son {{< latest-lambda-layer-version layer= arn:aws:lambda:us-east-1:464622532012:layer:Datadog-{{< latest-lambda-layer-version layer="python-example-version" >}}:{{< latest-lambda-layer-version layer="python" >}} ``` -Si configuraste tu función de Lambda para utilizar la firma de código, debes añadir el ARN del perfil de firma de Datadog (`arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc`) a la [configuración de firma de código][9] de tu función antes de poder añadir la librería Lambda de Datadog como una capa. +Si configuraste tu función de Lambda para utilizar la firma de código, debes añadir el ARN del perfil de firma de Datadog (`arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc`) a la [configuración de firma de código][9] de tu función antes de poder añadir la biblioteca Lambda de Datadog como una capa. #### Como un paquete @@ -399,21 +399,21 @@ from ddtrace import tracer from datadog_lambda.metric import lambda_metric def lambda_handler(event, context): - # añade etiquetas personalizadas al tramo de la función de Lambda, - # NO funciona si el rastreo de X-Ray está habilitado + # add custom tags to the lambda function span, + # does NOT work when X-Ray tracing is enabled current_span = tracer.current_span() if current_span: current_span.set_tag('customer.id', '123456') - # envía un tramo personalizado + # submit a custom span with tracer.trace("hello.world"): print('Hello, World!') - # envía una métrica personalizada + # submit a custom metric lambda_metric( metric_name='coffee_house.order_value', value=12.45, - timestamp=int(time.time()), # opcional, debe estar dentro de los últimos 20 minutos + timestamp=int(time.time()), # optional, must be within last 20 mins tags=['product:latte', 'order:online'] ) @@ -422,7 +422,7 @@ def lambda_handler(event, context): 'body': get_message() } -# rastrea una función +# trace a function @tracer.wrap() def get_message(): return 'Hello from serverless!' @@ -439,4 +439,4 @@ Para obtener más información sobre el envío de métricas personalizadas, cons [2]: /es/getting_started/tagging/unified_service_tagging/#aws-lambda-functions [3]: https://app.datadoghq.com/functions [4]: /es/serverless/custom_metrics?tab=python -[5]: /es/tracing/custom_instrumentation/python/ +[5]: /es/tracing/custom_instrumentation/python/ \ No newline at end of file diff --git a/content/es/serverless/libraries_integrations/cli.md b/content/es/serverless/libraries_integrations/cli.md index a3a28c5dec2f9..9573554892fd5 100644 --- a/content/es/serverless/libraries_integrations/cli.md +++ b/content/es/serverless/libraries_integrations/cli.md @@ -3,7 +3,7 @@ aliases: - /es/serverless/datadog_lambda_library/ - /es/serverless/serverless_integrations/cli/ dependencies: -- https://github.com/DataDog/datadog-ci/blob/master/src/commands/lambda/README.md +- https://github.com/DataDog/datadog-ci/blob/master/packages/plugin-lambda/README.md title: Datadog Serverless CLI --- Puedes utilizar la interfaz de línea de comandos (CLI) para instrumentar tus funciones de AWS Lambda con Datadog. La CLI habilita la instrumentación mediante la modificación de la configuración de las funciones de Lambda existentes y, por lo tanto, *no* requiere redistribución. Es la forma más rápida de empezar a trabajar con la monitorización serverless de Datadog. @@ -25,7 +25,7 @@ Para instrumentar tus funciones de Lambda con el comando `datadog-ci lambda inst ### `instrument` -Ejecuta `datadog-ci lambda instrument` para aplicar la instrumentación de Datadog a una función de Lambda. Este comando añade la librería Lambda de Datadog o la Datadog Lambda Extension como capas de Lambda a las funciones de Lambda instrumentadas y modifica sus configuraciones. +Ejecuta `datadog-ci lambda instrument` para aplicar la instrumentación de Datadog a una función de Lambda. Este comando añade la biblioteca Lambda de Datadog o la Datadog Lambda Extension como capas de Lambda a las funciones de Lambda instrumentadas y modifica sus configuraciones. ```bash @@ -46,7 +46,7 @@ datadog-ci lambda instrument -f -f -r us ### `uninstrument` -Ejecuta `datadog-ci lambda uninstrument` para revertir la instrumentación de Datadog en una función de Lambda. Este comando elimina automáticamente la configuración de Datadog, como las capas de la librería Lambda de Datadog y la Datadog Lambda Extension, así como otras configuraciones aplicadas por la datadog-ci. +Ejecuta `datadog-ci lambda uninstrument` para revertir la instrumentación de Datadog en una función de Lambda. Este comando elimina automáticamente la configuración de Datadog, como las capas de la biblioteca Lambda de Datadog y la Datadog Lambda Extension, así como otras configuraciones aplicadas por la datadog-ci. ```bash # Uninstrument multiple functions specified by names @@ -100,7 +100,7 @@ Puedes pasar los siguientes argumentos a `instrument` para especificar su compor | `--env` | | Utiliza la etiqueta `--env` para separar tus entornos de staging, desarrollo y producción. Obtén más información sobre la etiqueta `env` [aquí][6]. | | | `--extra-tags` | | Añade etiquetas personalizadas a tu función de Lambda en Datadog. Debe ser un lista de `:` separados por comas como: `layer:api,team:intake`. | | | `--profile` | | Especifica las credenciales del perfil con nombre de AWS que se utilizarán para instrumentar. Obtén más información sobre los perfiles con nombre de AWS [aquí][11]. | | -| `--layer-version` | `-v` | La versión de la capa de la librería Lambda de Datadog que se va a aplicar. Esto varía entre los tiempos de ejecución. Para ver la última versión de la capa, consulta las notas de versión del repositorio datadog-lambda-layer de [JS][2] o [Python][3]. | | +| `--layer-version` | `-v` | La versión de la capa de la biblioteca Lambda de Datadog que se va a aplicar. Esto varía entre los tiempos de ejecución. Para ver la última versión de la capa, consulta las notas de versión del repositorio datadog-lambda-layer de [JS][2] o [Python][3]. | | | `--extension-version` | `-e` | La versión de la capa de la Datadog Lambda Extension que se va a aplicar. Al definir `extension-version`, asegúrate de exportar `DATADOG_API_KEY` (o si está cifrada, `DATADOG_KMS_API_KEY` o `DATADOG_API_KEY_SECRET_ARN`) en tu entorno también. Si utilizas `extension-version`, omite `forwarder`. Obtén más información sobre la extensión de Lambda [aquí][4]. | | | `--tracing` | | Lo utilizas si quieres habilitar el rastreo dd-trace en tu función de Lambda. | `true` | | `--merge-xray-traces` | | Lo utilizas si quieres unir las trazas (traces) de dd-trace con las trazas de AWS X-Ray. Es útil para rastrear tramos (spans) de API Gateway. | `false` | @@ -109,7 +109,7 @@ Puedes pasar los siguientes argumentos a `instrument` para especificar su compor | `--forwarder` | | El ARN del [Datadog Forwarder][9] al que se le adjuntará este LogGroup de la función. | | | `--dry-run` | `-d` | Lo utilizas si quieres previsualizar los cambios que se aplicarán al ejecutar el comando. | `false` | | `--logging` | | Si deseas recopilar logs mediante la extensión de Lambda. | `true` | -| `--log-level` | | Configura `debug` para ver una salida adicional de la librería Lambda de Datadog o la extensión de Lambda con fines de resolución de problemas. | | +| `--log-level` | | Configura `debug` para ver una salida adicional de la biblioteca Lambda de Datadog o la extensión de Lambda con fines de resolución de problemas. | | | `--source-code-integration` | `-s` | Lo utilizas si quieres habilitar la [integración del código fuente de Datadog][12]. Esto etiquetará tus funciones de Lambda con la URL del repositorio Git y el hash del último commit del directorio local actual. **Nota**: El repositorio Git no debe estar por delante del remoto, y no debe estar sucio. | `true` | | `--no-source-code-integration` | | Deshabilita la integración del código fuente de Datadog. | | | `--upload-git-metadata` | `-u` | Lo utilizas si quieres habilitar la carga de metadatos de Git, como parte de la integración del código fuente. La carga de metadatos de Git solo es necesaria si no tienes instalada la integración de Github de Datadog. | `true` | @@ -218,4 +218,4 @@ Si tienes preguntas o comentarios sobre el producto, únete al canal `#serverles +--> \ No newline at end of file diff --git a/content/es/sheets/_index.md b/content/es/sheets/_index.md index 84e8aa31e3e3f..80981f2657a7b 100644 --- a/content/es/sheets/_index.md +++ b/content/es/sheets/_index.md @@ -1,4 +1,7 @@ --- +description: Analiza los datos de Datadog en una interfaz de hoja de cálculo familiar + con tablas dinámicas, búsquedas, columnas calculadas y complejas herramientas de + análisis. further_reading: - link: /sheets/functions_operators tag: Documentation @@ -12,9 +15,9 @@ title: Sheets ## Información general -Sheets es una herramienta de hoja de cálculo que puedes rellenar con datos de Datadog, lo que te permite realizar análisis complejos y elaborar informes sin necesidad de conocimientos técnicos. Permite a Teams utilizar las funciones habituales de una hoja de cálculo, como búsquedas, tablas dinámicas y cálculos con datos de Datadog, para que no tengas que exportar y utilizar otra herramienta con datos obsoletos. +Sheets es una herramienta de hoja de cálculo que puedes rellenar con datos de Datadog, lo que te permite realizar análisis complejos y elaborar informes sin necesidad de conocimientos técnicos. Permite a los equipos utilizar las funciones familiares de una hoja de cálculo, como búsquedas, tablas dinámicas y cálculos con datos de Datadog, para que no tengas que exportar y utilizar otra herramienta con datos obsoletos. -Sheets te permite manipular, transformar y analizar datos de logs, real user monitoring y monitorización del coste en la nube en una interfaz de hoja de cálculo familiar. +Sheets te permite manipular, transformar y analizar datos de logs, monitorización de usuarios reales y monitorización de costos de la nube en una interfaz de hoja de cálculo familiar. ## Crear una tabla @@ -25,7 +28,8 @@ Comienza por crear una tabla de datos, ya sea creando una nueva consulta desde S {{< img src="/sheets/create_table.png" alt="Modal para crear una tabla desde Sheets, que muestra una consulta a Logs con status:error" style="width:90%;" >}} 1. En la página de [Datadog Sheets][1], haz clic en **New Spreadsheet** (Nueva hoja de cálculo). -1. Haz clic en **Add Data** (Añadir datos). +1. Haz clic en **Add Data** (Añadir datos).
+**Nota**: Si hay alguna source (fuente) de datos que deseas y no está disponible, solicítala [aquí][19]. 1. Comienza a crear tu consulta seleccionando tu fuente de datos y añadiendo parámetros de filtrado. 1. Selecciona las columnas que deseas visualizar y previsualiza la tabla resultante. 1. Haz clic en **Create Table** (Crear tabla). @@ -71,13 +75,44 @@ Después de tener tu tabla dinámica, puedes hacer clic en **Show Graphs** (Most Crea tablas y analiza los datos extraídos de las siguientes fuentes de datos: | Fuente de datos | Página del producto | -| -------------------- | ----------- | +| -------------------- | ----------- | +| Spans (tramos) de APM | [Explorer de APM][18] | +| Audit Trail | [Audit Trail][15] | +| Pipelines CI | [CI Visibility][17] | | Coste de la nube | [Cloud Cost Analytics][5] | -| Datos sobre infraestructura (vista previa) | [Datos de infraestructura][6] | +| Consultas de bases de datos | [Database Monitoring][16] | +| Eventos | [Event Management][14] | +| infraestructura | [Editor de DDSQL][6] | +| LLM Observability | [LLM Observability][13] | | Logs | [Logs Explorer][2] | | Métricas | [Metrics Explorer][7] | | Real User Monitoring | [RUM Explorer][8] | | Tablas de referencia | [Tablas de referencia][9] | +| Conclusiones sobre seguridad | [Seguridad en la nube][12] | +| Señales de seguridad | [Seguridad] [11] | + +## Configurar una hoja de cálculo + +### Permisos + +En forma predeterminada, todos los usuarios tienen acceso total a las hojas de cálculo. + +Utiliza controles de acceso granulares para limitar los [roles][10] que pueden editar una hoja de cálculo concreta: +1. Mientras visualizas una hoja de cálculo, haz clic en la rueda dentada de la parte superior derecha. Se abre el menú de configuración. +1. Selecciona **Permissions** (Permisos). +1. Haz clic en **Restrict Access** (Acceso restringido). El cuadro de diálogo se actualiza para mostrar que los miembros de tu organización tienen acceso de **Visor** por defecto. +1. Utiliza el menú desplegable para seleccionar uno o varios roles, equipos o usuarios que puedan editar la hoja de cálculo. +2. Haz clic en **Add** (Añadir). El cuadro de diálogo se actualiza para mostrar que el rol seleccionado tiene el permiso de **Editor**. +1. Haz clic en **Save** (Guardar). + +**Nota:** Para mantener tu acceso de edición a la hoja de cálculo, debes incluir al menos un rol del que seas miembro antes de guardar. + +Debes tener acceso de edición para restaurar el acceso general a una hoja de cálculo restringida. Realiza los siguientes pasos: +1. Mientras visualizas la hoja de cálculo, haz clic en la rueda dentada de la parte superior derecha. Se abre el menú de configuración. +1. Selecciona **Permissions** (Permisos). +1. Haz clic en **Restore Full Access** (Restablecer acceso completo). +1. Haz clic en **Save** (Guardar). + ## Referencias adicionales @@ -89,7 +124,17 @@ Crea tablas y analiza los datos extraídos de las siguientes fuentes de datos: [3]: /es/sheets/functions_operators [4]: https://docs.datadoghq.com/es/integrations/guide/reference-tables/?tab=manualupload [5]: https://app.datadoghq.com/cost -[6]: https://app.datadoghq.com/infrastructure +[6]: https://app.datadoghq.com/ddsql/editor [7]: https://app.datadoghq.com/metric/explorer [8]: https://app.datadoghq.com/rum/sessions -[9]: https://app.datadoghq.com/reference-tables \ No newline at end of file +[9]: https://app.datadoghq.com/reference-tables +[10]: /es/account_management/rbac/ +[11]: https://app.datadoghq.com/security +[12]: https://app.datadoghq.com/security/compliance +[13]: https://app.datadoghq.com/llm/applications +[14]: https://app.datadoghq.com/event/explorer +[15]: https://app.datadoghq.com/audit-trail +[16]: https://app.datadoghq.com/databases/queries +[17]: https://app.datadoghq.com/ci/pipelines +[18]: https://app.datadoghq.com/apm/traces +[19]: https://www.datadoghq.com/product-preview/additional-advanced-querying-data-sources/ \ No newline at end of file diff --git a/content/es/synthetics/_index.md b/content/es/synthetics/_index.md index 32fb228b300b3..6e32f758743dc 100644 --- a/content/es/synthetics/_index.md +++ b/content/es/synthetics/_index.md @@ -13,31 +13,38 @@ disable_sidebar: true further_reading: - link: https://app.datadoghq.com/release-notes?category=Synthetic%20Monitoring tag: Notas de la versión - text: Echa un vistazo a las últimas versiones de la Monitorización Synthetic en + text: Echa un vistazo a las últimas versiones de la monitorización Synthetic en Datadog. (Es necesario iniciar sesión en la aplicación) -- link: https://www.datadoghq.com/blog/introducing-synthetic-monitoring/ - tag: Blog - text: Introducción a la Monitorización Synthetic en Datadog -- link: https://www.datadoghq.com/blog/monitor-cdn-performance-with-synthetic-testing/ - tag: Blog - text: Monitorizar el rendimiento de la CDN en tus tests Synthetic -- link: https://www.datadoghq.com/blog/static-web-application-monitoring-best-practices/ - tag: Blog - text: Prácticas recomendadas para la monitorización de aplicaciones web estáticas -- link: https://www.datadoghq.com/blog/api-test-coverage-monitoring-datadog-synthetics/ - tag: Blog - text: Mejorar la cobertura de tus tests de API con la Monitorización Synthetic en - Datadog - link: https://learn.datadoghq.com/courses/getting-started-with-synthetic-browser-testing tag: Centro de aprendizaje - text: 'Centro de aprendizaje de Datadog: Empezando con los tests del Navegador Synthetic' + text: 'Centro de aprendizaje de Datadog: Empezando con los tests de navegador Synthetic' - link: /synthetics/guide/ tag: Documentación - text: Guía de Synthetic Monitoring + text: Guías para la monitorización Synthetic - link: https://dtdg.co/fe - tag: Habilitar los fundamentos + tag: Habilitación de los fundamentos text: Participa en una sesión interactiva para mejorar tus capacidades de ejecutar tests synthetic +- link: https://www.datadoghq.com/blog/http-security-headers-synthetic-tests/ + tag: Blog + text: Proteger las cabeceras HTTP con tests Synthetic +- link: https://www.datadoghq.com/blog/synthetic-monitoring-updates/ + tag: Blog + text: Obtener información clave sobre las experiencias de los usuarios más rápidamente + con la monitorización Synthetic en Datadog +- link: https://www.datadoghq.com/blog/smoke-testing-synthetic-monitoring/ + tag: Blog + text: Crear tests de humo UX eficaces con la monitorización Synthetic +- link: https://www.datadoghq.com/blog/slo-synthetic-monitoring/ + tag: Blog + text: Mejorar la precisión y el rendimiento de los SLOs con la monitorización Synthetic + en Datadog +- link: https://www.datadoghq.com/blog/mobile-apps-synthetic-tests/ + tag: Blog + text: Creación de tests Synthetic fiables y precisos para tus aplicaciones móviles +- link: https://www.datadoghq.com/blog/ambassador-browser-tests/ + tag: Blog + text: Cómo ayudé a mi cliente a ampliar sus tests de navegador con Datadog title: Tests y monitorización Synthetic --- @@ -90,9 +97,9 @@ Utiliza la [integración entre tests sintéticos y trazas de APM][16] para encon Analiza la información de rendimiento de tus tests de API, tests de API multipaso, tests de navegador y localizaciones privadas, así como los eventos de Datadog, con [dashboards sintéticos listos para usar][17]. -{{< img src="synthetics/dashboards/test_dashboard.png" alt="Dashboard de Monitorización Synthetic y del Resumen de tests continuos" style="width:100%;">}} +{{< img src="synthetics/dashboards/test_dashboard.png" alt="Dashboard de monitorización Synthetic y del resumen de tests continuos" style="width:100%;">}} -## Utiliza la Monitorización Synthetic y el Explorador de resultados de tests +## Utiliza la monitorización Synthetic y el Explorador de resultados de tests Crea [buscar consultas y visualizaciones][20] para tus ejecuciones de test sintético o lotes de tests que se ejecutan en pipelines CI/CD. @@ -104,11 +111,33 @@ Optimiza tu conjunto de tests [asegurándote de que se prueban los flujos de tra {{< img src="synthetics/test_coverage/test_coverage.png" alt="Explorador de tests continuos" style="width:100%;">}} +## Notificaciones de la monitorización Synthetic + +Utiliza y enriquece los monitores de monitorización Synthetic para enviar notificaciones cuando un test de monitorización Synthetic está fallando. Están disponibles las siguientes funciones: + +Mensajes de monitor pre-rellenados +: Los mensajes de monitor pre-rellenados constituyen un punto de partida estructurado para las alertas de tests de monitorización Synthetic. Cada mensaje incluye un título estandarizado, un resumen y un pie de página con metadatos de test, lo que facilita y agiliza la comprensión de la alerta. + +Variables de plantilla +: Las variables de plantilla permiten inyectar datos específicos de test en las notificaciones de monitor de forma dinámica. Estas variables se extraen del objeto `synthetics.attributes`. + +Uso avanzado +: El uso avanzado incluye técnicas para revelar informaciones de test profundas o estructurar mensajes complejos utilizando plantillas de Handlebars. + +Alertas condicionales +: Las alertas condicionales te permiten cambiar el contenido de una notificación de monitor en función de resultados específicos o de condiciones de fallo de tests. + +Para obtener más información, consulta las [notificaciones de monitorización Synthetic][24]. + +## Historial de versiones + +Utiliza el [historial de versiones en la monitorización Synthetic][23] para ejecutar una versión anterior de un test, restaurar tu test a cualquier versión guardada o clonar una versión para crear un nuevo test de Synthetic Monitoring. + ## ¿Estás listo para comenzar? -Consulta el apartado [Empezando con Monitorización Synthetic][18] para obtener instrucciones sobre cómo crear tu primer test sintético y la monitorización tus aplicaciones web. A continuación, explora [Empezando con localizaciones privadas][19] para obtener instrucciones sobre cómo crear tu localización privada y ejecutar tests sintéticos con tu localización privada. +Consulta el apartado [Empezando con la monitorización Synthetic][18] para obtener instrucciones sobre cómo crear tu primer test Synthetic y la monitorización tus aplicaciones web. A continuación, explora [Empezando con localizaciones privadas][19] para obtener instrucciones sobre cómo crear tu localización privada y ejecutar tests Synthetic con tu localización privada. -## Leer más +## Referencias adicionales {{< partial name="whats-next/whats-next.html" >}} @@ -134,4 +163,6 @@ Consulta el apartado [Empezando con Monitorización Synthetic][18] para obtener [19]: /es/getting_started/synthetics/private_location [20]: /es/continuous_testing/explorer/ [21]: /es/mobile_testing -[22]: /es/synthetics/test_coverage \ No newline at end of file +[22]: /es/synthetics/test_coverage +[23]: /es/synthetics/guide/version_history/ +[24]: /es/synthetics/notifications/ \ No newline at end of file diff --git a/content/es/synthetics/guide/browser-tests-totp.md b/content/es/synthetics/guide/browser-tests-totp.md index e8bf9273923be..0015f189d69c4 100644 --- a/content/es/synthetics/guide/browser-tests-totp.md +++ b/content/es/synthetics/guide/browser-tests-totp.md @@ -9,6 +9,9 @@ further_reading: - link: synthetics/settings/?tab=specifyvalue#global-variables tag: Documentación text: Más información sobre las variables globales +- link: https://www.datadoghq.com/blog/ambassador-browser-tests/ + tag: Blog + text: Cómo ayudé a mi cliente a ampliar sus tests de navegador con Datadog title: Utiliza contraseñas de un solo uso basadas en el tiempo (TOTP) para la autenticación multifactor (MFA) en los tests de navegador --- @@ -25,8 +28,8 @@ Algunos códigos QR están limitados a métodos de verificación específicos y ## Guarda tu clave secreta o código QR en una variable global -Crea una variable global donde introducir una clave secreta o cargar un código QR de tu proveedor de autenticación. En la pestaña **Variables globales** de tu página **Configuración**, haz clic en **Crear variable global**. -1. En **Choose variable type** (Elegir el tipo de variable), selecciona **MFA Token**. +Crea una variable global donde introducir una clave secreta o cargar un código QR de tu proveedor de autenticación. En la pestaña **Variables globales** de tu página **Configuración**, haz clic en **Create Global Variable** (Crear variable global). +1. En **Choose variable type** (Elegir el tipo de variable), selecciona **MFA Token** (Token para MFA). 2. En **Definir variable**, introduce un **Nombre de variable**. Tu nombre de variable solo puede utilizar letras mayúsculas, números y guiones bajos. 3. Introduce una **Descripción** para tu variable (opcional). 4. Selecciona **Etiquetas** (tags) para asociarlas a tu variable (opcional). @@ -35,7 +38,7 @@ Crea una variable global donde introducir una clave secreta o cargar un código 7. Haz clic en **+ Generar** para crear una TOTP. Puedes copiar la TOTP generada con el icono **Copiar**. 8. En **Configuración de permisos**, restringe el acceso a tu variable en función de los roles en tu organización. Para más información sobre roles, consulta la [documentación de RBAC][1]. -{{< img src="synthetics/guide/browser-tests-totp/new-variable-totp.png" alt="Crear un token MFA" style="width:100%;" >}} +{{< img src="synthetics/guide/browser-tests-totp/new-variable-totp.png" alt="Crear un token para MFA" style="width:100%;" >}} ## Utiliza TOTP en tus tests Sintético Puedes utilizar la clave secreta o el código QR almacenados en una variable global en todos tus tests de Sintético. Cuando crees un [test de navegador][2], inserta la TOTP generada a partir de la clave secreta o el código QR almacenado en la variable global para verificar el flujo de trabajo de autenticación de tu aplicación. diff --git a/content/es/tracing/guide/alert_anomalies_p99_database.md b/content/es/tracing/guide/alert_anomalies_p99_database.md index 6093c017b18e8..fed1fa1b53239 100644 --- a/content/es/tracing/guide/alert_anomalies_p99_database.md +++ b/content/es/tracing/guide/alert_anomalies_p99_database.md @@ -1,4 +1,6 @@ --- +description: Aprende a crear monitores y alertas para patrones de latencia p99 anómalos + en servicios de bases de datos utilizando métricas de APM y la detección de anomalías. further_reading: - link: /tracing/guide/week_over_week_p50_comparison/ tag: 2 minutos @@ -71,7 +73,7 @@ Datadog te permite configurar monitores para realizar un seguimiento del estado Para cada servicio del mapa: un círculo verde significa que todos los monitores están estables, amarillo significa que uno o más monitores están enviando advertencias, pero ninguno alerta, rojo significa que uno o más monitores alertan, y gris significa que no hay monitores configurados para el servicio. -## Leer más +## Referencias adicionales {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/es/tracing/guide/configure_an_apdex_for_your_traces_with_datadog_apm.md b/content/es/tracing/guide/configure_an_apdex_for_your_traces_with_datadog_apm.md index 53b5006d3434d..59b674e29ec09 100644 --- a/content/es/tracing/guide/configure_an_apdex_for_your_traces_with_datadog_apm.md +++ b/content/es/tracing/guide/configure_an_apdex_for_your_traces_with_datadog_apm.md @@ -2,6 +2,9 @@ aliases: - /es/tracing/faq/how-to-configure-an-apdex-for-your-traces-with-datadog-apm - /es/tracing/getting_further/configure_an_apdex_for_your_traces_with_datadog_apm +description: Aprende a configurar las puntuaciones de Apdex en tus servicios para + medir la satisfacción de los usuarios en función de los tiempos de respuesta y umbrales + de rendimiento de las aplicaciones. title: Configuración de la puntuación del Apdex por servicio --- {{< jqmath-vanilla >}} diff --git a/content/es/tracing/guide/configuring-primary-operation.md b/content/es/tracing/guide/configuring-primary-operation.md index 881eaff83bb87..34b856e7b1beb 100644 --- a/content/es/tracing/guide/configuring-primary-operation.md +++ b/content/es/tracing/guide/configuring-primary-operation.md @@ -1,6 +1,8 @@ --- aliases: - /es/tracing/faq/resource-trace-doesn-t-show-up-under-correct-service/ +description: Comprende cómo funcionan las operaciones primarias en los servicios y + cómo configurarlas para organizar adecuadamente trazas (traces) y recursos en APM. further_reading: - link: /tracing/trace_collection/ tag: Documentación @@ -24,7 +26,7 @@ title: Operaciones principales en servicios Los servicios de APM calculan métricas de rastreo para errores, rendimiento y latencia. Estos cálculos se basan en los recursos que coinciden con un único nombre de tramo, considerado la operación principal. Estas métricas de servicio se utilizan en todo el producto, tanto por la página de servicio por defecto en el Software Catalog y como Mapa de servicio. -**Nota**: Las métricas de trazas pueden consultarse en función de su `trace.*` [espacio de nombres][1]. +**Nota**: Las métricas de rastreo pueden consultarse en función de su `trace.*` [espacio de nombres][1]. ## Operaciones principales ### Definición @@ -36,7 +38,7 @@ Por ejemplo, un servicio `web-store` puede tener varios endpoints instrumentados | Tipo de servicio | Operación principal | |------------------------|---------------------------------------------------| | web | `servlet.request`, `flask.request`, `web.request` | -| db | `postgres.query`, `db.query` | +| base de datos | `postgres.query`, `db.query` | | custom-instrumentation | `trace.annotation`, `method.call` | ### Configuración @@ -79,7 +81,7 @@ Span span = tracer.buildSpan("http.request").start(); try (Scope scope = tracer.activateSpan(span)) { span.setTag("service.name", "service_name"); span.setTag("resource.name", "/user/profile"); - // código que se rastrea + // code being traced } finally { span.finish(); } diff --git a/content/es/tracing/trace_collection/automatic_instrumentation/dd_libraries/cpp.md b/content/es/tracing/trace_collection/automatic_instrumentation/dd_libraries/cpp.md index 1b9f85a2b9f74..726609ccddf99 100644 --- a/content/es/tracing/trace_collection/automatic_instrumentation/dd_libraries/cpp.md +++ b/content/es/tracing/trace_collection/automatic_instrumentation/dd_libraries/cpp.md @@ -24,11 +24,11 @@ type: lenguaje de código múltiple ---
- Nota: C++ no proporciona integraciones para la instrumentación automática, pero es utilizado por el rastreo de proxy como Envoy y Nginx. + Nota: C++ no proporciona integraciones para la instrumentación automática, pero es utilizado por el rastreo de proxies como Envoy y NGINX.
## Requisitos de compatibilidad -La librería de rastreo de C++ requiere la cadena de herramientas C++17 para su compilación. Para ver la lista completa de los requisitos para las bibliotecas de rastreo y la compatibilidad de la arquitectura de procesadores de Datadog, consulta la página de [requisitos de compatibilidad][3]. +La biblioteca de rastreo de C++ requiere la cadena de herramientas C++17 para su compilación. Para ver la lista completa de los requisitos para las bibliotecas de rastreo y la compatibilidad de la arquitectura de procesadores de Datadog, consulta la página de [requisitos de compatibilidad][3]. ## Para empezar Antes de empezar, asegúrate de haber [instalado y configurado el Agent][6]. @@ -107,7 +107,7 @@ DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type" {{% /tab %}} {{% tab "CMake" %}} -Para integrar la librería `dd-trace-cpp` en tu proyecto C++ utilizando CMake, sigue estos pasos: +Para integrar la biblioteca `dd-trace-cpp` en tu proyecto C++ utilizando CMake, sigue estos pasos: ````CMake include(FetchContent) @@ -143,7 +143,7 @@ DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type" {{% tab "Manual" %}} -Para descargar e instalar manualmente la librería `dd-trace-cpp`, ejecuta el siguiente script bash: +Para descargar e instalar manualmente la biblioteca `dd-trace-cpp`, ejecuta el siguiente script bash: ```bash # Requiere el comando "jq", que puede instalarse a través del # gestor de paquetes: @@ -162,7 +162,7 @@ get_latest_release() { DD_TRACE_CPP_VERSION="$(get_latest_release DataDog/dd-trace-cpp)" -# Descarga e instala la librería dd-trace-cpp. +# Descarga e instala la biblioteca dd-trace-cpp. wget https://github.com/DataDog/dd-trace-cpp/archive/${DD_TRACE_CPP_VERSION}.tar.gz -O dd-trace-cpp.tar.gz mkdir dd-trace-cpp && tar zxvf dd-trace-cpp.tar.gz -C ./dd-trace-cpp/ --strip-components=1 cd dd-trace-cpp @@ -174,11 +174,11 @@ cmake --build build -j cmake --install build ``` -Por defecto, `cmake --install` coloca los encabezados compartidos públicos y de librerías en los directorios apropiados del sistema (por ejemplo, `/usr/local/[...]`). +Por defecto, `cmake --install` coloca los encabezados compartidos públicos y de bibliotecas en los directorios apropiados del sistema (por ejemplo, `/usr/local/[...]`). Para instalarlos en una localización específica, utiliza `cmake --install build --prefix `. ### Vinculación dinámica -Vincula a `libdd_trace_cpp.so`, asegurándote de que la librería compartids está en `LD_LIBRARY_PATH`. +Vincula a `libdd_trace_cpp.so`, asegurándote de que la biblioteca compartids está en `LD_LIBRARY_PATH`. ````bash clang -std=c++17 -o tracer_example tracer_example.cpp -ldd_trace_cpp @@ -192,7 +192,7 @@ DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type" ## Configuración -Si es necesario, configura la librería de rastreo para que envíe datos de telemetría sobre el rendimiento de la aplicación, según sea necesario, incluida la configuración del etiquetado unificado de servicios. Para ver más detalles, consulta la [configuración de librerías][5]. +Si es necesario, configura la biblioteca de rastreo para que envíe datos de telemetría sobre el rendimiento de la aplicación, según sea necesario, incluida la configuración del etiquetado unificado de servicios. Para ver más detalles, consulta la [configuración de bibliotecas][5]. ## Para leer más @@ -203,4 +203,4 @@ Si es necesario, configura la librería de rastreo para que envíe datos de tele [3]: /es/tracing/trace_collection/compatibility/cpp/ [4]: https://app.datadoghq.com/apm/service-setup [5]: /es/tracing/trace_collection/library_config/cpp/ -[6]: /es/tracing/trace_collection/automatic_instrumentation/?tab=datadoglibraries#install-and-configure-the-agent +[6]: /es/tracing/trace_collection/automatic_instrumentation/?tab=datadoglibraries#install-and-configure-the-agent \ No newline at end of file diff --git a/content/es/tracing/troubleshooting/_index.md b/content/es/tracing/troubleshooting/_index.md index c6661660957c2..63b3b74111064 100644 --- a/content/es/tracing/troubleshooting/_index.md +++ b/content/es/tracing/troubleshooting/_index.md @@ -8,6 +8,8 @@ algolia: aliases: - /es/tracing/faq/my-trace-agent-log-renders-empty-service-error/ - /es/tracing/troubleshooting/faq_apm/ +description: Guía completa para la resolución de problemas de APM, incluida la retención + de trazas (traces), la configuración del servicio y los errores de conexión. further_reading: - link: /tracing/troubleshooting/connection_errors tag: Documentación @@ -33,9 +35,9 @@ further_reading: - link: /integrations/ tag: Documentación text: Lista completa de integraciones de Datadog -- link: /tracing/guide/inferred-service-opt-in/ +- link: /tracing/services/inferred_services tag: Documentación - text: Dependencias inferidas de servicios (Vista previa) + text: Dependencias de servicio inferidas title: Solucionar problemas de APM --- @@ -102,9 +104,9 @@ Por ejemplo, puedes tener un único servicio como `service:test` mostrando múlt Puedes utilizar [dependencias inferidas de servicios (Vista previa)][30]. Las API externas inferidas utilizan la nomenclatura por defecto `net.peer.name`. Por ejemplo: `api.stripe.com`, `api.twilio.com` y `us6.api.mailchimp.com`. Las bases de datos inferidas utilizan la nomenclatura por defecto `scheme db.instance`. -O bien, puedes fusionar los nombres de servicio utilizando una variable de entorno como `DD_SERVICE_MAPPING` o `DD_TRACE_SERVICE_MAPPING`, según el lenguaje. +O bien, puedes fusionar los nombres de servicio utilizando una variable de entorno como `DD_SERVICE_MAPPING` o `DD_TRACE_SERVICE_MAPPING`, según el lenguaje. -Para más información, consulta [Configurar la librería de rastreo de Datadog][27] o elige tu lenguaje aquí: +Para más información, consulta [Configurar la biblioteca de rastreo de Datadog][27] o elige tu lenguaje aquí: {{< tabs >}} {{% tab "Java" %}} @@ -174,7 +176,7 @@ Los picos en la ingesta e indexación de datos pueden deberse a varios factores. | TIPO DE USO | MÉTRICA | DESCRIPCIÓN | | ------- | ------------ |------------ | -| Tramos indexados de APM | `datadog.estimated_usage.apm.indexed_spans` | Número total de tramos (spans) indexados por filtros de retención basados en etiquetas.| +| Tramos (spans) indexados de APM | `datadog.estimated_usage.apm.indexed_spans` | Número total de tramos indexados por filtros de retención basados en etiquetas (tags).| | Tramos ingeridos de APM | `datadog.estimated_usage.apm.ingested_spans`| Número total de incorporación de tramos. | El [dashboard de uso de trazas de APM][28] contiene varios grupos de widget que muestran KPI muy importantes e información de uso adicional. @@ -183,13 +185,13 @@ El [dashboard de uso de trazas de APM][28] contiene varios grupos de widget que {{% collapse-content title="Falta el mensaje de error y el stack trace" level="h4" %}} -En algunas trazas con un estado de error, la pestaña **Errors** (Errores) muestra `Missing error message and stack trace` en lugar de los detalles de la excepción. +En algunas trazas con un estado de error, la pestaña **Errors** (Errores) muestra `Missing error message and stack trace` en lugar de los detalles de la excepción. Un tramo puede mostrar este mensaje por dos posibles razones: - El tramo contiene una excepción no controlada. - Una respuesta HTTP dentro de tramo devuelve un código de estado HTTP entre 400 y 599. -Cuando se maneja una excepción en un bloque try/catch, las span tags `error.message`, `error.type` y `error.stack` no se rellenan. Para rellenar las span tags de error detallado, utiliza el código [Instrumentación personalizada][18]. +Cuando se maneja una excepción en un bloque try/catch, las etiquetas de tramo `error.message`, `error.type` y `error.stack` no se rellenan. Para rellenar las etiquetas de tramo de error detallado, utiliza el código [Instrumentación personalizada][18]. {{% /collapse-content %}} @@ -199,7 +201,7 @@ Si te encuentras con alguno de los siguientes problemas, puede que estés excedi - Tus métricas de traza no están informando como deberían en la plataforma de Datadog. - Te faltan algunos de los recursos que esperabas ver en la plataforma de Datadog. -- Estás viendo trazas desde tu servicio, pero no puedes encontrar este servicio en la página del [Catálogo de servicios][32]. +- Estás viendo trazas (traces) desde tu servicio, pero no puedes encontrar este servicio en la [página de Software Catalog][32]. {{% collapse-content title="Directrices sobre el volumen de datos" level="h4" %}} @@ -207,8 +209,8 @@ Tu aplicación instrumentada puede enviar tramos con marcas temporales de hasta Datadog acepta las siguientes combinaciones para un intervalo determinado de 40 minutos: -- 5000 combinaciones únicas de `environments` y `service` -- 30 `second primary tag values` únicos por entorno +- 5000 combinaciones únicas de `environments` y `service` +- 100 `primary tag values` únicos por etiqueta primaria adicional - 100 `operation names` únicos por entorno y servicio - 1000 `resources` únicos por entorno, servicio y nombre de operación - 30 `versions` únicas por entorno y servicio @@ -226,7 +228,7 @@ Datadog trunca las siguientes cadenas si superan el número de caracteres indica | [clave de etiqueta][8] | 200 | | [valor de etiqueta][8] | 25000 | -Además, el número de [span tags][8] presentes en cualquier tramo no puede exceder de 1024. +Además, el número de [etiquetas de tramo][8] presentes en cualquier tramo no puede exceder de 1024. {{% /collapse-content %}} @@ -234,15 +236,15 @@ Además, el número de [span tags][8] presentes en cualquier tramo no puede exce Si el número de servicios excede lo especificado en las [directrices de volumen de datos](#data-volume-guidelines), intenta seguir estas prácticas recomendadas para las convenciones de nomenclatura de servicio. -### Excluir los valores de etiqueta de entorno de los nombres de servicio +### Excluir los valores de etiqueta de entorno de los nombres de servicio Por defecto, el entorno (`env`) es la etiqueta primaria para [Datadog APM][17]. {{< img src="/tracing/troubleshooting/troubleshooting-service-naming-convention-issues-3.png" alt="El entorno es la etiqueta primaria por defecto" style="width:100%;" >}} -Un servicio suele desplegarse en varios entornos, como `prod`, `staging` y `dev`. Las métricas de rendimiento, como el recuento de solicitudes, la latencia y la tasa de errores, difieren entre varios entornos. El menú desplegable de entorno en el Catálogo de servicios te permite limitar los datos de la pestaña **Performance** (Rendimiento) a un entorno específico. +Un servicio se despliega típicamente en múltiples entornos, como `prod`, `staging` y `dev`. Las métricas de rendimiento, como los recuentos de solicitud, la latencia y la tasa de error, difieren en función de los distintos entornos. El menú desplegable de entorno de Software Catalog te permite limitar los datos de la pestaña **Performance** (Rendimiento) a un entorno específico. -{{< img src="/tracing/troubleshooting/troubleshooting-service-naming-convention-issues-2.png" alt="Elegir un entorno específico con el menú desplegable `env` en el Catálogo de servicios" style="width:100%;" >}} +{{< img src="/tracing/troubleshooting/troubleshooting-service-naming-convention-issues-2.png" alt="Elige un entorno específico en el menú desplegable `env` en Software Catalog" style="width:100%;" >}} Un patrón que suele provocar problemas con un número abrumador de servicios es incluir el valor de entorno en los nombres de servicio. Por ejemplo, es posible que tengas dos servicios únicos en lugar de uno, ya que funcionan en dos entornos distintos: `prod-web-store` y `dev-web-store`. @@ -250,15 +252,15 @@ Datadog recomienda ajustar tu instrumentación renombrando los servicios. Las métricas de traza no están muestreadas, lo que significa que tu aplicación instrumentada muestra todos los datos, en lugar de subsecciones de ellos. También se aplican las [directrices de volumen](#data-volume-guidelines). -### Utilizar la segunda etiqueta primaria en lugar de poner particiones de métrica o agrupar variables en nombres de servicio +### Utilizar etiquetas primarias adicionales en lugar de poner particiones de métrica o agrupar variables en nombres de servicio -Las segundas etiquetas primarias son etiquetas adicionales que puedes utilizar para agrupar y añadir tus métricas de traza. Puedes utilizar el menú desplegable para limitar los datos de rendimiento a un determinado nombre de clúster o valor de centro de datos. +Puedes utilizar etiquetas primarias adicionales para agrupar y agregar tus métricas de traza. Utiliza el menú desplegable para limitar los datos de rendimiento a un determinado nombre de clúster o valor de centro de datos. {{< img src="/tracing/troubleshooting/troubleshooting-service-naming-convention-issues-1.png" alt="Utilizar el menú desplegable para seleccionar un clúster específico o un valor de centro de datos" style="width:100%;" >}} -Incluir particiones de métrica o variables de agrupación en los nombres de servicio en lugar de aplicar la segunda etiqueta primaria aumenta innecesariamente el número de servicios únicos en una cuenta y provoca posibles retrasos o pérdidas de datos. +Incluir particiones de métrica o variables de agrupación en los nombres de servicio en lugar de aplicar etiquetas primarias adicionales aumenta innecesariamente el número de servicios únicos en una cuenta y provoca posibles retrasos o pérdidas de datos. -Por ejemplo, en lugar del servicio `web-store`, podrías decidir nombrar diferentes instancias de un servicio `web-store-us-1`, `web-store-eu-1` y `web-store-eu-2` para ver las métricas de rendimiento para estas particiones en paralelo. Datadog recomienda implementar el **valor de región** (`us-1`, `eu-1`, `eu-2`) como una segunda etiqueta primaria. +Por ejemplo, en lugar del servicio `web-store` , podrías decidir nombrar diferentes instancias de un servicio `web-store-us-1` , `web-store-eu-1` y `web-store-eu-2` para ver las métricas de rendimiento de estas particiones una al lado de la otra. Datadog recomienda implementar el **region value** (valor de región) (`us-1`, `eu-1`, `eu-2`) como etiqueta primaria. {{% /collapse-content %}} @@ -337,9 +339,9 @@ Cuando abres un [tique de soporte][1], el equipo de soporte de Datadog puede ped 5. **Una descripción de tu entorno**: entender la configuración del despliegue de tu aplicación ayuda al equipo de soporte a identificar posibles problemas de comunicación entre el Agent y el rastreador e identificar errores de configuración. Para problemas complejos, el equipo de soporte puede solicitar manifiestos de Kubernetes, definiciones de tareas de ECS o archivos de configuración de despliegue similares. -6. **Código de rastreo personalizado**: la instrumentación personalizada, la configuración y añadir span tags puede afectar significativamente a las visualizaciones de trazas en Datadog. +6. **Código de rastreo personalizado**: la instrumentación personalizada, la configuración y añadir etiquetas de tramo puede afectar significativamente a las visualizaciones de trazas en Datadog. -7. **Información sobre la versión**: saber qué versiones de lenguaje, marco, Datadog Agent y rastreador de Datadog estás utilizando permite al soporte verificar [requisitos de compatibilidad][15], buscar problemas conocidos, o recomendar una actualización de versión. Por ejemplo: +7. **Información sobre la versión**: saber qué versiones de lenguaje, marco, Datadog Agent y rastreador de Datadog estás utilizando permite al servicio de asistencia verificar los [requisitos de compatibilidad][15], comprobar problemas conocidos o recomendar una actualización de versión. Por ejemplo: {{% /collapse-content %}} @@ -362,20 +364,20 @@ Cuando abres un [tique de soporte][1], el equipo de soporte de Datadog puede ped [13]: /es/agent/troubleshooting/debug_mode/?tab=agentv6v7 [14]: /es/tracing/custom_instrumentation/ [15]: /es/tracing/compatibility_requirements/ -[16]: /es/tracing/guide/setting_primary_tags_to_scope/?tab=helm#add-a-second-primary-tag-in-datadog +[16]: /es/tracing/guide/setting_primary_tags_to_scope/?tab=helm#add-additional-primary-tags-in-datadog [17]: /es/tracing/guide/setting_primary_tags_to_scope/ [18]: /es/tracing/trace_collection/custom_instrumentation/?tab=datadogapi [19]: /es/tracing/trace_pipeline/trace_retention/#create-your-own-retention-filter [20]: https://app.datadoghq.com/apm/traces [21]: /es/tracing/trace_pipeline/trace_retention/#datadog-intelligent-retention-filter [22]: /es/tracing/trace_pipeline/trace_retention/#retention-filters -[23]: /es/developers/guide/data-collection-resolution-retention/ +[23]: /es/data_security/data_retention_periods/ [24]: /es/tracing/metrics/metrics_namespace/ [25]: /es/tracing/trace_pipeline/ingestion_mechanisms/?tab=java [26]: /es/tracing/trace_pipeline/generate_metrics/ [27]: /es/tracing/trace_collection/library_config/ [28]: https://app.datadoghq.com/dash/integration/apm_estimated_usage [29]: /es/tracing/troubleshooting/#data-volume-guidelines -[30]: /es/tracing/guide/inferred-service-opt-in/?tab=java +[30]: /es/tracing/services/inferred_services [31]: /es/tracing/trace_pipeline/metrics/#apm-traces-estimated-usage-dashboard -[32]: https://app.datadoghq.com/services +[32]: https://app.datadoghq.com/services \ No newline at end of file diff --git a/content/es/tracing/troubleshooting/dotnet_diagnostic_tool.md b/content/es/tracing/troubleshooting/dotnet_diagnostic_tool.md index 877429e3de63f..fe1cbaeb9345d 100644 --- a/content/es/tracing/troubleshooting/dotnet_diagnostic_tool.md +++ b/content/es/tracing/troubleshooting/dotnet_diagnostic_tool.md @@ -1,10 +1,12 @@ --- +description: Utiliza la herramienta de diagnóstico dd-dotnet para solucionar problemas + de configuración del rastreo .NET y de conectividad del Agent. title: Uso de la herramienta de diagnóstico de .NET para solucionar problemas --- Si tu aplicación no produce trazas como esperabas después de instalar el rastreador de .NET, ejecuta la herramienta de diagnóstico `dd-dotnet` descrita en esta página para obtener información básica para solucionar problemas. Te ayudará a determinar problemas con tu configuración, como variables de entorno faltantes, instalación incompleta o un Agent inaccesible. -La herramienta de diagnóstico `dd-dotnet` se incluye con la librería de rastreo a partir de la versión 2.42.0. Se encuentra en la carpeta de instalación de la librería de rastreo y se añade automáticamente a la `PATH` del sistema para poder invocarla desde cualquier lugar. +La herramienta de diagnóstico `dd-dotnet` se incluye con la biblioteca de rastreo a partir de la versión 2.42.0. Se encuentra en la carpeta de instalación de la biblioteca de rastreo y se añade automáticamente a la `PATH` del sistema para poder invocarla desde cualquier lugar. ## Instalación de `dd-trace` @@ -29,9 +31,9 @@ Cuando invoques los comandos de las secciones siguientes, asegúrate de sustitui ## Diagnóstico del proceso -Para la mayoría de las aplicaciones, utiliza los diagnósticos del proceso para encontrar el problema. +Para la mayoría de las aplicaciones, utiliza los diagnósticos del proceso para encontrar el problema. -1. Asegúrate de que la aplicación se está ejecutando y obtén el ID (pid) de proceso. +1. Asegúrate de que la aplicación se está ejecutando y obtén el ID (pid) de proceso. Para obtener el pid de un proceso de Windows, abre el Administrador de tareas, abre la pestaña **Details** (Detalles), y busca la columna PID. También puedes ejecutar el comando `tasklist /FI "IMAGENAME eq target.exe"`donde `target.exe` es el nombre del proceso. @@ -263,4 +265,4 @@ Lee [Errores de conexión][5] para obtener más información sobre los problemas [2]: https://dtdg.co/dd-trace-dotnet-linux-x64 [3]: https://dtdg.co/dd-trace-dotnet-linux-musl-x64 [4]: https://github.com/DataDog/dd-trace-dotnet/releases -[5]: /es/tracing/troubleshooting/connection_errors/?code-lang=dotnet# +[5]: /es/tracing/troubleshooting/connection_errors/?code-lang=dotnet# \ No newline at end of file From 2b5749297f532956d5a87e82f2f0a7b18c83d9c1 Mon Sep 17 00:00:00 2001 From: "webops-guacbot[bot]" <214537265+webops-guacbot[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 18:49:44 +0000 Subject: [PATCH 2/6] Deleting translations of content/es/security/sensitive_data_scanner/guide/investigate_sensitive_data_issues.md --- .../investigate_sensitive_data_issues.md | 106 ------------------ 1 file changed, 106 deletions(-) delete mode 100644 content/es/security/sensitive_data_scanner/guide/investigate_sensitive_data_issues.md diff --git a/content/es/security/sensitive_data_scanner/guide/investigate_sensitive_data_issues.md b/content/es/security/sensitive_data_scanner/guide/investigate_sensitive_data_issues.md deleted file mode 100644 index 61a54b8cb579a..0000000000000 --- a/content/es/security/sensitive_data_scanner/guide/investigate_sensitive_data_issues.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -aliases: -- /es/sensitive_data_scanner/investigate_sensitive_data_issues/ -- /es/sensitive_data_scanner/guide/investigate_sensitive_data_issues/ -further_reading: -- link: sensitive_data_scanner/setup/telemetry_data/ - tag: Documentación - text: Configurar Sensitive Data Scanner para datos de telemetría -- link: sensitive_data_scanner/setup/cloud_storage/ - tag: Documentación - text: Configurar Sensitive Data Scanner para el almacenamiento en la nube -- link: https://www.datadoghq.com/blog/scaling-sensitive-data-scanner/ - tag: Blog - text: Descubre, clasifica y corrige los problemas de datos confidenciales a escala - con Sensitive Data Scanner. -title: Investigar problemas de datos confidenciales ---- - -## Información general - -Sensitive Data Scanner de Datadog puede ayudar a evitar fugas de datos confidenciales y limitar los riesgos de incumplimiento mediante la identificación, la clasificación y, opcionalmente, la redacción de datos confidenciales. Cuando se detecta un problema de datos confidenciales, pueden surgir las siguientes preguntas: - -- ¿Qué datos confidenciales se han expuesto? -- ¿Cuál es la prioridad de la exposición de datos confidenciales? -- ¿Cuál es la gravedad del problema en términos de difusión y volumen? -- ¿De dónde proceden los datos confidenciales? - -La página [Resumen][1] de Sensitive Data Scanner clasifica y prioriza los problemas de datos confidenciales para que puedas investigar, colaborar y documentar tus hallazgos, y responder a esas preguntas. - -{{< img src="sensitive_data_scanner/sds_summary_20250203.png" alt="Page (página) de resumen en que se muestra información general de problemas de datos confidenciales desglosados por prioridad" style="width:100%;" >}} - -## Analizar los problemas relacionados con datos confidenciales - -Ve a la Page (página) [Resumen][1] para ver todos los problemas de datos confidenciales dentro del periodo de tiempo seleccionado y empezar a investigar los problemas. - -{{< tabs >}} -{{% tab "Datos de telemetría" %}} - -En la sección **Sensitive Data Issue** (Problema de datos confidenciales), filtra por un nivel de prioridad para ver solo los problemas con ese nivel de prioridad en la sección **Issues Overview** (Información general de problemas). En la sección **Cases** (Casos), filtra por un estado de caso para ver los problemas asociados a los casos con ese estado en la sección **Issues Overview"" (Información general de problemas). - -Para investigar un problema: - -1. Haz clic en el problema en **Issues Overview** (Información general de problemas). -2. En el panel de problemas, haz clic en **View Recent Changes** (Ver cambios recientes) para ir a [Audit Trail][3] y ver si hay algún cambio reciente en la configuración que haya causado el problema de los datos confidenciales. -3. Utiliza las siguientes opciones para explorar diferentes tipos de datos que coincidan con la consulta: - a. Para ver todos los logs relacionados con la consulta en el Explorer de logs, haz clic en **View All Logs** (Ver todos los logs).
- b. Para ver todas las traces (trazas) que coincidan con la consulta en Trace Explorer, haz clic en **View All APM Spans** (Ver todos los spans (tramos) de APM).
- c. Para ver todos los eventos de RUM que coincidan con la consulta, haz clic en **View All RUM Events** (Ver todos los eventos de RUM).
- d. Para ver todos los eventos que coincidan con la consulta, haz clic en **View All Events"" (Ver todos los eventos). - {{< img src="sensitive_data_scanner/investigate_sensitive_data_issues/issues_panel_02_01_2024.png" alt="El panel de problemas que muestra un problema crítico del Scanner con la tarjeta Visa" style="width:50%;">}} -4. En la sección **Blast Radius** (Radio de explosión):
- a. Visualiza los 10 principales servicios, hosts y entornos afectados por este problema de datos confidenciales.
- b. Haz clic en un servicio para ver más información sobre servicio en el **Software Catalog**.
- c. Haz clic en un host para ver más información sobre el host en la página Infrastructure List (Lista de infraestructura). - {{< img src="sensitive_data_scanner/investigate_sensitive_data_issues/blast_radius_02_01_2024.png" alt="El panel de problemas que muestra los 10 principales servicios afectados" style="width:50%;">}} -Si deseas modificar la regla de escaneo que se utilizó para detectar el problema de datos confidenciales, haz clic en **Modify Rule** (Modificar regla) en la parte superior del panel. - -Además, también puedes: -- Utiliza [Case Management][1] para realizar el rastreo, el triaje y la investigación del problema, haz clic en **Create Case** (Crear case (incidencia)) en la parte superior del panel. Los cases (incidencias) asociados aparecen en la page (página) Resumen. -- Utiliza [Incident Management][2] para crear un incident (incidente), puedes añadir el problema a un incident (incidente) existente o declarar un nuevo incident (incidente). Haz clic en el menú desplegable **Declare Incident** (Declarar incident (incidente)) para añadir el problema a un incident (incidente) existente. Haz clic en **Declare Incident** para declarar un nuevo incident (incidente). -- Utiliza [Audit Trail][3] para ver quién puede haber accedido a estos datos confidenciales en Datadog, **View in Audit Trail** (Ver en Audit Trail) en la sección **Users who accessed these events** (Usuarios que accedieron a estos eventos). - -{{< img src="sensitive_data_scanner/investigate_sensitive_data_issues/case_mgmt_02_01_2024.png" alt="La page (página) del case (incidencia) que muestra la información sobre el problema de seguridad, el encargado y el creador del case (incidencia) y una línea temporal de los eventos" style="width:60%;">}} - -[1]: /es/service_management/case_management/ -[2]: /es/service_management/incident_management/ -[3]: /es/account_management/audit_trail - -{{% /tab %}} -{{% tab "Cloud Storage" %}} - -Haz clic en la pestaña **Datastores with Sensitive Data** (Almacenes de datos con datos confidenciales) para ver todos los problemas de datos confidenciales para Cloud Storage. - -En la **xxx Datastores with Sensitive section** (sección Almacenes de datos con datos confidenciales), haz clic en cualquiera de los menús desplegables para filtrar los almacenes de datos en función del tipo de datos confidenciales, cuenta, región, equipo, etc. - -Para investigar un almacén de datos: - -1. Haz clic en un almacén de datos. -1. Puede ver los archivos en los que se han encontrado datos confidenciales y, a continuación, hacer clic en un archivo para inspeccionarlo en AWS. - Datadog recomienda hacer lo siguiente: - - Revisa algunos archivos para hacerte una idea de la precisión de la clasificación. - - Ponte en contacto con el propietario del equipo o del servicio que aparece en el panel lateral para confirmar si los datos confidenciales deben estar en el bucket. - - Si no debe estar en el bucket, elimina los archivos o muévelos a un bucket apropiado. - - Si debe estar en el bucket, completa los siguientes steps (UI) / pasos (generic) para mejorar tu postura de seguridad: - 1. Haz clic en la pestaña **Security** (Seguridad) en el panel lateral y revisa la sección **Misconfiguratiions** (Errores de configuración). - 1. Haz clic en un error de configuración para ver los detalles en Cloud Security. - 1. En la sección **Next Steps** (Siguientes pasos): - 1. En **Triage** (Triaje), haz clic en el menú desplegable para cambiar el estado de triaje de la señal. El estado predeterminado es `OPEN`. - 1. Haz clic en **Assign Signal** (Asignar señal) para asignarte una señal a ti mismo o a otro usuario de Datadog. - 1. Haz clic en **See remediation** (Ver solución) para obtener más información sobre cómo solucionar el problema. - 1. En **More Actions** (Más acciones), puedes añadir un problema de Jira, ejecutar workflows (UI) / procesos (generic) o añadir un comentario. - Para ejecutar un workflow (UI) / proceso (generic), selecciona **Run Workflow** (Ejecutar workflow (UI) / proceso (generic)) y, a continuación, en el explorador de workflows (UI) / procesos (generic), busca y selecciona un workflow (UI) / proceso (generic) para ejecutarlo. Consulta [Automatizar workflows (UI) / procesos (generic) de seguridad con la Workflow Automation (automatización de procesos)][1] para obtener más información. - 1. Haz clic en las distintas pestañas para ver el desglose de la gravedad, los logs relacionados y la línea temporal del problema. - - {{< img src="sensitive_data_scanner/investigate_sensitive_data_issues/datastore_side_panel.png" alt="El panel lateral de problemas del almacén de datos que muestra los buckets S3 debe tener un error de configuración de Bloqueo del acceso público activado" style="width:90%;">}} - -[1]: /es/security/cloud_security_management/review_remediate/workflows/ - -{{% /tab %}} -{{< /tabs >}} - -## Referencias adicionales - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: https://app.datadoghq.com/organization-settings/sensitive-data-scanner/summary \ No newline at end of file From 26466c91966555e93dd1506420f9a657fe179d7c Mon Sep 17 00:00:00 2001 From: aliciascott Date: Thu, 16 Oct 2025 12:57:46 -0600 Subject: [PATCH 3/6] fixing errors --- content/es/agent/_index.md | 14 ++++++------ .../es/getting_started/integrations/aws.md | 6 ++--- .../browser/collecting_browser_errors.md | 22 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/content/es/agent/_index.md b/content/es/agent/_index.md index 4b5eaad950bd8..aecd2200c055f 100644 --- a/content/es/agent/_index.md +++ b/content/es/agent/_index.md @@ -172,16 +172,16 @@ Los resultados que se muestran a continuación se obtuvieron a partir de una rec ## Recursos adicionales {{< whatsnext desc="This section includes the following topics:">}} {{< nextlink href="/agent/kubernetes">}}Kubernetes: Instala y configura el Datadog Agent en Kubernetes.{{< /nextlink >}} - {{< nextlink href="/agent/cluster_agent">]]Agent del clúster: Instala y configura el Agent del clúster para Kubernetes, una versión del Datadog Agent creada para recopilar eficazmente datos de monitorización de todo un clúster orquestado.{{< /nextlink >}} + {{< nextlink href="/agent/cluster_agent">}}Agent del clúster: Instala y configura el Agent del clúster para Kubernetes, una versión del Datadog Agent creada para recopilar eficazmente datos de monitorización de todo un clúster orquestado.{{< /nextlink >}} {{< nextlink href="/agent/amazon_ecs">}}AmazonECS: Instala y configura el Datadog Agent en Amazon ECS.{{< /nextlink >}} {{< nextlink href="integrations/ecs_fargate/">}}AWS Fargate: Instala y configura el Datadog Agent con Amazon ECS en AWS Fargate{{< /nextlink >}} - {{< nextlink href="/agent/iot">}}IoT: Instala y configura el Datadog IoT Agent, una versión del Datadog Agent optimizada para monitorizar dispositivos y aplicaciones integradas de IoT.{{< /nextlink >}} + {{< nextlink href="/agent/iot">}}IoT: Instala y configura el Datadog IoT Agent, una versión del Datadog Agent optimizada para monitorizar dispositivos y aplicaciones integradas de IoT.{{< /nextlink >}} {{< nextlink href="/agent/logs">}}Recopilación de logs: Activa y configura la recopilación de logs en la aplicación del Datadog Agent.{{< /nextlink >}} - {{< nextlink href="/agent/configuration/proxy">}}Proxy: Si la configuración de tu red restringe el tráfico saliente, utiliz un proxy para el tráfico del Agent.{{< /nextlink >}} - {{< nextlink href="/agent/versions/">}}Versiones: El Agent 7 es la última versión principal del Datadog Agent. Más información sobre los cambios entre las versiones principales del Agent y cómo actualizarlo.{{< /nextlink >}} - {{< nextlink href="/agent/troubleshooting">]]Solucionar problemas: Encuentra información sobre solucionar problemas para el Datadog Agent.{{< /nextlink >}} - {{< nextlink href="/agent/guide">]]Guías: Se trata de tutoriales detallados, paso a paso, para el uso del Agent.{{< /nextlink >}} - {{< nextlink href="/agent/security">]]Seguridad: Información sobre las principales capacidades y funciones de seguridad a disposición de los clientes para garantizar la seguridad de su entorno.{{< /nextlink >}} + {{< nextlink href="/agent/configuration/proxy">}}Proxy: Si la configuración de tu red restringe el tráfico saliente, utiliz un proxy para el tráfico del Agent.{{< /nextlink >}} + {{< nextlink href="/agent/versions/">}}Versiones: El Agent 7 es la última versión principal del Datadog Agent. Más información sobre los cambios entre las versiones principales del Agent y cómo actualizarlo.{{< /nextlink >}} + {{< nextlink href="/agent/troubleshooting">}}Solucionar problemas: Encuentra información sobre solucionar problemas para el Datadog Agent.{{< /nextlink >}} + {{< nextlink href="/agent/guide">}}Guías: Se trata de tutoriales detallados, paso a paso, para el uso del Agent.{{< /nextlink >}} + {{< nextlink href="/agent/security">}}Seguridad: Información sobre las principales capacidades y funciones de seguridad a disposición de los clientes para garantizar la seguridad de su entorno.{{< /nextlink >}} {{< nextlink href="/getting_started/observability_pipelines">}}Configura Observability Pipelines y Datadog: Despliega Observability Pipelines Worker como agregador para recopilar, transformar y redirigir todos tus logs y métricas a cualquier destino.{{< /nextlink >}} {{< /whatsnext >}} diff --git a/content/es/getting_started/integrations/aws.md b/content/es/getting_started/integrations/aws.md index e9b1f23784b69..5faffe89dd0a9 100644 --- a/content/es/getting_started/integrations/aws.md +++ b/content/es/getting_started/integrations/aws.md @@ -154,17 +154,17 @@ Lee la sección [Habilitar los logs en tu servicio de AWS][14] para activar el f ### Validación Una vez que hayas habilitado los logs, los encontrarás en el [Log Explorer][15] con las facetas `source` o `service` del panel de facetas, tal y como se muestra en este ejemplo de S3: -{{< img src="getting_started/integrations/logs-explorer.png" alt="Página del Log Explorer de la cuenta de Datadog. En el lado izquierdo de la imagen, se pueden ver las facetas `source` y `service`, ambas con la casilla "s3" marcada. A la derecha, se muestran algunas entradas de logs en formato de lista.">}} +{{< img src="getting_started/integrations/logs-explorer.png" alt="Página del Log Explorer de la cuenta de Datadog. En el lado izquierdo de la imagen, se pueden ver las facetas `source` y `service`, ambas con la casilla \"s3\" marcada. A la derecha, se muestran algunas entradas de logs en formato de lista.">}} ## Saca más provecho de la plataforma Datadog ### Instala el Datadog Agent en EC2 para obtener mayor visibilidad La integración de AWS con Datadog ya rastrea de forma predeterminada la API de CloudWatch para recopilar las métricas proporcionadas por AWS. No obstante, puedes disfrutar de una visibilidad aún mayor en tus instancias de EC2 con el [Datadog Agent][16]. El Agent es un daemon ligero que genera informes de métricas y eventos, aunque también se puede configurar para que lo haga con logs y trazas. En la sección [Agent Installation][17] (Instalación del Agent) de la aplicación de Datadog, encontrarás las instrucciones para instalar el Agent en una amplia variedad de sistemas operativos. Muchos sistemas operativos (como Amazon Linux) cuentan con comandos de instalación en un único paso que puedes ejecutar para instalar el Agent desde el terminal de la instancia: -{{< img src="getting_started/integrations/integrations-agent-installation.png" alt="Sección "Agent" de la pestaña "Integrations" (Integraciones) de Datadog. A la izquierda, se muestra la lista de los sistemas operativos compatibles con el Datadog Agent; Amazon Linux aparece resaltado. A la derecha, se ve el enunciado "Use our easy one-step install" (Usa nuestra sencilla instalación en un solo paso). El comando para instalar el Agent está justo debajo, con la sección difusa DD_API_KEY.">}} +{{< img src="getting_started/integrations/integrations-agent-installation.png" alt="Sección Agent de la pestaña \"Integrations\" (Integraciones) de Datadog. A la izquierda, se muestra la lista de los sistemas operativos compatibles con el Datadog Agent; Amazon Linux aparece resaltado. A la derecha, se ve el enunciado \"Use our easy one-step install\" (Usa nuestra sencilla instalación en un solo paso). El comando para instalar el Agent está justo debajo, con la sección difusa DD_API_KEY.">}} Una vez que Agent esté instalado, se representará gráficamente en la [lista de infraestructuras][18] con un icono en forma de hueso: -{{< img src="getting_started/integrations/infrastructure-list.png" alt="Lista de infraestructuras en las que pueden verse dos hosts en formato de lista. Ambos hosts tienen el icono de AWS para representar la integración de AWS, así como el texto "aws" en un recuadro azul para indicar que están asociados a la integración de AWS. Uno de los hosts también tiene el icono de un perro y recuadros azules con los textos "ntp" y "system".">}} +{{< img src="getting_started/integrations/infrastructure-list.png" alt="Lista de infraestructuras en las que pueden verse dos hosts en formato de lista. Ambos hosts tienen el icono de AWS para representar la integración de AWS, así como el texto \"aws\" en un recuadro azul para indicar que están asociados a la integración de AWS. Uno de los hosts también tiene el icono de un perro y recuadros azules con los textos \"ntp\" y \"system\".">}} La captura de pantalla anterior muestra el host con el Datadog Agent informando de los datos de los checks de [Sistema][19] y [NTP][20]. El check de sistema proporciona métricas en torno a CPU, memoria, sistema de archivos y E/S, y brinda información adicional sobre el host. Puedes activar [integraciones][21] adicionales para adaptarte al entorno y al caso de uso, o utilizar [DogStatsD][22] para enviar métricas personalizadas directamente a Datadog. diff --git a/content/es/real_user_monitoring/browser/collecting_browser_errors.md b/content/es/real_user_monitoring/browser/collecting_browser_errors.md index 7e3610505ee21..38b9b88ad74a3 100644 --- a/content/es/real_user_monitoring/browser/collecting_browser_errors.md +++ b/content/es/real_user_monitoring/browser/collecting_browser_errors.md @@ -1,20 +1,20 @@ --- -alias: +aliases: - /error_tracking/standalone_frontend/collecting_browser_errors -descripción: Aprende a recopilar y realizar un seguimiento de errores frontend de +description: Aprende a recopilar y realizar un seguimiento de errores frontend de varias fuentes utilizando el SDK del navegador RUM, incluida la recopilación manual de errores y los límites de errores React. further_reading: -- enlace: /error_tracking/explorer/ - etiqueta: Documentation - texto: Explora tus errores en Datadog -- enlace: /error_tracking/monitors/ - etiqueta: Documentation - texto: Alerta proactiva sobre cuestiones de impacto -- etiqueta: Documentation +- link: /error_tracking/explorer/ + tag: Documentation + text: Explora tus errores en Datadog +- link: /error_tracking/monitors/ + tag: Documentation + text: Alerta proactiva sobre cuestiones de impacto +- tag: Documentation link: /real_user_monitoring - texto: Medir el rendimiento y el impacto en el usuario -título: Recopilación de errores del navegador + text: Medir el rendimiento y el impacto en el usuario +title: Recopilación de errores del navegador --- ## Información general From 427d2eb136fd285fb7cf613dd241ceb0bf66a4b1 Mon Sep 17 00:00:00 2001 From: "webops-guacbot[bot]" <214537265+webops-guacbot[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:03:38 +0000 Subject: [PATCH 4/6] Translated file updates --- content/es/integrations/opsgenie.md | 4 +- .../mobile/privacy_options.ast.json | 116 +- .../mobile/setup_and_configuration.ast.json | 116 +- .../mobile/privacy_options.ast.json | 116 +- .../mobile/setup_and_configuration.ast.json | 136 +- content/fr/account_management/scim/entra.md | 104 + .../allocation/container_cost_allocation.md | 476 + .../tags/multisource_querying.md | 132 + .../mobile/privacy_options.ast.json | 116 +- .../mobile/setup_and_configuration.ast.json | 172 +- .../mobile/privacy_options.ast.json | 37802 +--------------- .../mobile/setup_and_configuration.ast.json | 192 +- .../mobile/privacy_options.ast.json | 116 +- .../mobile/setup_and_configuration.ast.json | 172 +- .../mobile/privacy_options.ast.json | 37802 +--------------- .../mobile/setup_and_configuration.ast.json | 192 +- .../getting-started/version-history.md | 78 + .../ko/code_analysis/github_pull_requests.md | 101 + .../static_analysis/github_actions.md | 116 + .../code_analysis/troubleshooting/_index.md | 152 + content/ko/developers/guide/dogshell.md | 93 + content/ko/glossary/terms/new.md | 5 + content/ko/integrations/airbyte.md | 158 + content/ko/integrations/zeek.md | 301 + .../legacy/monitoring.md | 65 + .../legacy/troubleshooting.md | 97 + .../mobile/privacy_options.ast.json | 116 +- .../mobile/setup_and_configuration.ast.json | 172 +- .../mobile/privacy_options.ast.json | 37802 +--------------- .../mobile/setup_and_configuration.ast.json | 192 +- .../code_security/setup/dotnet.md | 151 + .../code_security/setup/java.md | 117 + .../code_security/setup/nodejs.md | 114 + .../custom_instrumentation/ruby/otel.md | 136 + .../trace_explorer/span_tags_attributes.md | 148 + 35 files changed, 3883 insertions(+), 113995 deletions(-) create mode 100644 content/fr/account_management/scim/entra.md create mode 100644 content/fr/cloud_cost_management/allocation/container_cost_allocation.md create mode 100644 content/fr/cloud_cost_management/tags/multisource_querying.md create mode 100644 content/ko/cloudcraft/getting-started/version-history.md create mode 100644 content/ko/code_analysis/github_pull_requests.md create mode 100644 content/ko/code_analysis/static_analysis/github_actions.md create mode 100644 content/ko/code_analysis/troubleshooting/_index.md create mode 100644 content/ko/developers/guide/dogshell.md create mode 100644 content/ko/glossary/terms/new.md create mode 100644 content/ko/integrations/airbyte.md create mode 100644 content/ko/integrations/zeek.md create mode 100644 content/ko/observability_pipelines/legacy/monitoring.md create mode 100644 content/ko/observability_pipelines/legacy/troubleshooting.md create mode 100644 content/ko/security/application_security/code_security/setup/dotnet.md create mode 100644 content/ko/security/application_security/code_security/setup/java.md create mode 100644 content/ko/security/application_security/code_security/setup/nodejs.md create mode 100644 content/ko/tracing/trace_collection/custom_instrumentation/ruby/otel.md create mode 100644 content/ko/tracing/trace_explorer/span_tags_attributes.md diff --git a/content/es/integrations/opsgenie.md b/content/es/integrations/opsgenie.md index 46a94cdf71ea4..09bc6c689cd19 100644 --- a/content/es/integrations/opsgenie.md +++ b/content/es/integrations/opsgenie.md @@ -22,7 +22,7 @@ Crea alertas en Opsgenie utilizando `@opsgenie-{service-name}`: - Al tomar una snapshot - Cuando se activa una alerta de métrica -## Configuración +## Instalación ### Configuración @@ -31,7 +31,7 @@ Crea alertas en Opsgenie utilizando `@opsgenie-{service-name}`: 1. Inicia sesión en tu cuenta de Opsgenie y ve a la page (página) [Integraciones de Opsgenie](https://app.opsgenie.com/settings/integration/integration-list). 1. Busca Datadog y haz clic en cuadro. 1. Completa el Nombre de la integración y, si lo deseas, configura el Equipo asignado. -1. Después de hacer clic en **Enviar**, permanece en la page (página) y guarda la clave de API de la integración recién creada. La necesitarás para finalizar la configuración. +1. Después de hacer clic en **Enviar**, permanece en la page (página) y guarda la clave de API de la integración recién creada. La necesitarás para finalizar la instalación. 1. Añade más integraciones de Datadog en Opsgenie yendo a la page (página) [Integraciones de Opsgenie](https://app.opsgenie.com/settings/integration/integration-list) y repitiendo los pasos anteriores. #### Registra las integraciones que has realizado en Opsgenie en Datadog diff --git a/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json index d9b9714ba5c30..251c575ed33a0 100644 --- a/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "Opciones de privacidad de Mobile Session Replay" + "ast-str-ed6465a0-5303-45e8-814f-26b9621a3692": { + "string": "Opciones de privacidad de Mobile Session Replay" + } }, "description": { - "string": "Configura opciones de privacidad para Mobile Session Replay." + "ast-str-96c0458c-0687-4a95-9d66-6fa097d06464": { + "string": "Configura opciones de privacidad para Mobile Session Replay." + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-39f6993e-dc05-4968-992e-893036c5506b": { + "string": "Session Replay para móviles" + } + }, + "tag": { + "ast-str-af631d8c-8fc9-4e98-bee2-6afd3dbdf311": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", - "text": { - "string": "Setup and Configure Mobile Session Replay" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-1c25456b-e5f6-4548-af66-3fae7a05f423": { + "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" + } + }, + "tag": { + "ast-str-a29b4ca3-075b-414c-8a68-0c33e0cfae6b": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", + "text": { + "ast-str-7d913357-3de0-47f5-995d-20902115e88a": { + "string": "Configuración de Mobile Session Replay" + } + }, + "tag": { + "ast-str-fd654bd7-9157-4811-bf1b-322a453db21e": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-6aae3788-1d07-41c1-943e-ce84e0eea71a": { + "string": "Solución de problemas de Mobile Session Replay" + } + }, + "tag": { + "ast-str-e66e4cab-d520-4636-b58e-572a077d362a": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-efabc85f-a81a-409d-9ef3-4e3c49b0e2c8": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-6d52c7ad-1cdd-4740-b4ef-e0103e5209e0": { + "string": "Documentación" + } + } } } - ] + } } }, "children": { @@ -64,7 +90,7 @@ "$$mdtype": "Node", "inline": false, "attributes": { - "file": "mdoc/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" + "file": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" }, "children": { "translationListData": {} @@ -76,7 +102,7 @@ "0": { "type": "attribute", "name": "file", - "value": "mdoc/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" + "value": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" } } }, diff --git a/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 6d07f67bcf0ab..15b3465c9d87b 100644 --- a/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "Instalación y configuración de Session Replay para móviles" + "ast-str-5b85bfe0-cdd5-4616-80a4-f7b16289b9c8": { + "string": "Instalación y configuración de Session Replay para móviles" + } }, "description": { - "string": "Instala y configura Session Replay para móviles." + "ast-str-9ab98d47-4bc8-4cff-aab2-1a2c829a477c": { + "string": "Instala y configura Session Replay para móviles." + } }, - "further_reading": [ - { - "link": "/product_analytics/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/product_analytics/session_replay/mobile", + "text": { + "ast-str-6b7dd627-cfc2-449b-930b-c7c9202bb7f2": { + "string": "Session Replay para móviles" + } + }, + "tag": { + "ast-str-ad1f968c-ba7d-47fb-a595-fd656cf1a665": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/privacy_options", - "text": { - "string": "Mobile Session Replay Privacy Options" + "1": { + "link": "/product_analytics/session_replay/mobile/app_performance", + "text": { + "ast-str-5d4a3252-2fe5-4bd4-a75c-043fcd234a1b": { + "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" + } + }, + "tag": { + "ast-str-257753f4-c29e-4eb9-8c21-0b283b791d22": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/product_analytics/session_replay/mobile/privacy_options", + "text": { + "ast-str-7a98b6b8-a1cb-461b-985f-a6b645661066": { + "string": "Opciones de privacidad de Mobile Session Replay" + } + }, + "tag": { + "ast-str-33326998-f6db-4a64-ad65-8e45a2955242": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/product_analytics/session_replay/mobile/troubleshooting", + "text": { + "ast-str-304a8f3a-51bb-426b-8ca2-bc7ae13a7cd9": { + "string": "Solución de problemas de Mobile Session Replay" + } + }, + "tag": { + "ast-str-6c5f9454-e16e-4312-8512-305ad68f7b0e": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/product_analytics/session_replay", + "text": { + "ast-str-cc897da2-4f3a-435e-984d-b0002dda36cd": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-af12f79d-bd7f-4f9e-8ea7-72971640339c": { + "string": "Documentación" + } + } } } - ] + } } }, "children": { @@ -64,7 +90,7 @@ "$$mdtype": "Node", "inline": false, "attributes": { - "file": "mdoc/en/real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + "file": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" }, "children": { "translationListData": {} @@ -76,7 +102,7 @@ "0": { "type": "attribute", "name": "file", - "value": "mdoc/en/real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + "value": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" } } }, diff --git a/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index d9b9714ba5c30..440a33db27020 100644 --- a/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "Opciones de privacidad de Mobile Session Replay" + "ast-str-cf77a210-8bdd-4954-95fb-dab7e2deba53": { + "string": "Opciones de privacidad de Mobile Session Replay" + } }, "description": { - "string": "Configura opciones de privacidad para Mobile Session Replay." + "ast-str-5c1d73d9-4393-4d1a-a7de-55de0b118877": { + "string": "Configura opciones de privacidad para Mobile Session Replay." + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-7783691c-f46e-4c9b-b0ec-ee8d288c7337": { + "string": "Session Replay para móviles" + } + }, + "tag": { + "ast-str-d5affb81-aca0-40fa-8c23-16f0d059f758": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", - "text": { - "string": "Setup and Configure Mobile Session Replay" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-c868b0cd-784e-42f2-be58-7983427d84ea": { + "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" + } + }, + "tag": { + "ast-str-2a10486f-3901-4eb7-b003-20cc7d23f1ee": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", + "text": { + "ast-str-cd9f333d-13ac-4283-bba5-680fc1b94093": { + "string": "Configuración de Mobile Session Replay" + } + }, + "tag": { + "ast-str-1e9dc563-9f7e-4a3c-b6ff-84303e00e726": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-71010d1e-8251-4250-9cf0-5685318f478c": { + "string": "Solución de problemas de Mobile Session Replay" + } + }, + "tag": { + "ast-str-1fef1fd1-f553-4651-b0c9-b05ec8549243": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-fcfb9502-d1c1-4ec1-9898-667568c705e8": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-d4dec885-9a19-45eb-bf6d-2d227790d9cb": { + "string": "Documentación" + } + } } } - ] + } } }, "children": { @@ -64,7 +90,7 @@ "$$mdtype": "Node", "inline": false, "attributes": { - "file": "mdoc/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" + "file": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" }, "children": { "translationListData": {} @@ -76,7 +102,7 @@ "0": { "type": "attribute", "name": "file", - "value": "mdoc/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" + "value": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" } } }, diff --git a/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 76ac7b5f90e93..07d0647354609 100644 --- a/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,67 +4,97 @@ "attributes": { "frontmatter": { "title": { - "string": "Instalación y configuración de Session Replay para móviles" + "ast-str-485e15cc-0738-4baa-98b9-db3f8d752021": { + "string": "Instalación y configuración de Session Replay para móviles" + } }, "description": { - "string": "Instala y configura Session Replay para móviles." + "ast-str-2b6994a7-5d24-4d85-8aca-c842cf4ee2ee": { + "string": "Instala y configura Session Replay para móviles." + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-9213fa71-a375-4bf7-9b6a-8015d1282f36": { + "string": "Session Replay para móviles" + } + }, + "tag": { + "ast-str-fa56b914-44fe-4871-940d-7603600b6274": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/privacy_options", - "text": { - "string": "Mobile Session Replay Privacy Options" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-379f506e-3d7a-4fea-b58f-490fec1cc61a": { + "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" + } + }, + "tag": { + "ast-str-7a8e5a41-0f5a-45ec-a218-471f1f769312": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/privacy_options", + "text": { + "ast-str-a35c2181-a87a-4f27-a952-7e4a2196c747": { + "string": "Opciones de privacidad de Mobile Session Replay" + } + }, + "tag": { + "ast-str-166d237b-a671-42e7-b59d-8653457db279": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-7202702e-8627-46a1-b4c1-9d7d0ce8f95a": { + "string": "Solución de problemas de Mobile Session Replay" + } + }, + "tag": { + "ast-str-fd107bd1-b4a4-4fdd-89e5-1240a31a9f04": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", - "text": { - "string": "Web View Tracking" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-58e8f44c-bfb9-4d8b-b918-3b9216e1e522": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-45071591-2694-4e30-8e47-902cdeb8a28b": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" + "5": { + "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", + "text": { + "ast-str-22e2b6a5-6d8d-4a2a-a861-8142fdd70d05": { + "string": "Web View Tracking" + } + }, + "tag": { + "ast-str-0cd14bce-40c2-46b6-93f1-d5a05bd92239": { + "string": "Documentación" + } + } } } - ] + } } }, "children": { @@ -73,7 +103,7 @@ "$$mdtype": "Node", "inline": false, "attributes": { - "file": "mdoc/en/real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + "file": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" }, "children": { "translationListData": {} @@ -85,7 +115,7 @@ "0": { "type": "attribute", "name": "file", - "value": "mdoc/en/real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + "value": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" } } }, diff --git a/content/fr/account_management/scim/entra.md b/content/fr/account_management/scim/entra.md new file mode 100644 index 0000000000000..5aff462737cb8 --- /dev/null +++ b/content/fr/account_management/scim/entra.md @@ -0,0 +1,104 @@ +--- +algolia: + tags: + - scim + - identity provider + - IdP + - Azure AD + - Entra ID +aliases: +- /fr/account_management/scim/azure/ +description: Configurez le provisionnement automatique des utilisateurs de Microsoft + Entra ID vers Datadog à l'aide de SCIM, avec une configuration pas à pas et un mappage + des attributs. +title: Configurer SCIM avec Microsoft Entra ID +--- + +
+SCIM est disponible avec les offres Infrastructure Pro et Infrastructure Enterprise. +
+ +
+ En raison d’un gel des mises à jour des applications tierces dans Entra par Microsoft à la suite d’un incident de sécurité fin 2024, le provisionnement des équipes via SCIM n’est pas disponible. Pour créer des équipes dans Datadog, utilisez l’une des alternatives prises en charge : + le mappage SAML, + Terraform, + l’API publique, ou + des appels directs au serveur SCIM. SCIM peut toujours être utilisé pour le provisionnement des utilisateurs. +
+ +Consultez les instructions suivantes pour synchroniser vos utilisateurs Datadog avec Microsoft Entra ID à l'aide de SCIM. + +Pour en savoir plus sur les fonctionnalités et les limitations de cette fonctionnalité, consultez la page [SCIM][1]. + +## Prérequis + +La fonctionnalité SCIM dans Datadog est une option avancée disponible avec les formules Infrastructure Pro et Infrastructure Enterprise. + +Cette documentation part du principe que votre organisation gère les identités utilisateur à l'aide d'un fournisseur d'identité. + +Datadog recommande fortement d'utiliser une clé d'application de compte de service lors de la configuration de SCIM afin d'éviter toute interruption d'accès. Pour plus de détails, consultez la section [Utiliser un compte de service avec SCIM][2]. + +Lorsque SAML et SCIM sont utilisés conjointement, Datadog recommande fortement de désactiver le provisionnement SAML juste-à-temps (JIT) afin d'éviter les incohérences d'accès. Gérez le provisionnement des utilisateurs uniquement via SCIM. + +## Ajouter Datadog à la galerie d'applications de Microsoft Entra ID + +1. Connectez-vous au [Centre d'administration Microsoft Entra][6] en tant qu'au moins [Administrateur des applications cloud][7] +1. Accédez à **Identity** -> **Applications** -> **Enterprise Applications** +1. Cliquez sur **New Application** +1. Saisissez « Datadog » dans la zone de recherche +1. Sélectionnez l'application Datadog dans la galerie +1. Si vous le souhaitez, vous pouvez saisir un nom dans la zone de texte **Name** +1. Cliquez sur **Create** + +**Remarque :** si Datadog est déjà configuré avec Microsoft Entra ID pour l'authentification unique (SSO), accédez à **Enterprise Applications** et sélectionnez votre application Datadog existante. + +## Configurer le provisionnement automatique des utilisateurs + +1. Dans l'écran de gestion de l'application, sélectionnez **Provisioning** dans le panneau de gauche +2. Dans le menu **Provisioning Mode**, sélectionnez **Automatic** +3. Ouvrez **Admin Credentials** +4. Complétez la section **Admin Credentials** comme suit : + - **Tenant URL** : `https://{{< region-param key="dd_full_site" >}}/api/v2/scim?aadOptscim062020` + - **Remarque :** utilisez le sous-domaine approprié pour votre site. Pour trouver votre URL, consultez la rubrique dédiée aux [sites Datadog][3]. + - **Remarque :** le paramètre `?aadOptscim062020` dans l’URL du client est spécifique à Entra ID. Il s’agit d’un indicateur qui informe Entra de corriger son comportement SCIM, comme expliqué dans cette [documentation Microsoft Entra][8]. Si vous n’utilisez pas Entra ID, vous ne devez pas inclure ce suffixe dans l’URL. + - **Jeton secret** : utilisez une clé d’application Datadog valide. Vous pouvez créer une clé d’application depuis [la page des paramètres de votre organisation][4]. Pour garantir un accès continu à vos données, utilisez une clé d’application de [compte de service][5]. + +{{< img src="/account_management/scim/admin-credentials-entra-flag.png" alt="Écran de configuration des identifiants administrateur Azure AD" >}} + +5. Cliquez sur **Test Connection**, puis attendez le message confirmant que les identifiants sont autorisés à activer le provisioning. +6. Cliquez sur **Save**. La section de mappage s'affiche. Consultez la section suivante pour configurer le mappage. + +## Mappage des attributs + +### Attributs utilisateur + +1. Développez la section **Mappings**. +2. Cliquez sur **Provision Azure Active Directory Users**. La page Attribute Mapping s'affiche. +3. Définissez **Enabled** sur **Yes** +4. Cliquez sur l'icône **Save** +5. Sous **Target Object actions**, assurez-vous que les actions de création, de mise à jour et de suppression sont sélectionnées +6. Passez en revue les attributs utilisateur synchronisés de Microsoft Entra ID vers Datadog dans la section de mappage des attributs. Définissez les mappages suivants : +| Attribut Microsoft Entra ID | Attribut Datadog | +|----------------------------------|--------------------------------| +| `userPrincipalName` | `userName` | +| `Not([IsSoftDeleted])` | `active` | +| `jobTitle` | `title` | +| `mail` | `emails[type eq "work"].value` | +| `displayName` | `name.formatted` | + + {{< img src="/account_management/scim/ad-users-2.png" alt="Configuration du mappage des attributs, Provisionner les utilisateurs Azure Active Directory" >}} + +7. Après avoir défini vos mappages, cliquez sur **Save**. + +### Attributs du groupe + +Le mappage de groupe n'est pas pris en charge. + +[1]: /fr/account_management/scim/ +[2]: /fr/account_management/scim/#using-a-service-account-with-scim +[3]: /fr/getting_started/site +[4]: https://app.datadoghq.com/organization-settings/application-keys +[5]: /fr/account_management/org_settings/service_accounts +[6]: https://entra.microsoft.com/ +[7]: https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference#cloud-application-administrator +[8]: https://learn.microsoft.com/en-us/entra/identity/app-provisioning/application-provisioning-config-problem-scim-compatibility#flags-to-alter-the-scim-behavior \ No newline at end of file diff --git a/content/fr/cloud_cost_management/allocation/container_cost_allocation.md b/content/fr/cloud_cost_management/allocation/container_cost_allocation.md new file mode 100644 index 0000000000000..b4c033b4e4752 --- /dev/null +++ b/content/fr/cloud_cost_management/allocation/container_cost_allocation.md @@ -0,0 +1,476 @@ +--- +aliases: +- /fr/cloud_cost_management/container_cost_allocation +description: Apprenez à répartir les dépenses Cloud Cost Management dans votre organisation + avec l'allocation des coûts des conteneurs. +further_reading: +- link: /cloud_cost_management/ + tag: Documentation + text: En savoir plus Cloud Cost Management +private: true +title: Allocation des coûts des conteneurs +--- + +{{< jqmath-vanilla >}} + +## Présentation + +Datadog Cloud Cost Management (CCM) attribue automatiquement les coûts de vos clusters cloud aux services et charges de travail individuels exécutés dans ces clusters. Utilisez des métriques de coûts enrichies avec des tags provenant des pods, des nœuds, des conteneurs et des tâches pour visualiser le coût des charges de travail de conteneurs dans le contexte de l'ensemble de votre facture cloud. + +Clouds +: CCM attribue les coûts de vos instances host AWS, Azure ou Google. Un host est un ordinateur (comme une instance EC2 dans AWS, une machine virtuelle dans Azure ou une instance Compute Engine dans Google Cloud) qui figure dans le rapport de coûts et d'utilisation de votre fournisseur cloud et qui peut exécuter des pods Kubernetes. + +Ressources +: CCM attribue les coûts des clusters Kubernetes et inclut une analyse des coûts pour de nombreuses ressources associées, comme les volumes persistants Kubernetes utilisés par vos pods. + +CCM affiche les coûts des ressources, notamment le CPU, la mémoire et d'autres encore, selon le cloud et l'orchestrateur que vous utilisez, sur la page [**Containers**][1]. + +{{< img src="cloud_cost/container_cost_allocation/container_allocation.png" alt="Tableau d'allocation des coûts cloud montrant les requêtes et les coûts inactifs du mois dernier sur la page Containers" style="width:100%;" >}} + +## Prérequis + +{{< tabs >}} +{{% tab "AWS" %}} + +CCM attribue les coûts des clusters Amazon ECS ainsi que de tous les clusters Kubernetes, y compris ceux gérés via Elastic Kubernetes Service (EKS). + +Le tableau suivant présente la liste des fonctionnalités collectées ainsi que les versions minimales de l'Agent et de l'Agent de cluster pour chacune d'elles. + +| Fonctionnalité | Version minimale de l'Agent | Version minimale de l'Agent de cluster | +|---|---|---| +| Allocation des coûts des conteneurs | 7.27.0 | 1.11.0 | +| Allocation des coûts des conteneurs GPU | 7.54.0 | 7.54.0 | +| Allocation de volumes persistants AWS | 7.46.0 | 1.11.0 | +| Allocation des coûts de transfert de données | 7.58.0 | 7.58.0 | + +1. Configurez l'intégration AWS Cloud Cost Management sur la page relative à la [configuration de Cloud Cost][101]. +1. Pour l'assistance Kubernetes, installez l'[**Agent Datadog**][102] dans un environnement Kubernetes et assurez-vous d'activer l'[**Orchestrator Explorer**][103] dans votre configuration d'Agent. +1. Pour l'assistance Amazon ECS, configurez [**Datadog Container Monitoring**][104] dans les tâches ECS. +1. Vous pouvez également activer [AWS Split Cost Allocation][105] pour une allocation ECS basée sur l'utilisation. +1. Pour activer l'allocation des coûts de stockage, configurez la [collecte de métriques EBS][108]. +1. Pour activer l'allocation des coûts des conteneurs GPU, installez l'[intégration Datadog DCGM][106]. +1. Pour activer l'allocation des coûts de transfert de données, configurez [Cloud Network Monitoring][107]. **Remarque** : des frais supplémentaires s'appliquent. + +**Remarque** : l'allocation des coûts des conteneurs GPU prend uniquement en charge les requêtes de pods au format `nvidia.com/gpu`. + +[101]: https://app.datadoghq.com/cost/setup +[102]: /fr/containers/kubernetes/installation/?tab=operator +[103]: /fr/infrastructure/containers/orchestrator_explorer?tab=datadogoperator +[104]: /fr/containers/amazon_ecs/ +[105]: https://docs.aws.amazon.com/cur/latest/userguide/enabling-split-cost-allocation-data.html +[106]: /fr/integrations/dcgm/?tab=kubernetes#installation +[107]: /fr/network_monitoring/cloud_network_monitoring/setup +[108]: /fr/integrations/amazon_ebs/#metric-collection + +{{% /tab %}} +{{% tab "Azure" %}} + +CCM attribue les coûts de tous les clusters Kubernetes, y compris ceux gérés via Azure Kubernetes Service (AKS). + +Le tableau suivant présente la liste des fonctionnalités collectées ainsi que les versions minimales de l'Agent et de l'Agent de cluster pour chacune d'elles. + +| Fonctionnalité | Version minimale de l'Agent | Version minimale de l'Agent de cluster | +|---|---|---| +| Allocation des coûts des conteneurs | 7.27.0 | 1.11.0 | +| Allocation des coûts des conteneurs GPU | 7.54.0 | 7.54.0 | + +1. Configurez l'intégration Azure Cost Management sur la page relative à la [configuration de Cloud Cost][101]. +1. Installez l'[**Agent Datadog**][102] dans un environnement Kubernetes et assurez-vous d'activer l'[**Orchestrator Explorer**][103] dans votre configuration d'Agent. +1. Pour activer l'allocation des coûts des conteneurs GPU, installez l'[intégration Datadog DCGM][104]. + +**Remarque** : l'allocation des coûts des conteneurs GPU prend uniquement en charge les requêtes de pods au format `nvidia.com/gpu`. + +[101]: https://app.datadoghq.com/cost/setup +[102]: /fr/containers/kubernetes/installation/?tab=operator +[103]: /fr/infrastructure/containers/orchestrator_explorer?tab=datadogoperator +[104]: https://docs.datadoghq.com/fr/integrations/dcgm/?tab=kubernetes#installation + +{{% /tab %}} +{{% tab "Google" %}} + +CCM attribue les coûts de tous les clusters Kubernetes, y compris ceux gérés via Google Kubernetes Engine (GKE). + +Le tableau suivant présente la liste des fonctionnalités collectées ainsi que les versions minimales de l'Agent et de l'Agent de cluster pour chacune d'elles. + +| Fonctionnalité | Version minimale de l'Agent | Version minimale de l'Agent de cluster | +|---|---|---| +| Allocation des coûts des conteneurs | 7.27.0 | 1.11.0 | +| Allocation des coûts des conteneurs GPU | 7.54.0 | 7.54.0 | + +1. Configurez l'intégration Google Cloud Cost Management sur la page relative à la [configuration de Cloud Cost][101]. +1. Installez l'[**Agent Datadog**][102] dans un environnement Kubernetes et assurez-vous d'activer l'[**Orchestrator Explorer**][103] dans votre configuration d'Agent. +1. Pour activer l'allocation des coûts des conteneurs GPU, installez l'[intégration Datadog DCGM][104]. + +**Remarque** : l'allocation des coûts des conteneurs GPU prend uniquement en charge les requêtes de pods au format `nvidia.com/gpu`. + +**Remarque** : [GKE Autopilot][105] est uniquement pris en charge en tant que configuration Kubernetes sans Agent, soumise à des [limitations](#couts-kubernetes-sans-agent). + +[101]: https://app.datadoghq.com/cost/setup +[102]: /fr/containers/kubernetes/installation/?tab=operator +[103]: /fr/infrastructure/containers/orchestrator_explorer?tab=datadogoperator +[104]: https://docs.datadoghq.com/fr/integrations/dcgm/?tab=kubernetes#installation +[105]: https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview + +{{% /tab %}} +{{< /tabs >}} + +## Répartir les coûts + +L'allocation des coûts divise les coûts de calcul des hosts et autres ressources de votre fournisseur cloud en tâches ou pods individuels qui leur sont associés. Ces coûts répartis sont ensuite enrichis avec des tags provenant des ressources associées, afin que vous puissiez ventiler les coûts selon n'importe quelles dimensions associées. + +Utilisez le tag `allocated_resource` pour visualiser la ressource de dépense associée à vos coûts à différents niveaux, y compris le nœud Kubernetes, le host d'orchestration de conteneurs, le volume de stockage ou l'ensemble du cluster. + +{{< tabs >}} +{{% tab "AWS" %}} + +Ces coûts répartis sont enrichis avec des tags provenant des nœuds, pods, tâches et volumes. Vous pouvez utiliser ces tags pour ventiler les coûts selon n'importe quelles dimensions associées. + +### Extraction de tags Kubernetes + +Seuls les _tags_ de la ressource directe, comme un pod, ainsi que des nœuds sous-jacents, sont ajoutés aux métriques de coûts par défaut. Pour inclure des labels en tant que tags, des annotations en tant que tags ou des tags provenant de ressources associées comme les namespaces, consultez la section [Extraction de tags Kubernetes][201]. + +[201]: /fr/containers/kubernetes/tag/ + +### Calculer + +Pour l'allocation de calcul Kubernetes, un nœud Kubernetes est associé aux coûts de son instance host. Le nom de cluster du nœud et tous les tags du nœud sont ajoutés au coût de calcul total du nœud. Cela vous permet d'associer des dimensions au niveau du cluster au coût de l'instance, sans prendre en compte les pods planifiés sur le nœud. + +Ensuite, Datadog examine tous les pods ayant été exécutés sur ce nœud pendant la journée. Le coût du nœud est attribué à chaque pod en fonction des ressources utilisées et de la durée d'exécution. Ce coût calculé est enrichi avec l'ensemble des tags du pod. + +**Remarque** : seuls les _tags_ des pods et des nœuds sont ajoutés aux métriques de coûts. Pour inclure des labels, activez les labels en tant que tags pour les [nœuds][101] et les [pods][102]. + +Tous les autres coûts reçoivent la même valeur et les mêmes tags que la métrique source `aws.cost.amortized`. + +### Stockage de volumes persistants + +Pour l'allocation du stockage de volumes persistants Kubernetes, les volumes persistants (PV), les demandes de volumes persistants (PVC), les nœuds et les pods sont associés aux coûts de leurs volumes EBS. Tous les tags associés aux PV, aux PVC, aux nœuds et aux pods sont ajoutés aux postes de coûts des volumes EBS. + +Ensuite, Datadog examine tous les pods ayant revendiqué le volume ce jour-là. Le coût du volume est attribué à un pod en fonction des ressources utilisées et de la durée d'exécution. Ces ressources incluent la capacité de stockage provisionnée, les IOPS et le débit. Ce coût attribué est enrichi avec l'ensemble des tags du pod. + +### Amazon ECS sur EC2 + +Pour l'allocation ECS, Datadog détermine quelles tâches ont été exécutées sur chaque instance EC2 utilisée pour ECS. Si vous activez AWS Split Cost Allocation, les métriques attribuent les coûts ECS en fonction de l'utilisation plutôt que de la réservation, offrant ainsi un niveau de détail plus granulaire. + +En fonction des ressources utilisées par la tâche, Datadog attribue à celle-ci la part correspondante du coût de calcul de l'instance. Le coût calculé est enrichi avec l'ensemble des tags de la tâche ainsi que tous les tags des conteneurs (à l'exception des noms de conteneurs) exécutés dans la tâche. + +### Amazon ECS sur Fargate + +Les tâches ECS exécutées sur Fargate sont déjà entièrement allouées [dans le CUR][103]. CCM enrichit ces données en ajoutant des tags prêts à l'emploi et des tags de conteneurs au coût AWS Fargate. + +### Transfert de données + +Pour l'allocation du transfert de données Kubernetes, un nœud Kubernetes est associé à ses coûts de transfert de données provenant du [CUR][103]. Le nom de cluster du nœud et tous les tags du nœud sont ajoutés au coût total de transfert de données du nœud. Cela vous permet d'associer des dimensions au niveau du cluster au coût du transfert de données, sans prendre en compte les pods planifiés sur le nœud. + +Ensuite, Datadog examine les [ressources de charge de travail][104] quotidiennes exécutées sur ce nœud. Le coût du nœud est attribué au niveau de la charge de travail en fonction du volume de trafic réseau utilisé. Ce coût calculé est enrichi avec l'ensemble des tags de la ressource de charge de travail. + +**Remarque** : seuls les _tags_ des pods et des nœuds sont ajoutés aux métriques de coûts. Pour inclure des labels, activez les labels en tant que tags pour les [nœuds][101] et les [pods][102]. + +[Cloud Network Monitoring][105] doit être activé sur tous les hosts AWS pour permettre une allocation précise des coûts de transfert de données. Si certains hosts n'ont pas Cloud Network Monitoring activé, les coûts de transfert de données de ces hosts ne sont pas alloués et peuvent apparaître comme un compartiment `n/a` selon les conditions de filtre et de regroupement. + +Datadog prend en charge l'allocation des coûts de transfert de données uniquement avec les [ressources de charge de travail standard 6][104]. Pour les [ressources de charge de travail personnalisées][106], les coûts de transfert de données ne peuvent être alloués qu'au niveau du cluster, et non au niveau du nœud ou du namespace. + +[101]: /fr/containers/kubernetes/tag/?tab=containerizedagent#node-labels-as-tags +[102]: /fr/containers/kubernetes/tag/?tab=containerizedagent#pod-labels-as-tags +[103]: https://docs.aws.amazon.com/cur/latest/userguide/what-is-cur.html +[104]: https://kubernetes.io/docs/concepts/workloads/ +[105]: /fr/network_monitoring/cloud_network_monitoring/setup +[106]: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ + +{{% /tab %}} +{{% tab "Azure" %}} + +### Extraction de tags Kubernetes + +Seuls les _tags_ de la ressource directe, comme un pod, ainsi que des nœuds sous-jacents, sont ajoutés aux métriques de coûts par défaut. Pour inclure des labels en tant que tags, des annotations en tant que tags ou des tags provenant de ressources associées comme les namespaces, consultez la section [Extraction de tags Kubernetes][201]. + +[201]: /fr/containers/kubernetes/tag/ + +### Calculer + +Pour l'allocation de calcul Kubernetes, un nœud Kubernetes est associé aux coûts de son instance host. Le nom de cluster du nœud et tous les tags du nœud sont ajoutés au coût de calcul total du nœud. Cela vous permet d'associer des dimensions au niveau du cluster au coût de l'instance, sans prendre en compte les pods planifiés sur le nœud. + +Ensuite, Datadog examine tous les pods ayant été exécutés sur ce nœud pendant la journée. Le coût du nœud est attribué à chaque pod en fonction des ressources utilisées et de la durée d'exécution. Ce coût calculé est enrichi avec l'ensemble des tags du pod. + +**Remarque** : seuls les _tags_ des pods et des nœuds sont ajoutés aux métriques de coûts. Pour inclure des labels, activez les labels en tant que tags pour les [nœuds][101] et les [pods][102]. + +Tous les autres coûts reçoivent la même valeur et les mêmes tags que la métrique source `azure.cost.amortized`. + +[101]: /fr/containers/kubernetes/tag/?tab=containerizedagent#node-labels-as-tags +[102]: /fr/containers/kubernetes/tag/?tab=containerizedagent#pod-labels-as-tags + +{{% /tab %}} +{{% tab "Google" %}} + +### Extraction de tags Kubernetes + +Seuls les _tags_ de la ressource directe, comme un pod, ainsi que des nœuds sous-jacents, sont ajoutés aux métriques de coûts par défaut. Pour inclure des labels en tant que tags, des annotations en tant que tags ou des tags provenant de ressources associées comme les namespaces, consultez la section [Extraction de tags Kubernetes][201]. + +[201]: /fr/containers/kubernetes/tag/ + +### Calculer + +Pour l'allocation de calcul Kubernetes, un nœud Kubernetes est associé aux coûts de son instance host. Le nom de cluster du nœud et tous les tags du nœud sont ajoutés au coût de calcul total du nœud. Cela vous permet d'associer des dimensions au niveau du cluster au coût de l'instance, sans prendre en compte les pods planifiés sur le nœud. + +Ensuite, Datadog examine tous les pods ayant été exécutés sur ce nœud pendant la journée. Le coût du nœud est attribué à chaque pod en fonction des ressources utilisées et de la durée d'exécution. Ce coût calculé est enrichi avec l'ensemble des tags du pod. + +**Remarque** : seuls les _tags_ des pods et des nœuds sont ajoutés aux métriques de coûts. Pour inclure des labels, activez les labels en tant que tags pour les [nœuds][101] et les [pods][102]. + +Tous les autres coûts reçoivent la même valeur et les mêmes tags que la métrique source `gcp.cost.amortized`. + +### Coûts Kubernetes sans Agent + +Pour afficher les coûts des clusters GKE sans activer Datadog Infrastructure Monitoring, utilisez [GKE cost allocation][103]. Activez GKE cost allocation sur les clusters GKE non surveillés pour accéder à cet ensemble de fonctionnalités. Cette approche comporte un certain nombre de limitations (voir ci-dessous). + +#### Limitations et différences par rapport à l'Agent Datadog + +- Il n'y a pas de prise en charge du suivi des coûts inactifs des charges de travail. +- Le coût des pods individuels n'est pas suivi, seuls le coût agrégé d'une charge de travail et du namespace le sont. Il n'existe pas de tag `pod_name`. +- GKE enrichit les données uniquement avec les labels de pods et ignore tous les tags Datadog que vous ajoutez. +- La liste complète des limitations se trouve dans la [documentation officielle de GKE][104]. + +Pour activer l'allocation des coûts GKE, consultez la [documentation officielle de GKE][105]. + +[101]: /fr/containers/kubernetes/tag/?tab=containerizedagent#node-labels-as-tags +[102]: /fr/containers/kubernetes/tag/?tab=containerizedagent#pod-labels-as-tags +[103]: https://cloud.google.com/kubernetes-engine/docs/how-to/cost-allocations +[104]: https://cloud.google.com/kubernetes-engine/docs/how-to/cost-allocations#limitations +[105]: https://cloud.google.com/kubernetes-engine/docs/how-to/cost-allocations#enable_breakdown + +{{% /tab %}} +{{< /tabs >}} + +## Comprendre les dépenses + +Utilisez le tag `allocated_spend_type` pour visualiser la catégorie de dépense associée à vos coûts à différents niveaux, y compris le nœud Kubernetes, le host d'orchestration de conteneurs, le volume de stockage ou l'ensemble du cluster. + +{{< tabs >}} +{{% tab "AWS" %}} + +### Calculer + +Le coût d'une instance host est divisé en deux composantes : 60 % pour le CPU et 40 % pour la mémoire. Si l'instance host dispose de GPU, le coût est divisé en trois composantes : 95 % pour le GPU, 3 % pour le CPU et 2 % pour la mémoire. Chaque composante est attribuée aux charges de travail individuelles en fonction de leurs réservations de ressources et de leur utilisation. + +Les coûts sont répartis entre les types de dépenses suivants : + +| Type de dépenses | Description | +| -----------| ----------- | +| Utilisation | Coût des ressources (telles que la mémoire, le CPU et le GPU) utilisées par les charges de travail, basé sur l'utilisation moyenne de la journée. | +| Inactivité des charges de travail | Coût des ressources (telles que la mémoire, le CPU et le GPU) qui sont réservées et attribuées mais non utilisées par les charges de travail. Il s'agit de la différence entre le total des ressources demandées et l'utilisation moyenne. | +| Inactivité du cluster | Coût des ressources (telles que la mémoire, le CPU et le GPU) qui ne sont pas réservées par les charges de travail dans un cluster. Il s'agit de la différence entre le coût total des ressources et ce qui est attribué aux charges de travail. | + +### Volume persistant + +Le coût d'un volume EBS comporte trois composantes : les IOPS, le débit et le stockage. Chacune est attribuée en fonction de l'utilisation d'un pod lorsque le volume est monté. + +| Type de dépenses | Description | +| -----------| ----------- | +| Utilisation | Coût des IOPS, du débit ou du stockage provisionnés utilisés par les charges de travail. Le coût du stockage est basé sur la quantité maximale de stockage de volume utilisée ce jour-là, tandis que les coûts des IOPS et du débit sont basés sur la quantité moyenne de stockage de volume utilisée ce jour-là. | +| Inactivité des charges de travail | Coût des IOPS, du débit ou du stockage provisionnés qui sont réservés et attribués mais non utilisés par les charges de travail. Le coût du stockage est basé sur la quantité maximale de stockage de volume utilisée ce jour-là, tandis que les coûts des IOPS et du débit sont basés sur la quantité moyenne de stockage de volume utilisée ce jour-là. Il s'agit de la différence entre le total des ressources demandées et l'utilisation moyenne. **Remarque :** ce tag est uniquement disponible si vous avez activé `Resource Collection` dans votre [**Intégration AWS**][101]. Pour éviter d'être facturé pour `Cloud Security Posture Management`, assurez-vous que lors de la configuration de `Resource Collection`, la case `Cloud Security Posture Management` est décochée. | +| Inactivité du cluster | Coût des IOPS, du débit ou du stockage provisionnés qui ne sont réservés par aucun pod ce jour-là. Il s'agit de la différence entre le coût total des ressources et ce qui est attribué aux charges de travail. | + +**Remarque** : l'allocation de volumes persistants est uniquement prise en charge dans les clusters Kubernetes et est disponible uniquement pour les pods faisant partie d'un StatefulSet Kubernetes. + +[101]: https://app.datadoghq.com/integrations/amazon-web-services + +### Transfert de données + +Les coûts sont répartis entre les types de dépenses suivants : + +| Type de dépenses | Description | +| -----------| ----------- | +| Utilisation | Coût du transfert de données surveillé par Cloud Network Monitoring et attribué. | +| Non surveillé | Coût du transfert de données non surveillé par Cloud Network Monitoring. Ce coût n'est pas attribué. | + +{{% /tab %}} +{{% tab "Azure" %}} + +### Calculer + +Le coût d'une instance host est divisé en deux composantes : 60 % pour le CPU et 40 % pour la mémoire. Si l'instance host dispose de GPU, le coût est divisé en trois composantes : 95 % pour le GPU, 3 % pour le CPU et 2 % pour la mémoire. Chaque composante est attribuée aux charges de travail individuelles en fonction de leurs réservations de ressources et de leur utilisation. + +Les coûts sont répartis entre les types de dépenses suivants : + +| Type de dépenses | Description | +| -----------| ----------- | +| Utilisation | Coût des ressources (telles que la mémoire, le CPU et le GPU) utilisées par les charges de travail, basé sur l'utilisation moyenne de la journée. | +| Inactivité des charges de travail | Coût des ressources (telles que la mémoire, le CPU et le GPU) qui sont réservées et attribuées mais non utilisées par les charges de travail. Il s'agit de la différence entre le total des ressources demandées et l'utilisation moyenne. | +| Inactivité du cluster | Coût des ressources (telles que la mémoire, le CPU et le GPU) qui ne sont pas réservées par les charges de travail dans un cluster. Il s'agit de la différence entre le coût total des ressources et ce qui est attribué aux charges de travail. | + +{{% /tab %}} +{{% tab "Google" %}} + +### Calculer + +Le coût d'une instance host est divisé en deux composantes : 60 % pour le CPU et 40 % pour la mémoire. Si l'instance host dispose de GPU, le coût est divisé en trois composantes : 95 % pour le GPU, 3 % pour le CPU et 2 % pour la mémoire. Chaque composante est attribuée aux charges de travail individuelles en fonction de leurs réservations de ressources et de leur utilisation. + +Les coûts sont répartis entre les types de dépenses suivants : + +| Type de dépenses | Description | +| -----------| ----------- | +| Utilisation | Coût des ressources (telles que la mémoire, le CPU et le GPU) utilisées par les charges de travail, basé sur l'utilisation moyenne de la journée. | +| Inactivité des charges de travail | Coût des ressources (telles que la mémoire, le CPU et le GPU) qui sont réservées et attribuées mais non utilisées par les charges de travail. Il s'agit de la différence entre le total des ressources demandées et l'utilisation moyenne. | +| Inactivité du cluster | Coût des ressources (telles que la mémoire, le CPU et le GPU) qui ne sont pas réservées par les charges de travail dans un cluster. Il s'agit de la différence entre le coût total des ressources et ce qui est attribué aux charges de travail. | +| Non surveillé | Coût des ressources dont le type de dépense est inconnu. Pour résoudre ce problème, installez l'Agent Datadog sur ces clusters ou nœuds. | + +{{% /tab %}} +{{< /tabs >}} + +## Comprendre les ressources + +Selon le fournisseur cloud, certaines ressources peuvent ou non être disponibles pour l'allocation des coûts. + +| Ressource | AWS | Azure | Google Cloud | +|---:|---:|---|---| +| CPU | {{< X >}} | {{< X >}} | {{< X >}} | +| Mémoire | {{< X >}} | {{< X >}} | {{< X >}} | +| {{< tooltip text="Volumes persistants" tooltip="Ressources de stockage au sein d'un cluster, provisionnées par des administrateurs ou de manière dynamique, qui conservent les données indépendamment du cycle de vie des pods." case="title" >}} | {{< X >}} | | | +| {{< tooltip text="Frais de service managé" tooltip="Coût des frais associés facturés par le fournisseur cloud pour la gestion du cluster, tels que les frais pour les services Kubernetes managés ou d'autres options d'orchestration de conteneurs." case="title" >}} | {{< X >}} | {{< X >}} | {{< X >}} | +| Coûts ECS | {{< X >}} | S. O. | S. O. | +| Coûts de transfert de données | {{< X >}} | Limited* | Limited* | +| GPU | {{< X >}} | {{< X >}} | {{< X >}} | +| {{< tooltip text="Stockage local" tooltip="Ressources de stockage directement attachées à un nœud." case="title" >}} | | Limited* | Limited* | + +Les ressources `Limited*` ont été identifiées comme faisant partie de vos dépenses Kubernetes, mais ne sont pas entièrement attribuées à des charges de travail ou pods spécifiques. Ces ressources correspondent à des coûts au niveau du host, et non au niveau du pod ou du namespace, et sont identifiées avec `allocated_spend_type:_not_supported`. + +## Métriques de coûts + +Lorsque les prérequis sont remplis, les métriques de coûts suivantes apparaissent automatiquement. + +{{< tabs >}} +{{% tab "AWS" %}} + +| Métrique de coûts | Description | +| --- | ----------- | +| `aws.cost.amortized.shared.resources.allocated` | Coûts EC2 attribués en fonction du CPU et de la mémoire utilisés par un pod ou une tâche ECS, avec une répartition 60:40 pour le CPU et la mémoire respectivement, et une répartition 95:3:2 pour le GPU, le CPU et la mémoire respectivement si un GPU est utilisé par un pod. Inclut également les coûts EBS attribués.
*Basé sur `aws.cost.amortized`* | +| `aws.cost.net.amortized.shared.resources.allocated` | Coûts nets EC2 attribués en fonction du CPU et de la mémoire utilisés par un pod ou une tâche ECS, avec une répartition 60:40 pour le CPU et la mémoire respectivement, et une répartition 95:3:2 pour le GPU, le CPU et la mémoire respectivement si un GPU est utilisé par un pod. Inclut également les coûts EBS attribués.
*Basé sur `aws.cost.net.amortized`, si disponible* | + +{{% /tab %}} +{{% tab "Azure" %}} + +| Métrique de coûts | Description | +| --- | ----------- | +| `azure.cost.amortized.shared.resources.allocated` | Coûts Azure VM attribués en fonction du CPU et de la mémoire utilisés par un pod ou une tâche de conteneur, avec une répartition 60:40 pour le CPU et la mémoire respectivement, et une répartition 95:3:2 pour le GPU, le CPU et la mémoire respectivement si un GPU est utilisé par un pod. Inclut également les coûts Azure attribués.
*Basé sur `azure.cost.amortized`* | + +{{% /tab %}} +{{% tab "Google" %}} + +| Métrique de coûts | Description | +| --- | ----------- | +| `gcp.cost.amortized.shared.resources.allocated` | Coûts Google Compute Engine attribués en fonction du CPU et de la mémoire utilisés par un pod, avec une répartition 60:40 pour le CPU et la mémoire respectivement, et une répartition 95:3:2 pour le GPU, le CPU et la mémoire respectivement si un GPU est utilisé par un pod. Cette méthode d'allocation est utilisée lorsque la facture ne fournit pas déjà une répartition spécifique entre l'utilisation du CPU et de la mémoire.
*Basé sur `gcp.cost.amortized`* | + +{{% /tab %}} +{{< /tabs >}} + +Ces métriques de coûts incluent l'ensemble de vos coûts cloud. Cela vous permet de continuer à visualiser tous vos coûts cloud en une seule fois. + +Par exemple, si vous avez le tag `team` sur un bucket de stockage, une base de données managée par un fournisseur cloud et des pods Kubernetes, vous pouvez utiliser ces métriques pour regrouper les coûts par `team`, ce qui inclut les coûts des trois. + +## Appliquer des tags + +Datadog consolide et applique les tags suivants, provenant de différentes sources, aux métriques de coûts. + +{{< tabs >}} +{{% tab "AWS" %}} + +### Kubernetes + +En plus des tags de pods Kubernetes et de nœuds Kubernetes, la liste non exhaustive suivante de tags prêts à l'emploi est appliquée aux métriques de coûts : + +| Tag prêt à l'emploi | Description | +| --- | ------------ | +| `orchestrator:kubernetes` | La plateforme d'orchestration associée à l'élément est Kubernetes. | +| `kube_cluster_name` | Le nom du cluster Kubernetes. | +| `kube_namespace` | Le namespace où s'exécutent les charges de travail. | +| `kube_deployment` | Le nom du déploiement Kubernetes. | +| `kube_stateful_set` | Le nom du StatefulSet Kubernetes. | +| `pod_name` | Le nom d'un pod individuel. | + +Les conflits sont résolus en privilégiant les tags de plus grande spécificité, comme les tags de pods, par rapport aux tags de moindre spécificité, comme les tags de hosts. Par exemple, un pod Kubernetes tagué `service:datadog-agent` exécuté sur un nœud tagué `service:aws-node` aboutit à un tag final `service:datadog-agent`. + +#### Volume persistant + +En plus des tags de pods Kubernetes et de nœuds Kubernetes, les tags prêts à l'emploi suivants sont appliqués aux métriques de coûts. + +| Tag prêt à l'emploi | Description | +| --- |----------------------------------------------------------------------------------------------------------------------------------------------| +| `persistent_volume_reclaim_policy` | La politique de récupération de Kubernetes sur le volume persistant. | +| `storage_class_name` | La classe de stockage Kubernetes utilisée pour instancier le volume persistant. | +| `volume_mode` | Le mode de volume du volume persistant. | +| `ebs_volume_type` | Le type de volume EBS. Peut être `gp3`, `gp2`, ou autre. | + +### Amazon ECS + +En plus des tags de tâches ECS, les tags prêts à l'emploi suivants sont appliqués aux métriques de coûts. + +**Remarque** : la plupart des tags des conteneurs ECS sont appliqués (à l'exception de `container_name`). + +| Tag prêt à l'emploi | Description | +| --- | ------------ | +| `orchestrator:ecs` | La plateforme d'orchestration associée à l'élément est Amazon ECS. | +| `ecs_cluster_name` | Le nom du cluster ECS. | +| `is_aws_ecs` | Tous les coûts liés au fonctionnement d'ECS. | +| `is_aws_ecs_on_ec2` | Tous les coûts de calcul EC2 associés à l'exécution d'ECS sur EC2. | +| `is_aws_ecs_on_fargate` | Tous les coûts associés à l'exécution d'ECS sur Fargate. | + +### Transfert de données + +La liste suivante de tags prêts à l'emploi est appliquée aux métriques de coûts associées aux charges de travail Kubernetes : + +| Tag prêt à l'emploi | Description | +| --- | ------------ | +| `source_availability_zone` | Le nom de la zone de disponibilité d'où provient le transfert de données. | +| `source_availability_zone_id` | L'ID de la zone de disponibilité d'où provient le transfert de données. | +| `source_region` | La région d'où provient le transfert de données. | +| `destination_availability_zone` | Le nom de la zone de disponibilité vers laquelle le transfert de données a été envoyé. | +| `destination_availability_zone_id` | L'ID de la zone de disponibilité vers laquelle le transfert de données a été envoyé. | +| `destination_region` | La région où le transfert de données a été envoyé. | +| `allocated_resource:data_transfer` | Le suivi et la répartition des coûts associés aux activités de transfert de données. | + +De plus, certains tags de pods Kubernetes communs à tous les pods d'un même nœud sont également appliqués. + +{{% /tab %}} +{{% tab "Azure" %}} + +### Kubernetes + +En plus des tags de pods Kubernetes et de nœuds Kubernetes, la liste non exhaustive suivante de tags prêts à l'emploi est appliquée aux métriques de coûts : + +| Tag prêt à l'emploi | Description | +| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `orchestrator:kubernetes` | La plateforme d'orchestration associée à l'élément est Kubernetes. | +| `kube_cluster_name` | Le nom du cluster Kubernetes. | +| `kube_namespace` | Le namespace où s'exécutent les charges de travail. | +| `kube_deployment` | Le nom du déploiement Kubernetes. | +| `kube_stateful_set` | Le nom du StatefulSet Kubernetes. | +| `pod_name` | Le nom d'un pod individuel. | +| `allocated_resource:data_transfer` | Le suivi et l'allocation des coûts associés aux activités de transfert de données utilisées par les services ou charges de travail Azure. | +| `allocated_resource:local_storage` | Le suivi et l'allocation des coûts au niveau du host associés aux ressources de stockage local utilisées par les services ou charges de travail Azure. | + +{{% /tab %}} +{{% tab "Google" %}} + +### Kubernetes + +En plus des tags de pods Kubernetes et de nœuds Kubernetes, la liste non exhaustive suivante de tags prêts à l'emploi est appliquée aux métriques de coûts : + +| Tag prêt à l'emploi | Description | +| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `orchestrator:kubernetes` | La plateforme d'orchestration associée à l'élément est Kubernetes. | +| `kube_cluster_name` | Le nom du cluster Kubernetes. | +| `kube_namespace` | Le namespace où s'exécutent les charges de travail. | +| `kube_deployment` | Le nom du déploiement Kubernetes. | +| `kube_stateful_set` | Le nom du StatefulSet Kubernetes. | +| `pod_name` | Le nom d'un pod individuel. | +| `allocated_spend_type:not_monitored` | Le suivi et l'allocation des [coûts Kubernetes sans Agent](#couts-kubernetes-sans-agent) associés aux ressources utilisées par les services ou charges de travail Google Cloud, lorsque l'Agent Datadog ne surveille pas ces ressources. | +| `allocated_resource:data_transfer` | Le suivi et l'allocation des coûts associés aux activités de transfert de données utilisées par les services ou charges de travail Google Cloud. | +| `allocated_resource:gpu` | Le suivi et l'allocation des coûts au niveau du host associés aux ressources GPU utilisées par les services ou charges de travail Google Cloud. | +| `allocated_resource:local_storage` | Le suivi et l'allocation des coûts au niveau du host associés aux ressources de stockage local utilisées par les services ou charges de travail Google Cloud. | + +{{% /tab %}} +{{< /tabs >}} + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/cost/containers \ No newline at end of file diff --git a/content/fr/cloud_cost_management/tags/multisource_querying.md b/content/fr/cloud_cost_management/tags/multisource_querying.md new file mode 100644 index 0000000000000..88c178e02b8ce --- /dev/null +++ b/content/fr/cloud_cost_management/tags/multisource_querying.md @@ -0,0 +1,132 @@ +--- +description: Découvrez comment utiliser l'interrogation de sources multiples pour + analyser les coûts de plusieurs fournisseurs dans Cloud Cost Management. +further_reading: +- link: https://www.datadoghq.com/blog/focus-cost-data/ + tag: Blog + text: Surveiller les coûts de vos différents clouds avec Cloud Cost Management et + FOCUS (en anglais) +- link: /cloud_cost_management/ + tag: Documentation + text: En savoir plus Cloud Cost Management +- link: /cloud_cost_management/container_cost_allocation + tag: Documentation + text: En savoir plus sur l'allocation des coûts liés aux conteneurs +is_beta: true +title: Interrogation de sources multiples +--- + +## Présentation + +Après avoir configuré l'ingestion de vos coûts [AWS][1], [Azure][2], [Google Cloud][3], [Oracle][15], [SaaS][4], ou [Datadog][5] dans [Cloud Cost Management][6], vous pouvez interroger vos coûts de façon flexible pour l'ensemble de vos fournisseurs. La fonctionnalité d'interrogation de sources multiples vous permet d'analyser les coûts de plusieurs fournisseurs en vous basant sur des tags cohérents et standardisés, au lieu d'avoir à rédiger plusieurs requêtes pour chaque fournisseur. + +Utilisez la fonctionnalité d'interrogation de sources multiples pour concevoir des vues sur vos coûts, déterminer le coût total de possession de services et configurer des alertes pour les changements et les tendances en matière de coûts sur la [page **Explorer** Page][6], les [dashboards][7], les [notebooks][8] et les [moniteurs de coûts][9]. + +## Configuration + +Pour utiliser l'interrogation de sources multiples, assurez-vous d'avoir configuré [Cloud Cost Management][10] et d'ingérer activement des coûts dans Datadog. Plusieurs devises sont prises en charge : vos coûts sont automatiquement convertis et affichés en USD. + +## Interroger vos données de coûts + +Vous pouvez sélectionner plusieurs fournisseurs dans le champ **Provider** de la [page **Explorer**[6]. + +{{< img src="cloud_cost/multisource_querying/provider.png" alt="Le champ Provider sous la requête de recherche sur la page Cloud Cost Explorer" style="width:40%;" >}} + +Les filtres déroulants, comme **Provider** et **Team**, vous permettent de gagner en flexibilité et de rationaliser le processus de création d'une requête de recherche, afin d'affiner les données liées à vos coûts. Pour ajouter un filtre, cliquez sur **+ Filter**. + +{{< img src="cloud_cost/multisource_querying/filters_2.png" alt="Une requête de recherche utilisant le filtre Team et regroupant les rapports par service sur la page Cloud Cost Explorer" style="width:100%;" >}} + +Cliquez sur **Refine Results** pour accéder aux options suivantes et filtrer vos données de coûts. + +Usage Charges Only +: Examinez les coûts relatifs à vos équipes d'ingénierie, en ignorant les crédits, frais et taxes. + +Complete Days Only +: Excluez les deux derniers jours de données sur les coûts, qui ne sont pas complets. + +Total Cost +: Filtrez les données pour afficher les coûts respectant une certaine plage. + +Dollar Change +: Affichez uniquement les changements de coûts qui se trouvent dans une plage spécifique exprimée en dollars. + +Percent Change +: Affichez uniquement les changements de coûts qui se trouvent dans une plage spécifique exprimée en pourcentages. + +{{< img src="cloud_cost/multisource_querying/refine_results_1.png" alt="Options supplémentaires permettant d'affiner les données liées à vos coûts sur la page Cloud Cost Explorer" style="width:100%;" >}} + +## Visualiser vos données de coûts + +Grâce à l'interrogation de sources multiples, vous pouvez créer des visualisations dans vos [dashboards][11] reposant sur les données de coûts de plusieurs fournisseurs. + +{{< img src="cloud_cost/multisource_querying/cost_overview.png" alt="Un dashboard dans Datadog affichant des données Cloud Cost Management de plusieurs fournisseurs, comme Snowflake, Azure, Google Cloud, AWS et plus encore" style="width:100%;" >}} + +## Données recueillies + +### Métrique sur les coûts + +L'interrogation de sources multiples utilise la métrique `all.cost`, qui combine toutes les métriques individuelles relatives aux coûts cloud et SaaS au sein d'une vue unifiée sur la page **Analytics**. + +**Remarque** : la métrique `all.cost` n'inclut pas les tags au niveau des ressources. Pour visualiser les coûts par ressource, utilisez les métriques de coûts spécifiques de chaque fournisseur (comme `aws.cost.amortized`). Lorsque vous appliquez un filtre sur un fournisseur spécifique dans la requête de recherche, Datadog bascule automatiquement vers la métrique propre au fournisseur, ce qui permet d'interroger plus précisément vos données de coûts. + +### Tags par défaut + +Cloud Cost Management recueille des tags pour les intégrations AWS, Azure, Google Cloud et Oracle Cloud. Ce tableau comprend une liste non exhaustive des tags par défaut partagés avec chaque intégration. + +| Nom du tag | Description du tag | +|---|---| +| `allocated_resource` | Le type de ressource utilisé par un workload de conteneur (par exemple, `cpu` ou `mem`). | +| `allocated_spend_type` | Les coûts liés aux conteneurs sont répartis en trois types de dépenses : les ressources utilisées par un workload (`usage`), les ressources réservées par un workload, mais non utilisées (`workload_idle`), et les ressources qui ne sont ni réservées ni utilisées par un workload (`cluster_idle`). | +| `ecs_cluster_name` | Le nom du cluster ECS hébergeant un workload. | +| `kube_cluster_name` | Le nom du cluster Kubernetes hébergeant un workload. | +| `orchestrator` | L'orchestrateur de conteneurs (par exemple, `kubernetes` ou `ecs`). | + +### Ajout de tags + +Cloud Cost Management enrichit toutes les données de coûts des fournisseurs en leur ajoutant des tags qui respectent la [spécification FOCUS FinOps][12]. FOCUS™ est une spécification technique qui normalise les données de facturation des coûts et de l'utilisation entre les fournisseurs cloud. + +Les tags FOCUS vous permettent d'interroger des concepts similaires pour l'ensemble des fournisseurs. Par exemple, si vous souhaitez connaître le coût par compte sur AWS et Azure, il n'est pas nécessaire de créer deux requêtes (une pour les coûts AWS avec un regroupement selon `aws_member_account_name`, et une autre pour les coûts Azure avec un regroupement selon `subscriptionname`). Vous pouvez utiliser une seule requête de recherche qui filtre les coûts AWS et Azure avec un regroupement selon `subaccountname`. + +Cloud Cost Management ajoute à toutes les métriques de coûts des versions en minuscules des ID de colonne de la spécification. + +Les tags FOCUS suivants sont disponibles dans la solution Cloud Cost Management : + +| Nom du tag | Description du tag | +|---|---| +| `providername` | Le nom de l'entité ayant mis les ressources ou services à disposition pour l’achat. | +| `servicename` | Une offre qui peut être achetée auprès d'un fournisseur (par exemple, une machine virtuelle dans le cloud, une base de données SaaS ou encore des services professionnels d'un intégrateur de systèmes). | +| `billingaccountid` | L'identifiant attribué à un compte de facturation par le fournisseur. | +| `billingaccountname` | Le nom d'affichage attribué à un compte de facturation. | +| `billingcurrency` | La devise dans laquelle une facture cloud a été payée. | +| `subaccountid` | Un identifiant attribué à un groupe de ressources ou de services, souvent utilisé pour gérer l'accès ou les coûts. | +| `subaccountname` | Un nom attribué à un groupe de ressources ou de services, souvent utilisé pour gérer l'accès ou les coûts. | +| `regionname` | Le nom d'une zone géographique isolée au sein de laquelle une ressource est provisionnée ou un service est fourni. | +| `availabilityzone` | Un identifiant attribué par un fournisseur pour une zone physiquement isolée et distincte au sein d'une région qui fournit une haute disponibilité et une tolérance aux pannes. | +| `pricingunit` | Une unité de mesure spécifiée par un fournisseur pour déterminer les prix unitaires. Elle indique comment le fournisseur facture l'utilisation mesurée et les quantités achetées, après avoir appliqué des règles de tarification telles que la tarification par blocs. | + +La métrique `all.cost` inclut [des coûts alloués liés aux conteneurs][13] pour les coûts AWS, Azure et Google Cloud. Cela vous permet d'interroger vos coûts en utilisant des [tags de conteneur pertinents][14]. + +
Si votre organisation utilise l'un de ces tags FOCUS, Datadog recommande de définir votre clé de tag sur l'infrastructure sous-jacente afin d'éviter tout conflit avec les valeurs des tags FOCUS dans Cloud Cost Management.
+ +## Conversion des devises +Cloud Cost Management récupère la devise de facturation à partir de la facture de chaque fournisseur cloud. Lors du traitement des coûts de plusieurs fournisseurs, si les coûts sont exprimés dans différentes devises, ils sont convertis en USD. Cette conversion est effectuée à l'aide du taux de change mensuel moyen, qui est mis à jour quotidiennement. Ainsi, Cloud Cost Management peut représenter de manière cohérente et précise toutes les données relatives aux coûts, quelle que soit leur devise d'origine. Pour afficher vos coûts dans la devise de facturation d'origine, appliquez un filtre sur un seul fournisseur. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/cloud_cost_management/setup/aws +[2]: /fr/cloud_cost_management/setup/azure +[3]: /fr/cloud_cost_management/setup/google_cloud +[4]: /fr/cloud_cost_management/setup/saas_costs +[5]: /fr/cloud_cost_management/datadog_costs +[6]: https://app.datadoghq.com/cost/explorer +[7]: /fr/dashboards +[8]: /fr/notebooks +[9]: /fr/cloud_cost_management/cost_changes/monitors +[10]: /fr/cloud_cost_management +[11]: https://app.datadoghq.com/dashboard/lists +[12]: https://focus.finops.org/#obtain +[13]: /fr/cloud_cost_management/container_cost_allocation +[14]: /fr/cloud_cost_management/container_cost_allocation/?tab=aws#applying-tags +[15]: /fr/cloud_cost_management/setup/oracle \ No newline at end of file diff --git a/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json index 14b9825adaea3..1636323641faa 100644 --- a/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "Options de confidentialité de Mobile Session Replay" + "ast-str-ed6465a0-5303-45e8-814f-26b9621a3692": { + "string": "Options de confidentialité de Mobile Session Replay" + } }, "description": { - "string": "Configurer des options de confidentialité pour Mobile Session Replay." + "ast-str-96c0458c-0687-4a95-9d66-6fa097d06464": { + "string": "Configurer des options de confidentialité pour Mobile Session Replay." + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-39f6993e-dc05-4968-992e-893036c5506b": { + "string": "Session Replay sur mobile" + } + }, + "tag": { + "ast-str-af631d8c-8fc9-4e98-bee2-6afd3dbdf311": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", - "text": { - "string": "Setup and Configure Mobile Session Replay" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-1c25456b-e5f6-4548-af66-3fae7a05f423": { + "string": "Impact de Mobile Session Replay sur les performances des applications" + } + }, + "tag": { + "ast-str-a29b4ca3-075b-414c-8a68-0c33e0cfae6b": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", + "text": { + "ast-str-7d913357-3de0-47f5-995d-20902115e88a": { + "string": "Installer et configurer Mobile Session Replay" + } + }, + "tag": { + "ast-str-fd654bd7-9157-4811-bf1b-322a453db21e": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-6aae3788-1d07-41c1-943e-ce84e0eea71a": { + "string": "Dépanner Mobile Session Replay" + } + }, + "tag": { + "ast-str-e66e4cab-d520-4636-b58e-572a077d362a": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-efabc85f-a81a-409d-9ef3-4e3c49b0e2c8": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-6d52c7ad-1cdd-4740-b4ef-e0103e5209e0": { + "string": "Documentation" + } + } } } - ] + } } }, "children": { @@ -64,7 +90,7 @@ "$$mdtype": "Node", "inline": false, "attributes": { - "file": "rum/session_replay/mobile/privacy_options.mdoc.md" + "file": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" }, "children": { "translationListData": {} @@ -76,7 +102,7 @@ "0": { "type": "attribute", "name": "file", - "value": "rum/session_replay/mobile/privacy_options.mdoc.md" + "value": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" } } }, diff --git a/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 7d03bcb8b1e0b..c85dad101d001 100644 --- a/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -1,99 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "Installer et configurer Mobile Session Replay" + "ast-str-5b85bfe0-cdd5-4616-80a4-f7b16289b9c8": { + "string": "Installer et configurer Mobile Session Replay" + } }, "description": { - "string": "Installer et configurer Mobile Session Replay." + "ast-str-9ab98d47-4bc8-4cff-aab2-1a2c829a477c": { + "string": "Installer et configurer Mobile Session Replay." + } }, - "further_reading": [ - { - "link": "/product_analytics/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/product_analytics/session_replay/mobile", + "text": { + "ast-str-6b7dd627-cfc2-449b-930b-c7c9202bb7f2": { + "string": "Session Replay sur mobile" + } + }, + "tag": { + "ast-str-ad1f968c-ba7d-47fb-a595-fd656cf1a665": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/privacy_options", - "text": { - "string": "Mobile Session Replay Privacy Options" + "1": { + "link": "/product_analytics/session_replay/mobile/app_performance", + "text": { + "ast-str-5d4a3252-2fe5-4bd4-a75c-043fcd234a1b": { + "string": "Impact de Mobile Session Replay sur les performances des applications" + } + }, + "tag": { + "ast-str-257753f4-c29e-4eb9-8c21-0b283b791d22": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/product_analytics/session_replay/mobile/privacy_options", + "text": { + "ast-str-7a98b6b8-a1cb-461b-985f-a6b645661066": { + "string": "Options de confidentialité de Mobile Session Replay" + } + }, + "tag": { + "ast-str-33326998-f6db-4a64-ad65-8e45a2955242": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/product_analytics/session_replay/mobile/troubleshooting", + "text": { + "ast-str-304a8f3a-51bb-426b-8ca2-bc7ae13a7cd9": { + "string": "Dépanner Mobile Session Replay" + } + }, + "tag": { + "ast-str-6c5f9454-e16e-4312-8512-305ad68f7b0e": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/product_analytics/session_replay", + "text": { + "ast-str-cc897da2-4f3a-435e-984d-b0002dda36cd": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-af12f79d-bd7f-4f9e-8ea7-72971640339c": { + "string": "Documentation" + } + } } } - ] + } } }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": { - "file": "rum/session_replay/setup_and_configuration.mdoc.md" - }, - "children": [], - "type": "tag", - "tag": "partial", - "annotations": [ - { - "type": "attribute", - "name": "file", - "value": "rum/session_replay/setup_and_configuration.mdoc.md" - } - ], - "slots": {}, - "location": { - "start": { - "line": 25 + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" }, - "end": { - "line": 26 - } + "children": { + "translationListData": {} + }, + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + } + } + }, + "slots": {}, + "location": "line 25-26" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index a99d06ed4e2f6..980331ef2d93f 100644 --- a/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -1,37777 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "Options de confidentialité de Mobile Session Replay" - }, - "description": { - "string": "Configurer des options de confidentialité pour Mobile Session Replay." - }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", - "text": { - "string": "Setup and Configure Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" - }, - "tag": { - "string": "Documentation" - } - } - ] - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": true, - "attributes": { - "content": "Overview", - "string": "Overview" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": true, - "attributes": { - "content": "Session Replay provides privacy controls to ensure organizations of any scale do not expose sensitive or personal data. Data is stored on Datadog-managed cloud instances and encrypted at rest.", - "string": "Session Replay provides privacy controls to ensure organizations of any scale do not expose sensitive or personal data. Data is stored on Datadog-managed cloud instances and encrypted at rest." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": true, - "attributes": { - "content": "Default privacy options for Session Replay protect end user privacy and prevent sensitive organizational information from being collected.", - "string": "Default privacy options for Session Replay protect end user privacy and prevent sensitive organizational information from being collected." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": true, - "attributes": { - "content": "By enabling Mobile Session Replay, you can automatically mask sensitive elements from being recorded through the RUM Mobile SDK. When data is masked, that data is not collected in its original form by Datadog's SDKs and thus is not sent to the backend.", - "string": "By enabling Mobile Session Replay, you can automatically mask sensitive elements from being recorded through the RUM Mobile SDK. When data is masked, that data is not collected in its original form by Datadog's SDKs and thus is not sent to the backend." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": true, - "attributes": { - "content": "Fine-grained masking", - "string": "Fine-grained masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": true, - "attributes": { - "content": "Using the masking modes below, you can override the default setup on a per-application basis. Masking is fine-grained, which means you can override masking for text and inputs, images, and touches individually to create a custom configuration that suits your needs.", - "string": "Using the masking modes below, you can override the default setup on a per-application basis. Masking is fine-grained, which means you can override masking for text and inputs, images, and touches individually to create a custom configuration that suits your needs." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": true, - "attributes": { - "content": "Text and input masking", - "string": "Text and input masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all data. With this setting enabled, all text and input content on screen is masked, as shown below.", - "string": " setting is enabled for all data. With this setting enabled, all text and input content on screen is masked, as shown below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 41, - 42 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-mode-mask-all-2.png", - "alt": "What your application screen may resemble when `mask` is enabled.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-mode-mask-all-2.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask` is enabled." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 41 - }, - "end": { - "line": 42 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": true, - "attributes": { - "content": "Mask sensitive inputs", - "string": "Mask sensitive inputs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": "mask_sensitive_inputs" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all text and inputs are shown except those considered sensitive (passwords, emails, and phone numbers).", - "string": " setting enabled, all text and inputs are shown except those considered sensitive (passwords, emails, and phone numbers)." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 47, - 48 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 47 - }, - "end": { - "line": 48 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 48, - 49, - 55, - 56 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 49, - 55 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 49, - 55 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 49 - }, - "end": { - "line": 55 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 49 - }, - "end": { - "line": 55 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 48 - }, - "end": { - "line": 49 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 56, - 57 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 56 - }, - "end": { - "line": 57 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 58, - 59 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 58 - }, - "end": { - "line": 59 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 59, - 60, - 69, - 70 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 60, - 69 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskSensitiveInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 60, - 69 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskSensitiveInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 60 - }, - "end": { - "line": 69 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 60 - }, - "end": { - "line": 69 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 59 - }, - "end": { - "line": 60 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 70, - 71 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 70 - }, - "end": { - "line": 71 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 72, - 73 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 72 - }, - "end": { - "line": 73 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 73, - 74, - 88, - 89 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 74, - 88 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_SENSITIVE_INPUTS,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 74, - 88 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_SENSITIVE_INPUTS,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 74 - }, - "end": { - "line": 88 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 74 - }, - "end": { - "line": 88 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 73 - }, - "end": { - "line": 74 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 89, - 90 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 89 - }, - "end": { - "line": 90 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": true, - "attributes": { - "content": "Mask all inputs", - "string": "Mask all inputs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": "mask_all_inputs" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all inputs fields are masked in the replay.", - "string": " setting enabled, all inputs fields are masked in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 94, - 95 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 94 - }, - "end": { - "line": 95 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 95, - 96, - 102, - 103 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 96, - 102 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL_INPUTS)\n.build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 96, - 102 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL_INPUTS)\n.build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 96 - }, - "end": { - "line": 102 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 96 - }, - "end": { - "line": 102 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 95 - }, - "end": { - "line": 96 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 103, - 104 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 103 - }, - "end": { - "line": 104 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 105, - 106 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 105 - }, - "end": { - "line": 106 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 106, - 107, - 116, - 117 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 107, - 116 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAllInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 107, - 116 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAllInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 107 - }, - "end": { - "line": 116 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 107 - }, - "end": { - "line": 116 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 106 - }, - "end": { - "line": 107 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 117, - 118 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 117 - }, - "end": { - "line": 118 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 119, - 120 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 119 - }, - "end": { - "line": 120 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 120, - 121, - 135, - 136 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 121, - 135 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL_INPUTS,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 121, - 135 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL_INPUTS,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 121 - }, - "end": { - "line": 135 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 121 - }, - "end": { - "line": 135 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 120 - }, - "end": { - "line": 121 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 136, - 137 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 136 - }, - "end": { - "line": 137 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all text and input fields are masked in the replay.", - "string": " setting enabled, all text and input fields are masked in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 141, - 142 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 141 - }, - "end": { - "line": 142 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 142, - 143, - 149, - 150 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 143, - 149 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 143, - 149 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 143 - }, - "end": { - "line": 149 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 143 - }, - "end": { - "line": 149 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 142 - }, - "end": { - "line": 143 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 150, - 151 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 150 - }, - "end": { - "line": 151 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 152, - 153 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 152 - }, - "end": { - "line": 153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 153, - 154, - 163, - 164 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 154, - 163 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAll,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 154, - 163 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAll,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 154 - }, - "end": { - "line": 163 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 154 - }, - "end": { - "line": 163 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 153 - }, - "end": { - "line": 154 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 164, - 165 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 164 - }, - "end": { - "line": 165 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 166, - 167 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 166 - }, - "end": { - "line": 167 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 167, - 168, - 182, - 183 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 168, - 182 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 168, - 182 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 168 - }, - "end": { - "line": 182 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 168 - }, - "end": { - "line": 182 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 167 - }, - "end": { - "line": 168 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 183, - 184 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 183 - }, - "end": { - "line": 184 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": true, - "attributes": { - "content": "Image masking", - "string": "Image masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all images. With this setting enabled, all images on screen are masked.", - "string": " setting is enabled for all images. With this setting enabled, all images on screen are masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": true, - "attributes": { - "content": "Mask all images", - "string": "Mask all images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all images are replaced by placeholders labeled 'Image' in the replay.", - "string": " setting enabled, all images are replaced by placeholders labeled 'Image' in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 192, - 193 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-all.png", - "alt": "What your application screen may resemble when `mask-all` is enabled.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-all.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask-all` is enabled." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 192 - }, - "end": { - "line": 193 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 194, - 195 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 194 - }, - "end": { - "line": 195 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 195, - 196, - 202, - 203 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 196, - 202 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 196, - 202 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 196 - }, - "end": { - "line": 202 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 196 - }, - "end": { - "line": 202 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 195 - }, - "end": { - "line": 196 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 203, - 204 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 203 - }, - "end": { - "line": 204 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 205, - 206 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 205 - }, - "end": { - "line": 206 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 206, - 207, - 216, - 217 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 207, - 216 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskAll,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 207, - 216 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskAll,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 207 - }, - "end": { - "line": 216 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 207 - }, - "end": { - "line": 216 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 206 - }, - "end": { - "line": 207 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 217, - 218 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 217 - }, - "end": { - "line": 218 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 219, - 220 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 219 - }, - "end": { - "line": 220 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 220, - 221, - 235, - 236 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 221, - 235 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 221, - 235 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 221 - }, - "end": { - "line": 235 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 221 - }, - "end": { - "line": 235 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 220 - }, - "end": { - "line": 221 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 236, - 237 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 236 - }, - "end": { - "line": 237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": true, - "attributes": { - "content": "Mask content images", - "string": "Mask content images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": true, - "attributes": { - "content": "You can manage content masking while still allowing system or bundled images to be visible.", - "string": "You can manage content masking while still allowing system or bundled images to be visible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 241, - 242 - ], - "inline": false, - "attributes": { - "content": "iOS and React Native", - "string": "iOS and React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 241 - }, - "end": { - "line": 242 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 242, - 243, - 248, - 249 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": "Use the ", - "string": "Use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": "maskNonBundledOnly" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": " setting to replace non-bundled images with a \"Content Image\" placeholder in the replay.", - "string": " setting to replace non-bundled images with a \"Content Image\" placeholder in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 248 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": true, - "attributes": { - "content": "In UIKit, the SDK can determine whether an image is bundled and can mask it accordingly.", - "string": "In UIKit, the SDK can determine whether an image is bundled and can mask it accordingly." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 247 - ], - "inline": true, - "attributes": { - "content": "In SwiftUI, this determination isn't possible. Instead, the SDK uses a heuristic: if an image exceeds 100×100 points, it is assumed to be non-bundled and is masked.", - "string": "In SwiftUI, this determination isn't possible. Instead, the SDK uses a heuristic: if an image exceeds 100×100 points, it is assumed to be non-bundled and is masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 247 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 247 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 248 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 248 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 242 - }, - "end": { - "line": 243 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 250, - 251 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 250 - }, - "end": { - "line": 251 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 251, - 252, - 255, - 256 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": "Select the ", - "string": "Select the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": "mask_large_only" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": " setting, which replaces images with dimensions that exceed 100x100dp with a \"Content Image\" placeholder.", - "string": " setting, which replaces images with dimensions that exceed 100x100dp with a \"Content Image\" placeholder." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "content": ": These dimensions refer to the drawable resource, not the view's size.", - "string": ": These dimensions refer to the drawable resource, not the view's size." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 251 - }, - "end": { - "line": 252 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 257, - 258 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 257 - }, - "end": { - "line": 258 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 258, - 259, - 267, - 268 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 259, - 260 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-large-only.png", - "alt": "What your application screen may resemble when `mask_large_only` is enabled on Android.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-large-only.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask_large_only` is enabled on Android." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 259 - }, - "end": { - "line": 260 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 261, - 267 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 261, - 267 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 261 - }, - "end": { - "line": 267 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 261 - }, - "end": { - "line": 267 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 258 - }, - "end": { - "line": 259 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 268, - 269 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 268 - }, - "end": { - "line": 269 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 270, - 271 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 270 - }, - "end": { - "line": 271 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 271, - 272, - 283, - 284 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 272, - 273 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-non-bundled-only.png", - "alt": "What your application screen may resemble when `mask_non_bundled_only` is enabled on iOS.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-non-bundled-only.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask_non_bundled_only` is enabled on iOS." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 272 - }, - "end": { - "line": 273 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 274, - 283 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNonBundledOnly,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 274, - 283 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNonBundledOnly,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 274 - }, - "end": { - "line": 283 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 274 - }, - "end": { - "line": 283 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 271 - }, - "end": { - "line": 272 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 284, - 285 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 284 - }, - "end": { - "line": 285 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 286, - 287 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 286 - }, - "end": { - "line": 287 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 287, - 288, - 302, - 303 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 288, - 302 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NON_BUNDLED_ONLY,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 288, - 302 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NON_BUNDLED_ONLY,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 288 - }, - "end": { - "line": 302 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 288 - }, - "end": { - "line": 302 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 287 - }, - "end": { - "line": 288 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 303, - 304 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 303 - }, - "end": { - "line": 304 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": true, - "attributes": { - "content": "Show all images", - "string": "Show all images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": "mask_none" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all images are shown in the replay.", - "string": " setting enabled, all images are shown in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 308, - 309 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 308 - }, - "end": { - "line": 309 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 309, - 310, - 316, - 317 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 310, - 316 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_NONE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 310, - 316 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_NONE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 310 - }, - "end": { - "line": 316 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 310 - }, - "end": { - "line": 316 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 309 - }, - "end": { - "line": 310 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 317, - 318 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 317 - }, - "end": { - "line": 318 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 319, - 320 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 319 - }, - "end": { - "line": 320 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 320, - 321, - 330, - 331 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 321, - 330 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNone,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 321, - 330 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNone,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 321 - }, - "end": { - "line": 330 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 321 - }, - "end": { - "line": 330 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 320 - }, - "end": { - "line": 321 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 331, - 332 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 331 - }, - "end": { - "line": 332 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 333, - 334 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 333 - }, - "end": { - "line": 334 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 334, - 335, - 349, - 350 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 335, - 349 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NONE,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 335, - 349 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NONE,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 335 - }, - "end": { - "line": 349 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 335 - }, - "end": { - "line": 349 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 334 - }, - "end": { - "line": 335 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 350, - 351 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 350 - }, - "end": { - "line": 351 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": true, - "attributes": { - "content": "Touch masking", - "string": "Touch masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all touches. With this setting enabled, all touches on screen are hidden.", - "string": " setting is enabled for all touches. With this setting enabled, all touches on screen are hidden." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": true, - "attributes": { - "content": "Hide all touches", - "string": "Hide all touches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all touches that occur during the replay are hidden. This is the default setting.", - "string": " setting enabled, all touches that occur during the replay are hidden. This is the default setting." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 358, - 359 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 358 - }, - "end": { - "line": 359 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 359, - 360, - 366, - 367 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 360, - 366 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.HIDE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 360, - 366 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.HIDE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 360 - }, - "end": { - "line": 366 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 360 - }, - "end": { - "line": 366 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 359 - }, - "end": { - "line": 360 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 367, - 368 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 367 - }, - "end": { - "line": 368 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 369, - 370 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 369 - }, - "end": { - "line": 370 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 370, - 371, - 380, - 381 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 371, - 380 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .hide\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 371, - 380 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .hide\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 371 - }, - "end": { - "line": 380 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 371 - }, - "end": { - "line": 380 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 370 - }, - "end": { - "line": 371 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 381, - 382 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 381 - }, - "end": { - "line": 382 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 383, - 384 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 383 - }, - "end": { - "line": 384 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 384, - 385, - 399, - 400 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 385, - 399 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.HIDE,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 385, - 399 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.HIDE,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 385 - }, - "end": { - "line": 399 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 385 - }, - "end": { - "line": 399 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 384 - }, - "end": { - "line": 385 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 400, - 401 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 400 - }, - "end": { - "line": 401 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": true, - "attributes": { - "content": "Show all touches", - "string": "Show all touches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": "show" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all touches that occur during the replay are shown.", - "string": " setting enabled, all touches that occur during the replay are shown." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 405, - 406 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 405 - }, - "end": { - "line": 406 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 406, - 407, - 413, - 414 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 407, - 413 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.SHOW)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 407, - 413 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.SHOW)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 407 - }, - "end": { - "line": 413 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 407 - }, - "end": { - "line": 413 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 406 - }, - "end": { - "line": 407 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 414, - 415 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 414 - }, - "end": { - "line": 415 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 416, - 417 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 416 - }, - "end": { - "line": 417 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 417, - 418, - 427, - 428 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 418, - 427 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .show\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 418, - 427 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .show\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 418 - }, - "end": { - "line": 427 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 418 - }, - "end": { - "line": 427 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 417 - }, - "end": { - "line": 418 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 428, - 429 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 428 - }, - "end": { - "line": 429 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 430, - 431 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 430 - }, - "end": { - "line": 431 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 431, - 432, - 446, - 447 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 432, - 446 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.SHOW,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 432, - 446 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.SHOW,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 432 - }, - "end": { - "line": 446 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 432 - }, - "end": { - "line": 446 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 431 - }, - "end": { - "line": 432 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 447, - 448 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 447 - }, - "end": { - "line": 448 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides", - "string": "Privacy overrides" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": true, - "attributes": { - "content": "The sections above describe the global masking levels that apply to the entire application. However, it is also possible to override these settings at the view level. The same privacy levels as above are available for text and inputs, images, touches, and an additional setting to completely hide a specific view.", - "string": "The sections above describe the global masking levels that apply to the entire application. However, it is also possible to override these settings at the view level. The same privacy levels as above are available for text and inputs, images, touches, and an additional setting to completely hide a specific view." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": true, - "attributes": { - "content": "To ensure overrides are recognized properly, they should be applied as early as possible in the view lifecycle. This prevents scenarios where Session Replay might process a view before applying the overrides.", - "string": "To ensure overrides are recognized properly, they should be applied as early as possible in the view lifecycle. This prevents scenarios where Session Replay might process a view before applying the overrides." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides affect views and their descendants. This means that even if an override is applied to a view where it might have no immediate effect (for example, applying an image override to a text input), the override still applies to all child views.", - "string": "Privacy overrides affect views and their descendants. This means that even if an override is applied to a view where it might have no immediate effect (for example, applying an image override to a text input), the override still applies to all child views." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": true, - "attributes": { - "content": "Overrides operate using a \"nearest parent\" principle: if a view has an override, it uses that setting. Otherwise, it inherits the privacy level from the closest parent in the hierarchy with an override. If no parent has an override, the view defaults to the application's general masking level.", - "string": "Overrides operate using a \"nearest parent\" principle: if a view has an override, it uses that setting. Otherwise, it inherits the privacy level from the closest parent in the hierarchy with an override. If no parent has an override, the view defaults to the application's general masking level." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 460, - 461 - ], - "inline": false, - "attributes": { - "content": "Android or iOS", - "string": "Android or iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 460 - }, - "end": { - "line": 461 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 461, - 462, - 799, - 800 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": true, - "attributes": { - "content": "Text and input override", - "string": "Text and input override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 465, - 466 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 465 - }, - "end": { - "line": 466 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 466, - 467, - 486, - 487 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in Android classic view, use ", - "string": "To override text and input privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayTextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 469, - 475 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.setSessionReplayTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n// Remove a text and input override from your view\nmyView.setSessionReplayTextAndInputPrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 469, - 475 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.setSessionReplayTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n// Remove a text and input override from your view\nmyView.setSessionReplayTextAndInputPrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 469 - }, - "end": { - "line": 475 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 469 - }, - "end": { - "line": 475 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in Jetpack Compose, use ", - "string": "To override text and input privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayTextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 478, - 486 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nText(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTextAndInputPrivacy(textAndInputPrivacy = TextAndInputPrivacy.MASK_SENSITIVE_INPUTS),\n text = \"Datadog\"\n)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 478, - 486 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nText(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTextAndInputPrivacy(textAndInputPrivacy = TextAndInputPrivacy.MASK_SENSITIVE_INPUTS),\n text = \"Datadog\"\n)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 478 - }, - "end": { - "line": 486 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 478 - }, - "end": { - "line": 486 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 466 - }, - "end": { - "line": 467 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 487, - 488 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 487 - }, - "end": { - "line": 488 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 489, - 490 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 489 - }, - "end": { - "line": 490 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 490, - 491, - 519, - 520 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in UIKit views, use ", - "string": "To override text and input privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.textAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 493, - 499 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = .maskSensitiveInputs\n// Remove a text and input override from your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 493, - 499 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = .maskSensitiveInputs\n// Remove a text and input override from your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 493 - }, - "end": { - "line": 499 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 493 - }, - "end": { - "line": 499 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in SwiftUI, wrap your content with ", - "string": "To override text and input privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "textAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": " parameter. You can combine this with other privacy settings in the same view for better performance.", - "string": " parameter. You can combine this with other privacy settings in the same view for better performance." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 502, - 519 - ], - "inline": false, - "attributes": { - "content": "struct ContentView: View {\n @State private var username = \"\"\n @State private var password = \"\"\n \n var body: some View {\n // Set a text and input override on your SwiftUI content\n SessionReplayPrivacyView(textAndInputPrivacy: .maskAllInputs) {\n VStack {\n Text(\"User Profile\")\n TextField(\"Enter name\", text: $username)\n SecureField(\"Password\", text: $password)\n }\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 502, - 519 - ], - "inline": false, - "attributes": { - "content": "struct ContentView: View {\n @State private var username = \"\"\n @State private var password = \"\"\n \n var body: some View {\n // Set a text and input override on your SwiftUI content\n SessionReplayPrivacyView(textAndInputPrivacy: .maskAllInputs) {\n VStack {\n Text(\"User Profile\")\n TextField(\"Enter name\", text: $username)\n SecureField(\"Password\", text: $password)\n }\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 502 - }, - "end": { - "line": 519 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 502 - }, - "end": { - "line": 519 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 490 - }, - "end": { - "line": 491 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 520, - 521 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 520 - }, - "end": { - "line": 521 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": true, - "attributes": { - "content": "Image override", - "string": "Image override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 524, - 525 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 524 - }, - "end": { - "line": 525 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 525, - 526, - 546, - 547 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in Android classic view, use ", - "string": "To override image privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 528, - 534 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.setSessionReplayImagePrivacy(ImagePrivacy.MASK_ALL)\n// Remove an image override from your view\nmyView.setSessionReplayImagePrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 528, - 534 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.setSessionReplayImagePrivacy(ImagePrivacy.MASK_ALL)\n// Remove an image override from your view\nmyView.setSessionReplayImagePrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 528 - }, - "end": { - "line": 534 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 528 - }, - "end": { - "line": 534 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in Jetpack Compose, use ", - "string": "To override image privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 537, - 546 - ], - "inline": false, - "attributes": { - "content": "// Set a image privacy override on your image\nImage(modifier = Modifier\n .padding(16.dp)\n .sessionReplayImagePrivacy(imagePrivacy = ImagePrivacy.MASK_ALL),\n painter = painterResource(id = R.drawable.ic_datadog),\n contentDescription = null\n)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 537, - 546 - ], - "inline": false, - "attributes": { - "content": "// Set a image privacy override on your image\nImage(modifier = Modifier\n .padding(16.dp)\n .sessionReplayImagePrivacy(imagePrivacy = ImagePrivacy.MASK_ALL),\n painter = painterResource(id = R.drawable.ic_datadog),\n contentDescription = null\n)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 537 - }, - "end": { - "line": 546 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 537 - }, - "end": { - "line": 546 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 525 - }, - "end": { - "line": 526 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 547, - 548 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 547 - }, - "end": { - "line": 548 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 549, - 550 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 549 - }, - "end": { - "line": 550 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 550, - 551, - 586, - 587 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in UIKit views, use ", - "string": "To override image privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.imagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 553, - 559 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = .maskAll\n// Remove an image override from your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 553, - 559 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = .maskAll\n// Remove an image override from your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 553 - }, - "end": { - "line": 559 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 553 - }, - "end": { - "line": 559 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in SwiftUI, wrap your content with ", - "string": "To override image privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "imagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": " parameter.", - "string": " parameter." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 562, - 586 - ], - "inline": false, - "attributes": { - "content": "struct ProfileView: View {\n let profileImageURL = URL(string: \"https://example.com/profile.jpg\")\n \n var body: some View {\n // Set an image privacy override on your SwiftUI content\n SessionReplayPrivacyView(imagePrivacy: .maskAll) {\n VStack {\n Image(\"userAvatar\")\n .resizable()\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n AsyncImage(url: profileImageURL) { image in\n image.resizable()\n } placeholder: {\n ProgressView()\n }\n .frame(width: 100, height: 100)\n }\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 562, - 586 - ], - "inline": false, - "attributes": { - "content": "struct ProfileView: View {\n let profileImageURL = URL(string: \"https://example.com/profile.jpg\")\n \n var body: some View {\n // Set an image privacy override on your SwiftUI content\n SessionReplayPrivacyView(imagePrivacy: .maskAll) {\n VStack {\n Image(\"userAvatar\")\n .resizable()\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n AsyncImage(url: profileImageURL) { image in\n image.resizable()\n } placeholder: {\n ProgressView()\n }\n .frame(width: 100, height: 100)\n }\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 562 - }, - "end": { - "line": 586 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 562 - }, - "end": { - "line": 586 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 550 - }, - "end": { - "line": 551 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 587, - 588 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 587 - }, - "end": { - "line": 588 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": true, - "attributes": { - "content": "Touch override", - "string": "Touch override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 591, - 592 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 591 - }, - "end": { - "line": 592 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 592, - 593, - 612, - 613 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in Android classic view, use ", - "string": "To override touch privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayTouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 595, - 601 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nview.setSessionReplayTouchPrivacy(TouchPrivacy.HIDE)\n// Remove a touch override from your view\nview.setSessionReplayTouchPrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 595, - 601 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nview.setSessionReplayTouchPrivacy(TouchPrivacy.HIDE)\n// Remove a touch override from your view\nview.setSessionReplayTouchPrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 595 - }, - "end": { - "line": 601 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 595 - }, - "end": { - "line": 601 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in Jetpack Compose, use ", - "string": "To override touch privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayTouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 604, - 612 - ], - "inline": false, - "attributes": { - "content": "// Set a touch privacy override on your view\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTouchPrivacy(touchPrivacy = TouchPrivacy.HIDE)){\n // Content\n}\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 604, - 612 - ], - "inline": false, - "attributes": { - "content": "// Set a touch privacy override on your view\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTouchPrivacy(touchPrivacy = TouchPrivacy.HIDE)){\n // Content\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 604 - }, - "end": { - "line": 612 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 604 - }, - "end": { - "line": 612 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 592 - }, - "end": { - "line": 593 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 613, - 614 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 613 - }, - "end": { - "line": 614 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 615, - 616 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 615 - }, - "end": { - "line": 616 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 616, - 617, - 653, - 654 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in UIKit views, use ", - "string": "To override touch privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.touchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 619, - 625 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = .hide\n// Remove a touch override from your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 619, - 625 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = .hide\n// Remove a touch override from your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 619 - }, - "end": { - "line": 625 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 619 - }, - "end": { - "line": 625 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in SwiftUI, wrap your content with ", - "string": "To override touch privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "touchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": " parameter.", - "string": " parameter." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 628, - 653 - ], - "inline": false, - "attributes": { - "content": "struct SettingsView: View {\n @State private var sliderValue = 0.5\n \n var body: some View {\n // Set a touch privacy override on your SwiftUI content\n SessionReplayPrivacyView(touchPrivacy: .hide) {\n VStack(spacing: 20) {\n Button(\"Some Action\") {\n // Handle action\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n \n Slider(value: $sliderValue, in: 0...1) {\n Text(\"Some Value\")\n }\n }\n .padding()\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 628, - 653 - ], - "inline": false, - "attributes": { - "content": "struct SettingsView: View {\n @State private var sliderValue = 0.5\n \n var body: some View {\n // Set a touch privacy override on your SwiftUI content\n SessionReplayPrivacyView(touchPrivacy: .hide) {\n VStack(spacing: 20) {\n Button(\"Some Action\") {\n // Handle action\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n \n Slider(value: $sliderValue, in: 0...1) {\n Text(\"Some Value\")\n }\n }\n .padding()\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 628 - }, - "end": { - "line": 653 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 628 - }, - "end": { - "line": 653 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 616 - }, - "end": { - "line": 617 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 654, - 655 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 654 - }, - "end": { - "line": 655 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": true, - "attributes": { - "content": "Hidden elements override", - "string": "Hidden elements override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": "For sensitive elements that need to be completely hidden, use the ", - "string": "For sensitive elements that need to be completely hidden, use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": " setting.", - "string": " setting." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": "When an element is ", - "string": "When an element is " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": ", it is replaced by a placeholder labeled as \"Hidden\" in the replay, and its subviews are not recorded.", - "string": ", it is replaced by a placeholder labeled as \"Hidden\" in the replay, and its subviews are not recorded." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": ": Marking a view as ", - "string": ": Marking a view as " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": " does not prevent touch interactions from being recorded on that element. To hide touch interactions as well, use the ", - "string": " does not prevent touch interactions from being recorded on that element. To hide touch interactions as well, use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "href": "#touch-override" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "touch override", - "string": "touch override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": " in addition to marking the element as hidden.", - "string": " in addition to marking the element as hidden." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 664, - 665 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 664 - }, - "end": { - "line": 665 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 665, - 666, - 684, - 685 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayHidden(hide = true)" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " to hide the element. Setting ", - "string": " to hide the element. Setting " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " to ", - "string": " to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "false" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 668, - 674 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.setSessionReplayHidden(hide = true)\n// Remove the override from the view\nmyView.setSessionReplayHidden(hide = false)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 668, - 674 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.setSessionReplayHidden(hide = true)\n// Remove the override from the view\nmyView.setSessionReplayHidden(hide = false)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 668 - }, - "end": { - "line": 674 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 668 - }, - "end": { - "line": 674 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayHide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": " to hide the element in Jetpack Compose.", - "string": " to hide the element in Jetpack Compose." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 676, - 684 - ], - "inline": false, - "attributes": { - "content": "// Mark a Column as hidden\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayHide(hide = true)){\n // Content\n}\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 676, - 684 - ], - "inline": false, - "attributes": { - "content": "// Mark a Column as hidden\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayHide(hide = true)){\n // Content\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 676 - }, - "end": { - "line": 684 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 676 - }, - "end": { - "line": 684 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 665 - }, - "end": { - "line": 666 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 685, - 686 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 685 - }, - "end": { - "line": 686 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 687, - 688 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 687 - }, - "end": { - "line": 688 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 688, - 689, - 796, - 797 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": "In UIKit views, use ", - "string": "In UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": " to hide the element:", - "string": " to hide the element:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 691, - 697 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.dd.sessionReplayOverrides.hide = true\n// Remove the override from the view\nmyView.dd.sessionReplayOverrides.hide = false\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 691, - 697 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.dd.sessionReplayOverrides.hide = true\n// Remove the override from the view\nmyView.dd.sessionReplayOverrides.hide = false\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 691 - }, - "end": { - "line": 697 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 691 - }, - "end": { - "line": 697 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "In SwiftUI, wrap your content with ", - "string": "In SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": " and set the ", - "string": " and set the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": " parameter to ", - "string": " parameter to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "true" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": ":", - "string": ":" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 700, - 726 - ], - "inline": false, - "attributes": { - "content": "struct PaymentView: View {\n @State private var cardNumber = \"\"\n @State private var cvv = \"\"\n \n var body: some View {\n // Mark SwiftUI content as hidden\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Payment Information\")\n .font(.headline)\n \n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n SecureField(\"CVV\", text: $cvv)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n Text(\"Card ending in 1234\")\n .foregroundColor(.secondary)\n }\n .padding()\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 700, - 726 - ], - "inline": false, - "attributes": { - "content": "struct PaymentView: View {\n @State private var cardNumber = \"\"\n @State private var cvv = \"\"\n \n var body: some View {\n // Mark SwiftUI content as hidden\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Payment Information\")\n .font(.headline)\n \n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n SecureField(\"CVV\", text: $cvv)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n Text(\"Card ending in 1234\")\n .foregroundColor(.secondary)\n }\n .padding()\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 700 - }, - "end": { - "line": 726 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 700 - }, - "end": { - "line": 726 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": ": Setting the ", - "string": ": Setting the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " override to ", - "string": " override to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " or ", - "string": " or " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "false" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " has the same effect—it disables the override.", - "string": " has the same effect—it disables the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": true, - "attributes": { - "content": "Combining privacy settings in SwiftUI", - "string": "Combining privacy settings in SwiftUI" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "Combine multiple privacy settings in one ", - "string": "Combine multiple privacy settings in one " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": " for different configurations. Datadog recommends ", - "string": " for different configurations. Datadog recommends " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "combining options in a single view rather than nesting multiple instances", - "string": "combining options in a single view rather than nesting multiple instances" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": " to avoid adding unnecessary view layers.", - "string": " to avoid adding unnecessary view layers." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 733, - 794 - ], - "inline": false, - "attributes": { - "content": "struct UserProfileView: View {\n @State private var userBio = \"\"\n @State private var cardNumber = \"\"\n \n var body: some View {\n VStack(spacing: 30) {\n // Preferred: Combine multiple privacy settings in one view\n SessionReplayPrivacyView(\n textAndInputPrivacy: .maskSensitiveInputs,\n imagePrivacy: .maskNonBundledOnly,\n touchPrivacy: .show\n ) {\n VStack(spacing: 20) {\n // User profile section\n HStack {\n AsyncImage(url: URL(string: \"https://example.com/profile.jpg\")) { image in\n image.resizable()\n } placeholder: {\n Circle().fill(Color.gray.opacity(0.3))\n }\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n VStack(alignment: .leading) {\n Text(\"John Doe\")\n .font(.headline)\n TextField(\"Enter bio\", text: $userBio)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n }\n \n Button(\"Save Profile\") {\n // Save action\n print(\"Profile saved\")\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n }\n .padding()\n }\n \n // For completely different privacy requirements, use separate `SessionReplayPrivacyView` instances\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Credit Card Information\")\n .font(.headline)\n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n .padding()\n .background(Color.gray.opacity(0.1))\n .cornerRadius(8)\n }\n }\n .padding()\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 733, - 794 - ], - "inline": false, - "attributes": { - "content": "struct UserProfileView: View {\n @State private var userBio = \"\"\n @State private var cardNumber = \"\"\n \n var body: some View {\n VStack(spacing: 30) {\n // Preferred: Combine multiple privacy settings in one view\n SessionReplayPrivacyView(\n textAndInputPrivacy: .maskSensitiveInputs,\n imagePrivacy: .maskNonBundledOnly,\n touchPrivacy: .show\n ) {\n VStack(spacing: 20) {\n // User profile section\n HStack {\n AsyncImage(url: URL(string: \"https://example.com/profile.jpg\")) { image in\n image.resizable()\n } placeholder: {\n Circle().fill(Color.gray.opacity(0.3))\n }\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n VStack(alignment: .leading) {\n Text(\"John Doe\")\n .font(.headline)\n TextField(\"Enter bio\", text: $userBio)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n }\n \n Button(\"Save Profile\") {\n // Save action\n print(\"Profile saved\")\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n }\n .padding()\n }\n \n // For completely different privacy requirements, use separate `SessionReplayPrivacyView` instances\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Credit Card Information\")\n .font(.headline)\n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n .padding()\n .background(Color.gray.opacity(0.1))\n .cornerRadius(8)\n }\n }\n .padding()\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 733 - }, - "end": { - "line": 794 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 733 - }, - "end": { - "line": 794 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": ": Each ", - "string": ": Each " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": " introduces an additional native view layer. For optimal performance, prefer combining privacy settings instead of nesting multiple privacy views when possible.", - "string": " introduces an additional native view layer. For optimal performance, prefer combining privacy settings instead of nesting multiple privacy views when possible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 688 - }, - "end": { - "line": 689 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 797, - 798 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 797 - }, - "end": { - "line": 798 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 461 - }, - "end": { - "line": 462 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 800, - 801 - ], - "inline": false, - "attributes": { - "content": "end iOS or Android", - "string": "end iOS or Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 800 - }, - "end": { - "line": 801 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 802, - 803 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 802 - }, - "end": { - "line": 803 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 803, - 804, - 957, - 958 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides are fully supported in React Native starting from version ", - "string": "Privacy overrides are fully supported in React Native starting from version " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "2.8.0" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": " of the Datadog ", - "string": " of the Datadog " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "React Native SDK", - "string": "React Native SDK" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": ". Although the underlying functionality is shared with native Android and iOS platforms, the integration in React Native is designed to align with common React patterns.", - "string": ". Although the underlying functionality is shared with native Android and iOS platforms, the integration in React Native is designed to align with common React patterns." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": true, - "attributes": { - "content": "Behavior consistency", - "string": "Behavior consistency" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": true, - "attributes": { - "content": "React Native's implementation is built on the same foundation as the native Android and iOS SDKs. As a result, you can rely on the privacy features behaving the same way across all three platforms.", - "string": "React Native's implementation is built on the same foundation as the native Android and iOS SDKs. As a result, you can rely on the privacy features behaving the same way across all three platforms." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": true, - "attributes": { - "content": "Usage with ", - "string": "Usage with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": "The SDK provides a set of React components under the ", - "string": "The SDK provides a set of React components under the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": " namespace, which are used to configure privacy settings within your React Native application.", - "string": " namespace, which are used to configure privacy settings within your React Native application." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": "To use them, import ", - "string": "To use them, import " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": " as follows:", - "string": " as follows:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 816, - 819 - ], - "inline": false, - "attributes": { - "content": "import { SessionReplayView } from \"@datadog/mobile-react-native-session-replay\";\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 816, - 819 - ], - "inline": false, - "attributes": { - "content": "import { SessionReplayView } from \"@datadog/mobile-react-native-session-replay\";\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 816 - }, - "end": { - "line": 819 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 816 - }, - "end": { - "line": 819 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": true, - "attributes": { - "content": "This import provides access to four privacy-focused components.", - "string": "This import provides access to four privacy-focused components." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": true, - "attributes": { - "content": "Each of these components behaves like a regular React Native View, meaning they can be used anywhere you would typically use a View, with the addition of privacy-related behavior.", - "string": "Each of these components behaves like a regular React Native View, meaning they can be used anywhere you would typically use a View, with the addition of privacy-related behavior." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 824, - 825, - 849, - 850 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": true, - "attributes": { - "content": "Component", - "string": "Component" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": true, - "attributes": { - "content": "Description", - "string": "Description" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": true, - "attributes": { - "content": "Properties", - "string": "Properties" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.Privacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": true, - "attributes": { - "content": "Adds support for customizing text, image, and touch privacy settings for its children.", - "string": "Adds support for customizing text, image, and touch privacy settings for its children." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 831, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 836 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": "textAndInputPrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L43" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacyLevel", - "string": "TextAndInputPrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": "imagePrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L15" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacyLevel", - "string": "ImagePrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": "touchPrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L32" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacyLevel", - "string": "TouchPrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": "hide?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": "boolean" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 831 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.MaskAll" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": "Applies the most restrictive privacy settings (", - "string": "Applies the most restrictive privacy settings (" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": "MaskAll" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": " or platform equivalent) to all children.", - "string": " or platform equivalent) to all children." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 839, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": "showTouch?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": "boolean" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 839 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.MaskNone" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": "Applies the least restrictive settings (", - "string": "Applies the least restrictive settings (" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": "MaskNone" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": " or platform equivalent). All child components are visible.", - "string": " or platform equivalent). All child components are visible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": true, - "attributes": { - "marker": "_" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": true, - "attributes": { - "content": "(No additional properties)", - "string": "(No additional properties)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "em", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 845 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.Hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": true, - "attributes": { - "content": "Completely hides all child components from session replay.", - "string": "Completely hides all child components from session replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": true, - "attributes": { - "marker": "_" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": true, - "attributes": { - "content": "(No additional properties)", - "string": "(No additional properties)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "em", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 824 - }, - "end": { - "line": 825 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": true, - "attributes": { - "content": "Integration approaches", - "string": "Integration approaches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": true, - "attributes": { - "content": "There are two ways to apply privacy overrides in React Native:", - "string": "There are two ways to apply privacy overrides in React Native:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 857 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": "Wrap specific components with a privacy-focused ", - "string": "Wrap specific components with a privacy-focused " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": " to target only certain elements, or", - "string": " to target only certain elements, or" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 857 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "Replace an entire ", - "string": "Replace an entire " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": " with a ", - "string": " with a " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": " to apply privacy settings to a whole section of your UI.", - "string": " to apply privacy settings to a whole section of your UI." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 857 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 857 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": true, - "attributes": { - "content": "This flexibility lets you control which parts of your app are masked or visible in session replays.", - "string": "This flexibility lets you control which parts of your app are masked or visible in session replays." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 859, - 860, - 924, - 925 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 861, - 862, - 895, - 896 - ], - "inline": false, - "attributes": { - "label": "As wrappers" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": " components to wrap specific parts of your UI where you want to override privacy settings.", - "string": " components to wrap specific parts of your UI where you want to override privacy settings." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": true, - "attributes": { - "content": "For example, going from:", - "string": "For example, going from:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 866, - 878 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 866, - 878 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 866 - }, - "end": { - "line": 878 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 866 - }, - "end": { - "line": 878 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": true, - "attributes": { - "content": "To:", - "string": "To:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 881, - 895 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n \n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 881, - 895 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n \n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 881 - }, - "end": { - "line": 895 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 881 - }, - "end": { - "line": 895 - } - } - } - ], - "type": "tag", - "tag": "tab", - "annotations": [ - { - "type": "attribute", - "name": "label", - "value": "As wrappers" - } - ], - "slots": {}, - "location": { - "start": { - "line": 861 - }, - "end": { - "line": 862 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 897, - 898, - 923, - 924 - ], - "inline": false, - "attributes": { - "label": "As replacements" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "Replace an existing ", - "string": "Replace an existing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": " with a ", - "string": " with a " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": " component directly. This is ideal when a view already encapsulates the section of the UI that needs modified privacy behavior.", - "string": " component directly. This is ideal when a view already encapsulates the section of the UI that needs modified privacy behavior." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": true, - "attributes": { - "content": "For example, instead of:", - "string": "For example, instead of:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 902, - 911 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 902, - 911 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 902 - }, - "end": { - "line": 911 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 902 - }, - "end": { - "line": 911 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": true, - "attributes": { - "content": "You can use:", - "string": "You can use:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 914, - 923 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 914, - 923 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 914 - }, - "end": { - "line": 923 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 914 - }, - "end": { - "line": 923 - } - } - } - ], - "type": "tag", - "tag": "tab", - "annotations": [ - { - "type": "attribute", - "name": "label", - "value": "As replacements" - } - ], - "slots": {}, - "location": { - "start": { - "line": 897 - }, - "end": { - "line": 898 - } - } - } - ], - "type": "tag", - "tag": "tabs", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 859 - }, - "end": { - "line": 860 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": true, - "attributes": { - "content": "Combining privacy components", - "string": "Combining privacy components" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": "You can freely combine the ", - "string": "You can freely combine the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": " components to apply different privacy settings to distinct sections of your UI. This is especially useful when you need a mix of hidden elements, masked input fields, and visible content within the same screen.", - "string": " components to apply different privacy settings to distinct sections of your UI. This is especially useful when you need a mix of hidden elements, masked input fields, and visible content within the same screen." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": true, - "attributes": { - "content": "For example:", - "string": "For example:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 932, - 957 - ], - "inline": false, - "attributes": { - "content": "import { ImagePrivacyLevel, SessionReplayView, TextAndInputPrivacyLevel, TouchPrivacyLevel } from \"@datadog/mobile-react-native-session-replay\";\n\nconst App = () => {\n return (\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 932, - 957 - ], - "inline": false, - "attributes": { - "content": "import { ImagePrivacyLevel, SessionReplayView, TextAndInputPrivacyLevel, TouchPrivacyLevel } from \"@datadog/mobile-react-native-session-replay\";\n\nconst App = () => {\n return (\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 932 - }, - "end": { - "line": 957 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 932 - }, - "end": { - "line": 957 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 803 - }, - "end": { - "line": 804 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 958, - 959 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 958 - }, - "end": { - "line": 959 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": true, - "attributes": { - "content": "Notes on WebViews", - "string": "Notes on WebViews" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 965 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides, aside from the ", - "string": "Privacy overrides, aside from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": " and ", - "string": " and " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "touch" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": " options, are not supported for WebViews. You can primarily manage their privacy using the ", - "string": " options, are not supported for WebViews. You can primarily manage their privacy using the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "href": "/real_user_monitoring/session_replay/privacy_options" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "browser SDK privacy settings", - "string": "browser SDK privacy settings" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": ".", - "string": "." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 965 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "When a WebView is marked as ", - "string": "When a WebView is marked as " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": ", it is replaced by a placeholder in the replay. However, the WebView itself continues to collect and send data. To avoid this, it is recommended to use ", - "string": ", it is replaced by a placeholder in the replay. However, the WebView itself continues to collect and send data. To avoid this, it is recommended to use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "href": "/real_user_monitoring/session_replay/privacy_options" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "browser SDK privacy settings", - "string": "browser SDK privacy settings" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": " for managing WebView privacy, as they provide more targeted control.", - "string": " for managing WebView privacy, as they provide more targeted control." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 965 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 965 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": true, - "attributes": { - "content": "How and what data is masked", - "string": "How and what data is masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": true, - "attributes": { - "content": "This section describes how the Datadog recorder handles masking based on data type and how that data is defined.", - "string": "This section describes how the Datadog recorder handles masking based on data type and how that data is defined." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": true, - "attributes": { - "content": "Text masking strategies", - "string": "Text masking strategies" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": true, - "attributes": { - "content": "Depending on how you've configured your privacy settings, the type of text, and sensitivity of data, Datadog's masking rules apply different strategies to different types of text fields.", - "string": "Depending on how you've configured your privacy settings, the type of text, and sensitivity of data, Datadog's masking rules apply different strategies to different types of text fields." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Text masking strategy", - "string": "Text masking strategy" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Description", - "string": "Description" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Example", - "string": "Example" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "The text is revealed in the session replay", - "string": "The text is revealed in the session replay" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "Space-preserving mask", - "string": "Space-preserving mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "Each visible character is replaced with a lowercase \"x\"", - "string": "Each visible character is replaced with a lowercase \"x\"" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "\"xxxxx xxxxx\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "The entire text field is replaced with a constant of three asterisks (***)", - "string": "The entire text field is replaced with a constant of three asterisks (***)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "\"***\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": "With the above text strategies in mind, you have a few different options if you want to override the default privacy rule of ", - "string": "With the above text strategies in mind, you have a few different options if you want to override the default privacy rule of " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": "mask" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": " in your configuration.", - "string": " in your configuration." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how Datadog applies different text masking strategies, using the rules you set up in your configuration, to the below text types.", - "string": "The following chart shows how Datadog applies different text masking strategies, using the rules you set up in your configuration, to the below text types." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "href": "#sensitive-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Sensitive text", - "string": "Sensitive text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "href": "#input-and-option-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Input and option text", - "string": "Input and option text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "href": "#static-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "Static text", - "string": "Static text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "Space-preserving mask", - "string": "Space-preserving mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "href": "#hint-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "Hint text", - "string": "Hint text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": true, - "attributes": { - "content": "Text masking definitions", - "string": "Text masking definitions" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": true, - "attributes": { - "content": "Find below a description of how Datadog's recorder treats each text type.", - "string": "Find below a description of how Datadog's recorder treats each text type." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": true, - "attributes": { - "content": "Sensitive text", - "string": "Sensitive text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": { - "content": "Sensitive text includes passwords, e-mails, and phone numbers marked in a platform-specific way,", - "string": "Sensitive text includes passwords, e-mails, and phone numbers marked in a platform-specific way," - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": { - "content": "and other forms of sensitivity in text available to each platform.", - "string": "and other forms of sensitivity in text available to each platform." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 998, - 999 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 998 - }, - "end": { - "line": 999 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 999, - 1000, - 1004, - 1005 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in:", - "string": "Sensitive text can be detected in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1004 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 999 - }, - "end": { - "line": 1000 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1006, - 1007 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1006 - }, - "end": { - "line": 1007 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1007, - 1008, - 1015, - 1016 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in:", - "string": "Sensitive text can be detected in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1015 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": true, - "attributes": { - "content": "Credit card numbers", - "string": "Credit card numbers" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": true, - "attributes": { - "content": "One-time codes", - "string": "One-time codes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1007 - }, - "end": { - "line": 1008 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1017, - 1018 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1017 - }, - "end": { - "line": 1018 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1018, - 1019, - 1043, - 1044 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in the following components.", - "string": "Sensitive text can be detected in the following components." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1021, - 1022, - 1042, - 1043 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": true, - "attributes": { - "content": "Component", - "string": "Component" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1027 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1030 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": true, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1033 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1036 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": true, - "attributes": { - "content": "Credit card numbers", - "string": "Credit card numbers" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1039 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": true, - "attributes": { - "content": "One-time codes", - "string": "One-time codes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1021 - }, - "end": { - "line": 1022 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1018 - }, - "end": { - "line": 1019 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": true, - "attributes": { - "content": "Input and option text", - "string": "Input and option text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": true, - "attributes": { - "content": "Input and option text is text entered by the user with a keyboard or other text-input device, or a custom (non-generic) value in selection elements.", - "string": "Input and option text is text entered by the user with a keyboard or other text-input device, or a custom (non-generic) value in selection elements." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": true, - "attributes": { - "content": "This includes the below.", - "string": "This includes the below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1051, - 1052 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1051 - }, - "end": { - "line": 1052 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1052, - 1053, - 1063, - 1064 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1063 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1054 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1054 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1054 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1054 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1056 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1056 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1057 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1057 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1057 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1057 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1059 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": true, - "attributes": { - "content": "Value Picker", - "string": "Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": true, - "attributes": { - "content": "Segment", - "string": "Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1059 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1060 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1060 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1060 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1060 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1063 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Text Field and Text View (not entered by the user)", - "string": "Placeholder (hint) texts in Text Field and Text View (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": true, - "attributes": { - "content": "Non-editable texts in Text View", - "string": "Non-editable texts in Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1052 - }, - "end": { - "line": 1053 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1065, - 1066 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1065 - }, - "end": { - "line": 1066 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1066, - 1067, - 1075, - 1076 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1075 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1068 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1068 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1068 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1068 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1069 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1070 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1070 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1070 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1070 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1072 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": true, - "attributes": { - "content": "Value Picker", - "string": "Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": true, - "attributes": { - "content": "Drop Down List", - "string": "Drop Down List" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1072 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1073 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1073 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1073 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1073 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1075 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Edit Text (not entered by the user)", - "string": "Placeholder (hint) texts in Edit Text (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1066 - }, - "end": { - "line": 1067 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1077, - 1078 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1077 - }, - "end": { - "line": 1078 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1078, - 1079, - 1091, - 1092 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1091 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1080 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1080 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1080 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1080 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1083 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": true, - "attributes": { - "content": "Text Field (iOS)", - "string": "Text Field (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": true, - "attributes": { - "content": "Text View (iOS)", - "string": "Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": true, - "attributes": { - "content": "Edit Text (Android)", - "string": "Edit Text (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1083 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1084 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1084 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1084 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1084 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1087 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": true, - "attributes": { - "content": "Value Picker (iOS + Android)", - "string": "Value Picker (iOS + Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": true, - "attributes": { - "content": "Segment (iOS)", - "string": "Segment (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": true, - "attributes": { - "content": "Drop Down List (Android)", - "string": "Drop Down List (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1087 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1088 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1088 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1088 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1088 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1091 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Text Field, Text View and Edit Text (not entered by the user)", - "string": "Placeholder (hint) texts in Text Field, Text View and Edit Text (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": true, - "attributes": { - "content": "Non-editable texts in Text View (iOS).", - "string": "Non-editable texts in Text View (iOS)." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1078 - }, - "end": { - "line": 1079 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": true, - "attributes": { - "content": "Static text", - "string": "Static text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": true, - "attributes": { - "content": "Static text is any text that is not directly entered by the user. This includes the below.", - "string": "Static text is any text that is not directly entered by the user. This includes the below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": true, - "attributes": { - "content": "All texts in:", - "string": "All texts in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1098, - 1099 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1098 - }, - "end": { - "line": 1099 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1099, - 1100, - 1104, - 1105 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1104 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": true, - "attributes": { - "content": "Texts in non-editable Text View", - "string": "Texts in non-editable Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in the date and time picker", - "string": "Month, day, and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar", - "string": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1099 - }, - "end": { - "line": 1100 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1106, - 1107 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1106 - }, - "end": { - "line": 1107 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1107, - 1108, - 1112, - 1113 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1112 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": true, - "attributes": { - "content": "Checkbox and Radio Button titles", - "string": "Checkbox and Radio Button titles" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in the date and time picker", - "string": "Month, day, and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Tabs", - "string": "Other controls, not considered as \"user input elements\", such as Tabs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1107 - }, - "end": { - "line": 1108 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1114, - 1115 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1114 - }, - "end": { - "line": 1115 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1115, - 1116, - 1121, - 1122 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1121 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": true, - "attributes": { - "content": "Checkbox and Radio Button titles (Android)", - "string": "Checkbox and Radio Button titles (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": true, - "attributes": { - "content": "Texts in non-editable Text View (iOS)", - "string": "Texts in non-editable Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": true, - "attributes": { - "content": "Month, day and year labels in the date and time picker", - "string": "Month, day and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar (iOS), or Tabs (Android)", - "string": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar (iOS), or Tabs (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1115 - }, - "end": { - "line": 1116 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": true, - "attributes": { - "content": "Hint text", - "string": "Hint text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": true, - "attributes": { - "content": "Hint text is static text in editable text elements or option selectors that is displayed when no value is given. This includes:", - "string": "Hint text is static text in editable text elements or option selectors that is displayed when no value is given. This includes:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1126, - 1127 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1126 - }, - "end": { - "line": 1127 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1127, - 1128, - 1130, - 1131 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1130 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text Field", - "string": "Placeholders in Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text View", - "string": "Placeholders in Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1127 - }, - "end": { - "line": 1128 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1132, - 1133 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1132 - }, - "end": { - "line": 1133 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1133, - 1134, - 1136, - 1137 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1136 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": true, - "attributes": { - "content": "Hints in Edit Text", - "string": "Hints in Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": true, - "attributes": { - "content": "Prompts in Drop Down lists", - "string": "Prompts in Drop Down lists" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1133 - }, - "end": { - "line": 1134 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1138, - 1139 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1138 - }, - "end": { - "line": 1139 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1139, - 1140, - 1143, - 1144 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1143 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text Field (iOS), Text View (iOS)", - "string": "Placeholders in Text Field (iOS), Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": true, - "attributes": { - "content": "Hints in Edit Text (Android)", - "string": "Hints in Edit Text (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": true, - "attributes": { - "content": "Prompts in Drop Down lists (Android)", - "string": "Prompts in Drop Down lists (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1139 - }, - "end": { - "line": 1140 + "ast-str-cf77a210-8bdd-4954-95fb-dab7e2deba53": { + "string": "Options de confidentialité de Mobile Session Replay" } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": false, - "attributes": { - "level": 3 }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": true, - "attributes": { - "content": "Appearance masking", - "string": "Appearance masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different appearance masking strategies, using the rules you set up in your configuration, to the below text types.", - "string": "The following chart shows how we apply different appearance masking strategies, using the rules you set up in your configuration, to the below text types." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": { - "href": "#revealing-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes", - "string": "Revealing attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": true, - "attributes": { - "href": "#other-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": true, - "attributes": { - "content": "Other attributes", - "string": "Other attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1153 + "description": { + "ast-str-5c1d73d9-4393-4d1a-a7de-55de0b118877": { + "string": "Configurer des options de confidentialité pour Mobile Session Replay." } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": false, - "attributes": { - "level": 4 }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes", - "string": "Revealing attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes are attributes that can reveal or suggest the value of input elements and can be used to infer a user's input or selection.", - "string": "Revealing attributes are attributes that can reveal or suggest the value of input elements and can be used to infer a user's input or selection." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": true, - "attributes": { - "content": "This includes:", - "string": "This includes:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-7783691c-f46e-4c9b-b0ec-ee8d288c7337": { + "string": "Session Replay sur mobile" } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1159, - 1160 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1159 - }, - "end": { - "line": 1160 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1160, - 1161, - 1169, - 1170 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } + "tag": { + "ast-str-d5affb81-aca0-40fa-8c23-16f0d059f758": { + "string": "Documentation" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1166 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": true, - "attributes": { - "content": "Background of selected option in Segment", - "string": "Background of selected option in Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": true, - "attributes": { - "content": "Circle surrounding the selected date in a Date Picker", - "string": "Circle surrounding the selected date in a Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1166 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1165 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1165 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1165 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1165 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1166 - } + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-c868b0cd-784e-42f2-be58-7983427d84ea": { + "string": "Impact de Mobile Session Replay sur les performances des applications" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 }, - "end": { - "line": 1166 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } + "tag": { + "ast-str-2a10486f-3901-4eb7-b003-20cc7d23f1ee": { + "string": "Documentation" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1169 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": true, - "attributes": { - "content": "The color of a label rendering the selected date in Date Picker", - "string": "The color of a label rendering the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } + "2": { + "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", + "text": { + "ast-str-cd9f333d-13ac-4283-bba5-680fc1b94093": { + "string": "Installer et configurer Mobile Session Replay" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1160 - }, - "end": { - "line": 1161 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1171, - 1172 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1171 - }, - "end": { - "line": 1172 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1172, - 1173, - 1179, - 1180 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } + "tag": { + "ast-str-1e9dc563-9f7e-4a3c-b6ff-84303e00e726": { + "string": "Documentation" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1177 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": true, - "attributes": { - "content": "Selection mark in Checkbox", - "string": "Selection mark in Checkbox" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1177 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1176 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1176 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1176 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1176 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1177 - } + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-71010d1e-8251-4250-9cf0-5685318f478c": { + "string": "Dépanner Mobile Session Replay" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 }, - "end": { - "line": 1177 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } + "tag": { + "ast-str-1fef1fd1-f553-4651-b0c9-b05ec8549243": { + "string": "Documentation" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1172 - }, - "end": { - "line": 1173 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1181, - 1182 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1181 - }, - "end": { - "line": 1182 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1182, - 1183, - 1214, - 1215 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1185, - 1186, - 1200, - 1201 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": true, - "attributes": { - "content": "Background of selected option in Segment", - "string": "Background of selected option in Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": true, - "attributes": { - "content": "Circle surrounding the selected date in Date Picker", - "string": "Circle surrounding the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1194 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": true, - "attributes": { - "content": "Selection mark in Checkbox", - "string": "Selection mark in Checkbox" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": true, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1197 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1185 - }, - "end": { - "line": 1186 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1204, - 1205, - 1213, - 1214 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": true, - "attributes": { - "content": "The color of a label rendering the selected date in Date Picker", - "string": "The color of a label rendering the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1210 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1204 - }, - "end": { - "line": 1205 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1182 - }, - "end": { - "line": 1183 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1215, - 1216 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1215 - }, - "end": { - "line": 1216 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": true, - "attributes": { - "content": "Touch interactions", - "string": "Touch interactions" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 - }, - "end": { - "line": 1218 - } + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-fcfb9502-d1c1-4ec1-9898-667568c705e8": { + "string": "Session Replay" } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 }, - "end": { - "line": 1218 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 - }, - "end": { - "line": 1218 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different touch interaction strategies, using the rules you set up in your configuration, to the below text types. While any interaction that happens on an on-screen keyboard is masked, interactions with other elements are not masked.", - "string": "The following chart shows how we apply different touch interaction strategies, using the rules you set up in your configuration, to the below text types. While any interaction that happens on an on-screen keyboard is masked, interactions with other elements are not masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } + "tag": { + "ast-str-d4dec885-9a19-45eb-bf6d-2d227790d9cb": { + "string": "Documentation" } } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": true, - "attributes": { - "href": "#other-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": true, - "attributes": { - "content": "Other attributes", - "string": "Other attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": { - "href": "#on-screen-keyboard" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": { - "content": "On-screen keyboard", - "string": "On-screen keyboard" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 + } + }, + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": false, - "attributes": { - "level": 3, - "id": "image-masking-definition" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": true, - "attributes": { - "content": "Image masking ", - "string": "Image masking " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1226 - }, - "end": { - "line": 1227 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1226 - }, - "end": { - "line": 1227 - } - } - } - ], - "type": "heading", - "annotations": [ - { - "type": "attribute", - "name": "id", - "value": "image-masking-definition" - } - ], - "slots": {}, - "location": { - "start": { - "line": 1226 + "children": { + "translationListData": {} }, - "end": { - "line": 1227 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different image masking strategies:", - "string": "The following chart shows how we apply different image masking strategies:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" } } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1230, - 1231, - 1248, - 1249 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": true, - "attributes": { - "content": "Mask None", - "string": "Mask None" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1233, - 1237 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mask Large Only", - "string": "Mask Large Only" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mask Non Bundled Only", - "string": "Mask Non Bundled Only" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mark Large Only (Android) / Mask Non Bundled Only (iOS)", - "string": "Mark Large Only (Android) / Mask Non Bundled Only (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1233 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": true, - "attributes": { - "content": "Mask All", - "string": "Mask All" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": true, - "attributes": { - "content": "Content Image", - "string": "Content Image" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1243 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": true, - "attributes": { - "content": "System Image", - "string": "System Image" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1230 }, - "end": { - "line": 1231 - } + "slots": {}, + "location": "line 25-26" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index edb363a524cf8..1e30efe1a8a5c 100644 --- a/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -1,108 +1,132 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "Installer et configurer Mobile Session Replay" + "ast-str-485e15cc-0738-4baa-98b9-db3f8d752021": { + "string": "Installer et configurer Mobile Session Replay" + } }, "description": { - "string": "Installer et configurer Mobile Session Replay." + "ast-str-2b6994a7-5d24-4d85-8aca-c842cf4ee2ee": { + "string": "Installer et configurer Mobile Session Replay." + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-9213fa71-a375-4bf7-9b6a-8015d1282f36": { + "string": "Session Replay sur mobile" + } + }, + "tag": { + "ast-str-fa56b914-44fe-4871-940d-7603600b6274": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-379f506e-3d7a-4fea-b58f-490fec1cc61a": { + "string": "Impact de Mobile Session Replay sur les performances des applications" + } + }, + "tag": { + "ast-str-7a8e5a41-0f5a-45ec-a218-471f1f769312": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/privacy_options", - "text": { - "string": "Mobile Session Replay Privacy Options" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/privacy_options", + "text": { + "ast-str-a35c2181-a87a-4f27-a952-7e4a2196c747": { + "string": "Options de confidentialité de Mobile Session Replay" + } + }, + "tag": { + "ast-str-166d237b-a671-42e7-b59d-8653457db279": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-7202702e-8627-46a1-b4c1-9d7d0ce8f95a": { + "string": "Dépanner Mobile Session Replay" + } + }, + "tag": { + "ast-str-fd107bd1-b4a4-4fdd-89e5-1240a31a9f04": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/mobile_and_tv_monitoring/android/web_view_tracking", - "text": { - "string": "Web View Tracking" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-58e8f44c-bfb9-4d8b-b918-3b9216e1e522": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-45071591-2694-4e30-8e47-902cdeb8a28b": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" + "5": { + "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", + "text": { + "ast-str-22e2b6a5-6d8d-4a2a-a861-8142fdd70d05": { + "string": "Suivi des vues Web" + } + }, + "tag": { + "ast-str-0cd14bce-40c2-46b6-93f1-d5a05bd92239": { + "string": "Documentation" + } + } } } - ] + } } }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 28, - 29 - ], - "inline": false, - "attributes": { - "file": "rum/session_replay/setup_and_configuration.mdoc.md" - }, - "children": [], - "type": "tag", - "tag": "partial", - "annotations": [ - { - "type": "attribute", - "name": "file", - "value": "rum/session_replay/setup_and_configuration.mdoc.md" - } - ], - "slots": {}, - "location": { - "start": { - "line": 28 + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" }, - "end": { - "line": 29 - } + "children": { + "translationListData": {} + }, + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + } + } + }, + "slots": {}, + "location": "line 28-29" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json index c57a59e69e494..138d6b6f1f645 100644 --- a/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "モバイルセッションリプレイのプライバシーオプション" + "ast-str-ed6465a0-5303-45e8-814f-26b9621a3692": { + "string": "モバイルセッションリプレイのプライバシーオプション" + } }, "description": { - "string": "モバイルセッションリプレイのプライバシーオプションの構成" + "ast-str-96c0458c-0687-4a95-9d66-6fa097d06464": { + "string": "モバイルセッションリプレイのプライバシーオプションの構成" + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-39f6993e-dc05-4968-992e-893036c5506b": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-af631d8c-8fc9-4e98-bee2-6afd3dbdf311": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", - "text": { - "string": "Setup and Configure Mobile Session Replay" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-1c25456b-e5f6-4548-af66-3fae7a05f423": { + "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" + } + }, + "tag": { + "ast-str-a29b4ca3-075b-414c-8a68-0c33e0cfae6b": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", + "text": { + "ast-str-7d913357-3de0-47f5-995d-20902115e88a": { + "string": "モバイルセッションリプレイの設定と構成" + } + }, + "tag": { + "ast-str-fd654bd7-9157-4811-bf1b-322a453db21e": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-6aae3788-1d07-41c1-943e-ce84e0eea71a": { + "string": "モバイルセッションリプレイのトラブルシューティング" + } + }, + "tag": { + "ast-str-e66e4cab-d520-4636-b58e-572a077d362a": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-efabc85f-a81a-409d-9ef3-4e3c49b0e2c8": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-6d52c7ad-1cdd-4740-b4ef-e0103e5209e0": { + "string": "ドキュメント" + } + } } } - ] + } } }, "children": { @@ -64,7 +90,7 @@ "$$mdtype": "Node", "inline": false, "attributes": { - "file": "rum/session_replay/mobile/privacy_options.mdoc.md" + "file": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" }, "children": { "translationListData": {} @@ -76,7 +102,7 @@ "0": { "type": "attribute", "name": "file", - "value": "rum/session_replay/mobile/privacy_options.mdoc.md" + "value": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" } } }, diff --git a/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 4196fdc3ae732..3fc6e00b860ba 100644 --- a/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -1,99 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "モバイルセッションリプレイの設定と構成" + "ast-str-5b85bfe0-cdd5-4616-80a4-f7b16289b9c8": { + "string": "モバイルセッションリプレイの設定と構成" + } }, "description": { - "string": "モバイルセッションリプレイの設定と構成" + "ast-str-9ab98d47-4bc8-4cff-aab2-1a2c829a477c": { + "string": "モバイルセッションリプレイの設定と構成" + } }, - "further_reading": [ - { - "link": "/product_analytics/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/product_analytics/session_replay/mobile", + "text": { + "ast-str-6b7dd627-cfc2-449b-930b-c7c9202bb7f2": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-ad1f968c-ba7d-47fb-a595-fd656cf1a665": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/privacy_options", - "text": { - "string": "Mobile Session Replay Privacy Options" + "1": { + "link": "/product_analytics/session_replay/mobile/app_performance", + "text": { + "ast-str-5d4a3252-2fe5-4bd4-a75c-043fcd234a1b": { + "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" + } + }, + "tag": { + "ast-str-257753f4-c29e-4eb9-8c21-0b283b791d22": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/product_analytics/session_replay/mobile/privacy_options", + "text": { + "ast-str-7a98b6b8-a1cb-461b-985f-a6b645661066": { + "string": "モバイルセッションリプレイのプライバシーオプション" + } + }, + "tag": { + "ast-str-33326998-f6db-4a64-ad65-8e45a2955242": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/product_analytics/session_replay/mobile/troubleshooting", + "text": { + "ast-str-304a8f3a-51bb-426b-8ca2-bc7ae13a7cd9": { + "string": "モバイルセッションリプレイのトラブルシューティング" + } + }, + "tag": { + "ast-str-6c5f9454-e16e-4312-8512-305ad68f7b0e": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/product_analytics/session_replay", + "text": { + "ast-str-cc897da2-4f3a-435e-984d-b0002dda36cd": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-af12f79d-bd7f-4f9e-8ea7-72971640339c": { + "string": "ドキュメント" + } + } } } - ] + } } }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": { - "file": "rum/session_replay/setup_and_configuration.mdoc.md" - }, - "children": [], - "type": "tag", - "tag": "partial", - "annotations": [ - { - "type": "attribute", - "name": "file", - "value": "rum/session_replay/setup_and_configuration.mdoc.md" - } - ], - "slots": {}, - "location": { - "start": { - "line": 25 + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" }, - "end": { - "line": 26 - } + "children": { + "translationListData": {} + }, + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + } + } + }, + "slots": {}, + "location": "line 25-26" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 3f7749ad05df8..68a5cc23cc30b 100644 --- a/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -1,37777 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "モバイルセッションリプレイのプライバシーオプション" - }, - "description": { - "string": "モバイルセッションリプレイのプライバシーオプションの構成" - }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", - "text": { - "string": "Setup and Configure Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" - }, - "tag": { - "string": "Documentation" - } - } - ] - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": true, - "attributes": { - "content": "Overview", - "string": "Overview" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": true, - "attributes": { - "content": "Session Replay provides privacy controls to ensure organizations of any scale do not expose sensitive or personal data. Data is stored on Datadog-managed cloud instances and encrypted at rest.", - "string": "Session Replay provides privacy controls to ensure organizations of any scale do not expose sensitive or personal data. Data is stored on Datadog-managed cloud instances and encrypted at rest." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": true, - "attributes": { - "content": "Default privacy options for Session Replay protect end user privacy and prevent sensitive organizational information from being collected.", - "string": "Default privacy options for Session Replay protect end user privacy and prevent sensitive organizational information from being collected." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": true, - "attributes": { - "content": "By enabling Mobile Session Replay, you can automatically mask sensitive elements from being recorded through the RUM Mobile SDK. When data is masked, that data is not collected in its original form by Datadog's SDKs and thus is not sent to the backend.", - "string": "By enabling Mobile Session Replay, you can automatically mask sensitive elements from being recorded through the RUM Mobile SDK. When data is masked, that data is not collected in its original form by Datadog's SDKs and thus is not sent to the backend." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": true, - "attributes": { - "content": "Fine-grained masking", - "string": "Fine-grained masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": true, - "attributes": { - "content": "Using the masking modes below, you can override the default setup on a per-application basis. Masking is fine-grained, which means you can override masking for text and inputs, images, and touches individually to create a custom configuration that suits your needs.", - "string": "Using the masking modes below, you can override the default setup on a per-application basis. Masking is fine-grained, which means you can override masking for text and inputs, images, and touches individually to create a custom configuration that suits your needs." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": true, - "attributes": { - "content": "Text and input masking", - "string": "Text and input masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all data. With this setting enabled, all text and input content on screen is masked, as shown below.", - "string": " setting is enabled for all data. With this setting enabled, all text and input content on screen is masked, as shown below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 41, - 42 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-mode-mask-all-2.png", - "alt": "What your application screen may resemble when `mask` is enabled.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-mode-mask-all-2.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask` is enabled." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 41 - }, - "end": { - "line": 42 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": true, - "attributes": { - "content": "Mask sensitive inputs", - "string": "Mask sensitive inputs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": "mask_sensitive_inputs" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all text and inputs are shown except those considered sensitive (passwords, emails, and phone numbers).", - "string": " setting enabled, all text and inputs are shown except those considered sensitive (passwords, emails, and phone numbers)." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 47, - 48 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 47 - }, - "end": { - "line": 48 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 48, - 49, - 55, - 56 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 49, - 55 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 49, - 55 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 49 - }, - "end": { - "line": 55 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 49 - }, - "end": { - "line": 55 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 48 - }, - "end": { - "line": 49 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 56, - 57 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 56 - }, - "end": { - "line": 57 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 58, - 59 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 58 - }, - "end": { - "line": 59 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 59, - 60, - 69, - 70 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 60, - 69 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskSensitiveInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 60, - 69 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskSensitiveInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 60 - }, - "end": { - "line": 69 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 60 - }, - "end": { - "line": 69 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 59 - }, - "end": { - "line": 60 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 70, - 71 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 70 - }, - "end": { - "line": 71 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 72, - 73 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 72 - }, - "end": { - "line": 73 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 73, - 74, - 88, - 89 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 74, - 88 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_SENSITIVE_INPUTS,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 74, - 88 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_SENSITIVE_INPUTS,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 74 - }, - "end": { - "line": 88 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 74 - }, - "end": { - "line": 88 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 73 - }, - "end": { - "line": 74 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 89, - 90 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 89 - }, - "end": { - "line": 90 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": true, - "attributes": { - "content": "Mask all inputs", - "string": "Mask all inputs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": "mask_all_inputs" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all inputs fields are masked in the replay.", - "string": " setting enabled, all inputs fields are masked in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 94, - 95 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 94 - }, - "end": { - "line": 95 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 95, - 96, - 102, - 103 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 96, - 102 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL_INPUTS)\n.build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 96, - 102 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL_INPUTS)\n.build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 96 - }, - "end": { - "line": 102 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 96 - }, - "end": { - "line": 102 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 95 - }, - "end": { - "line": 96 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 103, - 104 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 103 - }, - "end": { - "line": 104 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 105, - 106 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 105 - }, - "end": { - "line": 106 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 106, - 107, - 116, - 117 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 107, - 116 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAllInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 107, - 116 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAllInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 107 - }, - "end": { - "line": 116 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 107 - }, - "end": { - "line": 116 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 106 - }, - "end": { - "line": 107 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 117, - 118 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 117 - }, - "end": { - "line": 118 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 119, - 120 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 119 - }, - "end": { - "line": 120 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 120, - 121, - 135, - 136 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 121, - 135 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL_INPUTS,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 121, - 135 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL_INPUTS,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 121 - }, - "end": { - "line": 135 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 121 - }, - "end": { - "line": 135 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 120 - }, - "end": { - "line": 121 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 136, - 137 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 136 - }, - "end": { - "line": 137 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all text and input fields are masked in the replay.", - "string": " setting enabled, all text and input fields are masked in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 141, - 142 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 141 - }, - "end": { - "line": 142 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 142, - 143, - 149, - 150 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 143, - 149 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 143, - 149 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 143 - }, - "end": { - "line": 149 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 143 - }, - "end": { - "line": 149 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 142 - }, - "end": { - "line": 143 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 150, - 151 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 150 - }, - "end": { - "line": 151 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 152, - 153 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 152 - }, - "end": { - "line": 153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 153, - 154, - 163, - 164 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 154, - 163 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAll,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 154, - 163 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAll,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 154 - }, - "end": { - "line": 163 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 154 - }, - "end": { - "line": 163 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 153 - }, - "end": { - "line": 154 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 164, - 165 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 164 - }, - "end": { - "line": 165 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 166, - 167 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 166 - }, - "end": { - "line": 167 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 167, - 168, - 182, - 183 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 168, - 182 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 168, - 182 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 168 - }, - "end": { - "line": 182 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 168 - }, - "end": { - "line": 182 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 167 - }, - "end": { - "line": 168 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 183, - 184 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 183 - }, - "end": { - "line": 184 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": true, - "attributes": { - "content": "Image masking", - "string": "Image masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all images. With this setting enabled, all images on screen are masked.", - "string": " setting is enabled for all images. With this setting enabled, all images on screen are masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": true, - "attributes": { - "content": "Mask all images", - "string": "Mask all images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all images are replaced by placeholders labeled 'Image' in the replay.", - "string": " setting enabled, all images are replaced by placeholders labeled 'Image' in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 192, - 193 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-all.png", - "alt": "What your application screen may resemble when `mask-all` is enabled.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-all.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask-all` is enabled." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 192 - }, - "end": { - "line": 193 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 194, - 195 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 194 - }, - "end": { - "line": 195 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 195, - 196, - 202, - 203 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 196, - 202 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 196, - 202 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 196 - }, - "end": { - "line": 202 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 196 - }, - "end": { - "line": 202 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 195 - }, - "end": { - "line": 196 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 203, - 204 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 203 - }, - "end": { - "line": 204 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 205, - 206 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 205 - }, - "end": { - "line": 206 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 206, - 207, - 216, - 217 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 207, - 216 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskAll,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 207, - 216 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskAll,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 207 - }, - "end": { - "line": 216 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 207 - }, - "end": { - "line": 216 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 206 - }, - "end": { - "line": 207 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 217, - 218 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 217 - }, - "end": { - "line": 218 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 219, - 220 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 219 - }, - "end": { - "line": 220 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 220, - 221, - 235, - 236 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 221, - 235 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 221, - 235 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 221 - }, - "end": { - "line": 235 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 221 - }, - "end": { - "line": 235 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 220 - }, - "end": { - "line": 221 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 236, - 237 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 236 - }, - "end": { - "line": 237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": true, - "attributes": { - "content": "Mask content images", - "string": "Mask content images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": true, - "attributes": { - "content": "You can manage content masking while still allowing system or bundled images to be visible.", - "string": "You can manage content masking while still allowing system or bundled images to be visible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 241, - 242 - ], - "inline": false, - "attributes": { - "content": "iOS and React Native", - "string": "iOS and React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 241 - }, - "end": { - "line": 242 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 242, - 243, - 248, - 249 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": "Use the ", - "string": "Use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": "maskNonBundledOnly" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": " setting to replace non-bundled images with a \"Content Image\" placeholder in the replay.", - "string": " setting to replace non-bundled images with a \"Content Image\" placeholder in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 248 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": true, - "attributes": { - "content": "In UIKit, the SDK can determine whether an image is bundled and can mask it accordingly.", - "string": "In UIKit, the SDK can determine whether an image is bundled and can mask it accordingly." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 247 - ], - "inline": true, - "attributes": { - "content": "In SwiftUI, this determination isn't possible. Instead, the SDK uses a heuristic: if an image exceeds 100×100 points, it is assumed to be non-bundled and is masked.", - "string": "In SwiftUI, this determination isn't possible. Instead, the SDK uses a heuristic: if an image exceeds 100×100 points, it is assumed to be non-bundled and is masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 247 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 247 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 248 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 248 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 242 - }, - "end": { - "line": 243 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 250, - 251 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 250 - }, - "end": { - "line": 251 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 251, - 252, - 255, - 256 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": "Select the ", - "string": "Select the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": "mask_large_only" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": " setting, which replaces images with dimensions that exceed 100x100dp with a \"Content Image\" placeholder.", - "string": " setting, which replaces images with dimensions that exceed 100x100dp with a \"Content Image\" placeholder." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "content": ": These dimensions refer to the drawable resource, not the view's size.", - "string": ": These dimensions refer to the drawable resource, not the view's size." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 251 - }, - "end": { - "line": 252 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 257, - 258 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 257 - }, - "end": { - "line": 258 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 258, - 259, - 267, - 268 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 259, - 260 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-large-only.png", - "alt": "What your application screen may resemble when `mask_large_only` is enabled on Android.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-large-only.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask_large_only` is enabled on Android." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 259 - }, - "end": { - "line": 260 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 261, - 267 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 261, - 267 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 261 - }, - "end": { - "line": 267 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 261 - }, - "end": { - "line": 267 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 258 - }, - "end": { - "line": 259 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 268, - 269 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 268 - }, - "end": { - "line": 269 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 270, - 271 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 270 - }, - "end": { - "line": 271 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 271, - 272, - 283, - 284 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 272, - 273 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-non-bundled-only.png", - "alt": "What your application screen may resemble when `mask_non_bundled_only` is enabled on iOS.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-non-bundled-only.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask_non_bundled_only` is enabled on iOS." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 272 - }, - "end": { - "line": 273 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 274, - 283 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNonBundledOnly,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 274, - 283 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNonBundledOnly,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 274 - }, - "end": { - "line": 283 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 274 - }, - "end": { - "line": 283 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 271 - }, - "end": { - "line": 272 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 284, - 285 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 284 - }, - "end": { - "line": 285 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 286, - 287 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 286 - }, - "end": { - "line": 287 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 287, - 288, - 302, - 303 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 288, - 302 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NON_BUNDLED_ONLY,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 288, - 302 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NON_BUNDLED_ONLY,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 288 - }, - "end": { - "line": 302 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 288 - }, - "end": { - "line": 302 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 287 - }, - "end": { - "line": 288 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 303, - 304 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 303 - }, - "end": { - "line": 304 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": true, - "attributes": { - "content": "Show all images", - "string": "Show all images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": "mask_none" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all images are shown in the replay.", - "string": " setting enabled, all images are shown in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 308, - 309 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 308 - }, - "end": { - "line": 309 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 309, - 310, - 316, - 317 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 310, - 316 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_NONE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 310, - 316 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_NONE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 310 - }, - "end": { - "line": 316 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 310 - }, - "end": { - "line": 316 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 309 - }, - "end": { - "line": 310 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 317, - 318 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 317 - }, - "end": { - "line": 318 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 319, - 320 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 319 - }, - "end": { - "line": 320 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 320, - 321, - 330, - 331 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 321, - 330 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNone,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 321, - 330 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNone,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 321 - }, - "end": { - "line": 330 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 321 - }, - "end": { - "line": 330 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 320 - }, - "end": { - "line": 321 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 331, - 332 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 331 - }, - "end": { - "line": 332 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 333, - 334 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 333 - }, - "end": { - "line": 334 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 334, - 335, - 349, - 350 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 335, - 349 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NONE,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 335, - 349 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NONE,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 335 - }, - "end": { - "line": 349 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 335 - }, - "end": { - "line": 349 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 334 - }, - "end": { - "line": 335 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 350, - 351 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 350 - }, - "end": { - "line": 351 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": true, - "attributes": { - "content": "Touch masking", - "string": "Touch masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all touches. With this setting enabled, all touches on screen are hidden.", - "string": " setting is enabled for all touches. With this setting enabled, all touches on screen are hidden." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": true, - "attributes": { - "content": "Hide all touches", - "string": "Hide all touches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all touches that occur during the replay are hidden. This is the default setting.", - "string": " setting enabled, all touches that occur during the replay are hidden. This is the default setting." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 358, - 359 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 358 - }, - "end": { - "line": 359 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 359, - 360, - 366, - 367 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 360, - 366 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.HIDE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 360, - 366 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.HIDE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 360 - }, - "end": { - "line": 366 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 360 - }, - "end": { - "line": 366 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 359 - }, - "end": { - "line": 360 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 367, - 368 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 367 - }, - "end": { - "line": 368 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 369, - 370 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 369 - }, - "end": { - "line": 370 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 370, - 371, - 380, - 381 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 371, - 380 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .hide\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 371, - 380 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .hide\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 371 - }, - "end": { - "line": 380 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 371 - }, - "end": { - "line": 380 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 370 - }, - "end": { - "line": 371 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 381, - 382 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 381 - }, - "end": { - "line": 382 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 383, - 384 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 383 - }, - "end": { - "line": 384 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 384, - 385, - 399, - 400 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 385, - 399 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.HIDE,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 385, - 399 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.HIDE,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 385 - }, - "end": { - "line": 399 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 385 - }, - "end": { - "line": 399 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 384 - }, - "end": { - "line": 385 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 400, - 401 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 400 - }, - "end": { - "line": 401 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": true, - "attributes": { - "content": "Show all touches", - "string": "Show all touches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": "show" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all touches that occur during the replay are shown.", - "string": " setting enabled, all touches that occur during the replay are shown." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 405, - 406 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 405 - }, - "end": { - "line": 406 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 406, - 407, - 413, - 414 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 407, - 413 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.SHOW)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 407, - 413 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.SHOW)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 407 - }, - "end": { - "line": 413 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 407 - }, - "end": { - "line": 413 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 406 - }, - "end": { - "line": 407 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 414, - 415 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 414 - }, - "end": { - "line": 415 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 416, - 417 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 416 - }, - "end": { - "line": 417 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 417, - 418, - 427, - 428 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 418, - 427 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .show\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 418, - 427 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .show\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 418 - }, - "end": { - "line": 427 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 418 - }, - "end": { - "line": 427 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 417 - }, - "end": { - "line": 418 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 428, - 429 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 428 - }, - "end": { - "line": 429 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 430, - 431 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 430 - }, - "end": { - "line": 431 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 431, - 432, - 446, - 447 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 432, - 446 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.SHOW,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 432, - 446 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.SHOW,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 432 - }, - "end": { - "line": 446 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 432 - }, - "end": { - "line": 446 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 431 - }, - "end": { - "line": 432 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 447, - 448 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 447 - }, - "end": { - "line": 448 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides", - "string": "Privacy overrides" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": true, - "attributes": { - "content": "The sections above describe the global masking levels that apply to the entire application. However, it is also possible to override these settings at the view level. The same privacy levels as above are available for text and inputs, images, touches, and an additional setting to completely hide a specific view.", - "string": "The sections above describe the global masking levels that apply to the entire application. However, it is also possible to override these settings at the view level. The same privacy levels as above are available for text and inputs, images, touches, and an additional setting to completely hide a specific view." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": true, - "attributes": { - "content": "To ensure overrides are recognized properly, they should be applied as early as possible in the view lifecycle. This prevents scenarios where Session Replay might process a view before applying the overrides.", - "string": "To ensure overrides are recognized properly, they should be applied as early as possible in the view lifecycle. This prevents scenarios where Session Replay might process a view before applying the overrides." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides affect views and their descendants. This means that even if an override is applied to a view where it might have no immediate effect (for example, applying an image override to a text input), the override still applies to all child views.", - "string": "Privacy overrides affect views and their descendants. This means that even if an override is applied to a view where it might have no immediate effect (for example, applying an image override to a text input), the override still applies to all child views." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": true, - "attributes": { - "content": "Overrides operate using a \"nearest parent\" principle: if a view has an override, it uses that setting. Otherwise, it inherits the privacy level from the closest parent in the hierarchy with an override. If no parent has an override, the view defaults to the application's general masking level.", - "string": "Overrides operate using a \"nearest parent\" principle: if a view has an override, it uses that setting. Otherwise, it inherits the privacy level from the closest parent in the hierarchy with an override. If no parent has an override, the view defaults to the application's general masking level." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 460, - 461 - ], - "inline": false, - "attributes": { - "content": "Android or iOS", - "string": "Android or iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 460 - }, - "end": { - "line": 461 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 461, - 462, - 799, - 800 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": true, - "attributes": { - "content": "Text and input override", - "string": "Text and input override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 465, - 466 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 465 - }, - "end": { - "line": 466 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 466, - 467, - 486, - 487 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in Android classic view, use ", - "string": "To override text and input privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayTextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 469, - 475 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.setSessionReplayTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n// Remove a text and input override from your view\nmyView.setSessionReplayTextAndInputPrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 469, - 475 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.setSessionReplayTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n// Remove a text and input override from your view\nmyView.setSessionReplayTextAndInputPrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 469 - }, - "end": { - "line": 475 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 469 - }, - "end": { - "line": 475 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in Jetpack Compose, use ", - "string": "To override text and input privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayTextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 478, - 486 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nText(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTextAndInputPrivacy(textAndInputPrivacy = TextAndInputPrivacy.MASK_SENSITIVE_INPUTS),\n text = \"Datadog\"\n)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 478, - 486 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nText(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTextAndInputPrivacy(textAndInputPrivacy = TextAndInputPrivacy.MASK_SENSITIVE_INPUTS),\n text = \"Datadog\"\n)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 478 - }, - "end": { - "line": 486 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 478 - }, - "end": { - "line": 486 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 466 - }, - "end": { - "line": 467 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 487, - 488 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 487 - }, - "end": { - "line": 488 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 489, - 490 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 489 - }, - "end": { - "line": 490 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 490, - 491, - 519, - 520 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in UIKit views, use ", - "string": "To override text and input privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.textAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 493, - 499 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = .maskSensitiveInputs\n// Remove a text and input override from your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 493, - 499 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = .maskSensitiveInputs\n// Remove a text and input override from your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 493 - }, - "end": { - "line": 499 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 493 - }, - "end": { - "line": 499 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in SwiftUI, wrap your content with ", - "string": "To override text and input privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "textAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": " parameter. You can combine this with other privacy settings in the same view for better performance.", - "string": " parameter. You can combine this with other privacy settings in the same view for better performance." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 502, - 519 - ], - "inline": false, - "attributes": { - "content": "struct ContentView: View {\n @State private var username = \"\"\n @State private var password = \"\"\n \n var body: some View {\n // Set a text and input override on your SwiftUI content\n SessionReplayPrivacyView(textAndInputPrivacy: .maskAllInputs) {\n VStack {\n Text(\"User Profile\")\n TextField(\"Enter name\", text: $username)\n SecureField(\"Password\", text: $password)\n }\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 502, - 519 - ], - "inline": false, - "attributes": { - "content": "struct ContentView: View {\n @State private var username = \"\"\n @State private var password = \"\"\n \n var body: some View {\n // Set a text and input override on your SwiftUI content\n SessionReplayPrivacyView(textAndInputPrivacy: .maskAllInputs) {\n VStack {\n Text(\"User Profile\")\n TextField(\"Enter name\", text: $username)\n SecureField(\"Password\", text: $password)\n }\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 502 - }, - "end": { - "line": 519 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 502 - }, - "end": { - "line": 519 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 490 - }, - "end": { - "line": 491 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 520, - 521 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 520 - }, - "end": { - "line": 521 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": true, - "attributes": { - "content": "Image override", - "string": "Image override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 524, - 525 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 524 - }, - "end": { - "line": 525 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 525, - 526, - 546, - 547 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in Android classic view, use ", - "string": "To override image privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 528, - 534 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.setSessionReplayImagePrivacy(ImagePrivacy.MASK_ALL)\n// Remove an image override from your view\nmyView.setSessionReplayImagePrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 528, - 534 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.setSessionReplayImagePrivacy(ImagePrivacy.MASK_ALL)\n// Remove an image override from your view\nmyView.setSessionReplayImagePrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 528 - }, - "end": { - "line": 534 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 528 - }, - "end": { - "line": 534 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in Jetpack Compose, use ", - "string": "To override image privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 537, - 546 - ], - "inline": false, - "attributes": { - "content": "// Set a image privacy override on your image\nImage(modifier = Modifier\n .padding(16.dp)\n .sessionReplayImagePrivacy(imagePrivacy = ImagePrivacy.MASK_ALL),\n painter = painterResource(id = R.drawable.ic_datadog),\n contentDescription = null\n)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 537, - 546 - ], - "inline": false, - "attributes": { - "content": "// Set a image privacy override on your image\nImage(modifier = Modifier\n .padding(16.dp)\n .sessionReplayImagePrivacy(imagePrivacy = ImagePrivacy.MASK_ALL),\n painter = painterResource(id = R.drawable.ic_datadog),\n contentDescription = null\n)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 537 - }, - "end": { - "line": 546 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 537 - }, - "end": { - "line": 546 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 525 - }, - "end": { - "line": 526 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 547, - 548 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 547 - }, - "end": { - "line": 548 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 549, - 550 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 549 - }, - "end": { - "line": 550 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 550, - 551, - 586, - 587 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in UIKit views, use ", - "string": "To override image privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.imagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 553, - 559 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = .maskAll\n// Remove an image override from your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 553, - 559 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = .maskAll\n// Remove an image override from your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 553 - }, - "end": { - "line": 559 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 553 - }, - "end": { - "line": 559 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in SwiftUI, wrap your content with ", - "string": "To override image privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "imagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": " parameter.", - "string": " parameter." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 562, - 586 - ], - "inline": false, - "attributes": { - "content": "struct ProfileView: View {\n let profileImageURL = URL(string: \"https://example.com/profile.jpg\")\n \n var body: some View {\n // Set an image privacy override on your SwiftUI content\n SessionReplayPrivacyView(imagePrivacy: .maskAll) {\n VStack {\n Image(\"userAvatar\")\n .resizable()\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n AsyncImage(url: profileImageURL) { image in\n image.resizable()\n } placeholder: {\n ProgressView()\n }\n .frame(width: 100, height: 100)\n }\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 562, - 586 - ], - "inline": false, - "attributes": { - "content": "struct ProfileView: View {\n let profileImageURL = URL(string: \"https://example.com/profile.jpg\")\n \n var body: some View {\n // Set an image privacy override on your SwiftUI content\n SessionReplayPrivacyView(imagePrivacy: .maskAll) {\n VStack {\n Image(\"userAvatar\")\n .resizable()\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n AsyncImage(url: profileImageURL) { image in\n image.resizable()\n } placeholder: {\n ProgressView()\n }\n .frame(width: 100, height: 100)\n }\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 562 - }, - "end": { - "line": 586 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 562 - }, - "end": { - "line": 586 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 550 - }, - "end": { - "line": 551 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 587, - 588 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 587 - }, - "end": { - "line": 588 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": true, - "attributes": { - "content": "Touch override", - "string": "Touch override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 591, - 592 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 591 - }, - "end": { - "line": 592 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 592, - 593, - 612, - 613 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in Android classic view, use ", - "string": "To override touch privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayTouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 595, - 601 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nview.setSessionReplayTouchPrivacy(TouchPrivacy.HIDE)\n// Remove a touch override from your view\nview.setSessionReplayTouchPrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 595, - 601 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nview.setSessionReplayTouchPrivacy(TouchPrivacy.HIDE)\n// Remove a touch override from your view\nview.setSessionReplayTouchPrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 595 - }, - "end": { - "line": 601 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 595 - }, - "end": { - "line": 601 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in Jetpack Compose, use ", - "string": "To override touch privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayTouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 604, - 612 - ], - "inline": false, - "attributes": { - "content": "// Set a touch privacy override on your view\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTouchPrivacy(touchPrivacy = TouchPrivacy.HIDE)){\n // Content\n}\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 604, - 612 - ], - "inline": false, - "attributes": { - "content": "// Set a touch privacy override on your view\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTouchPrivacy(touchPrivacy = TouchPrivacy.HIDE)){\n // Content\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 604 - }, - "end": { - "line": 612 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 604 - }, - "end": { - "line": 612 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 592 - }, - "end": { - "line": 593 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 613, - 614 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 613 - }, - "end": { - "line": 614 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 615, - 616 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 615 - }, - "end": { - "line": 616 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 616, - 617, - 653, - 654 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in UIKit views, use ", - "string": "To override touch privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.touchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 619, - 625 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = .hide\n// Remove a touch override from your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 619, - 625 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = .hide\n// Remove a touch override from your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 619 - }, - "end": { - "line": 625 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 619 - }, - "end": { - "line": 625 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in SwiftUI, wrap your content with ", - "string": "To override touch privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "touchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": " parameter.", - "string": " parameter." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 628, - 653 - ], - "inline": false, - "attributes": { - "content": "struct SettingsView: View {\n @State private var sliderValue = 0.5\n \n var body: some View {\n // Set a touch privacy override on your SwiftUI content\n SessionReplayPrivacyView(touchPrivacy: .hide) {\n VStack(spacing: 20) {\n Button(\"Some Action\") {\n // Handle action\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n \n Slider(value: $sliderValue, in: 0...1) {\n Text(\"Some Value\")\n }\n }\n .padding()\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 628, - 653 - ], - "inline": false, - "attributes": { - "content": "struct SettingsView: View {\n @State private var sliderValue = 0.5\n \n var body: some View {\n // Set a touch privacy override on your SwiftUI content\n SessionReplayPrivacyView(touchPrivacy: .hide) {\n VStack(spacing: 20) {\n Button(\"Some Action\") {\n // Handle action\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n \n Slider(value: $sliderValue, in: 0...1) {\n Text(\"Some Value\")\n }\n }\n .padding()\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 628 - }, - "end": { - "line": 653 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 628 - }, - "end": { - "line": 653 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 616 - }, - "end": { - "line": 617 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 654, - 655 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 654 - }, - "end": { - "line": 655 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": true, - "attributes": { - "content": "Hidden elements override", - "string": "Hidden elements override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": "For sensitive elements that need to be completely hidden, use the ", - "string": "For sensitive elements that need to be completely hidden, use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": " setting.", - "string": " setting." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": "When an element is ", - "string": "When an element is " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": ", it is replaced by a placeholder labeled as \"Hidden\" in the replay, and its subviews are not recorded.", - "string": ", it is replaced by a placeholder labeled as \"Hidden\" in the replay, and its subviews are not recorded." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": ": Marking a view as ", - "string": ": Marking a view as " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": " does not prevent touch interactions from being recorded on that element. To hide touch interactions as well, use the ", - "string": " does not prevent touch interactions from being recorded on that element. To hide touch interactions as well, use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "href": "#touch-override" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "touch override", - "string": "touch override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": " in addition to marking the element as hidden.", - "string": " in addition to marking the element as hidden." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 664, - 665 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 664 - }, - "end": { - "line": 665 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 665, - 666, - 684, - 685 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayHidden(hide = true)" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " to hide the element. Setting ", - "string": " to hide the element. Setting " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " to ", - "string": " to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "false" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 668, - 674 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.setSessionReplayHidden(hide = true)\n// Remove the override from the view\nmyView.setSessionReplayHidden(hide = false)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 668, - 674 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.setSessionReplayHidden(hide = true)\n// Remove the override from the view\nmyView.setSessionReplayHidden(hide = false)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 668 - }, - "end": { - "line": 674 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 668 - }, - "end": { - "line": 674 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayHide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": " to hide the element in Jetpack Compose.", - "string": " to hide the element in Jetpack Compose." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 676, - 684 - ], - "inline": false, - "attributes": { - "content": "// Mark a Column as hidden\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayHide(hide = true)){\n // Content\n}\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 676, - 684 - ], - "inline": false, - "attributes": { - "content": "// Mark a Column as hidden\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayHide(hide = true)){\n // Content\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 676 - }, - "end": { - "line": 684 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 676 - }, - "end": { - "line": 684 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 665 - }, - "end": { - "line": 666 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 685, - 686 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 685 - }, - "end": { - "line": 686 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 687, - 688 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 687 - }, - "end": { - "line": 688 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 688, - 689, - 796, - 797 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": "In UIKit views, use ", - "string": "In UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": " to hide the element:", - "string": " to hide the element:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 691, - 697 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.dd.sessionReplayOverrides.hide = true\n// Remove the override from the view\nmyView.dd.sessionReplayOverrides.hide = false\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 691, - 697 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.dd.sessionReplayOverrides.hide = true\n// Remove the override from the view\nmyView.dd.sessionReplayOverrides.hide = false\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 691 - }, - "end": { - "line": 697 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 691 - }, - "end": { - "line": 697 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "In SwiftUI, wrap your content with ", - "string": "In SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": " and set the ", - "string": " and set the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": " parameter to ", - "string": " parameter to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "true" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": ":", - "string": ":" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 700, - 726 - ], - "inline": false, - "attributes": { - "content": "struct PaymentView: View {\n @State private var cardNumber = \"\"\n @State private var cvv = \"\"\n \n var body: some View {\n // Mark SwiftUI content as hidden\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Payment Information\")\n .font(.headline)\n \n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n SecureField(\"CVV\", text: $cvv)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n Text(\"Card ending in 1234\")\n .foregroundColor(.secondary)\n }\n .padding()\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 700, - 726 - ], - "inline": false, - "attributes": { - "content": "struct PaymentView: View {\n @State private var cardNumber = \"\"\n @State private var cvv = \"\"\n \n var body: some View {\n // Mark SwiftUI content as hidden\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Payment Information\")\n .font(.headline)\n \n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n SecureField(\"CVV\", text: $cvv)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n Text(\"Card ending in 1234\")\n .foregroundColor(.secondary)\n }\n .padding()\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 700 - }, - "end": { - "line": 726 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 700 - }, - "end": { - "line": 726 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": ": Setting the ", - "string": ": Setting the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " override to ", - "string": " override to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " or ", - "string": " or " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "false" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " has the same effect—it disables the override.", - "string": " has the same effect—it disables the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": true, - "attributes": { - "content": "Combining privacy settings in SwiftUI", - "string": "Combining privacy settings in SwiftUI" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "Combine multiple privacy settings in one ", - "string": "Combine multiple privacy settings in one " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": " for different configurations. Datadog recommends ", - "string": " for different configurations. Datadog recommends " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "combining options in a single view rather than nesting multiple instances", - "string": "combining options in a single view rather than nesting multiple instances" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": " to avoid adding unnecessary view layers.", - "string": " to avoid adding unnecessary view layers." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 733, - 794 - ], - "inline": false, - "attributes": { - "content": "struct UserProfileView: View {\n @State private var userBio = \"\"\n @State private var cardNumber = \"\"\n \n var body: some View {\n VStack(spacing: 30) {\n // Preferred: Combine multiple privacy settings in one view\n SessionReplayPrivacyView(\n textAndInputPrivacy: .maskSensitiveInputs,\n imagePrivacy: .maskNonBundledOnly,\n touchPrivacy: .show\n ) {\n VStack(spacing: 20) {\n // User profile section\n HStack {\n AsyncImage(url: URL(string: \"https://example.com/profile.jpg\")) { image in\n image.resizable()\n } placeholder: {\n Circle().fill(Color.gray.opacity(0.3))\n }\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n VStack(alignment: .leading) {\n Text(\"John Doe\")\n .font(.headline)\n TextField(\"Enter bio\", text: $userBio)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n }\n \n Button(\"Save Profile\") {\n // Save action\n print(\"Profile saved\")\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n }\n .padding()\n }\n \n // For completely different privacy requirements, use separate `SessionReplayPrivacyView` instances\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Credit Card Information\")\n .font(.headline)\n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n .padding()\n .background(Color.gray.opacity(0.1))\n .cornerRadius(8)\n }\n }\n .padding()\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 733, - 794 - ], - "inline": false, - "attributes": { - "content": "struct UserProfileView: View {\n @State private var userBio = \"\"\n @State private var cardNumber = \"\"\n \n var body: some View {\n VStack(spacing: 30) {\n // Preferred: Combine multiple privacy settings in one view\n SessionReplayPrivacyView(\n textAndInputPrivacy: .maskSensitiveInputs,\n imagePrivacy: .maskNonBundledOnly,\n touchPrivacy: .show\n ) {\n VStack(spacing: 20) {\n // User profile section\n HStack {\n AsyncImage(url: URL(string: \"https://example.com/profile.jpg\")) { image in\n image.resizable()\n } placeholder: {\n Circle().fill(Color.gray.opacity(0.3))\n }\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n VStack(alignment: .leading) {\n Text(\"John Doe\")\n .font(.headline)\n TextField(\"Enter bio\", text: $userBio)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n }\n \n Button(\"Save Profile\") {\n // Save action\n print(\"Profile saved\")\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n }\n .padding()\n }\n \n // For completely different privacy requirements, use separate `SessionReplayPrivacyView` instances\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Credit Card Information\")\n .font(.headline)\n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n .padding()\n .background(Color.gray.opacity(0.1))\n .cornerRadius(8)\n }\n }\n .padding()\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 733 - }, - "end": { - "line": 794 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 733 - }, - "end": { - "line": 794 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": ": Each ", - "string": ": Each " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": " introduces an additional native view layer. For optimal performance, prefer combining privacy settings instead of nesting multiple privacy views when possible.", - "string": " introduces an additional native view layer. For optimal performance, prefer combining privacy settings instead of nesting multiple privacy views when possible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 688 - }, - "end": { - "line": 689 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 797, - 798 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 797 - }, - "end": { - "line": 798 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 461 - }, - "end": { - "line": 462 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 800, - 801 - ], - "inline": false, - "attributes": { - "content": "end iOS or Android", - "string": "end iOS or Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 800 - }, - "end": { - "line": 801 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 802, - 803 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 802 - }, - "end": { - "line": 803 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 803, - 804, - 957, - 958 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides are fully supported in React Native starting from version ", - "string": "Privacy overrides are fully supported in React Native starting from version " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "2.8.0" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": " of the Datadog ", - "string": " of the Datadog " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "React Native SDK", - "string": "React Native SDK" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": ". Although the underlying functionality is shared with native Android and iOS platforms, the integration in React Native is designed to align with common React patterns.", - "string": ". Although the underlying functionality is shared with native Android and iOS platforms, the integration in React Native is designed to align with common React patterns." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": true, - "attributes": { - "content": "Behavior consistency", - "string": "Behavior consistency" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": true, - "attributes": { - "content": "React Native's implementation is built on the same foundation as the native Android and iOS SDKs. As a result, you can rely on the privacy features behaving the same way across all three platforms.", - "string": "React Native's implementation is built on the same foundation as the native Android and iOS SDKs. As a result, you can rely on the privacy features behaving the same way across all three platforms." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": true, - "attributes": { - "content": "Usage with ", - "string": "Usage with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": "The SDK provides a set of React components under the ", - "string": "The SDK provides a set of React components under the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": " namespace, which are used to configure privacy settings within your React Native application.", - "string": " namespace, which are used to configure privacy settings within your React Native application." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": "To use them, import ", - "string": "To use them, import " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": " as follows:", - "string": " as follows:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 816, - 819 - ], - "inline": false, - "attributes": { - "content": "import { SessionReplayView } from \"@datadog/mobile-react-native-session-replay\";\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 816, - 819 - ], - "inline": false, - "attributes": { - "content": "import { SessionReplayView } from \"@datadog/mobile-react-native-session-replay\";\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 816 - }, - "end": { - "line": 819 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 816 - }, - "end": { - "line": 819 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": true, - "attributes": { - "content": "This import provides access to four privacy-focused components.", - "string": "This import provides access to four privacy-focused components." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": true, - "attributes": { - "content": "Each of these components behaves like a regular React Native View, meaning they can be used anywhere you would typically use a View, with the addition of privacy-related behavior.", - "string": "Each of these components behaves like a regular React Native View, meaning they can be used anywhere you would typically use a View, with the addition of privacy-related behavior." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 824, - 825, - 849, - 850 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": true, - "attributes": { - "content": "Component", - "string": "Component" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": true, - "attributes": { - "content": "Description", - "string": "Description" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": true, - "attributes": { - "content": "Properties", - "string": "Properties" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.Privacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": true, - "attributes": { - "content": "Adds support for customizing text, image, and touch privacy settings for its children.", - "string": "Adds support for customizing text, image, and touch privacy settings for its children." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 831, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 836 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": "textAndInputPrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L43" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacyLevel", - "string": "TextAndInputPrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": "imagePrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L15" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacyLevel", - "string": "ImagePrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": "touchPrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L32" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacyLevel", - "string": "TouchPrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": "hide?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": "boolean" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 831 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.MaskAll" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": "Applies the most restrictive privacy settings (", - "string": "Applies the most restrictive privacy settings (" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": "MaskAll" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": " or platform equivalent) to all children.", - "string": " or platform equivalent) to all children." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 839, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": "showTouch?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": "boolean" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 839 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.MaskNone" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": "Applies the least restrictive settings (", - "string": "Applies the least restrictive settings (" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": "MaskNone" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": " or platform equivalent). All child components are visible.", - "string": " or platform equivalent). All child components are visible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": true, - "attributes": { - "marker": "_" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": true, - "attributes": { - "content": "(No additional properties)", - "string": "(No additional properties)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "em", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 845 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.Hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": true, - "attributes": { - "content": "Completely hides all child components from session replay.", - "string": "Completely hides all child components from session replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": true, - "attributes": { - "marker": "_" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": true, - "attributes": { - "content": "(No additional properties)", - "string": "(No additional properties)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "em", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 824 - }, - "end": { - "line": 825 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": true, - "attributes": { - "content": "Integration approaches", - "string": "Integration approaches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": true, - "attributes": { - "content": "There are two ways to apply privacy overrides in React Native:", - "string": "There are two ways to apply privacy overrides in React Native:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 857 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": "Wrap specific components with a privacy-focused ", - "string": "Wrap specific components with a privacy-focused " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": " to target only certain elements, or", - "string": " to target only certain elements, or" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 857 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "Replace an entire ", - "string": "Replace an entire " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": " with a ", - "string": " with a " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": " to apply privacy settings to a whole section of your UI.", - "string": " to apply privacy settings to a whole section of your UI." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 857 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 857 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": true, - "attributes": { - "content": "This flexibility lets you control which parts of your app are masked or visible in session replays.", - "string": "This flexibility lets you control which parts of your app are masked or visible in session replays." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 859, - 860, - 924, - 925 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 861, - 862, - 895, - 896 - ], - "inline": false, - "attributes": { - "label": "As wrappers" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": " components to wrap specific parts of your UI where you want to override privacy settings.", - "string": " components to wrap specific parts of your UI where you want to override privacy settings." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": true, - "attributes": { - "content": "For example, going from:", - "string": "For example, going from:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 866, - 878 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 866, - 878 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 866 - }, - "end": { - "line": 878 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 866 - }, - "end": { - "line": 878 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": true, - "attributes": { - "content": "To:", - "string": "To:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 881, - 895 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n \n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 881, - 895 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n \n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 881 - }, - "end": { - "line": 895 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 881 - }, - "end": { - "line": 895 - } - } - } - ], - "type": "tag", - "tag": "tab", - "annotations": [ - { - "type": "attribute", - "name": "label", - "value": "As wrappers" - } - ], - "slots": {}, - "location": { - "start": { - "line": 861 - }, - "end": { - "line": 862 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 897, - 898, - 923, - 924 - ], - "inline": false, - "attributes": { - "label": "As replacements" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "Replace an existing ", - "string": "Replace an existing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": " with a ", - "string": " with a " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": " component directly. This is ideal when a view already encapsulates the section of the UI that needs modified privacy behavior.", - "string": " component directly. This is ideal when a view already encapsulates the section of the UI that needs modified privacy behavior." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": true, - "attributes": { - "content": "For example, instead of:", - "string": "For example, instead of:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 902, - 911 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 902, - 911 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 902 - }, - "end": { - "line": 911 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 902 - }, - "end": { - "line": 911 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": true, - "attributes": { - "content": "You can use:", - "string": "You can use:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 914, - 923 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 914, - 923 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 914 - }, - "end": { - "line": 923 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 914 - }, - "end": { - "line": 923 - } - } - } - ], - "type": "tag", - "tag": "tab", - "annotations": [ - { - "type": "attribute", - "name": "label", - "value": "As replacements" - } - ], - "slots": {}, - "location": { - "start": { - "line": 897 - }, - "end": { - "line": 898 - } - } - } - ], - "type": "tag", - "tag": "tabs", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 859 - }, - "end": { - "line": 860 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": true, - "attributes": { - "content": "Combining privacy components", - "string": "Combining privacy components" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": "You can freely combine the ", - "string": "You can freely combine the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": " components to apply different privacy settings to distinct sections of your UI. This is especially useful when you need a mix of hidden elements, masked input fields, and visible content within the same screen.", - "string": " components to apply different privacy settings to distinct sections of your UI. This is especially useful when you need a mix of hidden elements, masked input fields, and visible content within the same screen." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": true, - "attributes": { - "content": "For example:", - "string": "For example:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 932, - 957 - ], - "inline": false, - "attributes": { - "content": "import { ImagePrivacyLevel, SessionReplayView, TextAndInputPrivacyLevel, TouchPrivacyLevel } from \"@datadog/mobile-react-native-session-replay\";\n\nconst App = () => {\n return (\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 932, - 957 - ], - "inline": false, - "attributes": { - "content": "import { ImagePrivacyLevel, SessionReplayView, TextAndInputPrivacyLevel, TouchPrivacyLevel } from \"@datadog/mobile-react-native-session-replay\";\n\nconst App = () => {\n return (\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 932 - }, - "end": { - "line": 957 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 932 - }, - "end": { - "line": 957 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 803 - }, - "end": { - "line": 804 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 958, - 959 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 958 - }, - "end": { - "line": 959 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": true, - "attributes": { - "content": "Notes on WebViews", - "string": "Notes on WebViews" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 965 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides, aside from the ", - "string": "Privacy overrides, aside from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": " and ", - "string": " and " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "touch" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": " options, are not supported for WebViews. You can primarily manage their privacy using the ", - "string": " options, are not supported for WebViews. You can primarily manage their privacy using the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "href": "/real_user_monitoring/session_replay/privacy_options" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "browser SDK privacy settings", - "string": "browser SDK privacy settings" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": ".", - "string": "." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 965 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "When a WebView is marked as ", - "string": "When a WebView is marked as " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": ", it is replaced by a placeholder in the replay. However, the WebView itself continues to collect and send data. To avoid this, it is recommended to use ", - "string": ", it is replaced by a placeholder in the replay. However, the WebView itself continues to collect and send data. To avoid this, it is recommended to use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "href": "/real_user_monitoring/session_replay/privacy_options" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "browser SDK privacy settings", - "string": "browser SDK privacy settings" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": " for managing WebView privacy, as they provide more targeted control.", - "string": " for managing WebView privacy, as they provide more targeted control." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 965 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 965 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": true, - "attributes": { - "content": "How and what data is masked", - "string": "How and what data is masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": true, - "attributes": { - "content": "This section describes how the Datadog recorder handles masking based on data type and how that data is defined.", - "string": "This section describes how the Datadog recorder handles masking based on data type and how that data is defined." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": true, - "attributes": { - "content": "Text masking strategies", - "string": "Text masking strategies" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": true, - "attributes": { - "content": "Depending on how you've configured your privacy settings, the type of text, and sensitivity of data, Datadog's masking rules apply different strategies to different types of text fields.", - "string": "Depending on how you've configured your privacy settings, the type of text, and sensitivity of data, Datadog's masking rules apply different strategies to different types of text fields." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Text masking strategy", - "string": "Text masking strategy" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Description", - "string": "Description" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Example", - "string": "Example" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "The text is revealed in the session replay", - "string": "The text is revealed in the session replay" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "Space-preserving mask", - "string": "Space-preserving mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "Each visible character is replaced with a lowercase \"x\"", - "string": "Each visible character is replaced with a lowercase \"x\"" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "\"xxxxx xxxxx\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "The entire text field is replaced with a constant of three asterisks (***)", - "string": "The entire text field is replaced with a constant of three asterisks (***)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "\"***\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": "With the above text strategies in mind, you have a few different options if you want to override the default privacy rule of ", - "string": "With the above text strategies in mind, you have a few different options if you want to override the default privacy rule of " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": "mask" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": " in your configuration.", - "string": " in your configuration." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how Datadog applies different text masking strategies, using the rules you set up in your configuration, to the below text types.", - "string": "The following chart shows how Datadog applies different text masking strategies, using the rules you set up in your configuration, to the below text types." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "href": "#sensitive-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Sensitive text", - "string": "Sensitive text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "href": "#input-and-option-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Input and option text", - "string": "Input and option text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "href": "#static-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "Static text", - "string": "Static text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "Space-preserving mask", - "string": "Space-preserving mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "href": "#hint-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "Hint text", - "string": "Hint text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": true, - "attributes": { - "content": "Text masking definitions", - "string": "Text masking definitions" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": true, - "attributes": { - "content": "Find below a description of how Datadog's recorder treats each text type.", - "string": "Find below a description of how Datadog's recorder treats each text type." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": true, - "attributes": { - "content": "Sensitive text", - "string": "Sensitive text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": { - "content": "Sensitive text includes passwords, e-mails, and phone numbers marked in a platform-specific way,", - "string": "Sensitive text includes passwords, e-mails, and phone numbers marked in a platform-specific way," - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": { - "content": "and other forms of sensitivity in text available to each platform.", - "string": "and other forms of sensitivity in text available to each platform." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 998, - 999 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 998 - }, - "end": { - "line": 999 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 999, - 1000, - 1004, - 1005 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in:", - "string": "Sensitive text can be detected in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1004 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 999 - }, - "end": { - "line": 1000 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1006, - 1007 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1006 - }, - "end": { - "line": 1007 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1007, - 1008, - 1015, - 1016 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in:", - "string": "Sensitive text can be detected in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1015 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": true, - "attributes": { - "content": "Credit card numbers", - "string": "Credit card numbers" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": true, - "attributes": { - "content": "One-time codes", - "string": "One-time codes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1007 - }, - "end": { - "line": 1008 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1017, - 1018 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1017 - }, - "end": { - "line": 1018 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1018, - 1019, - 1043, - 1044 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in the following components.", - "string": "Sensitive text can be detected in the following components." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1021, - 1022, - 1042, - 1043 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": true, - "attributes": { - "content": "Component", - "string": "Component" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1027 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1030 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": true, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1033 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1036 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": true, - "attributes": { - "content": "Credit card numbers", - "string": "Credit card numbers" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1039 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": true, - "attributes": { - "content": "One-time codes", - "string": "One-time codes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1021 - }, - "end": { - "line": 1022 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1018 - }, - "end": { - "line": 1019 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": true, - "attributes": { - "content": "Input and option text", - "string": "Input and option text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": true, - "attributes": { - "content": "Input and option text is text entered by the user with a keyboard or other text-input device, or a custom (non-generic) value in selection elements.", - "string": "Input and option text is text entered by the user with a keyboard or other text-input device, or a custom (non-generic) value in selection elements." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": true, - "attributes": { - "content": "This includes the below.", - "string": "This includes the below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1051, - 1052 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1051 - }, - "end": { - "line": 1052 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1052, - 1053, - 1063, - 1064 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1063 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1054 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1054 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1054 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1054 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1056 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1056 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1057 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1057 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1057 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1057 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1059 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": true, - "attributes": { - "content": "Value Picker", - "string": "Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": true, - "attributes": { - "content": "Segment", - "string": "Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1059 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1060 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1060 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1060 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1060 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1063 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Text Field and Text View (not entered by the user)", - "string": "Placeholder (hint) texts in Text Field and Text View (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": true, - "attributes": { - "content": "Non-editable texts in Text View", - "string": "Non-editable texts in Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1052 - }, - "end": { - "line": 1053 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1065, - 1066 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1065 - }, - "end": { - "line": 1066 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1066, - 1067, - 1075, - 1076 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1075 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1068 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1068 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1068 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1068 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1069 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1070 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1070 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1070 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1070 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1072 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": true, - "attributes": { - "content": "Value Picker", - "string": "Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": true, - "attributes": { - "content": "Drop Down List", - "string": "Drop Down List" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1072 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1073 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1073 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1073 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1073 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1075 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Edit Text (not entered by the user)", - "string": "Placeholder (hint) texts in Edit Text (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1066 - }, - "end": { - "line": 1067 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1077, - 1078 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1077 - }, - "end": { - "line": 1078 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1078, - 1079, - 1091, - 1092 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1091 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1080 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1080 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1080 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1080 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1083 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": true, - "attributes": { - "content": "Text Field (iOS)", - "string": "Text Field (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": true, - "attributes": { - "content": "Text View (iOS)", - "string": "Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": true, - "attributes": { - "content": "Edit Text (Android)", - "string": "Edit Text (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1083 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1084 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1084 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1084 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1084 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1087 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": true, - "attributes": { - "content": "Value Picker (iOS + Android)", - "string": "Value Picker (iOS + Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": true, - "attributes": { - "content": "Segment (iOS)", - "string": "Segment (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": true, - "attributes": { - "content": "Drop Down List (Android)", - "string": "Drop Down List (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1087 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1088 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1088 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1088 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1088 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1091 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Text Field, Text View and Edit Text (not entered by the user)", - "string": "Placeholder (hint) texts in Text Field, Text View and Edit Text (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": true, - "attributes": { - "content": "Non-editable texts in Text View (iOS).", - "string": "Non-editable texts in Text View (iOS)." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1078 - }, - "end": { - "line": 1079 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": true, - "attributes": { - "content": "Static text", - "string": "Static text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": true, - "attributes": { - "content": "Static text is any text that is not directly entered by the user. This includes the below.", - "string": "Static text is any text that is not directly entered by the user. This includes the below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": true, - "attributes": { - "content": "All texts in:", - "string": "All texts in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1098, - 1099 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1098 - }, - "end": { - "line": 1099 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1099, - 1100, - 1104, - 1105 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1104 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": true, - "attributes": { - "content": "Texts in non-editable Text View", - "string": "Texts in non-editable Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in the date and time picker", - "string": "Month, day, and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar", - "string": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1099 - }, - "end": { - "line": 1100 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1106, - 1107 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1106 - }, - "end": { - "line": 1107 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1107, - 1108, - 1112, - 1113 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1112 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": true, - "attributes": { - "content": "Checkbox and Radio Button titles", - "string": "Checkbox and Radio Button titles" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in the date and time picker", - "string": "Month, day, and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Tabs", - "string": "Other controls, not considered as \"user input elements\", such as Tabs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1107 - }, - "end": { - "line": 1108 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1114, - 1115 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1114 - }, - "end": { - "line": 1115 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1115, - 1116, - 1121, - 1122 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1121 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": true, - "attributes": { - "content": "Checkbox and Radio Button titles (Android)", - "string": "Checkbox and Radio Button titles (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": true, - "attributes": { - "content": "Texts in non-editable Text View (iOS)", - "string": "Texts in non-editable Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": true, - "attributes": { - "content": "Month, day and year labels in the date and time picker", - "string": "Month, day and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar (iOS), or Tabs (Android)", - "string": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar (iOS), or Tabs (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1115 - }, - "end": { - "line": 1116 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": true, - "attributes": { - "content": "Hint text", - "string": "Hint text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": true, - "attributes": { - "content": "Hint text is static text in editable text elements or option selectors that is displayed when no value is given. This includes:", - "string": "Hint text is static text in editable text elements or option selectors that is displayed when no value is given. This includes:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1126, - 1127 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1126 - }, - "end": { - "line": 1127 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1127, - 1128, - 1130, - 1131 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1130 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text Field", - "string": "Placeholders in Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text View", - "string": "Placeholders in Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1127 - }, - "end": { - "line": 1128 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1132, - 1133 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1132 - }, - "end": { - "line": 1133 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1133, - 1134, - 1136, - 1137 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1136 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": true, - "attributes": { - "content": "Hints in Edit Text", - "string": "Hints in Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": true, - "attributes": { - "content": "Prompts in Drop Down lists", - "string": "Prompts in Drop Down lists" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1133 - }, - "end": { - "line": 1134 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1138, - 1139 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1138 - }, - "end": { - "line": 1139 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1139, - 1140, - 1143, - 1144 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1143 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text Field (iOS), Text View (iOS)", - "string": "Placeholders in Text Field (iOS), Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": true, - "attributes": { - "content": "Hints in Edit Text (Android)", - "string": "Hints in Edit Text (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": true, - "attributes": { - "content": "Prompts in Drop Down lists (Android)", - "string": "Prompts in Drop Down lists (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1139 - }, - "end": { - "line": 1140 + "ast-str-cf77a210-8bdd-4954-95fb-dab7e2deba53": { + "string": "モバイルセッションリプレイのプライバシーオプション" } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": false, - "attributes": { - "level": 3 }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": true, - "attributes": { - "content": "Appearance masking", - "string": "Appearance masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different appearance masking strategies, using the rules you set up in your configuration, to the below text types.", - "string": "The following chart shows how we apply different appearance masking strategies, using the rules you set up in your configuration, to the below text types." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": { - "href": "#revealing-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes", - "string": "Revealing attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": true, - "attributes": { - "href": "#other-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": true, - "attributes": { - "content": "Other attributes", - "string": "Other attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1153 + "description": { + "ast-str-5c1d73d9-4393-4d1a-a7de-55de0b118877": { + "string": "モバイルセッションリプレイのプライバシーオプションの構成" } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": false, - "attributes": { - "level": 4 }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes", - "string": "Revealing attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes are attributes that can reveal or suggest the value of input elements and can be used to infer a user's input or selection.", - "string": "Revealing attributes are attributes that can reveal or suggest the value of input elements and can be used to infer a user's input or selection." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": true, - "attributes": { - "content": "This includes:", - "string": "This includes:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-7783691c-f46e-4c9b-b0ec-ee8d288c7337": { + "string": "Mobile Session Replay" } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1159, - 1160 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1159 - }, - "end": { - "line": 1160 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1160, - 1161, - 1169, - 1170 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } + "tag": { + "ast-str-d5affb81-aca0-40fa-8c23-16f0d059f758": { + "string": "ドキュメント" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1166 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": true, - "attributes": { - "content": "Background of selected option in Segment", - "string": "Background of selected option in Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": true, - "attributes": { - "content": "Circle surrounding the selected date in a Date Picker", - "string": "Circle surrounding the selected date in a Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1166 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1165 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1165 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1165 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1165 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1166 - } + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-c868b0cd-784e-42f2-be58-7983427d84ea": { + "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 }, - "end": { - "line": 1166 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } + "tag": { + "ast-str-2a10486f-3901-4eb7-b003-20cc7d23f1ee": { + "string": "ドキュメント" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1169 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": true, - "attributes": { - "content": "The color of a label rendering the selected date in Date Picker", - "string": "The color of a label rendering the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } + "2": { + "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", + "text": { + "ast-str-cd9f333d-13ac-4283-bba5-680fc1b94093": { + "string": "モバイルセッションリプレイの設定と構成" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1160 - }, - "end": { - "line": 1161 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1171, - 1172 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1171 - }, - "end": { - "line": 1172 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1172, - 1173, - 1179, - 1180 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } + "tag": { + "ast-str-1e9dc563-9f7e-4a3c-b6ff-84303e00e726": { + "string": "ドキュメント" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1177 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": true, - "attributes": { - "content": "Selection mark in Checkbox", - "string": "Selection mark in Checkbox" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1177 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1176 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1176 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1176 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1176 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1177 - } + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-71010d1e-8251-4250-9cf0-5685318f478c": { + "string": "モバイルセッションリプレイのトラブルシューティング" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 }, - "end": { - "line": 1177 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } + "tag": { + "ast-str-1fef1fd1-f553-4651-b0c9-b05ec8549243": { + "string": "ドキュメント" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1172 - }, - "end": { - "line": 1173 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1181, - 1182 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1181 - }, - "end": { - "line": 1182 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1182, - 1183, - 1214, - 1215 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1185, - 1186, - 1200, - 1201 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": true, - "attributes": { - "content": "Background of selected option in Segment", - "string": "Background of selected option in Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": true, - "attributes": { - "content": "Circle surrounding the selected date in Date Picker", - "string": "Circle surrounding the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1194 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": true, - "attributes": { - "content": "Selection mark in Checkbox", - "string": "Selection mark in Checkbox" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": true, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1197 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1185 - }, - "end": { - "line": 1186 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1204, - 1205, - 1213, - 1214 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": true, - "attributes": { - "content": "The color of a label rendering the selected date in Date Picker", - "string": "The color of a label rendering the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1210 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1204 - }, - "end": { - "line": 1205 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1182 - }, - "end": { - "line": 1183 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1215, - 1216 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1215 - }, - "end": { - "line": 1216 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": true, - "attributes": { - "content": "Touch interactions", - "string": "Touch interactions" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 - }, - "end": { - "line": 1218 - } + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-fcfb9502-d1c1-4ec1-9898-667568c705e8": { + "string": "Session Replay" } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 }, - "end": { - "line": 1218 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 - }, - "end": { - "line": 1218 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different touch interaction strategies, using the rules you set up in your configuration, to the below text types. While any interaction that happens on an on-screen keyboard is masked, interactions with other elements are not masked.", - "string": "The following chart shows how we apply different touch interaction strategies, using the rules you set up in your configuration, to the below text types. While any interaction that happens on an on-screen keyboard is masked, interactions with other elements are not masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } + "tag": { + "ast-str-d4dec885-9a19-45eb-bf6d-2d227790d9cb": { + "string": "ドキュメント" } } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": true, - "attributes": { - "href": "#other-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": true, - "attributes": { - "content": "Other attributes", - "string": "Other attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": { - "href": "#on-screen-keyboard" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": { - "content": "On-screen keyboard", - "string": "On-screen keyboard" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 + } + }, + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": false, - "attributes": { - "level": 3, - "id": "image-masking-definition" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": true, - "attributes": { - "content": "Image masking ", - "string": "Image masking " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1226 - }, - "end": { - "line": 1227 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1226 - }, - "end": { - "line": 1227 - } - } - } - ], - "type": "heading", - "annotations": [ - { - "type": "attribute", - "name": "id", - "value": "image-masking-definition" - } - ], - "slots": {}, - "location": { - "start": { - "line": 1226 + "children": { + "translationListData": {} }, - "end": { - "line": 1227 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different image masking strategies:", - "string": "The following chart shows how we apply different image masking strategies:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" } } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1230, - 1231, - 1248, - 1249 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": true, - "attributes": { - "content": "Mask None", - "string": "Mask None" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1233, - 1237 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mask Large Only", - "string": "Mask Large Only" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mask Non Bundled Only", - "string": "Mask Non Bundled Only" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mark Large Only (Android) / Mask Non Bundled Only (iOS)", - "string": "Mark Large Only (Android) / Mask Non Bundled Only (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1233 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": true, - "attributes": { - "content": "Mask All", - "string": "Mask All" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": true, - "attributes": { - "content": "Content Image", - "string": "Content Image" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1243 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": true, - "attributes": { - "content": "System Image", - "string": "System Image" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1230 }, - "end": { - "line": 1231 - } + "slots": {}, + "location": "line 25-26" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 630d1d3f37c3a..5d5000b687adf 100644 --- a/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -1,108 +1,132 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "モバイルセッションリプレイの設定と構成" + "ast-str-485e15cc-0738-4baa-98b9-db3f8d752021": { + "string": "モバイルセッションリプレイの設定と構成" + } }, "description": { - "string": "モバイルセッションリプレイの設定と構成" + "ast-str-2b6994a7-5d24-4d85-8aca-c842cf4ee2ee": { + "string": "モバイルセッションリプレイの設定と構成" + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-9213fa71-a375-4bf7-9b6a-8015d1282f36": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-fa56b914-44fe-4871-940d-7603600b6274": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-379f506e-3d7a-4fea-b58f-490fec1cc61a": { + "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" + } + }, + "tag": { + "ast-str-7a8e5a41-0f5a-45ec-a218-471f1f769312": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/privacy_options", - "text": { - "string": "Mobile Session Replay Privacy Options" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/privacy_options", + "text": { + "ast-str-a35c2181-a87a-4f27-a952-7e4a2196c747": { + "string": "モバイルセッションリプレイのプライバシーオプション" + } + }, + "tag": { + "ast-str-166d237b-a671-42e7-b59d-8653457db279": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-7202702e-8627-46a1-b4c1-9d7d0ce8f95a": { + "string": "モバイルセッションリプレイのトラブルシューティング" + } + }, + "tag": { + "ast-str-fd107bd1-b4a4-4fdd-89e5-1240a31a9f04": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/mobile_and_tv_monitoring/android/web_view_tracking", - "text": { - "string": "Web View Tracking" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-58e8f44c-bfb9-4d8b-b918-3b9216e1e522": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-45071591-2694-4e30-8e47-902cdeb8a28b": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" + "5": { + "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", + "text": { + "ast-str-22e2b6a5-6d8d-4a2a-a861-8142fdd70d05": { + "string": "Web ビューのトラッキング" + } + }, + "tag": { + "ast-str-0cd14bce-40c2-46b6-93f1-d5a05bd92239": { + "string": "ドキュメント" + } + } } } - ] + } } }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 28, - 29 - ], - "inline": false, - "attributes": { - "file": "rum/session_replay/setup_and_configuration.mdoc.md" - }, - "children": [], - "type": "tag", - "tag": "partial", - "annotations": [ - { - "type": "attribute", - "name": "file", - "value": "rum/session_replay/setup_and_configuration.mdoc.md" - } - ], - "slots": {}, - "location": { - "start": { - "line": 28 + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" }, - "end": { - "line": 29 - } + "children": { + "translationListData": {} + }, + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + } + } + }, + "slots": {}, + "location": "line 28-29" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/ko/cloudcraft/getting-started/version-history.md b/content/ko/cloudcraft/getting-started/version-history.md new file mode 100644 index 0000000000000..07e7f7e335d40 --- /dev/null +++ b/content/ko/cloudcraft/getting-started/version-history.md @@ -0,0 +1,78 @@ +--- +title: 버전 기록 +--- + +## 개요 + +버전 기록을 사용하면 사용자는 시간 경과에 따른 아키텍처 다이어그램의 변경 사항을 추적하여 이전 다이어그램 버전을 검토하고 복원할 수 있습니다. 복잡한 클라우드 아키텍처를 관리하든 팀과 협업하든, 버전 기록은 다이어그램의 발전 과정에 관한 인사이트를 제공합니다. + +Cloudcraft 애플리케이션의 오른쪽 상단에 있는 **Version history** 버튼을 클릭하면 버전 기록 기능에 액세스할 수 있습니다. + +{{< img src="cloudcraft/getting-started/version-history/cloudcraft-diagram-aws-infrastructure-version-history.png" alt="AWS 인프라를 보여주는 Cloudcraft 다이어그램과 버전 기록 버튼을 강조하는 화살표." responsive="true" style="width:100%;">}} + +## 버전 작업 + +버전 기록은 과거 작업을 검토하는 데 사용될 뿐 아니라 현재 및 향후 다이어그램을 관리하는 강력한 도구이기도 합니다. 다음과 같은 주요 작업을 할 수 있습니다. + +1. **이전 버전 복원**: 다이어그램을 이전 상태로 되돌려야 하는 경우 간편하게 복원할 수 있습니다. 이전 버전을 볼 때 화면 오른쪽 상단에 있는 **Restore this version** 버튼을 클릭하기만 하면 됩니다. +2. **새 블루프린트 만들기**: 버전 기록을 사용하면 다이어그램의 특정 버전을 새 블루프린트로 저장할 수 있습니다. 이 기능은 특히 템플릿을 만들거나 나중에 참고할 수 있도록 특정 아키텍처 상태를 보존하는 데 유용합니다. 특정 버전에서 새 블루프린트를 만들려면 버전 이름 오른쪽에 있는 세 개의 점을 클릭하고 **Save as a new blueprint**를 선택합니다. +3. **버전 비교**: 명확히 표시되지는 않지만, 다양한 버전을 확인하여 시간이 지남에 따라 아키텍처가 어떻게 변경되었는지 수동으로 비교할 수 있습니다. + +**참고**: 기록에서 수동으로 버전을 만들거나 삭제할 수 없습니다. + +### 생성 + +다이어그램 작업을 진행하면 버전이 자동으로 생성됩니다. 기본적으로 각 버전에는 생성 날짜와 시간이 타임스탬프로 지정되고 이름이 지정됩니다. 하지만 더 쉽게 참조할 수 있도록 특정 버전에 사용자 지정 이름을 지정할 수 있습니다. 이는 아키텍처의 중요한 이정표나 변경 사항을 표시하는 데 특히 유용합니다. + +버전 이름을 지정하는 방법: + +1. 이름을 지정할 버전을 선택합니다. +2. 버전 이름 오른쪽에 있는 세 개의 점을 클릭합니다. +3. 드롭다운 메뉴에서 **Name this version**을 선택합니다. + +{{< img src="cloudcraft/getting-started/version-history/version-history-interface-cloudcraft.png" alt="Cloudcraft에서 버전 이름을 지정하거나 버전을 저장하는 옵션이 있는 버전 기록 인터페이스." responsive="true" style="width:100%;">}} + +Cloudcraft는 세분성과 효율성의 균형을 맞추기 위해 지능적으로 새 버전을 생성합니다. 현재 버전이 5분 이상 지난 경우, 새로운 업데이트가 있을 때마다 새 버전이 생성됩니다. 최신 버전에서 5분 이내에 변경된 내용은 기존 버전에 업데이트로 추가됩니다. 이러한 방식은 사소한 변경 사항으로 인해 버전 기록이 복잡해지는 것을 방지하면서, 의미 있는 이력을 유지할 수 있도록 합니다. + +사용자가 수동으로 새 버전을 만들 수는 없지만 다이어그램에서 [Snapshot 모드에서 Live 모드로][1] 전환할 때 새 버전이 자동으로 생성됩니다. + +### 메타데이터 + +각 버전에는 사용자 이름, 타임스탬프 등의 메타데이터가 포함되어 있습니다. + +버전을 만든 사용자 이름은 버전 이름 오른쪽에 표시됩니다. 다른 사용자가 마지막으로 버전을 편집한 경우 해당 사용자의 이름도 표시되어 변경 사항에 대한 책임 소재를 명확하게 파악할 수 있습니다. + +{{< img src="cloudcraft/getting-started/version-history/cloudcraft-version-history-user-timestamps.png" alt="사용자 세부 정보와 타임스탬프가 포함된 버전 기록 인터페이스." responsive="true" style="width:100%;">}} + +라이브 다이어그램의 경우 버전 이름 왼쪽에 녹색 번개 모양 아이콘이 나타나 동적 버전과 Snapshot 버전을 구분합니다. + +### 검색 + +Cloudcraft는 버전 기록을 쉽게 탐색할 수 있도록 검색 기능을 제공합니다. 이름이나 날짜로 특정 버전을 검색하여 다이어그램 타임라인에서 특정 지점을 쉽게 찾을 수 있습니다. + +버전을 검색하려면 버전 기록 패널 상단의 검색창에 검색어를 입력하세요. + +중요한 변경 사항에만 집중하고 싶다면 검색 창 아래에 있는 **Only show named versions** 옵션을 선택하여 뷰를 필터링하면 됩니다. 이를 통해 이름이 지정되지 않은 버전을 숨겨 버전 기록 뷰를 간소화할 수 있습니다. + +### 보존 기간 + +이름이 지정된 버전은 영구적으로 보관되어, 중요한 다이어그램 상태를 지속적으로 기록합니다. + +이름이 지정되지 않은 버전은 해당 플랜에 따라 다른 보존 기간이 적용됩니다. +- Free 및 Pro 플랜 사용자: 이름이 지정되지 않은 버전은 30일 동안 보관됩니다. +- Enterprise 플랜 사용자: 이름이 지정되지 않은 버전은 90일 동안 보관됩니다. + +이러한 계층화된 방식은 일반 사용자에게는 유용한 기록을 유지하도록 하면서, 더욱 복잡한 요구를 가진 엔터프라이즈 고객에게는 확장된 보존 기간을 제공합니다. + +## 모범 사례 + +버전 기록 기능을 최대한 활용하려면 다음과 같은 모범 사례를 참고하세요. + +1. **중요 버전 이름 지정**: 다이어그램의 중요 버전에 의미 있는 이름을 지정하세요. 이렇게 하면 아키텍처 발전의 주요 단계를 쉽게 식별하고 영구적으로 유지할 수 있습니다. +2. **정기적으로 검토**: 버전 기록을 주기적으로 검토하여 아키텍처 진행 상황을 추적하세요. 시간이 지남에 따라 설계 결정에 대한 유용한 인사이트를 얻을 수 있습니다. +3. **검색 활용**: 검색 기능과 **Only show named versions** 필터를 활용하여 버전 기록을 효율적으로 탐색하세요. 특히 반복 작업이 많은 프로젝트에 더욱 유용합니다. +4. **버전 보관 계획**: Free 또는 Pro 플랜을 사용하는 경우, 이름이 지정되지 않은 버전의 보관 기간은 30일입니다. 이 기간 이후에도 보관하려면 버전의 이름을 지정하세요. +5. **협업 문서화**: 팀으로 작업할 때 버전 이름 지정 기능을 사용하여 누가 특정 변경을 했는지, 그리고 그 이유는 무엇인지 기록하세요. 팀 내 유용한 소통 도구가 됩니다. +6. **제안 작업에 버전 사용**: 아키텍처에 중요한 변경을 하기 전에 이름이 지정된 버전을 만드세요. 제안된 변경 사항이 승인되지 않거나 구현되지 않을 경우 쉽게 되돌릴 수 있습니다. + +[1]: /ko/cloudcraft/getting-started/live-vs-snapshot-diagrams/ \ No newline at end of file diff --git a/content/ko/code_analysis/github_pull_requests.md b/content/ko/code_analysis/github_pull_requests.md new file mode 100644 index 0000000000000..2f62b7e832eb8 --- /dev/null +++ b/content/ko/code_analysis/github_pull_requests.md @@ -0,0 +1,101 @@ +--- +aliases: +- /ko/static_analysis/github_pull_requests +description: GitHub 풀 요청에서 Code Analysis를 사용하는 방법 +further_reading: +- link: /integrations/github/ + tag: 설명서 + text: GitHub 통합에 대해 알아보기 +- link: /code_analysis/ + tag: 설명서 + text: 코드 분석에 대해 알아보기 +title: GitHub Pull Requests +--- + +## 개요 + +Code Analysis는 두 가지 방법으로 GitHub 풀 요청과 통합됩니다. +- [위반 사항을 표시하는 풀 요청 코멘트](#enable-code-analysis-pr-comments-for-your-repositories): GitHub에서 코드 리뷰가 진행되는 동안 Datadog은 하나 이상의 규칙 세트가 적용된 리포지토리의 풀 요청에서 Static Analysis 위반 사항을 자동으로 확인할 수 있습니다. 위반 사항은 해당 코드 줄에 인라인 리뷰 코멘트와 함께 표시되며, 풀 요청에 직접 적용할 수 있는 수정 사항(해당하는 경우)도 함께 제시됩니다. 이 기능은 Static Analysis(SAST)에서만 사용할 수 있습니다. +{{< img src="ci/static-analysis-pr-comment-example.png" alt="풀 요청에 대한 Code Analysis 코멘트 예" style="width:90%;" >}} + +- [Datadog에서 직접 문제 해결을 위한 풀 요청 생성](#fixing-a-vulnerability-directly-from-datadog): Datadog에서 제안하는 코드 수정 사항을 기반으로 보안 취약점이나 코드 품질 문제를 해결하기 위한 풀 요청를 UI에서 생성할 수 있습니다. 이 기능은 Static Analysis(SAST)에서만 사용할 수 있습니다. +{{< img src="ci/sast_one_click_light.png" alt="Code Analysis 원 클릭 수정 예시" style="width:90%;" >}} + +이러한 기능을 사용하려면 리포지토리에 필요한 GitHub 권한(Read & Write)이 있는지 확인하세요. + +## GitHub 풀 요청의 Code Analysis 설정 + +### Datadog Code Analysis 활성화 + +Datadog Code Analysis를 사용하려면 [설치 지침][1]에 설명된 대로 적절한 구성 파일을 리포지토리에 추가하세요. + +### GitHub 앱 구성 + +GitHub에서 Code Analysis를 사용하려면 다음 중 하나를 선택하세요. + +- Datadog에서 GitHub 앱을 만듭니다. +- Datadog에 이미 GitHub 앱을 만들었다면 기존 GitHub 앱을 업데이트합니다. + +GitHub 앱에 부여한 권한에 따라 설정할 수 있는 [GitHub 통합][2] 기능이 결정됩니다. + +#### GitHub 앱 생성 및 설치 + +1. Datadog에서 [**Integrations > GitHub Applications > Add New GitHub Application**][3]으로 이동합니다. +1. GitHub 조직 이름 등 필요한 세부 정보를 입력합니다. +1. **Select Features**에서 **Code Analysis: Pull Request Review Comments** 항목을 체크합니다. +1. **Edit Permissions**에서 **Pull Requests** 권한이 **Read & Write**로 설정되어 있는지 확인합니다. +1. **Create App in GitHub**를 클릭합니다. +1. 앱 이름을 입력하고 제출합니다. +1. **Install GitHub App**을 클릭합니다. +1. 앱을 설치할 리포지토리를 선택한 다음 **Install & Authorize**를 클릭합니다. + +{{< img src="ci/static-analysis-install-github-app.png" alt="GitHub App 설치 화면" style="width:50%;" >}} + +#### 기존 GitHub App 업데이트 + +1. Datadog에서 [**Integrations > GitHub Applications**][5]로 이동하여 Code Analysis에 사용할 GitHub 앱을 검색합니다. +{{< img src="ci/static-analysis-existing-github-app.png" alt="풀 요청에 대한 Static Analysis 코멘트 예" style="width:90%;" >}} +1. **Features* 탭에서 **Code Analysis: Pull Request Comments** 섹션을 확인하여 GitHub 앱에 추가 권한이 필요한지 확인합니다. 필요한 경우**Update permissions in GitHub**를 클릭하여 앱 설정을 수정합니다. +1. **Repository permissions**에서 **Pull Requests** 액세스를 **Read and write**로 설정합니다. +{{< img src="ci/static-analysis-pr-read-write-permissions.png" alt="풀 요청 읽기 및 쓰기 권한 관련 드롭다운" style="width:90%;" >}} +1. **Subscribe to events** 제목 아래 **Pull request** 옵션을 체크합니다. +{{< img src="ci/static-analysis-pr-review-comment.png" alt="풀 요청 리뷰 코멘트 권한 관련 체크박스" style="width:90%;" >}} + +### 리포지토리의 Code Analysis PR 코멘트 활성화 + +1. Datadog에서 [**CI Settings** > **Code Analysis Settings**][4]로 이동합니다. +1. **GitHub Comments**를 활성화하려면 해당 리포지토리 옆에 있는 토글 스위치를 클릭합니다. 아래 예시에서는 해당 `demo-static-analysis-gates` 리포지토리에 관한 코멘트 기능이 활성화되어 있습니다. + +{{< img src="ci/static-analysis-github-comments.png" alt="풀 요청의 Code Analysis 코멘트 예" style="width:100%;" >}} + +**참고:** [GitHub Actions][6]를 사용하여 스캔을 실행하는 경우 코멘트가 나타나도록 `push` 작업을 트리거하세요. + +### Datadog에서 직접 취약점 수정 + +GitHub 앱의 **Pull Requests** 권한이 **Read & Write**으로 설정된 경우, Static Analysis 결과의 원클릭 수정이 활성화되며 사용 가능한 수정 제안 사항을 함께 확인할 수 있습니다. + +다음 단계에 따라 취약점을 수정하고 풀 리퀘스트를 엽니다. +1. Code Analysis에서 특정 결과를 확인합니다. +2. 결과 사이드 패널의 **Fix Violation**을 클릭하빈다. +3. **Open a Pull Request**를 선택합니다. +4. 풀 리퀘스트 타이틀과 커밋 메시지를 입력합니다. +5. **Create PR**을 클릭합니다. + +결과가 발견된 브랜치에 직접 커밋하여 취약점을 수정할 수도 있습니다. + +제안 수정안을 커밋하는 방법 + +1. Code Analysis에서 특정 결과를 확인합니다. +2. 결과 사이드 패널의 **Fix Violation**을 클릭합니다. +3. **Commit to current branch**를 클릭합니다. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/code_analysis#setup +[2]: /ko/integrations/github/ +[3]: https://app.datadoghq.com/integrations/github/add +[4]: https://app.datadoghq.com/ci/settings/static-analysis +[5]: https://app.datadoghq.com/integrations/github/configuration +[6]: /ko/code_analysis/static_analysis/github_actions/ \ No newline at end of file diff --git a/content/ko/code_analysis/static_analysis/github_actions.md b/content/ko/code_analysis/static_analysis/github_actions.md new file mode 100644 index 0000000000000..7409bc6c6c396 --- /dev/null +++ b/content/ko/code_analysis/static_analysis/github_actions.md @@ -0,0 +1,116 @@ +--- +aliases: +- /ko/continuous_integration/static_analysis/github_actions +- /ko/static_analysis/github_actions +dependencies: +- https://github.com/DataDog/datadog-static-analyzer-github-action/blob/main/README.md +description: Datadog과 GitHub를 사용해 CI 파이프라인에서 Static Analysis 작업을 실행하세요. +title: Static Analysis와 GitHub Actions +--- +## 개요 + +GitHub Action 워크플로에서 [Datadog Static Analysis][1] 작업을 실행합니다. 이 작업은 [Datadog Static Analyzer][8]를 래핑하고, 코드베이스에 실행한 후 결과를 Datadog에 업로드합니다. + +## 워크플로 + +Datadog Static Analysis 작업을 실행하기 위해 `.github/workflows`에서 파일을 생성합니다. + +다음은 워크플로 파일 샘플입니다. + +```yaml +on: [push] + +jobs: + check-quality: + runs-on: ubuntu-latest + name: Datadog Static Analyzer + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Check code meets quality standards + id: datadog-static-analysis + uses: DataDog/datadog-static-analyzer-github-action@v1 + with: + dd_app_key: ${{ secrets.DD_APP_KEY }} + dd_api_key: ${{ secrets.DD_API_KEY }} + dd_site: "datadoghq.com" + cpu_count: 2 + enable_performance_statistics: false +``` + +Datadog API 및 애플리케이션 키는 조직 또는 리포지토리 수준에서 [GitHub 리포지토리의 시크릿][4]으로 **반드시** 설정해야 합니다. 그리고 Datadog 애플리케이션 키에 `code_analysis_read` 범위를 추가합니다. 자세한 내용은 [API 및 애플리케이션 키][2]를 참고하세요. + +`dd_site`를 사용 중인 Datadog 사이트로 교체하세요[3]. + +## 입력 + +Static Analysis에 대해 다음 파라미터를 설정합니다. + +| 이름 | 설명 | 필수 | 기본값 | +|--------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-----------------| +| `dd_api_key` | Datadog API 키. 이 키는 [Datadog 조직][2]에서 생성되었으며 [시크릿][2]으로 저장해야 합니다. | Yes | | +| `dd_app_key` | Datadog 애플리케이션 키. 이 키는 [Datadog 조직][2]에서 생성되었으며 [시크릿][4]으로 저장해야 합니다. | Yes | | +| `dd_site` | 정보를 전송할 [Datadog 사이트][3]입니다. | No | `datadoghq.com` | +| `cpu_count` | 분석기가 사용하는 CPU 수를 설정합니다. | No | `2` | +| `enable_performance_statistics` | 분석된 파일의 실행 시간 통계를 가져옵니다. | No | `false` | +| `debug` | 분석기가 디버깅에 유용한 추가 로그를 출력하도록 합니다. 활성화하려면 `yes`로 설정하세요. | No | `no` | +| `subdirectory` | 분석 대상을 제한해야 하는 하위 디렉터리 패턴 또는 글로브(또는 공백으로 구분된 하위 디렉터리 패턴). 예: "src" 또는 "src packages". | `false` | | +| `architecture` | 분석기에 사용할 CPU 아키텍처. 지원되는 값은 `x86_64` 및 `aarch64`. | 아니요 | `x86_64` | +| `diff_aware` | [Diff-aware scanning 모드][5]를 활성화합니다. | No | `true` | +| `secrets_enabled` | 시크릿 감지 활성화(비공개 베타 버전) | No | `false` | + +### 참고 + +1. Diff-aware 스캐닝은 기능 브랜치를 분석할 때 커밋으로 수정된 파일만 스캔합니다. Diff-aware 스캐닝은 기본적으로 활성화되어 있습니다. Diff-aware 스캐닝을 비활성화하려면 GitHub 작업 `diff_aware` 파라미터를 `false`로 설정하세요. +2. 시크릿 스캐닝은 비공개 베타 버전입니다. 시크릿 스캐닝을 활성화하려면 Datadog 고객 성공 관리자에게 문의하세요. + +### 더 이상 사용되지 않는 입력 +다음 작업 입력은 더 이상 사용되지 않으며 효과가 없습니다. 이러한 입력을 전달하면 경고가 발생합니다. +* `dd_service` +* `dd_env` + +## 규칙 사용자 지정 + +기본적으로 [Datadog Static Analyzer][8]는 코드베이스의 언어를 감지하고 기본 규칙 세트를 사용하여 코드베이스를 분석합니다. + +규칙 세트를 지정하고 사용자 정의하려면 리포지토리의 루트 디렉터리에 `static-analysis.datadog.yml` 파일을 추가하여 사용할 규칙 세트를 정의합니다. + +```yaml +rulesets: + - + - +``` + +전체 규칙 세트 목록은 [Datadog 문서][6]를 참고하세요. + +### Python 전용 예시 + +Python 기반 리포지토리 예는 다음과 같습니다. + +```yaml +rulesets: + - python-code-style + - python-best-practices + - python-inclusive +``` + + +## 기타 유용한 GitHub Actions + +Datadog Software Composition Analysis(SCA)는 종속성을 검사하고 취약점과 라이선스를 탐지하는 기능도 제공합니다. 이 제품은 [`datadog-sca-github-action`][7]과 함께 사용할 수 있습니다. + + +## 참고 자료 + +기타 유용한 문서, 링크 및 기사: + +- [코드 분석에 대해 알아보기][1] + +[1]: https://docs.datadoghq.com/ko/code_analysis/static_analysis +[2]: https://docs.datadoghq.com/ko/account_management/api-app-keys/ +[3]: https://docs.datadoghq.com/ko/getting_started/site/ +[4]: https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository +[5]: https://github.com/DataDog/datadog-static-analyzer/blob/main/README.md#diff-aware-scanning +[6]: https://docs.datadoghq.com/ko/code_analysis/static_analysis_rules/ +[7]: https://github.com/DataDog/datadog-sca-github-action +[8]: https://github.com/DataDog/datadog-static-analyzer \ No newline at end of file diff --git a/content/ko/code_analysis/troubleshooting/_index.md b/content/ko/code_analysis/troubleshooting/_index.md new file mode 100644 index 0000000000000..7759aec120c1f --- /dev/null +++ b/content/ko/code_analysis/troubleshooting/_index.md @@ -0,0 +1,152 @@ +--- +description: 일반적인 Code Analysis 문제를 해결하는 방법과 지원팀에 문의하는 방법을 알아보세요. +further_reading: +- link: /code_analysis/ + tag: 설명서 + text: 코드 분석에 대해 알아보기 +- link: /code_analysis/static_analysis/ + tag: 설명서 + text: 정적 분석에 대해 알아보기 +- link: /code_analysis/software_composition_analysis/ + tag: 설명서 + text: 소프트웨어 구성 요소 분석에 대해 알아보기 +title: Code Analysis 트러블슈팅 +--- + +## 개요 + +이 페이지는 Datadog Code Analysis 설정 또는 구성 문제 발생 시 해결하는 방법을 안내합니다. 문제가 지속되면 [Datadog 지원팀에 문의][1]하세요. + +## 정적 분석 + +Datadog Static Analyzer 관련 문제는 버그 보고서에 다음 정보를 포함하여 지원팀과 Customer Success Manager에게 제출하세요. + +- `static-analysis.datadog.yml` 파일 +- 로컬 환경이나 CI/CD 파이프라인에서 실행되는 정적 분석 도구(예: CLI)의 출력 결과 +- 생성된 SARIF 파일(사용 가능한 경우) +- 리포지토리 URL(공개 또는 비공개) +- 분석을 실행한 브랜치 이름 +- Datadog Static Analyzer를 실행하는 데 사용된 정확한 명령줄 + +### 성능 이슈 + +성능 문제가 발생하는 경우 명령줄에서 정적 분석 도구를 실행할 때 `--performance-statistics` 플래그를 활성화할 수 있습니다. + +성능 문제의 경우 다음 정보를 포함하세요. + +- `static-analysis.datadog.yml` 파일 +- 로컬 환경이나 CI/CD 파이프라인에서 실행되는 정적 분석 도구(예: CLI)의 출력 결과 +- 리포지토리 URL(공개 또는 비공개) + +**참고:** [Static Analysis 및 GitHub Actions][2]를 사용하는 경우 [`enable_performance_statistics`][3] 파라미터를 true로 설정하세요. + +### 차단 이슈 + +성능과 관련 없는 문제가 발생하거나 Datadog Static Analyzer가 종료되지 않는 경우 `--debug true --performance-statistics` 플래그를 사용하여 Datadog Static Analyzer를 실행하세요. + +### 분석기 실행 시 403 오류 발생 + +분석기와 `datadog-ci`를 실행할 때 다음 변수가 올바르게 지정되었는지 확인하세요. `DD_APP_KEY`, `DD_API_KEY`, `DD_SITE` + +### SARIF 업로드 이슈 + +
+ SARIF 가져오기 기능은 Snyk, CodeQL, Semgrep, Checkov, Gitleaks, Sysdig에서 테스트되었습니다. 다른 SARIF 호환 도구 사용 시 문제가 발생하는 경우 Datadog 지원팀에 문의하시기 바랍니다. +
+ +타사 정적 분석 도구에서 Datadog으로 결과를 업로드할 때는 해당 결과가 상호 운용 가능한 [정적 분석 결과 교환 형식(SARIF)][5] 형식인지 확인하세요. Node.js 버전 14 이상이 필요합니다. + +SARIF 보고서를 업로드하려면 다음 단계를 따르세요. + +1. [`DD_API_KEY`와 `DD_APP_KEY` 변수가 정의되어 있는지][4] 확인합니다. +2. (선택 사항) [`DD_SITE` 변수][7]를 설정합니다(기본값은 `datadoghq.com`). +3. `datadog-ci` 유틸리티를 설치합니다: + + ```bash + npm install -g @datadog/datadog-ci + ``` + +4. 코드에 타사 정적 분석 결과 도구를 실행하고 결과를 SARIF 형식으로 출력합니다. +5. 결과를 Datadog에 업로드합니다: + + ```bash + datadog-ci sarif upload $OUTPUT_LOCATION + ``` + +### `GLIBC_X.YY not found` 오류 메시지 + +CI 파이프라인에서 정적 분석기를 실행하면 다음 줄과 유사한 오류 메시지가 표시됩니다. + +``` +version `GLIBC_X.YY' not found +``` + +이는 다음 중 하나에 해당합니다. + +- 이전 버전의 glibc가 포함된 Linux 배포판에서 CI 파이프라인을 실행하고 있습니다. 이 경우 Datadog은 최신 버전으로 업그레이드할 것을 권장합니다. 분석기는 항상 최신 Ubuntu/Debian 기반 시스템에서 실행됩니다. +- glibc에 의존하지 않는 Linux 배포판(예: Alpine Linux)으로 CI 파이프라인을 실행하고 있습니다. + 대신, 최신 버전의 glibc(예: Ubuntu의 안정 버전)를 지원하는 배포판을 사용하여 CI 파이프라인을 실행하세요. + +### Datadog UI에 결과가 표시되지 않음 + +**GitHub 리포지토리가 아닌 곳에서 Code Analysis를 실행하는 경우**, 첫 번째 검사는 기본 브랜치(예: `master`, `main`, `prod`, `production`과 같은 브랜치 이름)에서 실행해야 합니다. 기본 브랜치에서 커밋하면 기본이 아닌 브랜치가 분석됩니다. 앱 내에 있는 [Repository Settings][4]에서 기본 브랜치를 구성할 수 있습니다. + +Datadog 분석기를 사용하는 경우 [차이점 인식 스캐닝][6]이 기본적으로 활성화되어 있습니다. CI 파이프라인 내에서 해당 도구를 실행하는 경우 `datadog-ci`가 분석 중인 리포지토리의 **루트**에서 실행되도록 해야 합니다. + + +## 소프트웨어 구성 분석 + +Datadog Software Composition Analysis에 문제가 있는 경우 버그 보고서에 다음 정보를 포함하여 지원팀과 Customer Success Manager에게 제출하세요. + +- 로컬 환경이나 CI/CD 파이프라인에서 실행되는 SCA 도구(예: CLI)의 출력 결과 +- 생성된 SBOM 파일(사용 가능한 경우) +- 리포지토리 URL(공개 또는 비공개) +- 분석을 실행한 브랜치 이름 +- 리포지토리의 종속성 파일 목록(예: `package-lock.json`, `requirements.txt`, `pom.xml`) + +### SBOM 업로드 이슈 +[Datadog SBOM 생성기][7]가 권장되지만, Datadog은 모든 SBOM 파일 수집을 지원합니다. 파일이 Cyclone-DX 1.4 또는 Cyclone-DX 1.5 형식을 준수하는지 확인하세요. + +SBOM 파일 수집은 다음 타사 도구에서 검증되었습니다. +- [osv-scanner][7] +- [trivy][8] + +SBOM 파일을 Datadog으로 가져오려면 다음 단계를 따르세요. + +1. `datadog-ci` CLI를 설치합니다(Node.js가 설치되어 있어야 함). +2. `DD_SITE`, `DD_API_KEY`, `DD_APP_KEY` 환경 변수가 설정되었는지 확인합니다. +3. 도구를 호출하여 파일을 Datadog에 업로드합니다. +다음 두 명령을 사용하여 도구를 설치하고 호출할 수 있습니다. +```bash +# datadog-ci 설치 +npm install -g @datadog/datadog-ci + +# SBOM 파일 업로드 +datadog-ci sbom upload /path/to/sbom-file.json +``` + +### Datadog UI에 결과가 표시되지 않음 + +**GitHub 리포지토리가 아닌 곳에서 Code Analysis를 실행하는 경우**, 첫 번째 검사는 기본 브랜치(예: `master`, `main`, `prod`, `production`과 같은 브랜치 이름)에서 실행해야 합니다. 기본 브랜치에서 커밋하면 기본이 아닌 브랜치가 분석됩니다. + +언제든지 앱 내에 있는 [Repository Settings][4]에서 기본 브랜치를 구성할 수 있습니다. + +### C# 프로젝트의 패키지가 감지되지 않음 + +SBOM 생성기([`osv-scanner`][7])는 `packages.lock.json` 파일에서 종속성을 추출합니다. 이 파일이 없는 경우 프로젝트 정의를 업데이트하여 생성할 수 있습니다. [프로젝트 정의 업데이트 지침][9]에 따라 `packages.lock.json` 파일을 생성하세요. + +생성된 잠금 파일은 [`osv-scanner`][7]에서 종속성을 추출하고 SBOM을 생성하는 데 사용됩니다. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/help/ +[2]: /ko/code_analysis/static_analysis/github_actions +[3]: /ko/code_analysis/static_analysis/github_actions#inputs +[4]: https://app.datadoghq.com/ci/settings/repository +[5]: https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sarif +[6]: https://docs.datadoghq.com/ko/code_analysis/static_analysis/setup/#diff-aware-scanning +[7]: https://github.com/DataDog/osv-scanner +[8]: https://github.com/aquasecurity/trivy +[9]: https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#enabling-the-lock-file \ No newline at end of file diff --git a/content/ko/developers/guide/dogshell.md b/content/ko/developers/guide/dogshell.md new file mode 100644 index 0000000000000..fd2f1f0ae2b52 --- /dev/null +++ b/content/ko/developers/guide/dogshell.md @@ -0,0 +1,93 @@ +--- +aliases: +- /ko/developers/faq/dogshell-quickly-use-datadog-s-api-from-terminal-shell +- /ko/developers/guide/dogshell-quickly-use-datadog-s-api-from-terminal-shell +description: 터미널 또는 쉘에서 Datadog의 API 사용 +title: Dogshell +--- + +Dogshell이라는 래퍼를 사용하여 명령줄에서 Datadog API를 사용할 수 있습니다. + +## Dogshell 설치 + +Dogshell에는 공식적으로 지원되는 [`datadogpy` Python 라이브러리][1]가 포함되어 있으며, 이 라이브러리는 [`DogStatsD`][2]를 사용하여 Datadog에 데이터를 전송하는 데 자주 사용됩니다. PIP를 사용하여 라이브러리를 설치하려면 다음 명령을 실행하세요. + +{{< code-block lang="shell" >}} +pip install datadog +{{< /code-block >}} + +환경에 따라 라이브러리를 PATH에 추가해야 할 수도 있습니다. 다른 설치 지침은 [`datadogpy`GitHub 리포지토리][3]를 참고하세요. + +## Dogshell 구성 + +Dogshell은 API 키, 애플리케이션 키, Datadog 사이트를 저장하기 위해 `.dogrc`라는 구성 파일을 사용합니다. + +Dogshell을 구성하는 방법: +1. 홈 디렉터리에서 `.dogrc` 파일을 생성합니다. + {{< code-block lang="shell" >}} +touch ~/.dogrc +{{< /code-block >}} + +1. 다음 내용을 파일에 추가하고, `MY_API_KEY`와 `MY_APP_KEY`를 각각 API 키와 애플리케이션 키로 바꿉니다. + ```conf + [Connection] + apikey = MY_API_KEY + appkey = MY_APP_KEY + api_host = {{< region-param key="dd_api">}} + ``` + +
여러 환경에 명령을 실행해야 하는 경우 여러 구성 파일을 만들 수 있습니다. --config 플래그를 사용하여 대체 구성 파일의 경로를 지정하세요.
+ +1. 테스트 메트릭을 게시하여 `dogshell` 명령을 테스트합니다. + {{< code-block lang="shell" >}} +dog metric post test_metric 1 +{{< /code-block >}} + +## Dogshell 명령 + +사용 가능한 Dogshell 명령의 전체 목록을 보려면 `-h` 플래그를 사용하세요. + +{{< code-block lang="shell" >}} +dog -h +{{< /code-block >}} + +다음 명령에 `-h` 옵션을 추가하면 특정 Dogshell 사용법에 관한 자세한 정보를 얻을 수 있습니다. + +* `dog metric` +* `dog event` +* `dog service_check` +* `dog monitor` +* `dog downtime` +* `dog timeboard` +* `dog screenboard` +* `dog dashboard` +* `dog host` +* `dog tag` +* `dog search` +* `dog comment` + +추가 정보는 [Dogshell 코드][4]를 참고하세요. + +### Dogshell 예시 + +다음 구문은 Datadog 계정에 메트릭을 게시합니다. + +{{< code-block lang="shell" disable_copy="true">}} +dog metric post MY_METRIC_NAME METRIC_VALUE --tags "TAG_KEY_1:TAG_VALUE_1,TAG_KEY_2:TAG_VALUE_2" +{{< /code-block >}} + +예를 들어, 다음 명령은 값이 `1.0`이고 `test:one` 및 `example:one` 태그가 있는 `test_dogshell_metric` 메트릭을 계정에 전송합니다. + +{{< code-block lang="shell" >}} +dog metric post test_dogshell_metric 1.0 --tags "test:one,example:one" +{{< /code-block >}} + +명령을 실행한 후 [Metrics Explorer][5]를 사용하여 `test_dogshell_metric`을 검색하세요. + +{{< img src="developers/guide/dogshell_test1.png" alt="Metrics 탐색기에서 test_dogshell_metric 관찰" >}} + +[1]: https://github.com/DataDog/datadogpy +[2]: /ko/metrics/custom_metrics/dogstatsd_metrics_submission/ +[3]: https://github.com/DataDog/datadogpy#installation +[4]: https://github.com/DataDog/datadogpy/tree/master/datadog/dogshell +[5]: https://app.datadoghq.com/metric/explorer \ No newline at end of file diff --git a/content/ko/glossary/terms/new.md b/content/ko/glossary/terms/new.md new file mode 100644 index 0000000000000..4ed10d30b1b04 --- /dev/null +++ b/content/ko/glossary/terms/new.md @@ -0,0 +1,5 @@ +--- +short_definition: NEW는 최근에 출시된, 완전히 개발되어 프로덕션(운영) 환경에서 사용할 준비가 된 제품 또는 기능을 의미합니다. +title: new +--- +**NEW**는 최근에 출시된, 완전히 개발되어 프로덕션(운영) 환경에서 사용할 준비가 된 제품 또는 기능을 의미합니다. 새 기능은 충분한 테스트를 거쳐 사용 준비가 된 상태이며, 일반적인 프로덕션(운영) 환경의 워크로드를 완전히 지원합니다. \ No newline at end of file diff --git a/content/ko/integrations/airbyte.md b/content/ko/integrations/airbyte.md new file mode 100644 index 0000000000000..91ddccf6fd7f9 --- /dev/null +++ b/content/ko/integrations/airbyte.md @@ -0,0 +1,158 @@ +--- +app_id: airbyte +categories: +- ai/ml +- 데이터 저장 +custom_kind: integration +description: Airbyte 배포 상태를 모니터링하세요. +integration_version: 1.0.0 +media: [] +supported_os: +- 리눅스 +- windows +- macos +title: Airbyte +--- +## 개요 + +이 점검은 [Airbyte](https://airbyte.com/)를 모니터링합니다. 메트릭은 [DogStatsD](https://docs.datadoghq.com/developers/dogstatsd)를 통해 Datadog으로 전송됩니다. + +## 설정 + +### 설치 + +Airbyte 통합이 제대로 작동하려면 아래 모든 단계가 필요합니다. 시작하기 전에 StatsD/DogStatsD 매핑 기능이 포함된 [Datadog Agent](https://app.datadoghq.com/account/settings/agent/latest) 버전 `>=6.17` 또는 `>=7.17` 이상을 설치하세요. + +### 설정 + +1. Datadog에 메트릭을 전송하도록 Airbyte 배포를 구성합니다(https://docs.airbyte.com/operator-guides/collecting-metrics/). +1. 다음 구성을 추가하여 [Datadog Agent 기본 구성 파일](https://docs.datadoghq.com/agent/guide/agent-configuration-files/) `datadog.yaml`을 업데이트합니다. + +```yaml +dogstatsd_mapper_profiles: + - name: airbyte_worker + prefix: "worker." + mappings: + - match: "worker.temporal_workflow_*" + name: "airbyte.worker.temporal_workflow.$1" + - match: "worker.worker_*" + name: "airbyte.worker.$1" + - match: "worker.state_commit_*" + name: "airbyte.worker.state_commit.$1" + - match: "worker.job_*" + name: "airbyte.worker.job.$1" + - match: "worker.attempt_*" + name: "airbyte.worker.attempt.$1" + - match: "worker.activity_*" + name: "airbyte.worker.activity.$1" + - match: "worker.*" + name: "airbyte.worker.$1" + - name: airbyte_cron + prefix: "cron." + mappings: + - match: "cron.cron_jobs_run" + name: "airbyte.cron.jobs_run" + - match: "cron.*" + name: "airbyte.cron.$1" + - name: airbyte_metrics_reporter + prefix: "metrics-reporter." + mappings: + - match: "metrics-reporter.*" + name: "airbyte.metrics_reporter.$1" + - name: airbyte_orchestrator + prefix: "orchestrator." + mappings: + - match: "orchestrator.*" + name: "airbyte.orchestrator.$1" + - name: airbyte_server + prefix: "server." + mappings: + - match: "server.*" + name: "airbyte.server.$1" + - name: airbyte_general + prefix: "airbyte." + mappings: + - match: "airbyte.worker.temporal_workflow_*" + name: "airbyte.worker.temporal_workflow.$1" + - match: "airbyte.worker.worker_*" + name: "airbyte.worker.$1" + - match: "airbyte.worker.state_commit_*" + name: "airbyte.worker.state_commit.$1" + - match: "airbyte.worker.job_*" + name: "airbyte.worker.job.$1" + - match: "airbyte.worker.attempt_*" + name: "airbyte.worker.attempt.$1" + - match: "airbyte.worker.activity_*" + name: "airbyte.worker.activity.$1" + - match: "airbyte.cron.cron_jobs_run" + name: "airbyte.cron.jobs_run" +``` + +3. [Agent](https://docs.datadoghq.com/agent/guide/agent-commands/?tab=agentv6#start-stop-and-restart-the-agent)와 Airbyte를 다시 시작합니다. + +## 수집한 데이터 + +### Metrics + +| | | +| --- | --- | +| **airbyte.cron.jobs_run**
(count) | CRON 유형별 CRON 실행 횟수.| +| **airbyte.cron.workflows_healed**
(count) | 자체 복구 CRON이 복구한 워크플로 수.| +| **airbyte.metrics_reporter.est_num_metrics_emitted_by_reporter**
(count) | 마지막 간격에서 리포터가 방출한 추정 메트릭. 정확한 개수가 아닌 추정치입니다.| +| **airbyte.metrics_reporter.num_orphan_running_jobs**
(gauge) | 비활성화되었거나 사용 중단된 연결에 연관된 실행 중인 작업 수.
_job으로 표시됨_ | +| **airbyte.metrics_reporter.num_pending_jobs**
(gauge) | 보류 중인 작업 수.
_job으로 표시됨_ | +| **airbyte.metrics_reporter.num_running_jobs**
(gauge) | 실행 중인 작업 수.
_job으로 표시됨_ | +| **airbyte.metrics_reporter.num_total_scheduled_syncs_last_day**
(gauge) | 지난 하루 동안 실행된 총 동기화 작업 수.
_job으로 표시됨_ | +| **airbyte.metrics_reporter.num_unusually_long_syncs**
(gauge) | 과거 성능과 비교했을떄 비정상적으로 긴 동기화 작업 수.
_job으로 표시됨_ | +| **airbyte.metrics_reporter.oldest_pending_job_age_secs**
(gauge) | 가장 오래된 보류 중인 작업 수명(초).
_second로 표시됨_ | +| **airbyte.metrics_reporter.oldest_running_job_age_secs**
(gauge) | 가장 오래 실행 중인 작업 수명(초).
_second로 표시됨_ | +| **airbyte.orchestrator.source_hearbeat_failure**
(count) | 소스에 하트비트가 없어 발생한 복제 실패 횟수.| +| **airbyte.server.breaking_change_detected**
(count) | 호환성을 저해하는 스키마 변경이 감지된 건수.| +| **airbyte.server.schema_change_auto_propagated**
(count) | 전파된 스키마 변경 사항 수.| +| **airbyte.worker.activity.check_connection**
(count) | 연결 확인 작업이 시작된 횟수.
_ connection으로 표시됨_ | +| **airbyte.worker.activity.dbt_transformation**
(count) | DBT 변환 작업이 시작된 횟수.| +| **airbyte.worker.activity.discover_catalog**
(count) | 카탈로그 검색 작업이 시작된 횟수.| +| **airbyte.worker.activity.failure**
(count) | 실패한 작업의 횟수(작업 유형별 태그 포함).| +| **airbyte.worker.activity.normalization**
(count) | 정규화 작업이 시작된 횟수.| +| **airbyte.worker.activity.normalization_summary_check**
(count) | 정규화 요약 검사 작업이 시작된 횟수.| +| **airbyte.worker.activity.refresh_schema**
(count) | 스키마 새로고침 작업이 시작된 횟수.| +| **airbyte.worker.activity.replication**
(count) | 복제 작업이 시작된 횟수.| +| **airbyte.worker.activity.spec**
(count) | 사양(Spec) 작업이 시작된 횟수.| +| **airbyte.worker.activity.submit_check_destination_connection**
(count) | 연결 검사 제출 작업이 시작된 횟수.
_ connection으로 표시됨_ | +| **airbyte.worker.activity.submit_check_source_connection**
(count) | 연결 검사 제출 작업이 시작된 횟수.
_ connection으로 표시됨_ | +| **airbyte.worker.activity.webhook_operation**
(count) | 웹훅 작업이 시작된 횟수.| +| **airbyte.worker.attempt.completed**
(count) | 새로운 시도가 완료된 횟수. 시도마다 한 번씩 기록됨.
_attempt로 표시됨_ | +| **airbyte.worker.attempt.created**
(count) | 새로운 시도가 생성된 횟수. 시도마다 한 번씩 기록됨.
_attempt로 표시됨_ | +| **airbyte.worker.attempt.created_by_release_stage**
(count) | 새로운 시도가 생성된 횟수. 릴리스 단계별로 태그가 지정되므로 시도 횟수가 이중으로 집계됨.
_ attempt로 표시됨_ | +| **airbyte.worker.attempt.failed_by_failure_origin**
(count) | 실패한 시도의 실패 원인 수. 하나의 실패에 여러 원인이 있을 수 있으므로, 단일 실패도 여러 번 집계될 수 있음. 실패 원인과 실패 유형별로 태그됨.
_attempt로 표시됨_ | +| **airbyte.worker.attempt.failed_by_release_stage**
(count) | 실패한 시도 횟수. 릴리스 단계별로 태그가 지정되므로 시도 횟수가 이중으로 집계됨.
_attempt로 표시됨_ | +| **airbyte.worker.attempt.succeeded_by_release_stage**
(count) | 성공한 시도 횟수. 릴리스 단계별로 태그가 지정되므로 시도 횟수가 이중으로 집계됨.
_attempt로 표시됨_ | +| **airbyte.worker.destination_buffer_size**
(gauge) | 복제 작업자 대상 버퍼 대기열 크기.
_record로 표시됨_ | +| **airbyte.worker.destination_message_read**
(count) | 대상에서 읽은 메시지 수.
_message로 표시됨_ | +| **airbyte.worker.destination_message_sent**
(count) | 대상으로 전송된 메시지 수.
_message로 표시됨_ | +| **airbyte.worker.job.cancelled_by_release_stage**
(count) | 취소된 작업 수. 릴리스 단계별로 태그가 지정되어 있으므로 작업이 이중으로 집계됨.
_job으로 표시됨_ | +| **airbyte.worker.job.created_by_release_stage**
(count) | 새로 생성된 작업 수. 릴리스 단계별로 태그가 지정되어 있으므로 작업이 이중으로 집계됨.
_job으로 표시됨_ | +| **airbyte.worker.job.failed_by_release_stage**
(count) | 작업 실패 횟수. 릴리스 단계별로 태그가 지정되어 있으므로 작업이 이중으로 계산됨.
_ job으로 표시됨_ | +| **airbyte.worker.job.succeeded_by_release_stage**
(count) | 성공한 작업 수. 릴리스 단계별로 태그가 지정되므로 작업이 이중으로 계산됨.
_job으로 표시됨_ | +| **airbyte.worker.notifications_sent**
(count) | 전송된 알림 수.| +| **airbyte.worker.replication_bytes_synced**
(count) | 복제 중 동기화된 바이트 수.
_byte로 표시됨_ | +| **airbyte.worker.replication_records_synced**
(count) | 복제 중 동기화된 레코드 수.
_record로 표시됨_ | +| **airbyte.worker.source_buffer_size**
(gauge) | 복제 작업자 소스 버퍼 대기열 크기.
_record로 표시됨_ | +| **airbyte.worker.source_message_read**
(count) | 소스에서 읽은 메시지 수.
_message로 표시됨_ | +| **airbyte.worker.state_commit.close_successful**
(count) | 성공적으로 최종 상태를 플러시하고 종료된 연결의 수.| +| **airbyte.worker.state_commit.not_attempted**
(count) | 조기 종료로 인해 상태 커밋 시도가 중단된 횟수.
_attempt로 표시됨_ | +| **airbyte.worker.temporal_workflow.attempt**
(count) | Temporal 워크플로 시도 횟수.
_attempt로 표시됨_ | +| **airbyte.worker.temporal_workflow.failure**
(count) | Temporal 워크플로 실패 횟수.| +| **airbyte.worker.temporal_workflow.success**
(count) | Temporal 워크플로 동기화 성공 횟수.
_success로 표시됨_ | + +### 서비스 점검 + +Airbyte 점검은 서비스 점검을 포함하지 않습니다. + +### 이벤트 + +Airbyte 점검은 이벤트를 포함하지 않습니다. + +## 트러블슈팅 + +도움이 필요하세요? [Datadog 지원 팀](https://docs.datadoghq.com/help/)에 문의하세요. \ No newline at end of file diff --git a/content/ko/integrations/zeek.md b/content/ko/integrations/zeek.md new file mode 100644 index 0000000000000..8b9d05f179658 --- /dev/null +++ b/content/ko/integrations/zeek.md @@ -0,0 +1,301 @@ +--- +app_id: zeek +app_uuid: 81ba5f4a-0e85-48c3-9ba3-2e5ea37b1ed2 +assets: + dashboards: + Corelight Suricata: assets/dashboards/corelight_suricata.json + Zeek - Connections: assets/dashboards/zeek_connections.json + Zeek - DHCP: assets/dashboards/zeek_dhcp.json + Zeek - DNS: assets/dashboards/zeek_dns.json + Zeek - Datared: assets/dashboards/zeek_datared.json + Zeek - Detection: assets/dashboards/zeek_detection.json + Zeek - Diagnostics: assets/dashboards/zeek_diagnostics.json + Zeek - Files: assets/dashboards/zeek_files.json + Zeek - Miscellaneous: assets/dashboards/zeek_miscellaneous.json + Zeek - Network Observations: assets/dashboards/zeek_network_observations.json + Zeek - Network Protocols: assets/dashboards/zeek_network_protocols.json + Zeek - Network Protocols (NTP, SNMP, SSL): assets/dashboards/zeek_network_protocols_ntp_snmp_ssl.json + Zeek - Syslog: assets/dashboards/zeek_syslog.json + integration: + auto_install: true + configuration: + spec: assets/configuration/spec.yaml + events: + creates_events: false + service_checks: + metadata_path: assets/service_checks.json + source_type_id: 6777560 + source_type_name: zeek +author: + homepage: https://www.datadoghq.com + name: Datadog + sales_email: info@datadoghq.com + support_email: help@datadoghq.com +categories: +- 로그 수집 +- security +- network +custom_kind: 통합 +dependencies: +- https://github.com/DataDog/integrations-core/blob/master/zeek/README.md +display_on_public_website: true +draft: false +git_integration_title: zeek +integration_id: zeek +integration_title: Zeek +integration_version: 1.0.0 +is_public: true +manifest_version: 2.0.0 +name: zeek +public_title: Zeek +short_description: Zeek 로그 인사이트 확보 및 Cloud SIEM 연동 +supported_os: +- linux +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Supported OS::Linux + - Supported OS::macOS + - Category::Log Collection + - Category::Security + - Category::Network + - Offering::Integration + - Submitted Data Type::Logs + configuration: README.md#Setup + description: Zeek 로그 인사이트 확보 및 Cloud SIEM 연동 + media: + - caption: Zeek - Connections + image_url: images/zeek_connections.png + media_type: 이미지 + - caption: Zeek - DHCP + image_url: images/zeek_dhcp.png + media_type: 이미지 + - caption: Zeek - DNS + image_url: images/zeek_dns.png + media_type: 이미지 + - caption: Zeek - Network Protocols + image_url: images/zeek_network_protocols.png + media_type: 이미지 + - caption: Zeek - Detection + image_url: images/zeek_detection.png + media_type: 이미지 + - caption: Zeek - Diagnostics + image_url: images/zeek_diagnostics.png + media_type: 이미지 + - caption: Zeek - Files + image_url: images/zeek_files.png + media_type: 이미지 + - caption: Zeek - Network Observations + image_url: images/zeek_network_observations.png + media_type: 이미지 + overview: README.md#Overview + support: README.md#Support + title: Zeek +--- + + +## 개요 + +[Zeek][1]는 네트워크 보안 모니터링 플랫폼입니다. 네트워크에서 관찰한 트래픽을 해석하여, 핵심 정보만을 담은 고품질 트랜잭션 로그와 파일 콘텐츠를 생성합니다. 또한, 디스크에 저장해 수동으로 검토하거나, SIEM(Security and Information Event Management)과 같은 분석 친화적인 도구에서 활용할 수 있도록 완전히 사용자 정의된 출력 형식을 제공합니다. + +본 통합은 다음 로그를 수집합니다. +- 연결 로그 +- DNS 및 DHCP 로그 +- 네트워크 프로토콜 +- 파일 +- 감지 +- 기타 이벤트 유형 + +기본 제공 대시보드를 통해 네트워크 연결, DNS 및 DHCP 활동, 상세한 네트워크 프로토콜 분석, 파일 분석 및 인증서, 보안 감지 및 관찰, 컴플라이언스 모니터링을 보다 상세하게 시각화할 수 있습니다. + +## 설정 + +### 설치 + +Zeek 통합을 설치하려면 다음 Agent 설치 명령과 아래 단계를 실행하세요. 자세한 내용은 [통합 관리][2] 문서를 참고하세요. + +**참고**: Agent 버전 7.52.0. 이상에서는 해당 단계를 수행할 필요가 없습니다. + +Linux 명령 + ```shell + sudo -u dd-agent -- datadog-agent integration install datadog-zeek==1.0.0 + ``` + +#### Opensource Zeek +1. Zeek 머신에 [Agent를 설치합니다][3]. +2. JSON 로깅용 [Corelight Zeek 플러그인][4]을 설치합니다. + ``` + /opt/zeek/bin/zkg install corelight/json-streaming-logs + ``` +3. ZKG 패키지를 로드합니다. + ``` + echo -e "\n# Load ZKG packages\n@load packages" >> /opt/zeek/share/zeek/site/local.zeek + ``` +4. Zeek를 재시작합니다. + ``` + /opt/zeek/bin/zeekctl install + ``` + ``` + /opt/zeek/bin/zeekctl restart + ``` + +#### Corelight Zeek +* [Datadog Agent][3]를 설치하고 실행합니다. + +### 설정 + +#### Opensource Zeek +1. 로그 수집은 기본적으로 Datadog 에이전트에서 비활성화되어 있습니다. `datadog.yaml`에서 활성화하세요. + ```yaml + logs_enabled: true + ``` + +2. 이 구성 블록을 `zeek.d/conf.yaml` 파일에 추가하여 Zeek 로그 수집을 시작합니다. + + 사용 가능한 구성 옵션은 [샘플 zeek.d/conf.yaml][5]을 참고하세요. + + ```yaml + logs: + - type: file + path: /opt/zeek/logs/current/*.log + exclude_paths: + - /opt/zeek/logs/current/*.*.log + service: zeek + source: zeek + ``` + + **참고**: 모니터링 프로세스 중에 지원되지 않거나 원치 않는 로그 파일이 수집되는 것을 방지하려면 `exclude_paths` 파라미터 내에 로그 파일 경로를 포함하세요. + + + ```yaml + # 제외된 경로의 예 + exclude_paths: + - /opt/zeek/logs/current/ntlm.log + - /opt/zeek/logs/current/radius.log + - /opt/zeek/logs/current/rfb.log + ``` + +3. [에이전트를 재시작합니다][6]. + +#### Corelight Zeek +1. Datadog Agent에서는 로그 수집 기능이 기본적으로 비활성화되어 있습니다. datadog.yaml 파일에서 활성화하세요. + ```yaml + logs_enabled: true + ``` + +2. 이 구성 블록을 `zeek.d/conf.yaml` 파일에 추가하여 Zeek 로그 수집을 시작합니다. + ```yaml + logs: + - type: tcp + port: + service: corelight + source: zeek + ``` + +3. [에이전트를 재시작합니다][6]. + +4. Corelight에서 Syslog 메시지 포워딩 구성 + 1. 웹 브라우저를 열고 Corelight 센서의 IP 주소나 호스트 이름으로 이동합니다. + 2. 관리자 자격 증명으로 로그인합니다. + 3. Zeek 구성 페이지로 이동합니다. 정확한 경로는 센서 펌웨어 버전에 따라 다를 수 있습니다. + 4. "Zeek" 또는 "Logging"과 관련된 옵션을 찾습니다. 일반적인 경로는 다음과 같습니다. + - Settings > Logging + - Configuration > Zeek > Logging + 5. Zeek 로그의 Syslog 출력 활성화 옵션을 찾은 후, 체크박스 또는 토글을 선택하여 활성화합니다. + 6. Syslog 서버 세부 정보를 지정합니다. 다음 정보를 제공하세요. + - **Syslog server IP address**: Zeek 로그를 보낼 대상. + - **Syslog port**: Syslog 서버가 수신하는 포트(일반적으로 514). + - **Facility**: 사용할 Syslog 퍼실리티. + - **Severity level**: 전송할 이벤트의 최소 심각도 수준. + 7. **Save** 또는 **Apply** 버튼을 클릭하여 구성 변경 사항을 적용합니다. + + +### 검증 + +[Agent 상태 하위 명령을 실행][7]하고 Checks 섹션에서 `zeek`를 찾습니다. + +## 수집한 데이터 + +### 로그 + +Zeek 통합은 다음과 같은 로그 유형을 수집합니다. + +| 형식 | 이벤트 유형 | +| --------- | -------------- | +| Opensource Zeek - JSON 형식 | conn, dhcp, dns, ftp, http, ntp, rdp, smtp, snmp, socks, ssh, ssl, syslog, tunnel, files, pe, intel, notice, signatures, traceroute, known-certs, known-modbus, known-services, known-hosts, software, x509, dpd, weird, captureloss, reporter, ldap, ldap-search, smb-files, smb-mappings | +| Corelight Zeek - Syslog RFC 3164 (레거시) 형식 | conn, dhcp, dns, ftp, http, ntp, rdp, smtp, snmp, socks, ssh, ssl, syslog, tunnel, files, pe, intel, notice, signatures, traceroute, known-certs, known-modbus, known-services, known-hosts, software, x509, dpd, weird, captureloss, reporter, ldap, ldap-search, smb-files, smb-mappings, conn-long, conn-red, encrypted-dns, generic-dns-tunnels, smtp-links, suricata-corelight | + +### 메트릭 + +Zeek 통합은 메트릭을 포함하지 않습니다. + +### 이벤트 + +Zeek 통합은 이벤트를 포함하지 않습니다. + +### 서비스 점검 + +Zeek 통합은 서비스 점검을 포함하지 않습니다. + +## 트러블슈팅 + +### Opensource Zeek: + +로그 파일을 모니터링하는 동안 **권한 거부** 오류가 표시되면 `dd-agent` 사용자에게 해당 파일 읽기 권한을 부여합니다. + + ```shell + sudo chown -R dd-agent:dd-agent /opt/zeek/current/ + ``` + +### Corelight Zeek: + +포트 바인딩 중 권한 거부됨 + +포트 바인딩 중 Agent 로그에 **권한 거부** 오류가 표시되면 다음 지침을 참조하세요. + +1. 1024 아래 포트 넘버에 바인딩하려면 상위 권한이 필요합니다. `setcap` 명령을 사용하여 포트에 대한 액세스 권한을 부여합니다. + ```shell + sudo setcap CAP_NET_BIND_SERVICE=+ep /opt/datadog-agent/bin/agent/agent + ``` + +2. `getcap` 명령을 실행하여 설정이 올바른지 확인합니다. + + ```shell + sudo getcap /opt/datadog-agent/bin/agent/agent + ``` + + 예상 결과: + + ```shell + /opt/datadog-agent/bin/agent/agent = cap_net_bind_service+ep + ``` + + **참고:** Agent를 업그레이드할 때마다 이 `setcap` 명령을 다시 실행합니다. + +3. [에이전트를 재시작합니다][6]. + +**데이터가 수집되지 않음:** + +방화벽이 활성화된 경우 구성된 포트에서 트래픽이 우회되는지 확인하세요. + +**이미 사용 중인 포트:** + +**Port Already in Use** 오류가 나타나면 다음 안내를 참조합니다. 하단은 PORT-NO = 514인 경우 예시입니다. + +Syslog를 사용하는 시스템의 Agent가 포트 514에서 Zeek 로그를 수신 대기 중인 경우, Agent 로그에 다음 오류가 나타날 수 있습니다. `Can't start UDP forwarder on port 514: listen udp :514: bind: address already in use` + +이 오류는 기본적으로 Syslog가 포트 514에서 수신 대기하기 때문에 발생합니다. 이 오류를 해결하려면 다음 단계 중 **하나**를 수행하세요. +- Disable Syslog +- 사용 가능한 다른 포트에서 수신하도록 Agent 구성 + +추가 지원이 필요할 경우 [Datadog 지원팀][8]에 문의하세요. + +[1]: https://zeek.org/ +[2]: https://docs.datadoghq.com/ko/agent/guide/integration-management/?tab=linux#install +[3]: https://docs.datadoghq.com/ko/agent/ +[4]: https://github.com/corelight/json-streaming-logs +[5]: https://github.com/DataDog/integrations-core/blob/master/cisco_secure_firewall/datadog_checks/cisco_secure_firewall/data/conf.yaml.example +[6]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#start-stop-and-restart-the-agent +[7]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#agent-status-and-information +[8]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file diff --git a/content/ko/observability_pipelines/legacy/monitoring.md b/content/ko/observability_pipelines/legacy/monitoring.md new file mode 100644 index 0000000000000..37e54e8a65ced --- /dev/null +++ b/content/ko/observability_pipelines/legacy/monitoring.md @@ -0,0 +1,65 @@ +--- +disable_toc: false +title: (레거시) 모니터링 +--- + +{{< site-region region="gov" >}} +
Observability Pipeline은 US1-FED Datadog 사이트에서 사용할 수 없습니다.
+{{< /site-region >}} + +## 개요 + +[Observability Pipelines][1]에서 파이프라인은 옵저버빌리티 데이터를 수집, 처리, 라우팅하는 구성 요소로 구성됩니다. 파이프라인과 구성 요소의 상태는 상태 지표 및 그래프, 리소스 사용량 및 데이터 전송 그래프를 통해 표시됩니다. + +상태 지표는 임계값과 기본 시간 창을 기반으로 하는 특정 메트릭에 따라 결정됩니다. 사용 가능한 상태는 다음과 같습니다. + +- `Healthy`: Worker가 지연되지 않고 있음을 나타냅니다. +- `Warning`: Worker가 최적의 성능으로 동작하지 않으며, 지연될 위험이 있음을 나타냅니다. Worker는 다운스트림 대상 또는 서비스에서 백프레셔가 발생하거나, Worker에 할당된 리소스가 충분하지 않은 경우 지연될 수 있습니다. +- `Critical`: Worker가 지연되고 있음을 나타냅니다. Worker가 지연되면 데이터 손실 위험이 있을 수 있습니다. 하지만 파이프라인이 [설계][2]되고 올바르게 구성된 경우 Worker가 의도치 않게 데이터를 삭제하지는 않습니다. + +내부 메트릭은 상태, 데이터 전송, 리소스 사용으로 분류되며 파이프라인과 해당 구성 요소의 전반적인 상태를 결정합니다. + +다음 메트릭의 상태 그래프를 확인할 수 있습니다. +- 의도치 않게 누락된 이벤트 +- 오류 +- 지연 시간(소스에만 사용 가능) +- 지연 시간 변화율(소스에만 사용 가능) +- 사용률 + +다음 메트릭의 데이터 전송 그래프를 확인할 수 있습니다. +- 초당 입력/출력 이벤트 수 +- 초당 입력/출력 바이트 수 + +다음 메트릭의 리소스 사용률 그래프를 확인할 수 있습니다. +- CPU 사용량 +- 메모리 사용량 +- 디스크 사용량(대상에만 사용 가능) + +## 파이프라인 및 구성 요소 상태 확인 + +1. [Observability Pipelines][3]로 이동합니다. +1. 파이프라인을 클릭합니다. +1. 그래프 위에 마우스를 올려 특정 데이터 포인트를 확인합니다. + +## 파이프라인 리소스 사용 상태 메트릭 + +| 메트릭 | OK | 경고 | Critical | 설명 | +| ------------ | :------: | :--------: | :-------: | --------------------------------- | +| CPU 사용량 | <= 0.85 | > 0.85 | N/A | Worker 프로세스가 CPU를 얼마나 사용하는지 추적합니다.

값이 `1`이면 Worker 프로세스가 실행 중인 호스트 또는 컴퓨팅 유닛에 더 이상 여유 공간이 없음을 나타냅니다. 이로 인해 처리 지연 시간 초과, 업스트림/다운스트림 과부하 등의 문제가 발생할 수 있습니다.| +| 메모리 사용량 | >= 0.15 | < 0.15 | N/A | 호스트에서 사용된 메모리와 사용 가능한 메모리 양을 추적합니다. Worker에는 메모리 제한이 없지만, 메모리 사용량이 높으면 메모리 누수일 수 있습니다. + +## 구성 요소 상태 메트릭 + +| 메트릭 | 소스 | 변환| 대상 | OK | 경고 | Critical | 설명 | +| ------------------------ | :-------: | :-------: | :----------: | :-----: | :------: | :--------:| --------------------------------- | +| 누락된 이벤트 | {{< X >}} | {{< X >}} |{{< X >}} | ==0 | N/A | > 0 |항상 `0`이어야 합니다. 예를 들어 `filter` 변환을 사용하여 Worker가 의도적으로 데이터를 삭제하도록 구성한 경우 해당 데이터는 여기에 포함되지 않습니다. 따라서 오류가 하나라도 발생하면 Worker의 상태가 비정상임을 나타냅니다.| +| 총 오류 |{{< X >}} |{{< X >}} |{{< X >}} | ==0 | >0 | N/A | 구성 요소에서 발생한 총 오류 수입니다. 이러한 오류는 [Diagnostic Logs][4]로도 생성되며, 이를 통해 특정 내부 오류 로그에 관한 자세한 정보를 얻을 수 있습니다. | +| 사용률 | |{{< X >}} |{{< X >}} | <=0.95 | >0.95 | N/A | 구성 요소의 활동을 추적합니다.

값이 `0`이면 입력을 기다리는 유휴 구성 요소를 의미합니다. 값이 `1`이면 절대 유휴 상태가 되지 않는 구성 요소를 의미합니다. 값이 `0.95`보다 크면 구성 요소가 사용 중이며 처리 토폴로지에서 병목 현상이 발생할 가능성이 있음을 의미합니다. | +| 지연 시간 |{{< X >}} | | | N/A | N/A | N/A | 이벤트 타임스탬프와 Worker가 이벤트를 수집한 타임스탬프 간의 시간 차이(밀리초)입니다. 지연 시간이 길거나 지연 시간이 변하는 경우(아래 참고)는 Worker가 다운스트림 서비스의 백프레셔, Worker에 제공된 리소스 부족, 파이프라인 병목 현상으로 인해 지연되고 있는지 여부를 나타내는 메트릭입니다. | +| 지연 시간 변화율 | {{< X >}} | | | <=0 | >0 | >1 | 이벤트 생성 시점과 Worker가 데이터를 수신하는 시점 사이에 상당한 지연이 있는지 여부를 나타냅니다. 지연이 있는 경우, Worker가 소스로부터 데이터를 수신하는 데 지연이 발생하고 있음을 나타냅니다.

값이 `0`이면 옵저버빌리티 데이터 생성 시점과 Worker가 데이터를 수신하는 시점 사이에 추가적인 지연이 없음을 의미합니다. 값이 `1`과 같거나 크면 백프레셔와 병목 현상이 있음을 의미합니다. | +| 디스크 사용량 | | |{{< X >}} | >=0.20 | > 0.20 | N/A | 디스크가 사용량을 측정합니다.

값이 `1`이면 디스크에 데이터를 저장할 수 없음을 의미합니다. 값이 `0`이면 디스크가 비어 있음을 의미합니다. | + +[1]: /ko/observability_pipelines/legacy/ +[2]: /ko/observability_pipelines/legacy/architecture/ +[3]: https://app.datadoghq.com/observability-pipelines/legacy/ +[4]: /ko/observability_pipelines/legacy/troubleshooting/#investigate-diagnostic-logs \ No newline at end of file diff --git a/content/ko/observability_pipelines/legacy/troubleshooting.md b/content/ko/observability_pipelines/legacy/troubleshooting.md new file mode 100644 index 0000000000000..32de30d4d7d4b --- /dev/null +++ b/content/ko/observability_pipelines/legacy/troubleshooting.md @@ -0,0 +1,97 @@ +--- +disable_toc: false +further_reading: +- link: /observability_pipelines/legacy/monitoring/ + tag: 설명서 + text: 파이프라인 상태 모니터링 +title: (레거시) 트러블슈팅 +--- + +{{< site-region region="gov" >}} +
Observability Pipeline은 US1-FED Datadog 사이트에서 사용할 수 없습니다.
+{{< /site-region >}} + +## 개요 +Datadog Observability Pipelines(OP)에서 예상치 못한 동작 발생 시, 이 가이드를 통해 신속하게 해결할 수 있습니다. 문제가 지속되면 [Datadog 지원팀][3]에 문의하여 추가 지원을 받으세요. + +## 진단 로그 조사 + +Observability Pipelines Worker는 자체 상태에 대한 내부 로그를 생성합니다. Observability Pipelines UI에서 Worker 프로세스가 모든 개별 구성 요소에 생성하는 내부 오류 로그를 조사할 수 있습니다. 다음 단계를 따라 진단 로그를 확인하세요. + +1. [Observability Pipelines][1]로 이동합니다. +1. 조사하려는 파이프라인을 클릭합니다. +1. 구성 요소를 클릭하면 구성 요소의 사이드 패널을 볼 수 있습니다. +1. **Diagnostic Logs** 탭을 클릭하면 Worker에서 발생하는 오류 로그를 볼 수 있습니다. 로그 기록을 클릭하면 Log Explorer에서 해당 로그를 조사할 수 있습니다. 로그가 표시되지 않으면 해당 구성 요소가 오류 로그를 생성하지 않는 것입니다. + +### 더 자세한 로그 확인하기 + +OP Worker가 수집하는 내부 로그에 관해 자세한 정보가 필요하면 `VECTOR_LOG` 환경 변수를 사용하여 로그 수준을 높일 수 있습니다. 기본적으로 이 설정은 `INFO`로 설정되어 있으며 `INFO`, `WARNING`, `ERROR` 메시지가 콘솔에 표시됩니다. + +이 값을 `DEBUG`로 설정하면 Worker의 내부 프로세스(HTTP 요청 및 수신된 응답 포함)에 관한 자세한 정보를 얻을 수 있습니다. Datadog 지원팀에서 문제 해결에 도움이 되는 `DEBUG` 로그를 요청할 수 있습니다. 이러한 로그는 Log Explorer와 [진단 로그](#investigate-diagnostic-logs)에도 표시됩니다. + +## 파이프라인을 통과하는 이벤트를 조사하여 설정 문제 식별 + +OP Worker v1.4.0 이상 버전에서는 `tap` 기능을 사용해 소스, 변환, 싱크 단계를 통과하는 데이터를 관찰하고, 파이프라인 내 각 구성 요소를 통과하는 원시 데이터를 확인할 수 있습니다. + +### Observability Pipelines Worker API 사용 + + Observability Pipelines Worker API를 사용하면 `tap` 명령을 사용하여 Worker 프로세스와 상호 작용할 수 있습니다. [설정 가이드][2]에 제공된 Helm 차트를 사용하는 경우 API가 이미 활성화되어 있습니다. 그렇지 않으면 환경 변수 `DD_OP_API_ENABLED`가 `true`로 설정되어 있는지 확인하세요. 이 설정은 API가 `localhost` 및 포트 `8686`을 수신하도록 구성하며, 이는 `tap` CLI가 예상하는 설정입니다. + +### `tap`을 사용해 데이터 확인 + +Worker와 동일한 호스트에서 작업 중이라면, 다음 명령을 실행하여 출력을 `tap`에 표시하세요. + +``` +observability-pipelines-worker tap +``` + +컨테이너화된 환경을 사용 중이라면 `docker exec` 또는 `kubectl exec` 명령을 사용하여 컨테이너로 셸을 가져와서 위의 `tap` 명령을 실행합니다. + +### `tap` 사용 예시 + +다음 예제 구성을 추가하면 `cleanup` 변환으로 인해 `log` 속성이 `message`의 복사본이 됩니다. + +``` +sources: + demo: + type: demo_logs + format: json + +transforms: + cleanup: + type: remap + inputs: + - demo + source: |- + .log = .message + +sinks: + blackhole: + type: blackhole + inputs: + - cleanup + print_interval_secs: 0 +``` + +다음 명령을 사용하여 예제 구성을 실행하고 `cleanup` 변환의 출력을 확인하세요. + +``` +observability-pipelines-worker tap cleanup +``` + +예상되는 출력은 다음과 비슷해야 합니다. 여기서 `log` 속성은 `message` 속성의 복사본입니다. + +``` +[tap] Pattern 'cleanup' successfully matched. +{"log":"{\"host\":\"121.142.241.212\",\"user-identifier\":\"meln1ks\",\"datetime\":\"25/Aug/2023:00:07:53\",\"method\":\"OPTION\",\"request\":\"/observability/metrics/production\",\"protocol\":\"HTTP/1.0\",\"status\":\"550\",\"bytes\":3185,\"referer\":\"https://make.us/wp-admin\"}","message":"{\"host\":\"121.142.241.212\",\"user-identifier\":\"meln1ks\",\"datetime\":\"25/Aug/2023:00:07:53\",\"method\":\"OPTION\",\"request\":\"/observability/metrics/production\",\"protocol\":\"HTTP/1.0\",\"status\":\"550\",\"bytes\":3185,\"referer\":\"https://make.us/wp-admin\"}","service":"vector","source_type":"demo_logs","timestamp":"2023-08-25T00:07:53.429855261Z"} +{"log":"{\"host\":\"117.214.24.224\",\"user-identifier\":\"Karimmove\",\"datetime\":\"25/Aug/2023:00:07:54\",\"method\":\"HEAD\",\"request\":\"/do-not-access/needs-work\",\"protocol\":\"HTTP/2.0\",\"status\":\"503\",\"bytes\":41730,\"referer\":\"https://some.org/wp-admin\"}","message":"{\"host\":\"117.214.24.224\",\"user-identifier\":\"Karimmove\",\"datetime\":\"25/Aug/2023:00:07:54\",\"method\":\"HEAD\",\"request\":\"/do-not-access/needs-work\",\"protocol\":\"HTTP/2.0\",\"status\":\"503\",\"bytes\":41730,\"referer\":\"https://some.org/wp-admin\"}","service":"vector","source_type":"demo_logs","timestamp":"2023-08-25T00:07:54.430584949Z"} +{"log":"{\"host\":\"108.145.218.149\",\"user-identifier\":\"shaneIxD\",\"datetime\":\"25/Aug/2023:00:07:55\",\"method\":\"DELETE\",\"request\":\"/this/endpoint/prints/money\",\"protocol\":\"HTTP/2.0\",\"status\":\"403\",\"bytes\":18340,\"referer\":\"https://up.de/wp-admin\"}","message":"{\"host\":\"108.145.218.149\",\"user-identifier\":\"shaneIxD\",\"datetime\":\"25/Aug/2023:00:07:55\",\"method\":\"DELETE\",\"request\":\"/this/endpoint/prints/money\",\"protocol\":\"HTTP/2.0\",\"status\":\"403\",\"bytes\":18340,\"referer\":\"https://up.de/wp-admin\"}","service":"vector","source_type":"demo_logs","timestamp":"2023-08-25T00:07:55.430085107Z"} +``` + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/observability-pipelines/ +[2]: /ko/observability_pipelines/legacy/setup/ +[3]: /ko/help \ No newline at end of file diff --git a/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json index 060edef9adc20..6dcbd8ee77610 100644 --- a/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "모바일 세션 리플레이 개인정보 보호 옵션" + "ast-str-ed6465a0-5303-45e8-814f-26b9621a3692": { + "string": "모바일 세션 리플레이 개인정보 보호 옵션" + } }, "description": { - "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." + "ast-str-96c0458c-0687-4a95-9d66-6fa097d06464": { + "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-39f6993e-dc05-4968-992e-893036c5506b": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-af631d8c-8fc9-4e98-bee2-6afd3dbdf311": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", - "text": { - "string": "Setup and Configure Mobile Session Replay" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-1c25456b-e5f6-4548-af66-3fae7a05f423": { + "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" + } + }, + "tag": { + "ast-str-a29b4ca3-075b-414c-8a68-0c33e0cfae6b": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", + "text": { + "ast-str-7d913357-3de0-47f5-995d-20902115e88a": { + "string": "모바일 세션 리플레이 설정 및 구성" + } + }, + "tag": { + "ast-str-fd654bd7-9157-4811-bf1b-322a453db21e": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-6aae3788-1d07-41c1-943e-ce84e0eea71a": { + "string": "모바일 세션 리플레이 문제 해결" + } + }, + "tag": { + "ast-str-e66e4cab-d520-4636-b58e-572a077d362a": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-efabc85f-a81a-409d-9ef3-4e3c49b0e2c8": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-6d52c7ad-1cdd-4740-b4ef-e0103e5209e0": { + "string": "설명서" + } + } } } - ] + } } }, "children": { @@ -64,7 +90,7 @@ "$$mdtype": "Node", "inline": false, "attributes": { - "file": "rum/session_replay/mobile/privacy_options.mdoc.md" + "file": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" }, "children": { "translationListData": {} @@ -76,7 +102,7 @@ "0": { "type": "attribute", "name": "file", - "value": "rum/session_replay/mobile/privacy_options.mdoc.md" + "value": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" } } }, diff --git a/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 19b0d002e1993..94728867f1ff4 100644 --- a/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -1,99 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "모바일 세션 리플레이 설치 및 설정" + "ast-str-5b85bfe0-cdd5-4616-80a4-f7b16289b9c8": { + "string": "모바일 세션 리플레이 설치 및 설정" + } }, "description": { - "string": "모바일 세션 리플레이을 설치하고 설정합니다." + "ast-str-9ab98d47-4bc8-4cff-aab2-1a2c829a477c": { + "string": "모바일 세션 리플레이을 설치하고 설정합니다." + } }, - "further_reading": [ - { - "link": "/product_analytics/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "further_reading": { + "translationListData": { + "0": { + "link": "/product_analytics/session_replay/mobile", + "text": { + "ast-str-6b7dd627-cfc2-449b-930b-c7c9202bb7f2": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-ad1f968c-ba7d-47fb-a595-fd656cf1a665": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/privacy_options", - "text": { - "string": "Mobile Session Replay Privacy Options" + "1": { + "link": "/product_analytics/session_replay/mobile/app_performance", + "text": { + "ast-str-5d4a3252-2fe5-4bd4-a75c-043fcd234a1b": { + "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" + } + }, + "tag": { + "ast-str-257753f4-c29e-4eb9-8c21-0b283b791d22": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" + "2": { + "link": "/product_analytics/session_replay/mobile/privacy_options", + "text": { + "ast-str-7a98b6b8-a1cb-461b-985f-a6b645661066": { + "string": "모바일 세션 리플레이 개인정보 보호 옵션" + } + }, + "tag": { + "ast-str-33326998-f6db-4a64-ad65-8e45a2955242": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/product_analytics/session_replay/mobile/troubleshooting", + "text": { + "ast-str-304a8f3a-51bb-426b-8ca2-bc7ae13a7cd9": { + "string": "모바일 세션 리플레이 문제 해결" + } + }, + "tag": { + "ast-str-6c5f9454-e16e-4312-8512-305ad68f7b0e": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/product_analytics/session_replay", + "text": { + "ast-str-cc897da2-4f3a-435e-984d-b0002dda36cd": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-af12f79d-bd7f-4f9e-8ea7-72971640339c": { + "string": "설명서" + } + } } } - ] + } } }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": { - "file": "rum/session_replay/setup_and_configuration.mdoc.md" - }, - "children": [], - "type": "tag", - "tag": "partial", - "annotations": [ - { - "type": "attribute", - "name": "file", - "value": "rum/session_replay/setup_and_configuration.mdoc.md" - } - ], - "slots": {}, - "location": { - "start": { - "line": 25 + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" }, - "end": { - "line": 26 - } + "children": { + "translationListData": {} + }, + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + } + } + }, + "slots": {}, + "location": "line 25-26" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index e7d5a6d9eddc7..2b12c43a48c77 100644 --- a/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -1,37777 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "모바일 세션 리플레이 개인정보 보호 옵션" - }, - "description": { - "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." - }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", - "text": { - "string": "Setup and Configure Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" - }, - "tag": { - "string": "Documentation" - } - } - ] - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 25, - 26 - ], - "inline": true, - "attributes": { - "content": "Overview", - "string": "Overview" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 25 - }, - "end": { - "line": 26 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 27, - 28 - ], - "inline": true, - "attributes": { - "content": "Session Replay provides privacy controls to ensure organizations of any scale do not expose sensitive or personal data. Data is stored on Datadog-managed cloud instances and encrypted at rest.", - "string": "Session Replay provides privacy controls to ensure organizations of any scale do not expose sensitive or personal data. Data is stored on Datadog-managed cloud instances and encrypted at rest." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 27 - }, - "end": { - "line": 28 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 29, - 30 - ], - "inline": true, - "attributes": { - "content": "Default privacy options for Session Replay protect end user privacy and prevent sensitive organizational information from being collected.", - "string": "Default privacy options for Session Replay protect end user privacy and prevent sensitive organizational information from being collected." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 29 - }, - "end": { - "line": 30 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 31, - 32 - ], - "inline": true, - "attributes": { - "content": "By enabling Mobile Session Replay, you can automatically mask sensitive elements from being recorded through the RUM Mobile SDK. When data is masked, that data is not collected in its original form by Datadog's SDKs and thus is not sent to the backend.", - "string": "By enabling Mobile Session Replay, you can automatically mask sensitive elements from being recorded through the RUM Mobile SDK. When data is masked, that data is not collected in its original form by Datadog's SDKs and thus is not sent to the backend." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 31 - }, - "end": { - "line": 32 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 33, - 34 - ], - "inline": true, - "attributes": { - "content": "Fine-grained masking", - "string": "Fine-grained masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 33 - }, - "end": { - "line": 34 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 35, - 36 - ], - "inline": true, - "attributes": { - "content": "Using the masking modes below, you can override the default setup on a per-application basis. Masking is fine-grained, which means you can override masking for text and inputs, images, and touches individually to create a custom configuration that suits your needs.", - "string": "Using the masking modes below, you can override the default setup on a per-application basis. Masking is fine-grained, which means you can override masking for text and inputs, images, and touches individually to create a custom configuration that suits your needs." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 35 - }, - "end": { - "line": 36 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 37, - 38 - ], - "inline": true, - "attributes": { - "content": "Text and input masking", - "string": "Text and input masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 37 - }, - "end": { - "line": 38 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 39, - 40 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all data. With this setting enabled, all text and input content on screen is masked, as shown below.", - "string": " setting is enabled for all data. With this setting enabled, all text and input content on screen is masked, as shown below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 39 - }, - "end": { - "line": 40 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 41, - 42 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-mode-mask-all-2.png", - "alt": "What your application screen may resemble when `mask` is enabled.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-mode-mask-all-2.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask` is enabled." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 41 - }, - "end": { - "line": 42 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 43, - 44 - ], - "inline": true, - "attributes": { - "content": "Mask sensitive inputs", - "string": "Mask sensitive inputs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 43 - }, - "end": { - "line": 44 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": "mask_sensitive_inputs" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 45, - 46 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all text and inputs are shown except those considered sensitive (passwords, emails, and phone numbers).", - "string": " setting enabled, all text and inputs are shown except those considered sensitive (passwords, emails, and phone numbers)." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 45 - }, - "end": { - "line": 46 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 47, - 48 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 47 - }, - "end": { - "line": 48 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 48, - 49, - 55, - 56 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 49, - 55 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 49, - 55 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 49 - }, - "end": { - "line": 55 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 49 - }, - "end": { - "line": 55 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 48 - }, - "end": { - "line": 49 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 56, - 57 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 56 - }, - "end": { - "line": 57 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 58, - 59 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 58 - }, - "end": { - "line": 59 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 59, - 60, - 69, - 70 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 60, - 69 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskSensitiveInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 60, - 69 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskSensitiveInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 60 - }, - "end": { - "line": 69 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 60 - }, - "end": { - "line": 69 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 59 - }, - "end": { - "line": 60 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 70, - 71 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 70 - }, - "end": { - "line": 71 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 72, - 73 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 72 - }, - "end": { - "line": 73 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 73, - 74, - 88, - 89 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 74, - 88 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_SENSITIVE_INPUTS,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 74, - 88 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_SENSITIVE_INPUTS,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 74 - }, - "end": { - "line": 88 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 74 - }, - "end": { - "line": 88 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 73 - }, - "end": { - "line": 74 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 89, - 90 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 89 - }, - "end": { - "line": 90 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 91, - 92 - ], - "inline": true, - "attributes": { - "content": "Mask all inputs", - "string": "Mask all inputs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 91 - }, - "end": { - "line": 92 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": "mask_all_inputs" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 92, - 93 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all inputs fields are masked in the replay.", - "string": " setting enabled, all inputs fields are masked in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 92 - }, - "end": { - "line": 93 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 94, - 95 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 94 - }, - "end": { - "line": 95 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 95, - 96, - 102, - 103 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 96, - 102 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL_INPUTS)\n.build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 96, - 102 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL_INPUTS)\n.build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 96 - }, - "end": { - "line": 102 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 96 - }, - "end": { - "line": 102 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 95 - }, - "end": { - "line": 96 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 103, - 104 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 103 - }, - "end": { - "line": 104 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 105, - 106 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 105 - }, - "end": { - "line": 106 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 106, - 107, - 116, - 117 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 107, - 116 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAllInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 107, - 116 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAllInputs,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 107 - }, - "end": { - "line": 116 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 107 - }, - "end": { - "line": 116 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 106 - }, - "end": { - "line": 107 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 117, - 118 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 117 - }, - "end": { - "line": 118 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 119, - 120 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 119 - }, - "end": { - "line": 120 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 120, - 121, - 135, - 136 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 121, - 135 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL_INPUTS,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 121, - 135 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL_INPUTS,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 121 - }, - "end": { - "line": 135 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 121 - }, - "end": { - "line": 135 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 120 - }, - "end": { - "line": 121 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 136, - 137 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 136 - }, - "end": { - "line": 137 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 138, - 139 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 138 - }, - "end": { - "line": 139 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 139, - 140 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all text and input fields are masked in the replay.", - "string": " setting enabled, all text and input fields are masked in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 139 - }, - "end": { - "line": 140 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 141, - 142 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 141 - }, - "end": { - "line": 142 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 142, - 143, - 149, - 150 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 143, - 149 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 143, - 149 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 143 - }, - "end": { - "line": 149 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 143 - }, - "end": { - "line": 149 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 142 - }, - "end": { - "line": 143 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 150, - 151 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 150 - }, - "end": { - "line": 151 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 152, - 153 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 152 - }, - "end": { - "line": 153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 153, - 154, - 163, - 164 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 154, - 163 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAll,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 154, - 163 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: .maskAll,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 154 - }, - "end": { - "line": 163 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 154 - }, - "end": { - "line": 163 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 153 - }, - "end": { - "line": 154 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 164, - 165 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 164 - }, - "end": { - "line": 165 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 166, - 167 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 166 - }, - "end": { - "line": 167 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 167, - 168, - 182, - 183 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 168, - 182 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 168, - 182 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TextAndInputPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 168 - }, - "end": { - "line": 182 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 168 - }, - "end": { - "line": 182 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 167 - }, - "end": { - "line": 168 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 183, - 184 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 183 - }, - "end": { - "line": 184 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 185, - 186 - ], - "inline": true, - "attributes": { - "content": "Image masking", - "string": "Image masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 185 - }, - "end": { - "line": 186 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 187, - 188 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all images. With this setting enabled, all images on screen are masked.", - "string": " setting is enabled for all images. With this setting enabled, all images on screen are masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 187 - }, - "end": { - "line": 188 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 189, - 190 - ], - "inline": true, - "attributes": { - "content": "Mask all images", - "string": "Mask all images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 189 - }, - "end": { - "line": 190 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": "mask_all" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 190, - 191 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all images are replaced by placeholders labeled 'Image' in the replay.", - "string": " setting enabled, all images are replaced by placeholders labeled 'Image' in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 190 - }, - "end": { - "line": 191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 192, - 193 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-all.png", - "alt": "What your application screen may resemble when `mask-all` is enabled.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-all.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask-all` is enabled." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 192 - }, - "end": { - "line": 193 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 194, - 195 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 194 - }, - "end": { - "line": 195 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 195, - 196, - 202, - 203 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 196, - 202 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 196, - 202 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_ALL)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 196 - }, - "end": { - "line": 202 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 196 - }, - "end": { - "line": 202 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 195 - }, - "end": { - "line": 196 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 203, - 204 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 203 - }, - "end": { - "line": 204 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 205, - 206 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 205 - }, - "end": { - "line": 206 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 206, - 207, - 216, - 217 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 207, - 216 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskAll,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 207, - 216 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskAll,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 207 - }, - "end": { - "line": 216 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 207 - }, - "end": { - "line": 216 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 206 - }, - "end": { - "line": 207 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 217, - 218 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 217 - }, - "end": { - "line": 218 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 219, - 220 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 219 - }, - "end": { - "line": 220 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 220, - 221, - 235, - 236 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 221, - 235 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 221, - 235 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_ALL,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 221 - }, - "end": { - "line": 235 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 221 - }, - "end": { - "line": 235 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 220 - }, - "end": { - "line": 221 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 236, - 237 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 236 - }, - "end": { - "line": 237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 238, - 239 - ], - "inline": true, - "attributes": { - "content": "Mask content images", - "string": "Mask content images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 238 - }, - "end": { - "line": 239 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 239, - 240 - ], - "inline": true, - "attributes": { - "content": "You can manage content masking while still allowing system or bundled images to be visible.", - "string": "You can manage content masking while still allowing system or bundled images to be visible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 239 - }, - "end": { - "line": 240 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 241, - 242 - ], - "inline": false, - "attributes": { - "content": "iOS and React Native", - "string": "iOS and React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 241 - }, - "end": { - "line": 242 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 242, - 243, - 248, - 249 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": "Use the ", - "string": "Use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": "maskNonBundledOnly" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 243, - 244 - ], - "inline": true, - "attributes": { - "content": " setting to replace non-bundled images with a \"Content Image\" placeholder in the replay.", - "string": " setting to replace non-bundled images with a \"Content Image\" placeholder in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 243 - }, - "end": { - "line": 244 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 248 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 245, - 246 - ], - "inline": true, - "attributes": { - "content": "In UIKit, the SDK can determine whether an image is bundled and can mask it accordingly.", - "string": "In UIKit, the SDK can determine whether an image is bundled and can mask it accordingly." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 246 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 246, - 247 - ], - "inline": true, - "attributes": { - "content": "In SwiftUI, this determination isn't possible. Instead, the SDK uses a heuristic: if an image exceeds 100×100 points, it is assumed to be non-bundled and is masked.", - "string": "In SwiftUI, this determination isn't possible. Instead, the SDK uses a heuristic: if an image exceeds 100×100 points, it is assumed to be non-bundled and is masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 247 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 247 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 246 - }, - "end": { - "line": 248 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 245 - }, - "end": { - "line": 248 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 242 - }, - "end": { - "line": 243 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 250, - 251 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 250 - }, - "end": { - "line": 251 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 251, - 252, - 255, - 256 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": "Select the ", - "string": "Select the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": "mask_large_only" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 252, - 253 - ], - "inline": true, - "attributes": { - "content": " setting, which replaces images with dimensions that exceed 100x100dp with a \"Content Image\" placeholder.", - "string": " setting, which replaces images with dimensions that exceed 100x100dp with a \"Content Image\" placeholder." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 252 - }, - "end": { - "line": 253 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 254, - 255 - ], - "inline": true, - "attributes": { - "content": ": These dimensions refer to the drawable resource, not the view's size.", - "string": ": These dimensions refer to the drawable resource, not the view's size." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 254 - }, - "end": { - "line": 255 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 251 - }, - "end": { - "line": 252 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 257, - 258 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 257 - }, - "end": { - "line": 258 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 258, - 259, - 267, - 268 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 259, - 260 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-large-only.png", - "alt": "What your application screen may resemble when `mask_large_only` is enabled on Android.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-large-only.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask_large_only` is enabled on Android." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 259 - }, - "end": { - "line": 260 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 261, - 267 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 261, - 267 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 261 - }, - "end": { - "line": 267 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 261 - }, - "end": { - "line": 267 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 258 - }, - "end": { - "line": 259 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 268, - 269 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 268 - }, - "end": { - "line": 269 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 270, - 271 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 270 - }, - "end": { - "line": 271 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 271, - 272, - 283, - 284 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 272, - 273 - ], - "inline": false, - "attributes": { - "src": "real_user_monitoring/session_replay/mobile/masking-image-mask-non-bundled-only.png", - "alt": "What your application screen may resemble when `mask_non_bundled_only` is enabled on iOS.", - "style": "width:50%;" - }, - "children": [], - "type": "tag", - "tag": "img", - "annotations": [ - { - "type": "attribute", - "name": "src", - "value": "real_user_monitoring/session_replay/mobile/masking-image-mask-non-bundled-only.png" - }, - { - "type": "attribute", - "name": "alt", - "value": "What your application screen may resemble when `mask_non_bundled_only` is enabled on iOS." - }, - { - "type": "attribute", - "name": "style", - "value": "width:50%;" - } - ], - "slots": {}, - "location": { - "start": { - "line": 272 - }, - "end": { - "line": 273 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 274, - 283 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNonBundledOnly,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 274, - 283 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNonBundledOnly,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 274 - }, - "end": { - "line": 283 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 274 - }, - "end": { - "line": 283 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 271 - }, - "end": { - "line": 272 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 284, - 285 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 284 - }, - "end": { - "line": 285 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 286, - 287 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 286 - }, - "end": { - "line": 287 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 287, - 288, - 302, - 303 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 288, - 302 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NON_BUNDLED_ONLY,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 288, - 302 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NON_BUNDLED_ONLY,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 288 - }, - "end": { - "line": 302 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 288 - }, - "end": { - "line": 302 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 287 - }, - "end": { - "line": 288 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 303, - 304 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 303 - }, - "end": { - "line": 304 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 305, - 306 - ], - "inline": true, - "attributes": { - "content": "Show all images", - "string": "Show all images" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 305 - }, - "end": { - "line": 306 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": "mask_none" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 306, - 307 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all images are shown in the replay.", - "string": " setting enabled, all images are shown in the replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 306 - }, - "end": { - "line": 307 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 308, - 309 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 308 - }, - "end": { - "line": 309 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 309, - 310, - 316, - 317 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 310, - 316 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_NONE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 310, - 316 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setImagePrivacy(ImagePrivacy.MASK_NONE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 310 - }, - "end": { - "line": 316 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 310 - }, - "end": { - "line": 316 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 309 - }, - "end": { - "line": 310 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 317, - 318 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 317 - }, - "end": { - "line": 318 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 319, - 320 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 319 - }, - "end": { - "line": 320 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 320, - 321, - 330, - 331 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 321, - 330 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNone,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 321, - 330 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: .maskNone,\n touchPrivacyLevel: touchPrivacyLevel\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 321 - }, - "end": { - "line": 330 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 321 - }, - "end": { - "line": 330 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 320 - }, - "end": { - "line": 321 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 331, - 332 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 331 - }, - "end": { - "line": 332 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 333, - 334 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 333 - }, - "end": { - "line": 334 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 334, - 335, - 349, - 350 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 335, - 349 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NONE,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 335, - 349 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n ImagePrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n imagePrivacyLevel: ImagePrivacyLevel.MASK_NONE,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 335 - }, - "end": { - "line": 349 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 335 - }, - "end": { - "line": 349 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 334 - }, - "end": { - "line": 335 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 350, - 351 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 350 - }, - "end": { - "line": 351 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 352, - 353 - ], - "inline": true, - "attributes": { - "content": "Touch masking", - "string": "Touch masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 352 - }, - "end": { - "line": 353 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": "By default, the ", - "string": "By default, the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 353, - 354 - ], - "inline": true, - "attributes": { - "content": " setting is enabled for all touches. With this setting enabled, all touches on screen are hidden.", - "string": " setting is enabled for all touches. With this setting enabled, all touches on screen are hidden." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 353 - }, - "end": { - "line": 354 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 355, - 356 - ], - "inline": true, - "attributes": { - "content": "Hide all touches", - "string": "Hide all touches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 355 - }, - "end": { - "line": 356 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 356, - 357 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all touches that occur during the replay are hidden. This is the default setting.", - "string": " setting enabled, all touches that occur during the replay are hidden. This is the default setting." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 356 - }, - "end": { - "line": 357 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 358, - 359 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 358 - }, - "end": { - "line": 359 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 359, - 360, - 366, - 367 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 360, - 366 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.HIDE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 360, - 366 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.HIDE)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 360 - }, - "end": { - "line": 366 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 360 - }, - "end": { - "line": 366 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 359 - }, - "end": { - "line": 360 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 367, - 368 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 367 - }, - "end": { - "line": 368 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 369, - 370 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 369 - }, - "end": { - "line": 370 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 370, - 371, - 380, - 381 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 371, - 380 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .hide\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 371, - 380 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .hide\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 371 - }, - "end": { - "line": 380 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 371 - }, - "end": { - "line": 380 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 370 - }, - "end": { - "line": 371 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 381, - 382 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 381 - }, - "end": { - "line": 382 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 383, - 384 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 383 - }, - "end": { - "line": 384 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 384, - 385, - 399, - 400 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 385, - 399 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.HIDE,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 385, - 399 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.HIDE,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 385 - }, - "end": { - "line": 399 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 385 - }, - "end": { - "line": 399 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 384 - }, - "end": { - "line": 385 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 400, - 401 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 400 - }, - "end": { - "line": 401 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 402, - 403 - ], - "inline": true, - "attributes": { - "content": "Show all touches", - "string": "Show all touches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 402 - }, - "end": { - "line": 403 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": "With the ", - "string": "With the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": "show" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 403, - 404 - ], - "inline": true, - "attributes": { - "content": " setting enabled, all touches that occur during the replay are shown.", - "string": " setting enabled, all touches that occur during the replay are shown." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 403 - }, - "end": { - "line": 404 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 405, - 406 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 405 - }, - "end": { - "line": 406 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 406, - 407, - 413, - 414 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 407, - 413 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.SHOW)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 407, - 413 - ], - "inline": false, - "attributes": { - "content": "val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])\n .setTouchPrivacy(TouchPrivacy.SHOW)\n .build()\nSessionReplay.enable(sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 407 - }, - "end": { - "line": 413 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 407 - }, - "end": { - "line": 413 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 406 - }, - "end": { - "line": 407 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 414, - 415 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 414 - }, - "end": { - "line": 415 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 416, - 417 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 416 - }, - "end": { - "line": 417 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 417, - 418, - 427, - 428 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 418, - 427 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .show\n)\nSessionReplay.enable(with: sessionReplayConfig)\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 418, - 427 - ], - "inline": false, - "attributes": { - "content": "let sessionReplayConfig = SessionReplay.Configuration(\n replaySampleRate: sampleRate,\n textAndInputPrivacyLevel: textAndInputPrivacyLevel,\n imagePrivacyLevel: imagePrivacyLevel,\n touchPrivacyLevel: .show\n)\nSessionReplay.enable(with: sessionReplayConfig)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 418 - }, - "end": { - "line": 427 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 418 - }, - "end": { - "line": 427 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 417 - }, - "end": { - "line": 418 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 428, - 429 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 428 - }, - "end": { - "line": 429 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 430, - 431 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 430 - }, - "end": { - "line": 431 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 431, - 432, - 446, - 447 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 432, - 446 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.SHOW,\n}\n\nSessionReplay.enable(config)\n", - "language": "typescript", - "filename": "App.tsx", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 432, - 446 - ], - "inline": false, - "attributes": { - "content": "import {\n SessionReplay,\n SessionReplayConfiguration,\n TouchPrivacyLevel,\n} from \"@datadog/mobile-react-native-session-replay\";\n\nconst config: SessionReplayConfiguration = {\n replaySampleRate: sampleRate,\n touchPrivacyLevel: TouchPrivacyLevel.SHOW,\n}\n\nSessionReplay.enable(config)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 432 - }, - "end": { - "line": 446 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 432 - }, - "end": { - "line": 446 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 431 - }, - "end": { - "line": 432 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 447, - 448 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 447 - }, - "end": { - "line": 448 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 449, - 450 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides", - "string": "Privacy overrides" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 449 - }, - "end": { - "line": 450 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 451, - 452 - ], - "inline": true, - "attributes": { - "content": "The sections above describe the global masking levels that apply to the entire application. However, it is also possible to override these settings at the view level. The same privacy levels as above are available for text and inputs, images, touches, and an additional setting to completely hide a specific view.", - "string": "The sections above describe the global masking levels that apply to the entire application. However, it is also possible to override these settings at the view level. The same privacy levels as above are available for text and inputs, images, touches, and an additional setting to completely hide a specific view." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 451 - }, - "end": { - "line": 452 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 453, - 454 - ], - "inline": true, - "attributes": { - "content": "To ensure overrides are recognized properly, they should be applied as early as possible in the view lifecycle. This prevents scenarios where Session Replay might process a view before applying the overrides.", - "string": "To ensure overrides are recognized properly, they should be applied as early as possible in the view lifecycle. This prevents scenarios where Session Replay might process a view before applying the overrides." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 453 - }, - "end": { - "line": 454 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 455, - 456 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides affect views and their descendants. This means that even if an override is applied to a view where it might have no immediate effect (for example, applying an image override to a text input), the override still applies to all child views.", - "string": "Privacy overrides affect views and their descendants. This means that even if an override is applied to a view where it might have no immediate effect (for example, applying an image override to a text input), the override still applies to all child views." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 455 - }, - "end": { - "line": 456 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 457, - 458 - ], - "inline": true, - "attributes": { - "content": "Overrides operate using a \"nearest parent\" principle: if a view has an override, it uses that setting. Otherwise, it inherits the privacy level from the closest parent in the hierarchy with an override. If no parent has an override, the view defaults to the application's general masking level.", - "string": "Overrides operate using a \"nearest parent\" principle: if a view has an override, it uses that setting. Otherwise, it inherits the privacy level from the closest parent in the hierarchy with an override. If no parent has an override, the view defaults to the application's general masking level." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 457 - }, - "end": { - "line": 458 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 460, - 461 - ], - "inline": false, - "attributes": { - "content": "Android or iOS", - "string": "Android or iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 460 - }, - "end": { - "line": 461 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 461, - 462, - 799, - 800 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 463, - 464 - ], - "inline": true, - "attributes": { - "content": "Text and input override", - "string": "Text and input override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 463 - }, - "end": { - "line": 464 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 465, - 466 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 465 - }, - "end": { - "line": 466 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 466, - 467, - 486, - 487 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in Android classic view, use ", - "string": "To override text and input privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayTextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 467, - 468 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 467 - }, - "end": { - "line": 468 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 469, - 475 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.setSessionReplayTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n// Remove a text and input override from your view\nmyView.setSessionReplayTextAndInputPrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 469, - 475 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.setSessionReplayTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)\n// Remove a text and input override from your view\nmyView.setSessionReplayTextAndInputPrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 469 - }, - "end": { - "line": 475 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 469 - }, - "end": { - "line": 475 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in Jetpack Compose, use ", - "string": "To override text and input privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayTextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 476, - 477 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 476 - }, - "end": { - "line": 477 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 478, - 486 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nText(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTextAndInputPrivacy(textAndInputPrivacy = TextAndInputPrivacy.MASK_SENSITIVE_INPUTS),\n text = \"Datadog\"\n)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 478, - 486 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nText(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTextAndInputPrivacy(textAndInputPrivacy = TextAndInputPrivacy.MASK_SENSITIVE_INPUTS),\n text = \"Datadog\"\n)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 478 - }, - "end": { - "line": 486 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 478 - }, - "end": { - "line": 486 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 466 - }, - "end": { - "line": 467 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 487, - 488 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 487 - }, - "end": { - "line": 488 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 489, - 490 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 489 - }, - "end": { - "line": 490 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 490, - 491, - 519, - 520 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in UIKit views, use ", - "string": "To override text and input privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.textAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 491, - 492 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 491 - }, - "end": { - "line": 492 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 493, - 499 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = .maskSensitiveInputs\n// Remove a text and input override from your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 493, - 499 - ], - "inline": false, - "attributes": { - "content": "// Set a text and input override on your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = .maskSensitiveInputs\n// Remove a text and input override from your view\nmyView.dd.sessionReplayOverrides.textAndInputPrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 493 - }, - "end": { - "line": 499 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 493 - }, - "end": { - "line": 499 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "To override text and input privacy in SwiftUI, wrap your content with ", - "string": "To override text and input privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": "textAndInputPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 500, - 501 - ], - "inline": true, - "attributes": { - "content": " parameter. You can combine this with other privacy settings in the same view for better performance.", - "string": " parameter. You can combine this with other privacy settings in the same view for better performance." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 500 - }, - "end": { - "line": 501 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 502, - 519 - ], - "inline": false, - "attributes": { - "content": "struct ContentView: View {\n @State private var username = \"\"\n @State private var password = \"\"\n \n var body: some View {\n // Set a text and input override on your SwiftUI content\n SessionReplayPrivacyView(textAndInputPrivacy: .maskAllInputs) {\n VStack {\n Text(\"User Profile\")\n TextField(\"Enter name\", text: $username)\n SecureField(\"Password\", text: $password)\n }\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 502, - 519 - ], - "inline": false, - "attributes": { - "content": "struct ContentView: View {\n @State private var username = \"\"\n @State private var password = \"\"\n \n var body: some View {\n // Set a text and input override on your SwiftUI content\n SessionReplayPrivacyView(textAndInputPrivacy: .maskAllInputs) {\n VStack {\n Text(\"User Profile\")\n TextField(\"Enter name\", text: $username)\n SecureField(\"Password\", text: $password)\n }\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 502 - }, - "end": { - "line": 519 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 502 - }, - "end": { - "line": 519 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 490 - }, - "end": { - "line": 491 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 520, - 521 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 520 - }, - "end": { - "line": 521 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 522, - 523 - ], - "inline": true, - "attributes": { - "content": "Image override", - "string": "Image override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 522 - }, - "end": { - "line": 523 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 524, - 525 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 524 - }, - "end": { - "line": 525 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 525, - 526, - 546, - 547 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in Android classic view, use ", - "string": "To override image privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 526, - 527 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 526 - }, - "end": { - "line": 527 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 528, - 534 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.setSessionReplayImagePrivacy(ImagePrivacy.MASK_ALL)\n// Remove an image override from your view\nmyView.setSessionReplayImagePrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 528, - 534 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.setSessionReplayImagePrivacy(ImagePrivacy.MASK_ALL)\n// Remove an image override from your view\nmyView.setSessionReplayImagePrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 528 - }, - "end": { - "line": 534 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 528 - }, - "end": { - "line": 534 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in Jetpack Compose, use ", - "string": "To override image privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 535, - 536 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 535 - }, - "end": { - "line": 536 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 537, - 546 - ], - "inline": false, - "attributes": { - "content": "// Set a image privacy override on your image\nImage(modifier = Modifier\n .padding(16.dp)\n .sessionReplayImagePrivacy(imagePrivacy = ImagePrivacy.MASK_ALL),\n painter = painterResource(id = R.drawable.ic_datadog),\n contentDescription = null\n)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 537, - 546 - ], - "inline": false, - "attributes": { - "content": "// Set a image privacy override on your image\nImage(modifier = Modifier\n .padding(16.dp)\n .sessionReplayImagePrivacy(imagePrivacy = ImagePrivacy.MASK_ALL),\n painter = painterResource(id = R.drawable.ic_datadog),\n contentDescription = null\n)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 537 - }, - "end": { - "line": 546 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 537 - }, - "end": { - "line": 546 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 525 - }, - "end": { - "line": 526 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 547, - 548 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 547 - }, - "end": { - "line": 548 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 549, - 550 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 549 - }, - "end": { - "line": 550 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 550, - 551, - 586, - 587 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in UIKit views, use ", - "string": "To override image privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.imagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 551, - 552 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 551 - }, - "end": { - "line": 552 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 553, - 559 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = .maskAll\n// Remove an image override from your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 553, - 559 - ], - "inline": false, - "attributes": { - "content": "// Set an image override on your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = .maskAll\n// Remove an image override from your view\nmyView.dd.sessionReplayOverrides.imagePrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 553 - }, - "end": { - "line": 559 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 553 - }, - "end": { - "line": 559 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "To override image privacy in SwiftUI, wrap your content with ", - "string": "To override image privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": "imagePrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 560, - 561 - ], - "inline": true, - "attributes": { - "content": " parameter.", - "string": " parameter." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 560 - }, - "end": { - "line": 561 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 562, - 586 - ], - "inline": false, - "attributes": { - "content": "struct ProfileView: View {\n let profileImageURL = URL(string: \"https://example.com/profile.jpg\")\n \n var body: some View {\n // Set an image privacy override on your SwiftUI content\n SessionReplayPrivacyView(imagePrivacy: .maskAll) {\n VStack {\n Image(\"userAvatar\")\n .resizable()\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n AsyncImage(url: profileImageURL) { image in\n image.resizable()\n } placeholder: {\n ProgressView()\n }\n .frame(width: 100, height: 100)\n }\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 562, - 586 - ], - "inline": false, - "attributes": { - "content": "struct ProfileView: View {\n let profileImageURL = URL(string: \"https://example.com/profile.jpg\")\n \n var body: some View {\n // Set an image privacy override on your SwiftUI content\n SessionReplayPrivacyView(imagePrivacy: .maskAll) {\n VStack {\n Image(\"userAvatar\")\n .resizable()\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n AsyncImage(url: profileImageURL) { image in\n image.resizable()\n } placeholder: {\n ProgressView()\n }\n .frame(width: 100, height: 100)\n }\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 562 - }, - "end": { - "line": 586 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 562 - }, - "end": { - "line": 586 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 550 - }, - "end": { - "line": 551 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 587, - 588 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 587 - }, - "end": { - "line": 588 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 589, - 590 - ], - "inline": true, - "attributes": { - "content": "Touch override", - "string": "Touch override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 589 - }, - "end": { - "line": 590 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 591, - 592 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 591 - }, - "end": { - "line": 592 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 592, - 593, - 612, - 613 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in Android classic view, use ", - "string": "To override touch privacy in Android classic view, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayTouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " on a view instance and pass a value from the ", - "string": " on a view instance and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " enum. Passing ", - "string": " enum. Passing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": "null" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 593, - 594 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 593 - }, - "end": { - "line": 594 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 595, - 601 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nview.setSessionReplayTouchPrivacy(TouchPrivacy.HIDE)\n// Remove a touch override from your view\nview.setSessionReplayTouchPrivacy(null)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 595, - 601 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nview.setSessionReplayTouchPrivacy(TouchPrivacy.HIDE)\n// Remove a touch override from your view\nview.setSessionReplayTouchPrivacy(null)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 595 - }, - "end": { - "line": 601 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 595 - }, - "end": { - "line": 601 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in Jetpack Compose, use ", - "string": "To override touch privacy in Jetpack Compose, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayTouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": " on the modifier of a composable and pass a value from the ", - "string": " on the modifier of a composable and pass a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 602, - 603 - ], - "inline": true, - "attributes": { - "content": " enum.", - "string": " enum." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 602 - }, - "end": { - "line": 603 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 604, - 612 - ], - "inline": false, - "attributes": { - "content": "// Set a touch privacy override on your view\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTouchPrivacy(touchPrivacy = TouchPrivacy.HIDE)){\n // Content\n}\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 604, - 612 - ], - "inline": false, - "attributes": { - "content": "// Set a touch privacy override on your view\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayTouchPrivacy(touchPrivacy = TouchPrivacy.HIDE)){\n // Content\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 604 - }, - "end": { - "line": 612 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 604 - }, - "end": { - "line": 612 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 592 - }, - "end": { - "line": 593 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 613, - 614 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 613 - }, - "end": { - "line": 614 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 615, - 616 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 615 - }, - "end": { - "line": 616 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 616, - 617, - 653, - 654 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in UIKit views, use ", - "string": "To override touch privacy in UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.touchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " on a view instance and set a value from the ", - "string": " on a view instance and set a value from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacyLevel" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " enum. Setting it to ", - "string": " enum. Setting it to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 617, - 618 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 617 - }, - "end": { - "line": 618 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 619, - 625 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = .hide\n// Remove a touch override from your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = nil\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 619, - 625 - ], - "inline": false, - "attributes": { - "content": "// Set a touch override on your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = .hide\n// Remove a touch override from your view\nmyView.dd.sessionReplayOverrides.touchPrivacy = nil\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 619 - }, - "end": { - "line": 625 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 619 - }, - "end": { - "line": 625 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "To override touch privacy in SwiftUI, wrap your content with ", - "string": "To override touch privacy in SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": " and configure the ", - "string": " and configure the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": "touchPrivacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 626, - 627 - ], - "inline": true, - "attributes": { - "content": " parameter.", - "string": " parameter." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 626 - }, - "end": { - "line": 627 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 628, - 653 - ], - "inline": false, - "attributes": { - "content": "struct SettingsView: View {\n @State private var sliderValue = 0.5\n \n var body: some View {\n // Set a touch privacy override on your SwiftUI content\n SessionReplayPrivacyView(touchPrivacy: .hide) {\n VStack(spacing: 20) {\n Button(\"Some Action\") {\n // Handle action\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n \n Slider(value: $sliderValue, in: 0...1) {\n Text(\"Some Value\")\n }\n }\n .padding()\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 628, - 653 - ], - "inline": false, - "attributes": { - "content": "struct SettingsView: View {\n @State private var sliderValue = 0.5\n \n var body: some View {\n // Set a touch privacy override on your SwiftUI content\n SessionReplayPrivacyView(touchPrivacy: .hide) {\n VStack(spacing: 20) {\n Button(\"Some Action\") {\n // Handle action\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n \n Slider(value: $sliderValue, in: 0...1) {\n Text(\"Some Value\")\n }\n }\n .padding()\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 628 - }, - "end": { - "line": 653 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 628 - }, - "end": { - "line": 653 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 616 - }, - "end": { - "line": 617 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 654, - 655 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 654 - }, - "end": { - "line": 655 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 656, - 657 - ], - "inline": true, - "attributes": { - "content": "Hidden elements override", - "string": "Hidden elements override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 656 - }, - "end": { - "line": 657 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": "For sensitive elements that need to be completely hidden, use the ", - "string": "For sensitive elements that need to be completely hidden, use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 658, - 659 - ], - "inline": true, - "attributes": { - "content": " setting.", - "string": " setting." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 658 - }, - "end": { - "line": 659 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": "When an element is ", - "string": "When an element is " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 660, - 661 - ], - "inline": true, - "attributes": { - "content": ", it is replaced by a placeholder labeled as \"Hidden\" in the replay, and its subviews are not recorded.", - "string": ", it is replaced by a placeholder labeled as \"Hidden\" in the replay, and its subviews are not recorded." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 660 - }, - "end": { - "line": 661 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": ": Marking a view as ", - "string": ": Marking a view as " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": " does not prevent touch interactions from being recorded on that element. To hide touch interactions as well, use the ", - "string": " does not prevent touch interactions from being recorded on that element. To hide touch interactions as well, use the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "href": "#touch-override" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": "touch override", - "string": "touch override" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 662, - 663 - ], - "inline": true, - "attributes": { - "content": " in addition to marking the element as hidden.", - "string": " in addition to marking the element as hidden." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 662 - }, - "end": { - "line": 663 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 664, - 665 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 664 - }, - "end": { - "line": 665 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 665, - 666, - 684, - 685 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "setSessionReplayHidden(hide = true)" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " to hide the element. Setting ", - "string": " to hide the element. Setting " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " to ", - "string": " to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": "false" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 666, - 667 - ], - "inline": true, - "attributes": { - "content": " removes the override.", - "string": " removes the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 666 - }, - "end": { - "line": 667 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 668, - 674 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.setSessionReplayHidden(hide = true)\n// Remove the override from the view\nmyView.setSessionReplayHidden(hide = false)\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 668, - 674 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.setSessionReplayHidden(hide = true)\n// Remove the override from the view\nmyView.setSessionReplayHidden(hide = false)\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 668 - }, - "end": { - "line": 674 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 668 - }, - "end": { - "line": 674 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": "Modifier.sessionReplayHide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 675, - 676 - ], - "inline": true, - "attributes": { - "content": " to hide the element in Jetpack Compose.", - "string": " to hide the element in Jetpack Compose." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 675 - }, - "end": { - "line": 676 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 676, - 684 - ], - "inline": false, - "attributes": { - "content": "// Mark a Column as hidden\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayHide(hide = true)){\n // Content\n}\n", - "language": "kotlin", - "filename": "application.kt", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 676, - 684 - ], - "inline": false, - "attributes": { - "content": "// Mark a Column as hidden\nColumn(modifier = Modifier\n .padding(16.dp)\n .sessionReplayHide(hide = true)){\n // Content\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 676 - }, - "end": { - "line": 684 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "application.kt" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 676 - }, - "end": { - "line": 684 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 665 - }, - "end": { - "line": 666 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 685, - 686 - ], - "inline": false, - "attributes": { - "content": "end Android", - "string": "end Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 685 - }, - "end": { - "line": 686 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 687, - 688 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 687 - }, - "end": { - "line": 688 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 688, - 689, - 796, - 797 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": "In UIKit views, use ", - "string": "In UIKit views, use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": "dd.sessionReplayOverrides.hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 689, - 690 - ], - "inline": true, - "attributes": { - "content": " to hide the element:", - "string": " to hide the element:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 689 - }, - "end": { - "line": 690 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 691, - 697 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.dd.sessionReplayOverrides.hide = true\n// Remove the override from the view\nmyView.dd.sessionReplayOverrides.hide = false\n", - "language": "swift", - "filename": "AppDelegate.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 691, - 697 - ], - "inline": false, - "attributes": { - "content": "// Mark a view as hidden\nmyView.dd.sessionReplayOverrides.hide = true\n// Remove the override from the view\nmyView.dd.sessionReplayOverrides.hide = false\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 691 - }, - "end": { - "line": 697 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "AppDelegate.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 691 - }, - "end": { - "line": 697 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "In SwiftUI, wrap your content with ", - "string": "In SwiftUI, wrap your content with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": " and set the ", - "string": " and set the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": " parameter to ", - "string": " parameter to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": "true" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 698, - 699 - ], - "inline": true, - "attributes": { - "content": ":", - "string": ":" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 698 - }, - "end": { - "line": 699 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 700, - 726 - ], - "inline": false, - "attributes": { - "content": "struct PaymentView: View {\n @State private var cardNumber = \"\"\n @State private var cvv = \"\"\n \n var body: some View {\n // Mark SwiftUI content as hidden\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Payment Information\")\n .font(.headline)\n \n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n SecureField(\"CVV\", text: $cvv)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n Text(\"Card ending in 1234\")\n .foregroundColor(.secondary)\n }\n .padding()\n }\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 700, - 726 - ], - "inline": false, - "attributes": { - "content": "struct PaymentView: View {\n @State private var cardNumber = \"\"\n @State private var cvv = \"\"\n \n var body: some View {\n // Mark SwiftUI content as hidden\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Payment Information\")\n .font(.headline)\n \n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n SecureField(\"CVV\", text: $cvv)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n \n Text(\"Card ending in 1234\")\n .foregroundColor(.secondary)\n }\n .padding()\n }\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 700 - }, - "end": { - "line": 726 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 700 - }, - "end": { - "line": 726 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": ": Setting the ", - "string": ": Setting the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " override to ", - "string": " override to " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "nil" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " or ", - "string": " or " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": "false" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 727, - 728 - ], - "inline": true, - "attributes": { - "content": " has the same effect—it disables the override.", - "string": " has the same effect—it disables the override." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 727 - }, - "end": { - "line": 728 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 729, - 730 - ], - "inline": true, - "attributes": { - "content": "Combining privacy settings in SwiftUI", - "string": "Combining privacy settings in SwiftUI" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 729 - }, - "end": { - "line": 730 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "Combine multiple privacy settings in one ", - "string": "Combine multiple privacy settings in one " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": " for different configurations. Datadog recommends ", - "string": " for different configurations. Datadog recommends " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": "combining options in a single view rather than nesting multiple instances", - "string": "combining options in a single view rather than nesting multiple instances" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 731, - 732 - ], - "inline": true, - "attributes": { - "content": " to avoid adding unnecessary view layers.", - "string": " to avoid adding unnecessary view layers." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 731 - }, - "end": { - "line": 732 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 733, - 794 - ], - "inline": false, - "attributes": { - "content": "struct UserProfileView: View {\n @State private var userBio = \"\"\n @State private var cardNumber = \"\"\n \n var body: some View {\n VStack(spacing: 30) {\n // Preferred: Combine multiple privacy settings in one view\n SessionReplayPrivacyView(\n textAndInputPrivacy: .maskSensitiveInputs,\n imagePrivacy: .maskNonBundledOnly,\n touchPrivacy: .show\n ) {\n VStack(spacing: 20) {\n // User profile section\n HStack {\n AsyncImage(url: URL(string: \"https://example.com/profile.jpg\")) { image in\n image.resizable()\n } placeholder: {\n Circle().fill(Color.gray.opacity(0.3))\n }\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n VStack(alignment: .leading) {\n Text(\"John Doe\")\n .font(.headline)\n TextField(\"Enter bio\", text: $userBio)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n }\n \n Button(\"Save Profile\") {\n // Save action\n print(\"Profile saved\")\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n }\n .padding()\n }\n \n // For completely different privacy requirements, use separate `SessionReplayPrivacyView` instances\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Credit Card Information\")\n .font(.headline)\n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n .padding()\n .background(Color.gray.opacity(0.1))\n .cornerRadius(8)\n }\n }\n .padding()\n }\n}\n", - "language": "swift", - "filename": "ContentView.swift", - "collapsible": true - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 733, - 794 - ], - "inline": false, - "attributes": { - "content": "struct UserProfileView: View {\n @State private var userBio = \"\"\n @State private var cardNumber = \"\"\n \n var body: some View {\n VStack(spacing: 30) {\n // Preferred: Combine multiple privacy settings in one view\n SessionReplayPrivacyView(\n textAndInputPrivacy: .maskSensitiveInputs,\n imagePrivacy: .maskNonBundledOnly,\n touchPrivacy: .show\n ) {\n VStack(spacing: 20) {\n // User profile section\n HStack {\n AsyncImage(url: URL(string: \"https://example.com/profile.jpg\")) { image in\n image.resizable()\n } placeholder: {\n Circle().fill(Color.gray.opacity(0.3))\n }\n .frame(width: 60, height: 60)\n .clipShape(Circle())\n \n VStack(alignment: .leading) {\n Text(\"John Doe\")\n .font(.headline)\n TextField(\"Enter bio\", text: $userBio)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n }\n \n Button(\"Save Profile\") {\n // Save action\n print(\"Profile saved\")\n }\n .padding()\n .background(Color.blue)\n .foregroundColor(.white)\n .cornerRadius(8)\n }\n .padding()\n }\n \n // For completely different privacy requirements, use separate `SessionReplayPrivacyView` instances\n SessionReplayPrivacyView(hide: true) {\n VStack(spacing: 16) {\n Text(\"Credit Card Information\")\n .font(.headline)\n TextField(\"Card Number\", text: $cardNumber)\n .textFieldStyle(RoundedBorderTextFieldStyle())\n }\n .padding()\n .background(Color.gray.opacity(0.1))\n .cornerRadius(8)\n }\n }\n .padding()\n }\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 733 - }, - "end": { - "line": 794 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "ContentView.swift" - }, - { - "type": "attribute", - "name": "collapsible", - "value": true - } - ], - "slots": {}, - "location": { - "start": { - "line": 733 - }, - "end": { - "line": 794 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": "Note", - "string": "Note" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": ": Each ", - "string": ": Each " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": "SessionReplayPrivacyView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 795, - 796 - ], - "inline": true, - "attributes": { - "content": " introduces an additional native view layer. For optimal performance, prefer combining privacy settings instead of nesting multiple privacy views when possible.", - "string": " introduces an additional native view layer. For optimal performance, prefer combining privacy settings instead of nesting multiple privacy views when possible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 795 - }, - "end": { - "line": 796 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 688 - }, - "end": { - "line": 689 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 797, - 798 - ], - "inline": false, - "attributes": { - "content": "end iOS", - "string": "end iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 797 - }, - "end": { - "line": 798 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "or", - "parameters": { - "0": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - }, - "1": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 461 - }, - "end": { - "line": 462 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 800, - 801 - ], - "inline": false, - "attributes": { - "content": "end iOS or Android", - "string": "end iOS or Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 800 - }, - "end": { - "line": 801 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 802, - 803 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 802 - }, - "end": { - "line": 803 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 803, - 804, - 957, - 958 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides are fully supported in React Native starting from version ", - "string": "Privacy overrides are fully supported in React Native starting from version " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "2.8.0" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": " of the Datadog ", - "string": " of the Datadog " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": "React Native SDK", - "string": "React Native SDK" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 804, - 805 - ], - "inline": true, - "attributes": { - "content": ". Although the underlying functionality is shared with native Android and iOS platforms, the integration in React Native is designed to align with common React patterns.", - "string": ". Although the underlying functionality is shared with native Android and iOS platforms, the integration in React Native is designed to align with common React patterns." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 804 - }, - "end": { - "line": 805 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 806, - 807 - ], - "inline": true, - "attributes": { - "content": "Behavior consistency", - "string": "Behavior consistency" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 806 - }, - "end": { - "line": 807 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 808, - 809 - ], - "inline": true, - "attributes": { - "content": "React Native's implementation is built on the same foundation as the native Android and iOS SDKs. As a result, you can rely on the privacy features behaving the same way across all three platforms.", - "string": "React Native's implementation is built on the same foundation as the native Android and iOS SDKs. As a result, you can rely on the privacy features behaving the same way across all three platforms." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 808 - }, - "end": { - "line": 809 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": true, - "attributes": { - "content": "Usage with ", - "string": "Usage with " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 810, - 811 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 810 - }, - "end": { - "line": 811 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": "The SDK provides a set of React components under the ", - "string": "The SDK provides a set of React components under the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 812, - 813 - ], - "inline": true, - "attributes": { - "content": " namespace, which are used to configure privacy settings within your React Native application.", - "string": " namespace, which are used to configure privacy settings within your React Native application." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 812 - }, - "end": { - "line": 813 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": "To use them, import ", - "string": "To use them, import " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 814, - 815 - ], - "inline": true, - "attributes": { - "content": " as follows:", - "string": " as follows:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 814 - }, - "end": { - "line": 815 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 816, - 819 - ], - "inline": false, - "attributes": { - "content": "import { SessionReplayView } from \"@datadog/mobile-react-native-session-replay\";\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 816, - 819 - ], - "inline": false, - "attributes": { - "content": "import { SessionReplayView } from \"@datadog/mobile-react-native-session-replay\";\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 816 - }, - "end": { - "line": 819 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 816 - }, - "end": { - "line": 819 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 820, - 821 - ], - "inline": true, - "attributes": { - "content": "This import provides access to four privacy-focused components.", - "string": "This import provides access to four privacy-focused components." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 820 - }, - "end": { - "line": 821 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 822, - 823 - ], - "inline": true, - "attributes": { - "content": "Each of these components behaves like a regular React Native View, meaning they can be used anywhere you would typically use a View, with the addition of privacy-related behavior.", - "string": "Each of these components behaves like a regular React Native View, meaning they can be used anywhere you would typically use a View, with the addition of privacy-related behavior." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 822 - }, - "end": { - "line": 823 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 824, - 825, - 849, - 850 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 825, - 826 - ], - "inline": true, - "attributes": { - "content": "Component", - "string": "Component" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 826 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 826, - 827 - ], - "inline": true, - "attributes": { - "content": "Description", - "string": "Description" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 826 - }, - "end": { - "line": 827 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 827, - 828 - ], - "inline": true, - "attributes": { - "content": "Properties", - "string": "Properties" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 827 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 825 - }, - "end": { - "line": 828 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 829, - 830 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.Privacy" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 830 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 830, - 831 - ], - "inline": true, - "attributes": { - "content": "Adds support for customizing text, image, and touch privacy settings for its children.", - "string": "Adds support for customizing text, image, and touch privacy settings for its children." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 830 - }, - "end": { - "line": 831 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 831, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 836 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": "textAndInputPrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L43" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 832, - 833 - ], - "inline": true, - "attributes": { - "content": "TextAndInputPrivacyLevel", - "string": "TextAndInputPrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 833 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": "imagePrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L15" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 833, - 834 - ], - "inline": true, - "attributes": { - "content": "ImagePrivacyLevel", - "string": "ImagePrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 833 - }, - "end": { - "line": 834 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": "touchPrivacy?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "href": "https://github.com/DataDog/dd-sdk-reactnative/blob/develop/packages/react-native-session-replay/src/SessionReplay.ts#L32" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 834, - 835 - ], - "inline": true, - "attributes": { - "content": "TouchPrivacyLevel", - "string": "TouchPrivacyLevel" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 834 - }, - "end": { - "line": 835 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": "hide?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 835, - 836 - ], - "inline": true, - "attributes": { - "content": "boolean" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 835 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 832 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 831 - }, - "end": { - "line": 836 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 829 - }, - "end": { - "line": 836 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 837, - 838 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.MaskAll" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 838 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": "Applies the most restrictive privacy settings (", - "string": "Applies the most restrictive privacy settings (" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": "MaskAll" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 838, - 839 - ], - "inline": true, - "attributes": { - "content": " or platform equivalent) to all children.", - "string": " or platform equivalent) to all children." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 838 - }, - "end": { - "line": 839 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 839, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": "showTouch?" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": ": ", - "string": ": " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 840, - 841 - ], - "inline": true, - "attributes": { - "content": "boolean" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 840 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 839 - }, - "end": { - "line": 841 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 837 - }, - "end": { - "line": 841 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 842, - 843 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.MaskNone" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 843 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": "Applies the least restrictive settings (", - "string": "Applies the least restrictive settings (" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": "MaskNone" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 843, - 844 - ], - "inline": true, - "attributes": { - "content": " or platform equivalent). All child components are visible.", - "string": " or platform equivalent). All child components are visible." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 843 - }, - "end": { - "line": 844 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": true, - "attributes": { - "marker": "_" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 844, - 845 - ], - "inline": true, - "attributes": { - "content": "(No additional properties)", - "string": "(No additional properties)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "em", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 844 - }, - "end": { - "line": 845 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 842 - }, - "end": { - "line": 845 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 846, - 847 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView.Hide" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 847 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 847, - 848 - ], - "inline": true, - "attributes": { - "content": "Completely hides all child components from session replay.", - "string": "Completely hides all child components from session replay." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 847 - }, - "end": { - "line": 848 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": true, - "attributes": { - "marker": "_" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 848, - 849 - ], - "inline": true, - "attributes": { - "content": "(No additional properties)", - "string": "(No additional properties)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "em", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 848 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 846 - }, - "end": { - "line": 849 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 824 - }, - "end": { - "line": 825 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 851, - 852 - ], - "inline": true, - "attributes": { - "content": "Integration approaches", - "string": "Integration approaches" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 851 - }, - "end": { - "line": 852 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 853, - 854 - ], - "inline": true, - "attributes": { - "content": "There are two ways to apply privacy overrides in React Native:", - "string": "There are two ways to apply privacy overrides in React Native:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 853 - }, - "end": { - "line": 854 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 857 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": "Wrap specific components with a privacy-focused ", - "string": "Wrap specific components with a privacy-focused " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 854, - 855 - ], - "inline": true, - "attributes": { - "content": " to target only certain elements, or", - "string": " to target only certain elements, or" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 855 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 857 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "Replace an entire ", - "string": "Replace an entire " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": " with a ", - "string": " with a " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 855, - 856 - ], - "inline": true, - "attributes": { - "content": " to apply privacy settings to a whole section of your UI.", - "string": " to apply privacy settings to a whole section of your UI." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 856 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 855 - }, - "end": { - "line": 857 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 854 - }, - "end": { - "line": 857 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 857, - 858 - ], - "inline": true, - "attributes": { - "content": "This flexibility lets you control which parts of your app are masked or visible in session replays.", - "string": "This flexibility lets you control which parts of your app are masked or visible in session replays." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 857 - }, - "end": { - "line": 858 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 859, - 860, - 924, - 925 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 861, - 862, - 895, - 896 - ], - "inline": false, - "attributes": { - "label": "As wrappers" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": "Use ", - "string": "Use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 862, - 863 - ], - "inline": true, - "attributes": { - "content": " components to wrap specific parts of your UI where you want to override privacy settings.", - "string": " components to wrap specific parts of your UI where you want to override privacy settings." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 862 - }, - "end": { - "line": 863 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 864, - 865 - ], - "inline": true, - "attributes": { - "content": "For example, going from:", - "string": "For example, going from:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 864 - }, - "end": { - "line": 865 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 866, - 878 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 866, - 878 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 866 - }, - "end": { - "line": 878 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 866 - }, - "end": { - "line": 878 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 879, - 880 - ], - "inline": true, - "attributes": { - "content": "To:", - "string": "To:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 879 - }, - "end": { - "line": 880 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 881, - 895 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n \n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 881, - 895 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n \n \n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 881 - }, - "end": { - "line": 895 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 881 - }, - "end": { - "line": 895 - } - } - } - ], - "type": "tag", - "tag": "tab", - "annotations": [ - { - "type": "attribute", - "name": "label", - "value": "As wrappers" - } - ], - "slots": {}, - "location": { - "start": { - "line": 861 - }, - "end": { - "line": 862 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 897, - 898, - 923, - 924 - ], - "inline": false, - "attributes": { - "label": "As replacements" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "Replace an existing ", - "string": "Replace an existing " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": " with a ", - "string": " with a " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 898, - 899 - ], - "inline": true, - "attributes": { - "content": " component directly. This is ideal when a view already encapsulates the section of the UI that needs modified privacy behavior.", - "string": " component directly. This is ideal when a view already encapsulates the section of the UI that needs modified privacy behavior." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 898 - }, - "end": { - "line": 899 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 900, - 901 - ], - "inline": true, - "attributes": { - "content": "For example, instead of:", - "string": "For example, instead of:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 900 - }, - "end": { - "line": 901 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 902, - 911 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 902, - 911 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 902 - }, - "end": { - "line": 911 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 902 - }, - "end": { - "line": 911 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 912, - 913 - ], - "inline": true, - "attributes": { - "content": "You can use:", - "string": "You can use:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 912 - }, - "end": { - "line": 913 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 914, - 923 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 914, - 923 - ], - "inline": false, - "attributes": { - "content": "const App = () => {\n return (\n \n {/* content */}\n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 914 - }, - "end": { - "line": 923 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 914 - }, - "end": { - "line": 923 - } - } - } - ], - "type": "tag", - "tag": "tab", - "annotations": [ - { - "type": "attribute", - "name": "label", - "value": "As replacements" - } - ], - "slots": {}, - "location": { - "start": { - "line": 897 - }, - "end": { - "line": 898 - } - } - } - ], - "type": "tag", - "tag": "tabs", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 859 - }, - "end": { - "line": 860 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 926, - 927 - ], - "inline": true, - "attributes": { - "content": "Combining privacy components", - "string": "Combining privacy components" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 926 - }, - "end": { - "line": 927 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": "You can freely combine the ", - "string": "You can freely combine the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": "SessionReplayView" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 928, - 929 - ], - "inline": true, - "attributes": { - "content": " components to apply different privacy settings to distinct sections of your UI. This is especially useful when you need a mix of hidden elements, masked input fields, and visible content within the same screen.", - "string": " components to apply different privacy settings to distinct sections of your UI. This is especially useful when you need a mix of hidden elements, masked input fields, and visible content within the same screen." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 928 - }, - "end": { - "line": 929 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 930, - 931 - ], - "inline": true, - "attributes": { - "content": "For example:", - "string": "For example:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 930 - }, - "end": { - "line": 931 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 932, - 957 - ], - "inline": false, - "attributes": { - "content": "import { ImagePrivacyLevel, SessionReplayView, TextAndInputPrivacyLevel, TouchPrivacyLevel } from \"@datadog/mobile-react-native-session-replay\";\n\nconst App = () => {\n return (\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n \n );\n}\n", - "language": "typescript", - "filename": "App.tsx" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 932, - 957 - ], - "inline": false, - "attributes": { - "content": "import { ImagePrivacyLevel, SessionReplayView, TextAndInputPrivacyLevel, TouchPrivacyLevel } from \"@datadog/mobile-react-native-session-replay\";\n\nconst App = () => {\n return (\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n {/* content */}\n \n \n );\n}\n" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 932 - }, - "end": { - "line": 957 - } - } - } - ], - "type": "fence", - "annotations": [ - { - "type": "attribute", - "name": "filename", - "value": "App.tsx" - } - ], - "slots": {}, - "location": { - "start": { - "line": 932 - }, - "end": { - "line": 957 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 803 - }, - "end": { - "line": 804 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 958, - 959 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 958 - }, - "end": { - "line": 959 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 960, - 961 - ], - "inline": true, - "attributes": { - "content": "Notes on WebViews", - "string": "Notes on WebViews" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 960 - }, - "end": { - "line": 961 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 965 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "Privacy overrides, aside from the ", - "string": "Privacy overrides, aside from the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": " and ", - "string": " and " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "touch" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": " options, are not supported for WebViews. You can primarily manage their privacy using the ", - "string": " options, are not supported for WebViews. You can primarily manage their privacy using the " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "href": "/real_user_monitoring/session_replay/privacy_options" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": "browser SDK privacy settings", - "string": "browser SDK privacy settings" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 962, - 963 - ], - "inline": true, - "attributes": { - "content": ".", - "string": "." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 963 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 965 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "When a WebView is marked as ", - "string": "When a WebView is marked as " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "hidden" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": ", it is replaced by a placeholder in the replay. However, the WebView itself continues to collect and send data. To avoid this, it is recommended to use ", - "string": ", it is replaced by a placeholder in the replay. However, the WebView itself continues to collect and send data. To avoid this, it is recommended to use " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "href": "/real_user_monitoring/session_replay/privacy_options" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": "browser SDK privacy settings", - "string": "browser SDK privacy settings" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 963, - 964 - ], - "inline": true, - "attributes": { - "content": " for managing WebView privacy, as they provide more targeted control.", - "string": " for managing WebView privacy, as they provide more targeted control." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 964 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 963 - }, - "end": { - "line": 965 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 962 - }, - "end": { - "line": 965 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": false, - "attributes": { - "level": 2 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 965, - 966 - ], - "inline": true, - "attributes": { - "content": "How and what data is masked", - "string": "How and what data is masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 965 - }, - "end": { - "line": 966 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 967, - 968 - ], - "inline": true, - "attributes": { - "content": "This section describes how the Datadog recorder handles masking based on data type and how that data is defined.", - "string": "This section describes how the Datadog recorder handles masking based on data type and how that data is defined." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 967 - }, - "end": { - "line": 968 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 969, - 970 - ], - "inline": true, - "attributes": { - "content": "Text masking strategies", - "string": "Text masking strategies" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 969 - }, - "end": { - "line": 970 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 971, - 972 - ], - "inline": true, - "attributes": { - "content": "Depending on how you've configured your privacy settings, the type of text, and sensitivity of data, Datadog's masking rules apply different strategies to different types of text fields.", - "string": "Depending on how you've configured your privacy settings, the type of text, and sensitivity of data, Datadog's masking rules apply different strategies to different types of text fields." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 971 - }, - "end": { - "line": 972 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Text masking strategy", - "string": "Text masking strategy" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Description", - "string": "Description" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 973, - 974 - ], - "inline": true, - "attributes": { - "content": "Example", - "string": "Example" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 974 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "The text is revealed in the session replay", - "string": "The text is revealed in the session replay" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 975, - 976 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 976 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "Space-preserving mask", - "string": "Space-preserving mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "Each visible character is replaced with a lowercase \"x\"", - "string": "Each visible character is replaced with a lowercase \"x\"" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 976, - 977 - ], - "inline": true, - "attributes": { - "content": "\"xxxxx xxxxx\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 976 - }, - "end": { - "line": 977 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "The entire text field is replaced with a constant of three asterisks (***)", - "string": "The entire text field is replaced with a constant of three asterisks (***)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "\"Hello world\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": " → ", - "string": " → " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 977, - 978 - ], - "inline": true, - "attributes": { - "content": "\"***\"" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 977 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 975 - }, - "end": { - "line": 978 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 973 - }, - "end": { - "line": 978 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": "With the above text strategies in mind, you have a few different options if you want to override the default privacy rule of ", - "string": "With the above text strategies in mind, you have a few different options if you want to override the default privacy rule of " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": "mask" - }, - "children": [], - "type": "code", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 979, - 980 - ], - "inline": true, - "attributes": { - "content": " in your configuration.", - "string": " in your configuration." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 979 - }, - "end": { - "line": 980 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 981, - 982 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how Datadog applies different text masking strategies, using the rules you set up in your configuration, to the below text types.", - "string": "The following chart shows how Datadog applies different text masking strategies, using the rules you set up in your configuration, to the below text types." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 981 - }, - "end": { - "line": 982 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 983, - 984 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 984 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "href": "#sensitive-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Sensitive text", - "string": "Sensitive text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 985, - 986 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 986 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "href": "#input-and-option-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Input and option text", - "string": "Input and option text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 986, - 987 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 986 - }, - "end": { - "line": 987 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "href": "#static-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "Static text", - "string": "Static text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "Space-preserving mask", - "string": "Space-preserving mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 987, - 988 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 987 - }, - "end": { - "line": 988 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "href": "#hint-text" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "Hint text", - "string": "Hint text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "Fixed-length mask", - "string": "Fixed-length mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 988, - 989 - ], - "inline": true, - "attributes": { - "content": "No mask", - "string": "No mask" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 988 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 985 - }, - "end": { - "line": 989 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 983 - }, - "end": { - "line": 989 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 990, - 991 - ], - "inline": true, - "attributes": { - "content": "Text masking definitions", - "string": "Text masking definitions" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 990 - }, - "end": { - "line": 991 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 992, - 993 - ], - "inline": true, - "attributes": { - "content": "Find below a description of how Datadog's recorder treats each text type.", - "string": "Find below a description of how Datadog's recorder treats each text type." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 992 - }, - "end": { - "line": 993 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 994, - 995 - ], - "inline": true, - "attributes": { - "content": "Sensitive text", - "string": "Sensitive text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 994 - }, - "end": { - "line": 995 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": { - "content": "Sensitive text includes passwords, e-mails, and phone numbers marked in a platform-specific way,", - "string": "Sensitive text includes passwords, e-mails, and phone numbers marked in a platform-specific way," - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 995, - 997 - ], - "inline": true, - "attributes": { - "content": "and other forms of sensitivity in text available to each platform.", - "string": "and other forms of sensitivity in text available to each platform." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 995 - }, - "end": { - "line": 997 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 998, - 999 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 998 - }, - "end": { - "line": 999 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 999, - 1000, - 1004, - 1005 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1000, - 1001 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in:", - "string": "Sensitive text can be detected in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1000 - }, - "end": { - "line": 1001 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1004 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1002, - 1003 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1003 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1003, - 1004 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1003 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1002 - }, - "end": { - "line": 1004 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 999 - }, - "end": { - "line": 1000 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1006, - 1007 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1006 - }, - "end": { - "line": 1007 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1007, - 1008, - 1015, - 1016 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1008, - 1009 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in:", - "string": "Sensitive text can be detected in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1008 - }, - "end": { - "line": 1009 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1015 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1010, - 1011 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1011 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1011, - 1012 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1011 - }, - "end": { - "line": 1012 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1012, - 1013 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1012 - }, - "end": { - "line": 1013 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1013, - 1014 - ], - "inline": true, - "attributes": { - "content": "Credit card numbers", - "string": "Credit card numbers" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1013 - }, - "end": { - "line": 1014 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1014, - 1015 - ], - "inline": true, - "attributes": { - "content": "One-time codes", - "string": "One-time codes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1014 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1010 - }, - "end": { - "line": 1015 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1007 - }, - "end": { - "line": 1008 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1017, - 1018 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1017 - }, - "end": { - "line": 1018 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1018, - 1019, - 1043, - 1044 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1019, - 1020 - ], - "inline": true, - "attributes": { - "content": "Sensitive text can be detected in the following components.", - "string": "Sensitive text can be detected in the following components." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1019 - }, - "end": { - "line": 1020 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1021, - 1022, - 1042, - 1043 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1022, - 1023 - ], - "inline": true, - "attributes": { - "content": "Component", - "string": "Component" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1023 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1023, - 1024 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1023 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1022 - }, - "end": { - "line": 1024 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1025, - 1026 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1026 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1026, - 1027 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1026 - }, - "end": { - "line": 1027 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1025 - }, - "end": { - "line": 1027 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1028, - 1029 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1029 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1029, - 1030 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1029 - }, - "end": { - "line": 1030 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1028 - }, - "end": { - "line": 1030 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1031, - 1032 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1032 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1032, - 1033 - ], - "inline": true, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1032 - }, - "end": { - "line": 1033 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1031 - }, - "end": { - "line": 1033 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1034, - 1035 - ], - "inline": true, - "attributes": { - "content": "Address information", - "string": "Address information" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1035 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1035, - 1036 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1035 - }, - "end": { - "line": 1036 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1034 - }, - "end": { - "line": 1036 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1037, - 1038 - ], - "inline": true, - "attributes": { - "content": "Credit card numbers", - "string": "Credit card numbers" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1038 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1038, - 1039 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1038 - }, - "end": { - "line": 1039 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1037 - }, - "end": { - "line": 1039 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1040, - 1041 - ], - "inline": true, - "attributes": { - "content": "One-time codes", - "string": "One-time codes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1041 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1041, - 1042 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1041 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1040 - }, - "end": { - "line": 1042 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1021 - }, - "end": { - "line": 1022 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1018 - }, - "end": { - "line": 1019 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1045, - 1046 - ], - "inline": true, - "attributes": { - "content": "Input and option text", - "string": "Input and option text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1045 - }, - "end": { - "line": 1046 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1047, - 1048 - ], - "inline": true, - "attributes": { - "content": "Input and option text is text entered by the user with a keyboard or other text-input device, or a custom (non-generic) value in selection elements.", - "string": "Input and option text is text entered by the user with a keyboard or other text-input device, or a custom (non-generic) value in selection elements." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1047 - }, - "end": { - "line": 1048 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1049, - 1050 - ], - "inline": true, - "attributes": { - "content": "This includes the below.", - "string": "This includes the below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1049 - }, - "end": { - "line": 1050 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1051, - 1052 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1051 - }, - "end": { - "line": 1052 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1052, - 1053, - 1063, - 1064 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1063 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1054 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1053, - 1054 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1054 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1054 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1056 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1054, - 1055 - ], - "inline": true, - "attributes": { - "content": "Text Field", - "string": "Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1055 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1055, - 1056 - ], - "inline": true, - "attributes": { - "content": "Text View", - "string": "Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1055 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1054 - }, - "end": { - "line": 1056 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1056 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1057 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1056, - 1057 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1057 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1057 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1059 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1057, - 1058 - ], - "inline": true, - "attributes": { - "content": "Value Picker", - "string": "Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1058 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1058, - 1059 - ], - "inline": true, - "attributes": { - "content": "Segment", - "string": "Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1058 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1057 - }, - "end": { - "line": 1059 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1056 - }, - "end": { - "line": 1059 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1060 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1059, - 1060 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1060 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1060 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1063 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1060, - 1061 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Text Field and Text View (not entered by the user)", - "string": "Placeholder (hint) texts in Text Field and Text View (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1061 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1061, - 1062 - ], - "inline": true, - "attributes": { - "content": "Non-editable texts in Text View", - "string": "Non-editable texts in Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1061 - }, - "end": { - "line": 1062 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1062, - 1063 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1062 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1060 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1059 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1053 - }, - "end": { - "line": 1063 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1052 - }, - "end": { - "line": 1053 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1065, - 1066 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1065 - }, - "end": { - "line": 1066 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1066, - 1067, - 1075, - 1076 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1075 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1068 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1067, - 1068 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1068 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1068 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1068, - 1069 - ], - "inline": true, - "attributes": { - "content": "Edit Text", - "string": "Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1068 - }, - "end": { - "line": 1069 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1069 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1070 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1069, - 1070 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1070 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1070 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1072 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1070, - 1071 - ], - "inline": true, - "attributes": { - "content": "Value Picker", - "string": "Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1071 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1071, - 1072 - ], - "inline": true, - "attributes": { - "content": "Drop Down List", - "string": "Drop Down List" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1071 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1070 - }, - "end": { - "line": 1072 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1069 - }, - "end": { - "line": 1072 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1073 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1072, - 1073 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1073 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1073 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1075 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1073, - 1074 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Edit Text (not entered by the user)", - "string": "Placeholder (hint) texts in Edit Text (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1074 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1074, - 1075 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1074 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1073 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1072 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1067 - }, - "end": { - "line": 1075 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1066 - }, - "end": { - "line": 1067 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1077, - 1078 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1077 - }, - "end": { - "line": 1078 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1078, - 1079, - 1091, - 1092 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1091 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1080 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1079, - 1080 - ], - "inline": true, - "attributes": { - "content": "User-entered text in:", - "string": "User-entered text in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1080 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1080 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1083 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1080, - 1081 - ], - "inline": true, - "attributes": { - "content": "Text Field (iOS)", - "string": "Text Field (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1081 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1081, - 1082 - ], - "inline": true, - "attributes": { - "content": "Text View (iOS)", - "string": "Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1081 - }, - "end": { - "line": 1082 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1082, - 1083 - ], - "inline": true, - "attributes": { - "content": "Edit Text (Android)", - "string": "Edit Text (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1082 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1080 - }, - "end": { - "line": 1083 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1083 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1084 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1083, - 1084 - ], - "inline": true, - "attributes": { - "content": "User-selected options in:", - "string": "User-selected options in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1084 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1084 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1087 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1084, - 1085 - ], - "inline": true, - "attributes": { - "content": "Value Picker (iOS + Android)", - "string": "Value Picker (iOS + Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1085 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1085, - 1086 - ], - "inline": true, - "attributes": { - "content": "Segment (iOS)", - "string": "Segment (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1085 - }, - "end": { - "line": 1086 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1086, - 1087 - ], - "inline": true, - "attributes": { - "content": "Drop Down List (Android)", - "string": "Drop Down List (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1086 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1084 - }, - "end": { - "line": 1087 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1083 - }, - "end": { - "line": 1087 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1088 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1087, - 1088 - ], - "inline": true, - "attributes": { - "content": "Notable exclusions:", - "string": "Notable exclusions:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1088 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1088 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1091 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1088, - 1089 - ], - "inline": true, - "attributes": { - "content": "Placeholder (hint) texts in Text Field, Text View and Edit Text (not entered by the user)", - "string": "Placeholder (hint) texts in Text Field, Text View and Edit Text (not entered by the user)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1089 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1089, - 1090 - ], - "inline": true, - "attributes": { - "content": "Non-editable texts in Text View (iOS).", - "string": "Non-editable texts in Text View (iOS)." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1089 - }, - "end": { - "line": 1090 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1090, - 1091 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in Date Picker (generic values)", - "string": "Month, day, and year labels in Date Picker (generic values)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1090 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1088 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1087 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1079 - }, - "end": { - "line": 1091 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1078 - }, - "end": { - "line": 1079 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1093, - 1094 - ], - "inline": true, - "attributes": { - "content": "Static text", - "string": "Static text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1093 - }, - "end": { - "line": 1094 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1094, - 1095 - ], - "inline": true, - "attributes": { - "content": "Static text is any text that is not directly entered by the user. This includes the below.", - "string": "Static text is any text that is not directly entered by the user. This includes the below." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1094 - }, - "end": { - "line": 1095 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1096, - 1097 - ], - "inline": true, - "attributes": { - "content": "All texts in:", - "string": "All texts in:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1096 - }, - "end": { - "line": 1097 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1098, - 1099 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1098 - }, - "end": { - "line": 1099 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1099, - 1100, - 1104, - 1105 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1104 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1100, - 1101 - ], - "inline": true, - "attributes": { - "content": "Texts in non-editable Text View", - "string": "Texts in non-editable Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1101 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1101, - 1102 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in the date and time picker", - "string": "Month, day, and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1101 - }, - "end": { - "line": 1102 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1102, - 1103 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1102 - }, - "end": { - "line": 1103 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1103, - 1104 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar", - "string": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1103 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1100 - }, - "end": { - "line": 1104 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1099 - }, - "end": { - "line": 1100 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1106, - 1107 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1106 - }, - "end": { - "line": 1107 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1107, - 1108, - 1112, - 1113 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1112 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1108, - 1109 - ], - "inline": true, - "attributes": { - "content": "Checkbox and Radio Button titles", - "string": "Checkbox and Radio Button titles" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1109 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1109, - 1110 - ], - "inline": true, - "attributes": { - "content": "Month, day, and year labels in the date and time picker", - "string": "Month, day, and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1109 - }, - "end": { - "line": 1110 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1110, - 1111 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1110 - }, - "end": { - "line": 1111 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1111, - 1112 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Tabs", - "string": "Other controls, not considered as \"user input elements\", such as Tabs" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1111 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1108 - }, - "end": { - "line": 1112 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1107 - }, - "end": { - "line": 1108 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1114, - 1115 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1114 - }, - "end": { - "line": 1115 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1115, - 1116, - 1121, - 1122 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1121 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1116, - 1117 - ], - "inline": true, - "attributes": { - "content": "Checkbox and Radio Button titles (Android)", - "string": "Checkbox and Radio Button titles (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1117 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1117, - 1118 - ], - "inline": true, - "attributes": { - "content": "Texts in non-editable Text View (iOS)", - "string": "Texts in non-editable Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1117 - }, - "end": { - "line": 1118 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1118, - 1119 - ], - "inline": true, - "attributes": { - "content": "Month, day and year labels in the date and time picker", - "string": "Month, day and year labels in the date and time picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1118 - }, - "end": { - "line": 1119 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1119, - 1120 - ], - "inline": true, - "attributes": { - "content": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider", - "string": "Values updated in response to gesture interaction with input elements, such as the current value of the Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1119 - }, - "end": { - "line": 1120 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1120, - 1121 - ], - "inline": true, - "attributes": { - "content": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar (iOS), or Tabs (Android)", - "string": "Other controls, not considered as \"user input elements\", such as Labels, Tab Bar, and Navigation Bar (iOS), or Tabs (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1120 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1116 - }, - "end": { - "line": 1121 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1115 - }, - "end": { - "line": 1116 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": false, - "attributes": { - "level": 4 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1123, - 1124 - ], - "inline": true, - "attributes": { - "content": "Hint text", - "string": "Hint text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1123 - }, - "end": { - "line": 1124 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1124, - 1125 - ], - "inline": true, - "attributes": { - "content": "Hint text is static text in editable text elements or option selectors that is displayed when no value is given. This includes:", - "string": "Hint text is static text in editable text elements or option selectors that is displayed when no value is given. This includes:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1124 - }, - "end": { - "line": 1125 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1126, - 1127 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1126 - }, - "end": { - "line": 1127 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1127, - 1128, - 1130, - 1131 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1130 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1128, - 1129 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text Field", - "string": "Placeholders in Text Field" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1129 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1129, - 1130 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text View", - "string": "Placeholders in Text View" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1129 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1128 - }, - "end": { - "line": 1130 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1127 - }, - "end": { - "line": 1128 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1132, - 1133 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1132 - }, - "end": { - "line": 1133 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1133, - 1134, - 1136, - 1137 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1136 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1134, - 1135 - ], - "inline": true, - "attributes": { - "content": "Hints in Edit Text", - "string": "Hints in Edit Text" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1135 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1135, - 1136 - ], - "inline": true, - "attributes": { - "content": "Prompts in Drop Down lists", - "string": "Prompts in Drop Down lists" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1135 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1134 - }, - "end": { - "line": 1136 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1133 - }, - "end": { - "line": 1134 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1138, - 1139 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1138 - }, - "end": { - "line": 1139 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1139, - 1140, - 1143, - 1144 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1143 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1140, - 1141 - ], - "inline": true, - "attributes": { - "content": "Placeholders in Text Field (iOS), Text View (iOS)", - "string": "Placeholders in Text Field (iOS), Text View (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1141 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1141, - 1142 - ], - "inline": true, - "attributes": { - "content": "Hints in Edit Text (Android)", - "string": "Hints in Edit Text (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1141 - }, - "end": { - "line": 1142 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1142, - 1143 - ], - "inline": true, - "attributes": { - "content": "Prompts in Drop Down lists (Android)", - "string": "Prompts in Drop Down lists (Android)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1142 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1140 - }, - "end": { - "line": 1143 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1139 - }, - "end": { - "line": 1140 + "ast-str-cf77a210-8bdd-4954-95fb-dab7e2deba53": { + "string": "모바일 세션 리플레이 개인정보 보호 옵션" } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": false, - "attributes": { - "level": 3 }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1145, - 1146 - ], - "inline": true, - "attributes": { - "content": "Appearance masking", - "string": "Appearance masking" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1145 - }, - "end": { - "line": 1146 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1147, - 1148 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different appearance masking strategies, using the rules you set up in your configuration, to the below text types.", - "string": "The following chart shows how we apply different appearance masking strategies, using the rules you set up in your configuration, to the below text types." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1147 - }, - "end": { - "line": 1148 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1149, - 1150 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1150 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": { - "href": "#revealing-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes", - "string": "Revealing attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1151, - 1152 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1152 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": true, - "attributes": { - "href": "#other-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": true, - "attributes": { - "content": "Other attributes", - "string": "Other attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1152, - 1153 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1152 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1151 - }, - "end": { - "line": 1153 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1149 - }, - "end": { - "line": 1153 + "description": { + "ast-str-5c1d73d9-4393-4d1a-a7de-55de0b118877": { + "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": false, - "attributes": { - "level": 4 }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1154, - 1155 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes", - "string": "Revealing attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1154 - }, - "end": { - "line": 1155 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1155, - 1156 - ], - "inline": true, - "attributes": { - "content": "Revealing attributes are attributes that can reveal or suggest the value of input elements and can be used to infer a user's input or selection.", - "string": "Revealing attributes are attributes that can reveal or suggest the value of input elements and can be used to infer a user's input or selection." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1155 - }, - "end": { - "line": 1156 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1157, - 1158 - ], - "inline": true, - "attributes": { - "content": "This includes:", - "string": "This includes:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-7783691c-f46e-4c9b-b0ec-ee8d288c7337": { + "string": "Mobile Session Replay" } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1157 - }, - "end": { - "line": 1158 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1159, - 1160 - ], - "inline": false, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1159 - }, - "end": { - "line": 1160 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1160, - 1161, - 1169, - 1170 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1161, - 1162 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } + "tag": { + "ast-str-d5affb81-aca0-40fa-8c23-16f0d059f758": { + "string": "설명서" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1161 - }, - "end": { - "line": 1162 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1166 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1162, - 1163 - ], - "inline": true, - "attributes": { - "content": "Background of selected option in Segment", - "string": "Background of selected option in Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 - }, - "end": { - "line": 1163 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1163, - 1164 - ], - "inline": true, - "attributes": { - "content": "Circle surrounding the selected date in a Date Picker", - "string": "Circle surrounding the selected date in a Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1163 - }, - "end": { - "line": 1164 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1166 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1165 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1164, - 1165 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1165 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1165 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1164 - }, - "end": { - "line": 1166 - } + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-c868b0cd-784e-42f2-be58-7983427d84ea": { + "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1162 }, - "end": { - "line": 1166 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1166, - 1167 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } + "tag": { + "ast-str-2a10486f-3901-4eb7-b003-20cc7d23f1ee": { + "string": "설명서" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1166 - }, - "end": { - "line": 1167 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1169 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1167, - 1168 - ], - "inline": true, - "attributes": { - "content": "The color of a label rendering the selected date in Date Picker", - "string": "The color of a label rendering the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1168 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1168, - 1169 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1168 - }, - "end": { - "line": 1169 - } + "2": { + "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", + "text": { + "ast-str-cd9f333d-13ac-4283-bba5-680fc1b94093": { + "string": "모바일 세션 리플레이 설정 및 구성" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1167 - }, - "end": { - "line": 1169 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1160 - }, - "end": { - "line": 1161 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1171, - 1172 - ], - "inline": false, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1171 - }, - "end": { - "line": 1172 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1172, - 1173, - 1179, - 1180 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1173, - 1174 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } + "tag": { + "ast-str-1e9dc563-9f7e-4a3c-b6ff-84303e00e726": { + "string": "설명서" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1173 - }, - "end": { - "line": 1174 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1177 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1174, - 1175 - ], - "inline": true, - "attributes": { - "content": "Selection mark in Checkbox", - "string": "Selection mark in Checkbox" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 - }, - "end": { - "line": 1175 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1177 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1176 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1175, - 1176 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1176 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1176 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1175 - }, - "end": { - "line": 1177 - } + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-71010d1e-8251-4250-9cf0-5685318f478c": { + "string": "모바일 세션 리플레이 문제 해결" } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1174 }, - "end": { - "line": 1177 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1177, - 1178 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } + "tag": { + "ast-str-1fef1fd1-f553-4651-b0c9-b05ec8549243": { + "string": "설명서" } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1177 - }, - "end": { - "line": 1178 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": { - "ordered": false, - "marker": "-" }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1178, - 1179 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "item", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "list", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1178 - }, - "end": { - "line": 1179 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1172 - }, - "end": { - "line": 1173 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1181, - 1182 - ], - "inline": false, - "attributes": { - "content": "React Native", - "string": "React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1181 - }, - "end": { - "line": 1182 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1182, - 1183, - 1214, - 1215 - ], - "inline": false, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1183, - 1184 - ], - "inline": true, - "attributes": { - "content": "Shapes", - "string": "Shapes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1183 - }, - "end": { - "line": 1184 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1185, - 1186, - 1200, - 1201 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1186, - 1187 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1187 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1187, - 1188 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1187 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1186 - }, - "end": { - "line": 1188 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1189, - 1190 - ], - "inline": true, - "attributes": { - "content": "Background of selected option in Segment", - "string": "Background of selected option in Segment" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1190 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1190, - 1191 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1190 - }, - "end": { - "line": 1191 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1189 - }, - "end": { - "line": 1191 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1192, - 1193 - ], - "inline": true, - "attributes": { - "content": "Circle surrounding the selected date in Date Picker", - "string": "Circle surrounding the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1193 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1193, - 1194 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1193 - }, - "end": { - "line": 1194 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1192 - }, - "end": { - "line": 1194 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1195, - 1196 - ], - "inline": true, - "attributes": { - "content": "Selection mark in Checkbox", - "string": "Selection mark in Checkbox" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1196 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1196, - 1197 - ], - "inline": true, - "attributes": { - "content": "Android", - "string": "Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1196 - }, - "end": { - "line": 1197 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1195 - }, - "end": { - "line": 1197 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1198, - 1199 - ], - "inline": true, - "attributes": { - "content": "Thumb of a Slider", - "string": "Thumb of a Slider" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1199 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1199, - 1200 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1199 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1198 - }, - "end": { - "line": 1200 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1185 - }, - "end": { - "line": 1186 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": true, - "attributes": { - "marker": "**" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1202, - 1203 - ], - "inline": true, - "attributes": { - "content": "Text attributes", - "string": "Text attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "strong", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1202 - }, - "end": { - "line": 1203 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1204, - 1205, - 1213, - 1214 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1205, - 1206 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1206 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1206, - 1207 - ], - "inline": true, - "attributes": { - "content": "Platform(s)", - "string": "Platform(s)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1206 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1205 - }, - "end": { - "line": 1207 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1208, - 1209 - ], - "inline": true, - "attributes": { - "content": "The color of a label rendering the selected date in Date Picker", - "string": "The color of a label rendering the selected date in Date Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1209 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1209, - 1210 - ], - "inline": true, - "attributes": { - "content": "iOS", - "string": "iOS" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1209 - }, - "end": { - "line": 1210 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1208 - }, - "end": { - "line": 1210 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1211, - 1212 - ], - "inline": true, - "attributes": { - "content": "The position of the first and last option in Value Picker", - "string": "The position of the first and last option in Value Picker" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1212 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1212, - 1213 - ], - "inline": true, - "attributes": { - "content": "iOS, Android", - "string": "iOS, Android" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1212 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1211 - }, - "end": { - "line": 1213 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1204 - }, - "end": { - "line": 1205 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1182 - }, - "end": { - "line": 1183 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1215, - 1216 - ], - "inline": false, - "attributes": { - "content": "end React Native", - "string": "end React Native" - }, - "children": [], - "type": "comment", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1215 - }, - "end": { - "line": 1216 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": false, - "attributes": { - "level": 3 - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1217, - 1218 - ], - "inline": true, - "attributes": { - "content": "Touch interactions", - "string": "Touch interactions" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 - }, - "end": { - "line": 1218 - } + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-fcfb9502-d1c1-4ec1-9898-667568c705e8": { + "string": "Session Replay" } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 }, - "end": { - "line": 1218 - } - } - } - ], - "type": "heading", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1217 - }, - "end": { - "line": 1218 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1219, - 1220 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different touch interaction strategies, using the rules you set up in your configuration, to the below text types. While any interaction that happens on an on-screen keyboard is masked, interactions with other elements are not masked.", - "string": "The following chart shows how we apply different touch interaction strategies, using the rules you set up in your configuration, to the below text types. While any interaction that happens on an on-screen keyboard is masked, interactions with other elements are not masked." - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } + "tag": { + "ast-str-d4dec885-9a19-45eb-bf6d-2d227790d9cb": { + "string": "설명서" } } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } } } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1219 - }, - "end": { - "line": 1220 - } } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Allow all", - "string": "Allow all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Mask all", - "string": "Mask all" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1221, - 1222 - ], - "inline": true, - "attributes": { - "content": "Mask user input", - "string": "Mask user input" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 - }, - "end": { - "line": 1222 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": true, - "attributes": { - "href": "#other-attributes" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": true, - "attributes": { - "content": "Other attributes", - "string": "Other attributes" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1223, - 1224 - ], - "inline": false, - "attributes": {}, - "children": [], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1224 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": { - "href": "#on-screen-keyboard" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": { - "content": "On-screen keyboard", - "string": "On-screen keyboard" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "link", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1224, - 1225 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "tag", - "tag": "x", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1224 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1223 - }, - "end": { - "line": 1225 - } - } - } - ], - "type": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1221 + } + }, + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" }, - "end": { - "line": 1225 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": false, - "attributes": { - "level": 3, - "id": "image-masking-definition" - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1226, - 1227 - ], - "inline": true, - "attributes": { - "content": "Image masking ", - "string": "Image masking " - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1226 - }, - "end": { - "line": 1227 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1226 - }, - "end": { - "line": 1227 - } - } - } - ], - "type": "heading", - "annotations": [ - { - "type": "attribute", - "name": "id", - "value": "image-masking-definition" - } - ], - "slots": {}, - "location": { - "start": { - "line": 1226 + "children": { + "translationListData": {} }, - "end": { - "line": 1227 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1228, - 1229 - ], - "inline": true, - "attributes": { - "content": "The following chart shows how we apply different image masking strategies:", - "string": "The following chart shows how we apply different image masking strategies:" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" } } - } - ], - "type": "paragraph", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1228 - }, - "end": { - "line": 1229 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1230, - 1231, - 1248, - 1249 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1231, - 1232 - ], - "inline": true, - "attributes": { - "content": "Type", - "string": "Type" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1232 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1232, - 1233 - ], - "inline": true, - "attributes": { - "content": "Mask None", - "string": "Mask None" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1232 - }, - "end": { - "line": 1233 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1233, - 1237 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mask Large Only", - "string": "Mask Large Only" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "android" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mask Non Bundled Only", - "string": "Mask Non Bundled Only" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "ios" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": {}, - "children": [], - "type": "softbreak", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "primary": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1234, - 1237 - ], - "inline": true, - "attributes": { - "content": "Mark Large Only (Android) / Mask Non Bundled Only (iOS)", - "string": "Mark Large Only (Android) / Mask Non Bundled Only (iOS)" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "tag", - "tag": "if", - "annotations": [ - { - "type": "attribute", - "name": "primary", - "value": { - "$$mdtype": "Function", - "name": "equals", - "parameters": { - "0": { - "$$mdtype": "Variable", - "path": [ - "platform" - ] - }, - "1": "react_native" - } - } - } - ], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1234 - }, - "end": { - "line": 1237 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1233 - }, - "end": { - "line": 1237 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1237, - 1238 - ], - "inline": true, - "attributes": { - "content": "Mask All", - "string": "Mask All" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "th", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1237 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1231 - }, - "end": { - "line": 1238 - } - } - } - ], - "type": "thead", - "annotations": [], - "slots": {} - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1239, - 1240 - ], - "inline": true, - "attributes": { - "content": "Content Image", - "string": "Content Image" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1240 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1240, - 1241 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1240 - }, - "end": { - "line": 1241 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1241, - 1242 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1241 - }, - "end": { - "line": 1242 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1242, - 1243 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1242 - }, - "end": { - "line": 1243 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1239 - }, - "end": { - "line": 1243 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1244, - 1245 - ], - "inline": true, - "attributes": { - "content": "System Image", - "string": "System Image" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1245 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1245, - 1246 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1245 - }, - "end": { - "line": 1246 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1246, - 1247 - ], - "inline": true, - "attributes": { - "content": "Shown", - "string": "Shown" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1246 - }, - "end": { - "line": 1247 - } - } - }, - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": false, - "attributes": {}, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 1247, - 1248 - ], - "inline": true, - "attributes": { - "content": "Masked", - "string": "Masked" - }, - "children": [], - "type": "text", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "inline", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "td", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1247 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "tr", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1244 - }, - "end": { - "line": 1248 - } - } - } - ], - "type": "tbody", - "annotations": [], - "slots": {} - } - ], - "type": "table", - "annotations": [], - "slots": {} - } - ], - "type": "tag", - "tag": "table", - "annotations": [], - "slots": {}, - "location": { - "start": { - "line": 1230 }, - "end": { - "line": 1231 - } + "slots": {}, + "location": "line 25-26" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index c48c88efa1cf6..3775c404c5b84 100644 --- a/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -1,108 +1,132 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "모바일 세션 리플레이 설치 및 설정" + "ast-str-485e15cc-0738-4baa-98b9-db3f8d752021": { + "string": "모바일 세션 리플레이 설치 및 설정" + } }, "description": { - "string": "모바일 세션 리플레이을 설치하고 설정합니다." + "ast-str-2b6994a7-5d24-4d85-8aca-c842cf4ee2ee": { + "string": "모바일 세션 리플레이을 설치하고 설정합니다." + } }, - "further_reading": [ - { - "link": "/real_user_monitoring/session_replay/mobile", - "text": { - "string": "Mobile Session Replay" + "further_reading": { + "translationListData": { + "0": { + "link": "/real_user_monitoring/session_replay/mobile", + "text": { + "ast-str-9213fa71-a375-4bf7-9b6a-8015d1282f36": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-fa56b914-44fe-4871-940d-7603600b6274": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/app_performance", - "text": { - "string": "How Mobile Session Replay Impacts App Performance" + "1": { + "link": "/real_user_monitoring/session_replay/mobile/app_performance", + "text": { + "ast-str-379f506e-3d7a-4fea-b58f-490fec1cc61a": { + "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" + } + }, + "tag": { + "ast-str-7a8e5a41-0f5a-45ec-a218-471f1f769312": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/privacy_options", - "text": { - "string": "Mobile Session Replay Privacy Options" + "2": { + "link": "/real_user_monitoring/session_replay/mobile/privacy_options", + "text": { + "ast-str-a35c2181-a87a-4f27-a952-7e4a2196c747": { + "string": "모바일 세션 리플레이 개인정보 보호 옵션" + } + }, + "tag": { + "ast-str-166d237b-a671-42e7-b59d-8653457db279": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", - "text": { - "string": "Troubleshoot Mobile Session Replay" - }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", + "text": { + "ast-str-7202702e-8627-46a1-b4c1-9d7d0ce8f95a": { + "string": "모바일 세션 리플레이 문제 해결" + } + }, + "tag": { + "ast-str-fd107bd1-b4a4-4fdd-89e5-1240a31a9f04": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/real_user_monitoring/mobile_and_tv_monitoring/android/web_view_tracking", - "text": { - "string": "Web View Tracking" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-58e8f44c-bfb9-4d8b-b918-3b9216e1e522": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-45071591-2694-4e30-8e47-902cdeb8a28b": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" + "5": { + "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", + "text": { + "ast-str-22e2b6a5-6d8d-4a2a-a861-8142fdd70d05": { + "string": "웹 보기 추적" + } + }, + "tag": { + "ast-str-0cd14bce-40c2-46b6-93f1-d5a05bd92239": { + "string": "설명서" + } + } } } - ] + } } }, - "children": [ - { - "$$mdtype": "Node", - "errors": [], - "lines": [ - 28, - 29 - ], - "inline": false, - "attributes": { - "file": "rum/session_replay/setup_and_configuration.mdoc.md" - }, - "children": [], - "type": "tag", - "tag": "partial", - "annotations": [ - { - "type": "attribute", - "name": "file", - "value": "rum/session_replay/setup_and_configuration.mdoc.md" - } - ], - "slots": {}, - "location": { - "start": { - "line": 28 + "children": { + "translationListData": { + "0": { + "$$mdtype": "Node", + "inline": false, + "attributes": { + "file": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" }, - "end": { - "line": 29 - } + "children": { + "translationListData": {} + }, + "type": "tag", + "tag": "partial", + "annotations": { + "translationListData": { + "0": { + "type": "attribute", + "name": "file", + "value": "real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" + } + } + }, + "slots": {}, + "location": "line 28-29" } } - ], + }, "type": "document", - "annotations": [], + "annotations": { + "translationListData": {} + }, "slots": {} } \ No newline at end of file diff --git a/content/ko/security/application_security/code_security/setup/dotnet.md b/content/ko/security/application_security/code_security/setup/dotnet.md new file mode 100644 index 0000000000000..e838e68c35d20 --- /dev/null +++ b/content/ko/security/application_security/code_security/setup/dotnet.md @@ -0,0 +1,151 @@ +--- +aliases: +- /ko/security_platform/application_security/getting_started/dotnet +- /ko/security/application_security/getting_started/dotnet +code_lang: dotnet +code_lang_weight: 10 +further_reading: +- link: /security/application_security/code_security/#code-level-vulnerabilities-list + tag: 문서 + text: 지원되는 코드 수준 취약점 목록 +- link: https://www.datadoghq.com/blog/iast-datadog-code-security/ + tag: 블로그 + text: Datadog Code Security로 운영 환경에서 애플리케이션 보안 강화 +- link: https://www.datadoghq.com/blog/application-code-vulnerability-detection/ + tag: 블로그 + text: Datadog Code Security로 코드 취약점 파악 +- link: https://www.datadoghq.com/blog/code-security-owasp-benchmark/ + tag: 블로그 + text: Datadog Code Security는 IAST 접근 방식을 사용하여 OWASP 벤치마크에서 100% 정확도를 달성했습니다. +- link: /security/application_security/troubleshooting + tag: 문서 + text: 애플리케이션 보안 문제 해결 +title: .NET용 Code Security 활성화 +type: multi-code-lang +--- + +Docker, Kubernetes, Amazon ECS, AWS Fargate에서 실행되는 .NET 애플리케이션의 코드 수준 취약점을 탐지하고 애플리케이션 보안을 모니터링할 수 있습니다. + +서비스에서 Code Security를 활성화하려면 다음 단계를 따르세요. + +1. [Datadog Agent][3]를 최소 버전 7.41.1로 업데이트하세요. +2. Code Security를 활성화하는 데 필요한 최소 버전으로 Datadog Tracing Library를 업데이트하세요. 자세한 내용은 [Library Compatibility][4] 페이지를 참고하세요. +3. 애플리케이션 구성에 `DD_IAST_ENABLED=true` 환경 변수를 추가합니다. 예를 들어, Windows 자체 호스팅 환경에서는 애플리케이션 시작 스크립트의 일부로 다음 PowerShell 스니펫을 실행합니다. + + ```sh + $target=[System.EnvironmentVariableTarget]::Process + [System.Environment]::SetEnvironmentVariable("DD_IAST_ENABLED","true",$target) + ``` + +또는 애플리케이션이 실행되는 위치에 따라 다음 방법 중 하나를 사용합니다. + + {{< tabs >}} +{{% tab "Windows-Self-Hosted" %}} + +Windows 콘솔에서: + +```sh +rem Set environment variables +SET DD_IAST_ENABLED=true + +rem Start application +dotnet.exe example.dll +``` +{{% /tab %}} + +{{% tab "IIS" %}} + +레지스트리 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment`에서 필요한 환경 변수를 구성하고 IIS를 다시 시작하려면 다음 PowerShell 명령을 관리자 권한으로 실행하세요. + +```sh +$target=[System.EnvironmentVariableTarget]::Machine +[System.Environment]::SetEnvironmentVariable("DD_IAST_ENABLED","true",$target) +net stop was /y +net start w3svc +``` +{{% /tab %}} + + +{{% tab "Linux" %}} + +애플리케이션 구성에 다음을 추가합니다. + +``` +DD_IAST_ENABLED=true +``` +{{% /tab %}} + +{{% tab "Docker CLI" %}} + +docker run 명령에 다음 인수를 추가하여 APM의 구성 컨테이너를 업데이트하세요. + +``` +docker run -d --name app -e DD_IAST_ENABLED=true company/app:latest +``` +{{% /tab %}} + +{{% tab "Dockerfile" %}} + +컨테이너 도커파일에 다음 환경 변수 값을 추가합니다. + +``` +ENV DD_IAST_ENABLED=true +``` +{{% /tab %}} + +{{% tab "Kubernetes" %}} + +APM의 배포 구성 파일을 업데이트하고 ASM 환경 변수를 추가합니다. + +```yaml +spec: + template: + spec: + containers: + - name: + image: / + env: + - name: DD_IAST_ENABLED + value: "true" +``` +{{% /tab %}} + +{{% tab "AWS ECS" %}} + +환경 섹션에서 이를 추가하여 ECS 작업 정의 JSON 파일을 업데이트합니다: + +```yaml +"environment": [ + ..., + { + "name": "DD_IAST_ENABLED", + "value": "true" + } +] +``` +{{% /tab %}} + +{{% tab "AWS Fargate" %}} + +컨테이너 Dockerfile에 다음 줄을 추가합니다. + +``` +ENV DD_IAST_ENABLED=true +``` +{{% /tab %}} + {{< /tabs >}} + +Code Security가 실제로 어떻게 작동하는지 확인하려면 서비스를 탐색하고 [Vulnerability Explorer][4]에서 코드 수준 취약점을 찾으세요. + +{{< img src="/security/application_security/Code-Level-Vulnerability-Details-New.mp4" alt="코드 취약점을 보여주는 동영상" video="true" >}} + +추가 지원이 필요하시면 [Datadog 지원팀][5]에 문의하세요. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/DataDog/dd-trace-dotnet/releases/latest +[2]: /ko/security/application_security/code_security/setup/compatibility/dotnet/ +[3]: /ko/agent/versions/upgrade_between_agent_minor_versions/ +[4]: /ko/security/application_security/code_security/setup/compatibility/ \ No newline at end of file diff --git a/content/ko/security/application_security/code_security/setup/java.md b/content/ko/security/application_security/code_security/setup/java.md new file mode 100644 index 0000000000000..6cd09f8cd80f0 --- /dev/null +++ b/content/ko/security/application_security/code_security/setup/java.md @@ -0,0 +1,117 @@ +--- +aliases: +- /ko/security_platform/application_security/getting_started/java +- /ko/security/application_security/getting_started/java +code_lang: java +code_lang_weight: 0 +further_reading: +- link: /security/application_security/code_security/#code-level-vulnerabilities-list + tag: 문서 + text: 지원되는 코드 수준 취약점 목록 +- link: https://www.datadoghq.com/blog/iast-datadog-code-security/ + tag: 블로그 + text: Datadog Code Security로 운영 환경에서 애플리케이션 보안 강화 +- link: https://www.datadoghq.com/blog/application-code-vulnerability-detection/ + tag: 블로그 + text: Datadog Code Security로 코드 취약점 파악 +- link: https://www.datadoghq.com/blog/code-security-owasp-benchmark/ + tag: 블로그 + text: Datadog Code Security는 IAST 접근 방식을 사용하여 OWASP 벤치마크에서 100% 정확도를 달성했습니다. +- link: /security/application_security/troubleshooting + tag: 문서 + text: 애플리케이션 보안 문제 해결 +title: Java용 Code Security 활성화 +type: multi-code-lang +--- + +Docker, Kubernetes, Amazon ECS, AWS Fargate에서 실행되는 Java 애플리케이션의 코드 수준 취약점을 탐지하고 애플리케이션 보안을 모니터링할 수 있습니다. + +서비스에서 Code Security를 활성화하려면 다음 단계를 따르세요. + +1. [Datadog Agent][6]를 최소 버전 7.41.1로 업데이트하세요. +2. Code Security을 활성화하는 데 필요한 최소 버전으로 Datadog Tracing Library를 업데이트하세요. 자세한 내용은 [Library Compatibility][3] 페이지를 참고하세요. +3. 애플리케이션 구성에 `DD_IAST_ENABLED=true` 환경 변수를 추가합니다. + + 명령줄에서: + + ```shell + java -javaagent:/path/to/dd-java-agent.jar -Ddd.iast.enabled=true -Ddd.service= -Ddd.env= -jar path/to/app.jar + ``` + + 또는 애플리케이션이 실행되는 위치에 따라 다음 방법 중 하나를 선택합니다. + + **참고**: 읽기 전용 파일 시스템은 지원되지 않습니다. 애플리케이션은 쓰기 가능한 `/tmp` 디렉터리에 액세스할 수 있어야 합니다. + + + {{< tabs >}} +{{% tab "Docker CLI" %}} + +{{< tabs >}} + + +```shell +docker run [...] -e DD_IAST_ENABLED=true [...] +``` + +{{% /tab %}} +{{% tab "Dockerfile" %}} + +컨테이너 도커파일에 다음 환경 변수 값을 추가합니다. + +```Dockerfile +DD_IAST_ENABLED=true +``` + +{{% /tab %}} +{{% tab "Kubernetes" %}} + +APM용 배포 구성 파일을 업데이트하고 IAST 환경 변수를 추가합니다. + +```yaml +spec: + template: + spec: + containers: + - name: + image: / + env: + - name: DD_IAST_ENABLED + value: "true" +``` + +{{% /tab %}} +{{% tab "Amazon ECS" %}} + +환경 섹션에서 이를 추가하여 ECS 작업 정의 JSON 파일을 업데이트합니다: + +```json +"environment": [ + ..., + { + "name": "DD_IAST_ENABLED", + "value": "true" + } +] +``` + +{{% /tab %}} + + {{< /tabs >}} + +4. 서비스를 다시 시작하세요. +5. Code Security가 실제로 어떻게 작동하는지 확인하려면 서비스를 살펴보세요. [Vulnerability Explorer][4]에 코드 수준 취약점이 나타납니다. + +{{< img src="/security/application_security/Code-Level-Vulnerability-Details-New.mp4" alt="코드 취약점을 보여주는 동영상" video="true" >}} + +추가 지원이 필요하시면 [Datadog 지원팀][5]에 문의하세요. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/DataDog/dd-trace-java/releases +[2]: /ko/security/application_security/code_security/setup/compatibility/java/ +[3]: /ko/security/application_security/code_security/setup/compatibility/java/ +[4]: https://app.datadoghq.com/security/appsec/vm +[5]: /ko/help +[6]: /ko/agent/versions/upgrade_between_agent_minor_versions/ \ No newline at end of file diff --git a/content/ko/security/application_security/code_security/setup/nodejs.md b/content/ko/security/application_security/code_security/setup/nodejs.md new file mode 100644 index 0000000000000..c9546ee055fde --- /dev/null +++ b/content/ko/security/application_security/code_security/setup/nodejs.md @@ -0,0 +1,114 @@ +--- +aliases: +- /ko/security_platform/application_security/getting_started/nodejs +- /ko/security/application_security/getting_started/nodejs +code_lang: nodejs +code_lang_weight: 50 +further_reading: +- link: /security/application_security/code_security/#code-level-vulnerabilities-list + tag: 문서 + text: 지원되는 코드 수준 취약점 목록 +- link: https://www.datadoghq.com/blog/iast-datadog-code-security/ + tag: 블로그 + text: Datadog Code Security로 운영 환경에서 애플리케이션 보안 강화 +- link: https://www.datadoghq.com/blog/application-code-vulnerability-detection/ + tag: 블로그 + text: Datadog Code Security로 코드 취약점 파악 +- link: https://www.datadoghq.com/blog/code-security-owasp-benchmark/ + tag: 블로그 + text: Datadog Code Security는 IAST 접근 방식을 사용하여 OWASP 벤치마크에서 100% 정확도를 달성했습니다. +- link: /security/application_security/troubleshooting + tag: 문서 + text: 애플리케이션 보안 문제 해결 +title: Node.js용 Code Security 활성화 +type: multi-code-lang +--- + +Docker, Kubernetes, Amazon ECS, AWS Fargate에서 실행되는 Node.js 애플리케이션의 코드 수준 취약점을 탐지하고 애플리케이션 보안을 모니터링할 수 있습니다. + +서비스에서 Code Security를 활성화하려면 다음 단계를 따르세요. + +1. [Datadog Agent][4]를 최소 버전 7.41.1로 업데이트하세요. +2. Code Security을 활성화하는 데 필요한 최소 버전으로 Datadog Tracing Library를 업데이트하세요. 자세한 내용은 [Library Compatibility][3] 페이지를 참고하세요. +3. 애플리케이션 구성에 `DD_IAST_ENABLED=true` 환경 변수를 추가합니다. + + 명령줄에서 Node.js에 `--require` 옵션을 사용하여 APM 라이브러리를 초기화하는 경우: + + ```shell + node --require dd-trace/init app.js + ``` + 그런 다음 환경 변수를 사용하여 ASM을 활성화합니다. + ```shell + DD_IAST_ENABLED=true node app.js + ``` + 이 작업을 실행하는 방법은 서비스가 실행되는 위치에 따라 다릅니다. + {{< tabs >}} +{{% tab "Docker CLI" %}} + +{{< tabs >}} + +```shell +docker run [...] -e DD_IAST_ENABLED=true [...] +``` + +{{% /tab %}} +{{% tab "Dockerfile" %}} + +컨테이너 도커파일에 다음 환경 변수 값을 추가합니다. + +```Dockerfile +ENV DD_IAST_ENABLED=true +``` + +{{% /tab %}} +{{% tab "Kubernetes" %}} + +APM의 yaml 파일 컨테이너를 업데이트하고 AppSec 환경 변수를 추가합니다. + +```yaml +spec: + template: + spec: + containers: + - name: + image: / + env: + - name: DD_IAST_ENABLED + value: "true" +``` + +{{% /tab %}} +{{% tab "Amazon ECS" %}} + +환경 섹션에서 이를 추가하여 ECS 작업 정의 JSON 파일을 업데이트합니다: + +```json +"environment": [ + ..., + { + "name": "DD_IAST_ENABLED", + "value": "true" + } +] +``` + +{{% /tab %}} +{{< /tabs >}} + +4. 서비스를 다시 시작하세요. +5. Code Security이 실제로 어떻게 작동하는지 확인하려면 서비스를 살펴보세요. [Vulnerability Explorer][5]에 코드 수준 취약점이 나타납니다. + +{{< img src="/security/application_security/Code-Level-Vulnerability-Details-New.mp4" alt="코드 취약점을 보여주는 동영상" video="true" >}} + +추가 지원이 필요할 경우 [Datadog 지원팀][6]에 문의하세요. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/DataDog/dd-trace-js/blob/master/MIGRATING.md +[2]: /ko/security/application_security/code_security/setup/nodejs/ +[3]: /ko/security/application_security/code_security/setup/compatibility/ +[4]: /ko/agent/versions/upgrade_between_agent_minor_versions/ +[5]: https://app.datadoghq.com/security/appsec/vm/code +[6]: /ko/help \ No newline at end of file diff --git a/content/ko/tracing/trace_collection/custom_instrumentation/ruby/otel.md b/content/ko/tracing/trace_collection/custom_instrumentation/ruby/otel.md new file mode 100644 index 0000000000000..3a6c85fad3868 --- /dev/null +++ b/content/ko/tracing/trace_collection/custom_instrumentation/ruby/otel.md @@ -0,0 +1,136 @@ +--- +aliases: +- /ko/tracing/trace_collection/otel_instrumentation/ruby/ +- /ko/tracing/trace_collection/custom_instrumentation/otel_instrumentation/ruby +code_lang: otel +code_lang_weight: 1 +description: OpenTelemetry API로 Ruby 애플리케이션을 계측하여 Datadog에 트레이스를 전송하세요. +further_reading: +- link: tracing/glossary/ + tag: 설명서 + text: 서비스, 리소스, 트레이스 탐색 +- link: /opentelemetry/guide/otel_api_tracing_interoperability + tag: 설명서 + text: OpenTelemetry API 상호 운용성 및 Datadog의 계측된 트레이스 +title: OpenTelemetry API를 사용한 Ruby 커스텀 계측 +type: multi-code-lang +--- + +{{% otel-custom-instrumentation %}} + + +## 필수 요건 및 제한 사항 + +- Datadog Ruby 추적 라이브러리 `dd-trace-rb` 버전 1.9.0 이상. +- Gem 버전은 1.1.0 이상을 지원합니다. + +Datadog 라이브러리에 구현된 OpenTelemetry 기능은 다음과 같습니다. + +| 기능 | 지원 사항 | +|---------------------------------------|--------------------------------------| +| [OpenTelemetry Context 전파][1] | [Datadog 및 W3C Trace Context 헤더 형식][9]은 기본적으로 활성화되어 있습니다. | +| [Span Processors][2] | 미지원 | +| [Span Exporters][3] | 미지원 | +| `OpenTelemetry.logger` | `OpenTelemetry.logger`는 `Datadog.logger`와 동일한 개체로 설정됩니다. [사용자 정의 로깅][10]을 통해 구성하세요. | +| 트레이스/스팬 [ID Generators][4] | 추적 라이브러리가 ID를 생성하며, **[128비트 트레이스 ID][12]**를 지원합니다. | + + +## Datadog 추적 라이브러리를 사용하도록 OpenTelemetry 구성 + +1. [OpenTelemetry Ruby 수동 계측 설명서][5]에 따라 원하는 수동 OpenTelemetry 계측을 Ruby 코드에 추가합니다. **중요!** 해당 지침에서 코드가 OpenTelemetry SDK를 호출하도록 되어 있는 경우, 대신 Datadog 추적 라이브러리를 호출해야 합니다. + +1. Gemfile에 `datadog` gem을 추가합니다. + + ```ruby + source 'https://rubygems.org' + gem 'datadog' # For dd-trace-rb v1.x, use the `ddtrace` gem. + ``` + +1. `bundle install`을 실행하여 gem을 설치합니다. +1. OpenTelemetry 구성 파일에 다음 줄을 추가합니다. + + ```ruby + require 'opentelemetry/sdk' + require 'datadog/opentelemetry' + ``` + +1. 애플리케이션에 구성 블록을 추가하여 통합을 활성화하고 트레이서 설정을 변경할 수 있습니다. 여기에서 추가 구성이 없으면 OpenTelemetry로 계측한 코드만 추적됩니다. + + ```ruby + Datadog.configure do |c| + ... + end + ``` + + 이 블록을 사용하면 다음을 할 수 있습니다. + + - [Datadog 구성 설정 추가][6] + - [Datadog 계측 활성화 또는 재구성][7] + + OpenTelemetry 구성은 [`OpenTelemetry::SDK.configure` 블록][15]을 사용하여 개별적으로 변경할 수 있습니다. + +Datadog은 이러한 OpenTelemetry 스팬을 다른 Datadog APM 스팬과 결합하여 애플리케이션의 단일 트레이스를 제공합니다. 또한 [통합 계측][7] 및 [OpenTelemetry Automatic 계측][8]도 지원합니다. + +## 스팬 이벤트 추가하기 + +
스팬 이벤트를 추가하려면 SDK 버전 2.3.0 이상이 필요합니다.
+ +`add_event` API를 사용하여 스팬 이벤트를 추가할 수 있습니다. 이 메서드에는 `name` 파라미터가 필수이며, 선택적으로 `attributes` 또는 `timestamp` 파라미터를 허용합니다. 이 메서드는 지정된 속성을 사용하여 새 스팬 이벤트를 생성하고 해당 스팬과 연결합니다. + +- **이름** [_필수_]: 이벤트의 이름을 나타내는 문자열입니다. +- **속성** [_옵션_]: 다음 속성을 가진 0개 이상의 키-값 쌍입니다: + - 키는 비어 있지 않은 문자열이어야 합니다. + - 값은 둘 중 하나가 될 수 있습니다. + - 기본 유형: 문자열, 부울 또는 숫자 + - 원시 타입 값의 균일한 배열(예: 문자열 배열)입니다. + - 중첩 배열 및 서로 다른 데이터 유형의 요소를 포함하는 배열은 허용되지 않습니다. +- **Timestamp** [_선택 사항_]: 이벤트 발생 시간을 나타내는 UNIX 타임스탬프. `seconds(Float)` 형식 사용. + +다음 예는 스팬에 이벤트를 추가하는 다양한 방법을 보여줍니다. + +```ruby +span.add_event('Event With No Attributes') +span.add_event( + 'Event With All Attributes', + attributes: { 'int_val' => 1, 'string_val' => 'two', 'int_array' => [3, 4], 'string_array' => ['5', '6'], 'bool_array' => [false, true]} +) +``` + +자세한 내용은 [OpenTelemetry][13] 사양을 참고하세요. + +### 레코딩 예외 사항 + +예외를 기록하려면 `record_exception` API를 사용하세요. 이 메서드에는 `exception` 파라미터가 필수이며, 선택적으로 UNIX `timestamp` 파라미터를 허용합니다. 표준화된 예외 속성을 포함하는 새 스팬 이벤트를 생성하고 해당 스팬과 연결합니다. + +다음 예에서는 예외를 기록하는 다양한 방법을 보여줍니다. + +```ruby +span.record_exception( + StandardError.new('Error Message') +) +span.record_exception( + StandardError.new('Error Message'), + attributes: { 'status' => 'failed' } +) +``` + +자세한 내용은 [OpenTelemetry][14] 사양을 참조하세요. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://opentelemetry.io/docs/instrumentation/ruby/manual/#context-propagation +[2]: https://opentelemetry.io/docs/reference/specification/trace/sdk/#span-processor +[3]: https://opentelemetry.io/docs/reference/specification/trace/sdk/#span-exporter +[4]: https://opentelemetry.io/docs/reference/specification/trace/sdk/#id-generators +[5]: https://opentelemetry.io/docs/instrumentation/ruby/manual/ +[6]: /ko/tracing/trace_collection/dd_libraries/ruby/#additional-configuration +[7]: /ko/tracing/trace_collection/dd_libraries/ruby#integration-instrumentation +[8]: https://opentelemetry.io/docs/languages/ruby/libraries/ +[9]: /ko/tracing/trace_collection/trace_context_propagation/ +[10]: /ko/tracing/trace_collection/dd_libraries/ruby/#custom-logging +[12]: /ko/opentelemetry/guide/otel_api_tracing_interoperability/ +[13]: https://opentelemetry.io/docs/specs/otel/trace/api/#add-events +[14]: https://opentelemetry.io/docs/specs/otel/trace/api/#record-exception +[15]: https://opentelemetry.io/docs/languages/ruby/getting-started/#instrumentation \ No newline at end of file diff --git a/content/ko/tracing/trace_explorer/span_tags_attributes.md b/content/ko/tracing/trace_explorer/span_tags_attributes.md new file mode 100644 index 0000000000000..909ab1b160aa6 --- /dev/null +++ b/content/ko/tracing/trace_explorer/span_tags_attributes.md @@ -0,0 +1,148 @@ +--- +aliases: +- /ko/tracing/trace_explorer/facets +description: 스팬 패싯 및 패싯 패널 +further_reading: +- link: tracing/trace_explorer/ + tag: 설명서 + text: Trace Explorer란? +title: 스팬 태그, 속성, 패싯 +--- + +## 개요 + +스팬 메타데이터는 **속성**과 **태그**로 구성됩니다. + +* **[스팬 속성](#span-attributes)**은 애플리케이션에서 자동 또는 수동 계측을 통해 수집된 스팬의 콘텐츠입니다. + +* **[스팬 태그](#span-tags)**는 스팬과 관련된 컨텍스트를 보강해주는 태그입니다 (예: 서비스가 실행 중인 인프라를 설명하는 호스트나 컨테이너 태그). + +[Trace Explorer][6]에서 모든 스팬 태그와 속성을 통해 스팬을 쿼리할 수 있습니다. + +### 예약된 속성 + +예약된 속성은 모든 스팬에 존재하는 스팬 속성의 하위 집합입니다. 이러한 속성은 `@` 문자를 앞에 붙이지 않고도 쿼리할 수 있습니다. 예약된 속성의 전체 목록은 `env`, `service`, `operation_name`, `resource_name`, `status`, `ingestion_reason`, `trace_id`입니다. 용어의 전체 정의는 [APM 용어 및 개념][10]을 참고하세요. + +### 스팬(span) 속성 + +스팬 속성은 스팬의 콘텐츠입니다. 이러한 속성은 자동 계측을 사용하여 추적 라이브러리에서 기본적으로 수집되거나, 사용자 지정 계측을 사용하여 수동으로 수집되거나, 소스 속성([피어 속성][11] 참고, 일부 소스 속성에서 재매핑됨)을 기반으로 Datadog 백엔드에서 재매핑됩니다. 특정 스팬 속성을 검색하려면 속성 키의 시작 부분에 `@` 문자를 추가해야 합니다. + +예를 들어, postgres 데이터베이스에서 `users` 테이블 호출을 나타내는 스팬을 찾으려면 `@peer.db.name:users @peer.db.system:postgres` 쿼리를 사용합니다. + +### 스팬(span) 태그 + +스팬 태그는 스팬을 둘러싼 컨텍스트이며, 스팬이 생성된 서비스가 실행되고 있는 호스트 또는 컨테이너를 기반으로 보강된 데이터입니다. 스팬 태그를 쿼리하기 위해 `@` 문자를 추가할 필요가 없습니다. + +## 패싯 + +스팬 태그와 속성 위에 **패싯**을 만들어 속성을 올바른 유형(예: 문자열 또는 정수)에 매핑하고 이러한 속성이 패싯 목록에 표시되도록 할 수 있습니다. + +**참고**: [스팬 검색][7], [스팬에서 메트릭 생성][8], [보존 필터를 사용하여 스팬을 인덱싱][9]하는 작업에서는 [패싯 생성](#creating-facets)이 **필요하지 않습니다**. + +{{< img src="tracing/trace_explorer/facets/facet_panel.png" alt="Trace Explorer의 패싯 패널" style="width:90%;">}} + +### 정성적 패싯 + +다음의 경우 정성적 패싯을 사용하세요. + +- 값에 대한 **인사이트**를 얻으세요. 예를 들어, 느린 요청이 감지되면 조사 범위를 특정 지역으로 좁히기 위해 `datacenter` 스팬 태그에 패싯을 생성합니다. +- **고유한 값을 계산합니다**. 예를 들어 특정 리소스를 로드하는 동안 오류가 발생하는 개별 사용자 수를 확인하려면 `usr.email`에 패싯을 생성합니다. +- 특정 값을 기준으로 스팬을 자주 **필터링**하세요. 예를 들어 환경 태그에 패싯을 생성하여 문제 해결 범위를 개발, 스테이징 또는 프로덕션 환경까지 확장할 수 있습니다.
+ +**참고:** 태그 필터링에는 패싯이 필요하지 않지만 조사 중에 자주 사용하는 태그에 대한 패싯을 정의하면 해결 시간을 줄이는 데 도움이 될 수 있습니다. + +### 정량적 패싯(측정값) + +다음의 경우 측정값을 사용하세요. +- 여러 추적의 **집계** 값입니다. 예를 들어 Cassandra의 행 수에 대한 측정값을 만들고 요청된 파일 크기 합계당 p95 또는 최상위 리퍼러를 확인합니다. +- 예를 들어 $1000가 넘는 장바구니 값에 대해 **가장 높은 지연 시간 서비스**를 수치적으로 계산합니다. +- **연속 값을 필터링**합니다(예: 비디오 스트림의 각 페이로드 청크 크기(바이트)). + +#### 측정값 유형 + +측정값은 동등한 기능에 대해 (큰) 정수 또는 이중 값을 갖습니다. + +#### 단위 + +측정값은 쿼리 시간 및 표시 시간에서 자릿수를 처리하기 위한 단위(초 단위의 **시간** 또는 바이트 단위의 **크기**)를 지원합니다. 단위는 필드가 아닌 측정값 자체의 속성입니다. + +예를 들어 나노초 단위의 `duration` 측정값을 고려해보세요. `service:A`의 스팬이 `1000 milliseconds`를 의미하는 `duration:1000`를 가지고 있다고 가정해 봅시다. 또한, `service:B`의 스팬이 `500 microseconds`를 의미하는 `duration:500`을 가지고 있습니다. 두 서비스 모두에서 일관되게 그리고 한번에 스팬 태그를 쿼리하기 위해 `duration:>20ms`를 사용해야 합니다. 쿼리에 대한 자세한 정보는 [쿼리 구문][1]을 참조하세요. + +## 패싯 패널 + +검색창은 데이터를 필터링하고 그룹화하기 위한 가장 포괄적인 상호 작용 세트를 제공합니다. 그러나 대부분의 경우 패싯 패널은 데이터를 탐색하는 간단한 방법입니다. 현재 쿼리 범위에 대한 콘텐츠 요약을 보려면 패싯을 엽니다. + +검색 창과 URL은 패싯 패널의 선택 사항을 자동으로 반영합니다. + +- **패싯(정성적)**에는 고유 값의 상위 목록과 각 값과 일치하는 스팬 수가 제공됩니다. +- **측정값(정량적)**에는 최소값과 최대값을 나타내는 슬라이더가 함께 제공됩니다. 슬라이더를 사용하거나 숫자 값을 입력하여 검색 쿼리 범위를 다른 범위로 지정하세요. + +### 패싯 숨기기 + +조직에는 트레이스를 사용하는 다양한 팀의 사용 사례를 처리해야 하는 많은 패싯이 있습니다. 특정 상황에서는 이러한 패싯 중 일부만 유용할 가능성이 높습니다. + +문제 해결과 가장 관련 있는 패싯만 유지하려면 필요하지 않은 **패싯을 숨깁니다**. + +{{< img src="tracing/trace_explorer/facets/hide_facets.png" alt="패싯 숨김t" style="width:30%;">}} + +필요한 경우 숨겨진 패싯이 패싯 검색에 계속 표시됩니다([필터 패싯](#filtering-facets) 섹션 참조). 패싯 검색에서 숨겨진 패싯을 숨김 해제합니다. + +{{< img src="logs/explorer/facet/unhide_facet.png" alt="패싯 숨김 해제" style="width:30%;">}} + +#### 숨겨진 패싯 및 팀 구성원 + +패싯을 숨기는 것은 문제 해결 상황에 따라 다르며 저장된 보기를 업데이트하지 않는 한 팀원의 보기에 영향을 주지 않습니다. 숨겨진 패싯은 저장된 보기에 저장된 컨텍스트의 일부입니다. + +### 패싯 그룹화 + +패싯은 패싯 목록에서 의미 있는 테마로 그룹화됩니다. 패싯에 대한 그룹을 할당하거나 재할당하면 패싯 목록에만 영향을 미치며 검색이나 분석에는 영향을 미치지 않습니다. + +{{< img src="tracing/trace_explorer/facets/group_facets.png" alt="그룹 패싯" style="width:30%;">}} + +### 패싯 필터링 + +패싯 패널의 검색 패싯 상자를 사용하면 전체 패싯 목록의 범위를 지정하고 상호 작용해야 하는 패싯으로 더 빠르게 이동할 수 있습니다. 검색 패싯은 패싯 표시 이름과 필드 이름을 사용하여 결과 범위를 지정합니다. + +{{< img src="tracing/trace_explorer/facets/filter_facets.png" alt="검색 패싯" style="width:30%;">}} + +## 패싯 생성 + +스팬 속성/태그에 패싯을 생성하는 것은 스팬 검색을 위한 필수 단계가 아닙니다. 패싯은 특정 스팬 속성에 의미 있는 설명을 추가하려는 경우 또는 스팬 목록의 왼쪽에 있는 패싯 목록에 스팬 속성 값을 표시하려는 경우에 유용합니다. + +### 트레이스 사이드 패널에서 패싯 생성 + +패싯을 생성하는 가장 쉬운 방법은 대부분의 패싯 세부 정보(예: 필드 경로 및 기본 유형)가 미리 채워지도록 트레이스 사이드 패널에서 패싯을 추가하는 것입니다. [Trace Explorer][1]에서 패싯을 생성할 필드가 포함된 관심 스팬으로 이동합니다. 목록에서 스팬을 선택하여 이 스팬에 대한 트레이스 사이드 패널을 엽니다. 원하는 필드(스팬 태그 또는 인프라스트럭처 태그)를 클릭하고 거기에서 패싯을 생성합니다. + +- 필드에 숫자 값이 있는 경우 패싯 또는 측정값을 생성할 수 있습니다. +- 필드에 문자열 값이 있는 경우 패싯 생성만 사용할 수 있습니다. + +{{< img src="tracing/trace_explorer/facets/create_facet.png" alt="태그에서 패싯 추가" style="width:50%;">}} + +### 패싯 목록에서 패싯 생성 + +원하는 필드가 있는 스팬을 찾을 수 없는 경우 **+ Add**를 클릭하여 패싯 패널에서 직접 패싯을 생성합니다. + +이 패싯의 기본 필드(키) 이름을 정의하세요. + +- 인프라스트럭처 태그에는 태그 키 이름을 사용합니다. +- `@` 접두사가 있는 스팬 속성의 속성 경로를 사용합니다. + +현재 보기 스팬의 콘텐츠를 기반으로 한 자동 완성은 적절한 필드 이름을 정의하는 데 도움이 됩니다. 그러나 여기서는 거의 모든 값을 사용할 수 있습니다. 특히 아직 Datadog에서 수신한 일치하는 스팬이 없는 경우에는 더욱 그렇습니다. + +{{< img src="tracing/trace_explorer/facets/create_facet_from_scratch.png" alt="처음부터 패싯 추가" style="width:30%;">}} + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/tracing/trace_explorer/query_syntax/ +[2]: /ko/tracing/trace_explorer/group/ +[3]: /ko/monitors/types/apm/?tab=analytics +[4]: /ko/dashboards/widgets/ +[5]: /ko/notebooks/ +[6]: /ko/tracing/trace_explorer/ +[7]: /ko/tracing/trace_explorer/search +[8]: /ko/tracing/trace_pipeline/generate_metrics +[9]: /ko/tracing/trace_pipeline/trace_retention/#retention-filters +[10]: /ko/tracing/glossary +[11]: /ko/tracing/services/inferred_services#peer-tags \ No newline at end of file From 51fe8726586f8ed571500062ce8d5f0d74112805 Mon Sep 17 00:00:00 2001 From: "webops-guacbot[bot]" <214537265+webops-guacbot[bot]@users.noreply.github.com> Date: Sun, 2 Nov 2025 15:03:29 +0000 Subject: [PATCH 5/6] Translated file updates --- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 24 +- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 28 +- content/fr/account_management/scim/okta.md | 142 ++ content/fr/account_management/teams/_index.md | 178 +++ content/fr/account_management/teams/manage.md | 102 ++ content/fr/actions/actions_catalog/_index.md | 21 + content/fr/actions/app_builder/_index.md | 98 ++ content/fr/actions/workflows/_index.md | 86 ++ content/fr/actions/workflows/trigger.md | 300 +++++ .../fr/agent/configuration/dual-shipping.md | 532 ++++++++ content/fr/agent/guide/agent-5-proxy.md | 1147 +++++++++++++++++ .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 24 +- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 28 +- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 24 +- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 28 +- .../software_composition_analysis/_index.md | 110 ++ ...recommended-for-naming-metrics-and-tags.md | 28 +- .../cisco_secure_email_threat_defense.md | 118 ++ content/ko/integrations/google_gemini.md | 186 +++ content/ko/integrations/jamf_protect.md | 236 ++++ content/ko/integrations/superwise_license.md | 114 ++ content/ko/logs/log_collection/unity.md | 117 ++ .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 24 +- .../guide/monitor-kiosk-sessions-using-rum.md | 116 ++ .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 28 +- .../setup/compatibility/dotnet.md | 123 ++ 34 files changed, 3943 insertions(+), 211 deletions(-) create mode 100644 content/fr/account_management/scim/okta.md create mode 100644 content/fr/account_management/teams/_index.md create mode 100644 content/fr/account_management/teams/manage.md create mode 100644 content/fr/actions/actions_catalog/_index.md create mode 100644 content/fr/actions/app_builder/_index.md create mode 100644 content/fr/actions/workflows/_index.md create mode 100644 content/fr/actions/workflows/trigger.md create mode 100644 content/fr/agent/configuration/dual-shipping.md create mode 100644 content/fr/agent/guide/agent-5-proxy.md create mode 100644 content/ko/code_analysis/software_composition_analysis/_index.md create mode 100644 content/ko/integrations/cisco_secure_email_threat_defense.md create mode 100644 content/ko/integrations/google_gemini.md create mode 100644 content/ko/integrations/jamf_protect.md create mode 100644 content/ko/integrations/superwise_license.md create mode 100644 content/ko/logs/log_collection/unity.md create mode 100644 content/ko/real_user_monitoring/guide/monitor-kiosk-sessions-using-rum.md create mode 100644 content/ko/security/application_security/code_security/setup/compatibility/dotnet.md diff --git a/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json index 251c575ed33a0..0fc4f5c577490 100644 --- a/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-ed6465a0-5303-45e8-814f-26b9621a3692": { + "ast-str-d99877d8-715e-4487-94e7-253da6a3fcc3": { "string": "Opciones de privacidad de Mobile Session Replay" } }, "description": { - "ast-str-96c0458c-0687-4a95-9d66-6fa097d06464": { + "ast-str-4c42a407-da36-4de3-b98c-b310d7ca15a5": { "string": "Configura opciones de privacidad para Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-39f6993e-dc05-4968-992e-893036c5506b": { + "ast-str-3eb652ce-96b4-40b2-8255-2d04b7840875": { "string": "Session Replay para móviles" } }, "tag": { - "ast-str-af631d8c-8fc9-4e98-bee2-6afd3dbdf311": { + "ast-str-715f18f2-b07d-4c37-8060-9fddf27ea39a": { "string": "Documentación" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-1c25456b-e5f6-4548-af66-3fae7a05f423": { + "ast-str-3dcad688-c0ec-4ce2-a4d4-6aa755c86ddb": { "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" } }, "tag": { - "ast-str-a29b4ca3-075b-414c-8a68-0c33e0cfae6b": { + "ast-str-1781edad-2125-43bb-8a68-c8e611add905": { "string": "Documentación" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-7d913357-3de0-47f5-995d-20902115e88a": { + "ast-str-0bccdca7-2ab8-4ce2-8dc0-b149e35c98bc": { "string": "Configuración de Mobile Session Replay" } }, "tag": { - "ast-str-fd654bd7-9157-4811-bf1b-322a453db21e": { + "ast-str-1cb3706b-3e56-4a7b-ba44-13366a28e5e8": { "string": "Documentación" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-6aae3788-1d07-41c1-943e-ce84e0eea71a": { + "ast-str-d0f38e09-f640-4129-ad56-4597b2eeca29": { "string": "Solución de problemas de Mobile Session Replay" } }, "tag": { - "ast-str-e66e4cab-d520-4636-b58e-572a077d362a": { + "ast-str-d6aa91e3-beaf-4709-bc4c-fa48a8677e1f": { "string": "Documentación" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-efabc85f-a81a-409d-9ef3-4e3c49b0e2c8": { + "ast-str-dd5212b7-7eee-4399-8463-267cc0189b1f": { "string": "Session Replay" } }, "tag": { - "ast-str-6d52c7ad-1cdd-4740-b4ef-e0103e5209e0": { + "ast-str-d3836ed8-23dd-4e60-9e62-d7edd17541fb": { "string": "Documentación" } } diff --git a/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 15b3465c9d87b..7bb20bebc5e90 100644 --- a/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-5b85bfe0-cdd5-4616-80a4-f7b16289b9c8": { + "ast-str-209f705e-d4b1-4890-ad80-6be194d8fc99": { "string": "Instalación y configuración de Session Replay para móviles" } }, "description": { - "ast-str-9ab98d47-4bc8-4cff-aab2-1a2c829a477c": { + "ast-str-eacb40a8-910e-4fa5-a34f-1c13ea5b02db": { "string": "Instala y configura Session Replay para móviles." } }, @@ -18,12 +18,12 @@ "0": { "link": "/product_analytics/session_replay/mobile", "text": { - "ast-str-6b7dd627-cfc2-449b-930b-c7c9202bb7f2": { + "ast-str-223ce0a2-060a-47f2-ad20-b1b96b4918f0": { "string": "Session Replay para móviles" } }, "tag": { - "ast-str-ad1f968c-ba7d-47fb-a595-fd656cf1a665": { + "ast-str-e23f3edb-4334-447e-b65a-b533378c2bfc": { "string": "Documentación" } } @@ -31,12 +31,12 @@ "1": { "link": "/product_analytics/session_replay/mobile/app_performance", "text": { - "ast-str-5d4a3252-2fe5-4bd4-a75c-043fcd234a1b": { + "ast-str-dae9ced1-e49b-4d03-b084-8e0e2756874e": { "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" } }, "tag": { - "ast-str-257753f4-c29e-4eb9-8c21-0b283b791d22": { + "ast-str-240a6e5a-af1c-432f-b5d0-61100ba56b35": { "string": "Documentación" } } @@ -44,12 +44,12 @@ "2": { "link": "/product_analytics/session_replay/mobile/privacy_options", "text": { - "ast-str-7a98b6b8-a1cb-461b-985f-a6b645661066": { + "ast-str-d089e855-4841-473c-882d-1d9eaa0155d6": { "string": "Opciones de privacidad de Mobile Session Replay" } }, "tag": { - "ast-str-33326998-f6db-4a64-ad65-8e45a2955242": { + "ast-str-881372cb-a4b9-44d6-9b14-86ead284f858": { "string": "Documentación" } } @@ -57,12 +57,12 @@ "3": { "link": "/product_analytics/session_replay/mobile/troubleshooting", "text": { - "ast-str-304a8f3a-51bb-426b-8ca2-bc7ae13a7cd9": { + "ast-str-ab371002-b6f3-4bbe-86db-f54d98a69f2a": { "string": "Solución de problemas de Mobile Session Replay" } }, "tag": { - "ast-str-6c5f9454-e16e-4312-8512-305ad68f7b0e": { + "ast-str-ac779f5a-d0dc-4ab9-8774-7dfc3c1d4d95": { "string": "Documentación" } } @@ -70,12 +70,12 @@ "4": { "link": "/product_analytics/session_replay", "text": { - "ast-str-cc897da2-4f3a-435e-984d-b0002dda36cd": { + "ast-str-8a383d5b-df7f-42f1-a10b-f640f3cf7b40": { "string": "Session Replay" } }, "tag": { - "ast-str-af12f79d-bd7f-4f9e-8ea7-72971640339c": { + "ast-str-7c9ac9d0-5aa2-4864-b747-232082345ea5": { "string": "Documentación" } } diff --git a/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 440a33db27020..1b5e9cdc75d4b 100644 --- a/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-cf77a210-8bdd-4954-95fb-dab7e2deba53": { + "ast-str-1d6765ec-05f2-4061-b6eb-3491b6f860a1": { "string": "Opciones de privacidad de Mobile Session Replay" } }, "description": { - "ast-str-5c1d73d9-4393-4d1a-a7de-55de0b118877": { + "ast-str-dca2dfce-1c6c-482e-bb94-2965f89d14fd": { "string": "Configura opciones de privacidad para Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-7783691c-f46e-4c9b-b0ec-ee8d288c7337": { + "ast-str-8475c94d-f84d-4674-82fc-decb65d009e7": { "string": "Session Replay para móviles" } }, "tag": { - "ast-str-d5affb81-aca0-40fa-8c23-16f0d059f758": { + "ast-str-c5645fe4-d05f-444f-a89d-adc8e96cb73b": { "string": "Documentación" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-c868b0cd-784e-42f2-be58-7983427d84ea": { + "ast-str-2362c5d7-1131-40ad-a000-fc28bb1491c8": { "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" } }, "tag": { - "ast-str-2a10486f-3901-4eb7-b003-20cc7d23f1ee": { + "ast-str-bd194498-7095-4067-baee-d72654e0a6db": { "string": "Documentación" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-cd9f333d-13ac-4283-bba5-680fc1b94093": { + "ast-str-c951c01a-4c8a-4288-ad38-6807d8898605": { "string": "Configuración de Mobile Session Replay" } }, "tag": { - "ast-str-1e9dc563-9f7e-4a3c-b6ff-84303e00e726": { + "ast-str-96c999f2-7bb9-4295-a6cd-066ab4e9530b": { "string": "Documentación" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-71010d1e-8251-4250-9cf0-5685318f478c": { + "ast-str-d44ba4c0-7fd6-40eb-bd41-46219b2a7e4c": { "string": "Solución de problemas de Mobile Session Replay" } }, "tag": { - "ast-str-1fef1fd1-f553-4651-b0c9-b05ec8549243": { + "ast-str-9fe48841-97e2-4863-be00-00e71cbcc11b": { "string": "Documentación" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-fcfb9502-d1c1-4ec1-9898-667568c705e8": { + "ast-str-a5a66c70-f3e2-48a4-bcdd-aab5a769c6b1": { "string": "Session Replay" } }, "tag": { - "ast-str-d4dec885-9a19-45eb-bf6d-2d227790d9cb": { + "ast-str-064c6aa0-3fef-4cfd-a91d-54bad56aab0e": { "string": "Documentación" } } diff --git a/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 07d0647354609..41139d605260c 100644 --- a/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-485e15cc-0738-4baa-98b9-db3f8d752021": { + "ast-str-7c124611-ecb3-4fa6-abe2-4a8158daaf75": { "string": "Instalación y configuración de Session Replay para móviles" } }, "description": { - "ast-str-2b6994a7-5d24-4d85-8aca-c842cf4ee2ee": { + "ast-str-6e790010-0410-4bc8-8272-4a12fbf32d04": { "string": "Instala y configura Session Replay para móviles." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-9213fa71-a375-4bf7-9b6a-8015d1282f36": { + "ast-str-d16ef26e-381b-4eb8-b1de-70f969cd4eec": { "string": "Session Replay para móviles" } }, "tag": { - "ast-str-fa56b914-44fe-4871-940d-7603600b6274": { + "ast-str-e12e54d4-5679-464d-8395-97238d1ae11b": { "string": "Documentación" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-379f506e-3d7a-4fea-b58f-490fec1cc61a": { + "ast-str-59880ecd-7a93-4b65-be2c-3e312586a956": { "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" } }, "tag": { - "ast-str-7a8e5a41-0f5a-45ec-a218-471f1f769312": { + "ast-str-f5de440d-94a8-4c72-b204-4ebad6ab4d53": { "string": "Documentación" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/privacy_options", "text": { - "ast-str-a35c2181-a87a-4f27-a952-7e4a2196c747": { + "ast-str-22570d2d-e2c7-495b-894c-d503eaa47a6c": { "string": "Opciones de privacidad de Mobile Session Replay" } }, "tag": { - "ast-str-166d237b-a671-42e7-b59d-8653457db279": { + "ast-str-71164fa2-9910-4173-8da0-c119c38df091": { "string": "Documentación" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-7202702e-8627-46a1-b4c1-9d7d0ce8f95a": { + "ast-str-a966523b-1775-4b19-ab4c-5b1b1eb779bb": { "string": "Solución de problemas de Mobile Session Replay" } }, "tag": { - "ast-str-fd107bd1-b4a4-4fdd-89e5-1240a31a9f04": { + "ast-str-2a4d546c-ef45-420a-bda3-eddb6f8b9e30": { "string": "Documentación" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-58e8f44c-bfb9-4d8b-b918-3b9216e1e522": { + "ast-str-aaea3198-36d2-441f-92f5-bb4c0f304fe2": { "string": "Session Replay" } }, "tag": { - "ast-str-45071591-2694-4e30-8e47-902cdeb8a28b": { + "ast-str-ab6c252b-84b1-4b1e-aa85-73679522086b": { "string": "Documentación" } } @@ -83,12 +83,12 @@ "5": { "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", "text": { - "ast-str-22e2b6a5-6d8d-4a2a-a861-8142fdd70d05": { + "ast-str-e7e182ec-27f5-4009-b3c2-4042ac233d91": { "string": "Web View Tracking" } }, "tag": { - "ast-str-0cd14bce-40c2-46b6-93f1-d5a05bd92239": { + "ast-str-d968d7e5-2c3c-426d-8969-9ffa2437cf80": { "string": "Documentación" } } diff --git a/content/fr/account_management/scim/okta.md b/content/fr/account_management/scim/okta.md new file mode 100644 index 0000000000000..1c03d34ed4481 --- /dev/null +++ b/content/fr/account_management/scim/okta.md @@ -0,0 +1,142 @@ +--- +algolia: + tags: + - scim + - identity provider + - IdP + - Aide +description: Synchronisez les utilisateurs et les équipes depuis Okta vers Datadog + à l'aide de SCIM pour le provisionnement automatique des utilisateurs, la gestion + des équipes et le contrôle des accès. +further_reading: +- link: /account_management/scim/ + tag: Documentation + text: Provisionnement des utilisateurs avec SCIM +- link: account_management/saml/mapping/#map-saml-attributes-to-datadog-roles + tag: Documentation + text: Mappage d'attributs de groupe +title: Configurer SCIM avec Okta +--- + +
+SCIM est disponible avec les offres Infrastructure Pro et Infrastructure Enterprise. +
+ +Consultez les instructions suivantes pour synchroniser les utilisateurs Datadog avec Okta à l'aide de SCIM. + +Pour en savoir plus sur les fonctionnalités et les limitations de cette fonctionnalité, consultez la page [SCIM][1]. + +## Prérequis + +La fonctionnalité SCIM dans Datadog est une option avancée disponible avec les formules Infrastructure Pro et Infrastructure Enterprise. + +Cette documentation part du principe que votre organisation gère les identités utilisateur à l'aide d'un fournisseur d'identité. + +Datadog recommande fortement d'utiliser une clé d'application de compte de service lors de la configuration de SCIM afin d'éviter toute interruption d'accès. Pour plus de détails, consultez la section [Utiliser un compte de service avec SCIM][2]. + +Lorsque SAML et SCIM sont utilisés conjointement, Datadog recommande fortement de désactiver le provisionnement SAML juste-à-temps (JIT) afin d'éviter les incohérences d'accès. Gérez le provisionnement des utilisateurs uniquement via SCIM. + +## Sélectionnez l'application Datadog dans la galerie d'applications Okta. + +1. Dans votre portail Okta, allez dans **Applications**. +2. Cliquez sur **Browse App Catalog** +3. Saisissez « Datadog » dans la zone de recherche +4. Sélectionnez l'application Datadog +5. Cliquez sur **Add Integration** + +**Remarque :** si Datadog est déjà configuré avec Okta, sélectionnez votre application Datadog existante. + +## Configurer le provisionnement automatique des utilisateurs + +1. Dans l'écran de gestion de l'application, sélectionnez **Provisioning** dans le panneau de gauche. +2. Cliquez sur **Configure API integration**. +3. Sélectionnez **Enable API integration**. +4. Complétez la section **Credentials** comme suit : + - **URL de base** : `https://{{< region-param key="dd_full_site" >}}/api/v2/scim` +**Remarque :** utilisez le sous-domaine approprié pour votre site. Pour trouver votre URL, consultez la page [Sites Datadog][3]. + - **Jeton d'API** : utilisez une clé d’application Datadog valide. Vous pouvez créer une clé d’application depuis [la page des paramètres de votre organisation][4]. Pour garantir un accès continu à vos données, utilisez une clé d’application de [compte de service][5]. + +{{< img src="/account_management/scim/okta-admin-credentials.png" alt="Écran de configuration des identifiants administrateur Okta">}} + +5. Cliquez sur **test API Credentials**, et attendez le message confirmant que les informations d'identification ont été vérifiées. +6. Cliquez sur **Save**. La section des paramètres s'affiche. +7. En regard de **Provisioning to App**, sélectionnez **Edit** pour activer les fonctionnalités : + - **Create Users** + - **Update User Attributes** + - **Deactivate Users** +8. Sous **Datadog Attribute Mappings**, identifiez les mappages préconfigurés des attributs Okta vers les attributs Datadog. Réalisez de nouveaux mappages si nécessaire, mais associez les valeurs Okta au même ensemble de valeurs Datadog. + +## Configurer le provisionnement automatique des équipes + +Avec les [équipes gérées][6], vous contrôlez l'approvisionnement principal d'une équipe Datadog (son nom, son identifiant et sa composition) via le fournisseur d'identité. Le processus de configuration varie selon que l'équipe existe déjà ou non dans Datadog. + +**Remarque :** les utilisateurs doivent exister dans Datadog avant de pouvoir être ajoutés à une équipe. Vous devez donc affecter les utilisateurs à l'application Datadog dans Okta afin qu'ils soient créés dans Datadog via SCIM. Affectez l'application Datadog à votre groupe Okta pour que tous les membres de l'équipe soient créés automatiquement dans Datadog. + +### Créer une nouvelle équipe dans Datadog + +1. Dans votre application Datadog dans Okta, naviguez jusqu'à l'onglet **Push Groups**. +{{< img src="/account_management/scim/okta/pushed-groups.png" alt="Interface de configuration des groupes poussés dans Okta">}} +1. Cliquez sur le bouton **Push Groups**. L'interface des groupes poussés s'ouvre. +1. Sélectionnez le groupe Okta que vous voulez pousser vers Datadog. +1. Dans la colonne **Match result & push action**, assurez-vous que **Create group** est sélectionné. +1. Cliquez sur **Save**. + +Pour vérifier que l'opération a bien été effectuée, accédez à la [liste des équipes][7] dans Datadog. Recherchez une équipe Datadog correspondant au groupe Okta que vous avez configuré. Vérifiez que l'équipe existe bien dans Datadog et qu'elle est gérée de manière externe. L'apparition de l'équipe dans Datadog peut prendre une à deux minutes. + +{{< img src="/account_management/scim/okta/managed-externally.png" alt="Liste des équipes Datadog affichant une équipe appelée Identity team gérée en externe" >}} + +### Synchroniser une équipe Datadog existante avec un groupe Okta + +Vous pouvez mapper une équipe Datadog existante à un groupe Okta. L'établissement d'un lien entre le groupe Okta et l'équipe Datadog permet à l'équipe Datadog d'être gérée par Okta à l'avenir. + +**Remarque :** pour synchroniser une équipe Datadog existante avec un groupe Okta, les deux noms doivent correspondre exactement. + +1. Dans votre application Datadog dans Okta, naviguez jusqu'à l'onglet **Push Groups**. +1. Cliquez sur le bouton **Push Groups**. L'interface des groupes poussés s'ouvre. +1. Sélectionnez le groupe Okta que vous souhaitez synchroniser avec une équipe Datadog. +1. Dans la colonne **Match result & push action**, assurez-vous que **Create group** est sélectionné. +1. Cliquez sur **Save**. + +**Remarque :** lorsque vous sélectionnez **Create group**, Okta affiche le message **No match found**. Vous pouvez ignorer ce message et poursuivre la création du groupe pour établir la synchronisation. + +### Supprimer la connexion entre un groupe Okta et une équipe Datadog + +Vous disposez de deux options pour déconnecter un groupe Okta d'une équipe Datadog, chacune ayant un impact différent sur la composition de l'équipe Datadog. + +#### Garder les membres de l'équipe dans Datadog + +Cette procédure vous permet de gérer les membres de l'équipe dans Datadog au lieu d'Okta. Les membres de l'équipe restent inchangés. + +1. Dans votre application Datadog dans Okta, naviguez jusqu'à l'onglet **Push Groups**. +1. Cliquez sur le bouton **Push Groups**. L'interface des groupes poussés s'ouvre. +1. Sélectionnez le groupe Okta que vous souhaitez dissocier de son équipe Datadog. +1. Dans la colonne **Match result & push action**, sélectionnez **Unlink Pushed Group**. Une boîte de dialogue apparaît. +1. Sélectionnez **Leave the group in the target app**. +1. Cliquez sur **Unlink**. +1. Cliquez sur **Save**. + +#### Retirer des membres de l'équipe de Datadog + +Cette procédure vous permet de gérer les membres de l'équipe dans Datadog au lieu d'Okta et de supprimer les membres de l'équipe de Datadog. + +1. Dans votre application Datadog dans Okta, naviguez jusqu'à l'onglet **Push Groups**. +1. Cliquez sur le bouton **Push Groups**. L'interface des groupes poussés s'ouvre. +1. Sélectionnez le groupe Okta que vous souhaitez dissocier de son équipe Datadog. +1. Dans la colonne **Match result & push action**, sélectionnez **Unlink Pushed Group**. Une boîte de dialogue apparaît. +1. Sélectionnez **Delete the group in the target app (recommended)**. +1. Cliquez sur **Unlink**. +1. Cliquez sur **Save**. + +**Remarque ** contrairement à ce que laisse penser le nom de l'option, sélectionner **Delete the group in the target app** _ne supprime pas_ l'équipe dans Datadog. Cela supprime uniquement tous les membres de l'équipe et rompt le lien entre le groupe dans Okta et l'équipe Datadog. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/account_management/scim/ +[2]: /fr/account_management/scim/#using-a-service-account-with-scim +[3]: /fr/getting_started/site +[4]: https://app.datadoghq.com/organization-settings/application-keys +[5]: /fr/account_management/org_settings/service_accounts +[6]: /fr/account_management/teams/manage/#manage-teams-through-an-identity-provider +[7]: https://app.datadoghq.com/teams \ No newline at end of file diff --git a/content/fr/account_management/teams/_index.md b/content/fr/account_management/teams/_index.md new file mode 100644 index 0000000000000..4177f3a83c3af --- /dev/null +++ b/content/fr/account_management/teams/_index.md @@ -0,0 +1,178 @@ +--- +description: Organisez les ressources d'équipe, filtrez les expériences Datadog et + gérez les membres de l'équipe à l'aide d'identifiants d'équipe, de notifications + et d'associations de ressources. +title: Équipes +--- + +## Présentation +Les équipes Datadog permettent à des groupes d'utilisateurs d'organiser leurs ressources d'équipe dans Datadog et de filtrer automatiquement leur expérience sur l'ensemble de Datadog afin de prioriser ces ressources. + +Utilisez les équipes pour associer des ressources telles que des dashboards, services, monitors et incidents à un groupe d'utilisateurs. Vous pouvez également ajouter des liens propres à l'équipe vers des canaux Slack, des tableaux Jira, des référentiels GitHub et plus encore. + +L'appartenance à une équipe est flexible. Les utilisateurs peuvent rejoindre des équipes, être ajoutés par d'autres membres ou par un administrateur. Un utilisateur peut appartenir à plusieurs équipes. + +{{< callout url="https://www.datadoghq.com/product-preview/github-integration-for-teams/" header="Profitez de l'aperçu !" >}} + L'intégration GitHub pour les équipes est disponible en préversion. +{{< /callout >}} + +## Configuration + +### Navigation + +Accédez à la page de répertoire des équipes depuis les [Paramètres de l'organisation][1] ou en accédant à [**Service Management > Teams**][2]. La [page de répertoire des équipes][1] répertorie toutes les équipes de votre organisation. + +### Créer une équipe + +1. Sur la [page de l'annuaire des équipes][1], cliquer sur **New Team** en haut à droite. +1. Choisissez un **nom d'équipe**. +1. Le **Handle** est renseigné automatiquement en fonction du nom de votre équipe. +1. Utilisez le menu déroulant pour sélectionner les membres de l'équipe et les chefs d'équipe. +1. Fournissez une **Description** facultative. +1. Cliquez sur **Create**. + +**Remarques** : + +- Les caractères autorisés pour les noms d'équipe sont `a-z`, `A-Z`, `0-9`, et `._-:/`. Remplacez les espaces par des traits de soulignement. +- Les caractères autorisés pour les poignées d'équipe sont `a-z`, `0-9`, et `._-:/`. Le dernier caractère ne peut être un trait de soulignement. + +### Modifier l'équipe + +1. Sur la [page de l'annuaire des équipes][1], cliquez sur l'équipe que vous souhaitez modifier. La [page de détails de l'équipe][3] s'affiche. +1. Cliquez sur l'icône **Settings** en haut de l'écran. Une fenêtre contextuelle s'affiche. +1. Sélectionnez l'élément que vous souhaitez modifier. +1. Effectuez vos modifications, puis cliquez sur **Save**. + +### Choisir la source de provisionnement + +Choisissez parmi trois options pour déterminer comment les administrateurs et les gestionnaires d'équipe peuvent mettre à jour les membres de l'équipe : + +UI and API +: Mettre à jour l'appartenance uniquement via les actions de l'interface utilisateur et les appels à l'API + +SAML +: Utiliser un modèle *SAML strict* où les données du fournisseur d'identité déterminent l'appartenance à l'équipe + +All sources +: utiliser SAML comme point de départ et autoriser les remplacements via l'interface utilisateur et l'API + +1. Sur la [page de répertoire des équipes][1], cliquez sur **Teams Settings**. +1. Sélectionnez l'une des options sous **Team Provisioning Sources**. + +Si certaines de vos équipes comptent déjà des membres, le choix de l'option SAML stricte remplace vos paramètres actuels et supprime les membres de ces équipes. L'option « All Sources » permet de conserver les appartenances existantes. Pour gérer les équipes et les membres à l'aide d'attributs SAML, consultez la section [Mapper des attributs SAML à des équipes][4]. + +## Handle d'équipe + +Un handle d'équipe relie les équipes aux ressources Datadog. Les handles d'équipe apparaissent dans les barres de recherche et les facettes au format `team:` ou `teams:`. + +Pour trouver un handle d'équipe : +1. Cliquez sur le nom de l'équipe dans la page du répertoire des équipes. La page de détails de l'équipe s'affiche. +1. Le handle de l'équipe apparaît à droite du nom, en haut de la page. + +Pour associer une ressource à une équipe donnée, une équipe Datadog doit posséder le handle d'équipe correspondant. Lorsque vous cliquez sur une ressource associée à une équipe, une petite fenêtre comportant le handle de l'équipe et des informations complémentaires apparaît. Les équipes permettent de bénéficier de fonctionnalités supplémentaires, comme le filtre d'équipe décrit ci-dessous. + +Les handles d'équipe qui ne sont pas associés à une équipe définie dans Datadog se comportent de manière similaire aux tags. Convertir les handles d'équipe non définis en équipes définies pour tirer parti des fonctionnalités des équipes. + +### Associer des ressources à des handles d'équipe + +Datadog prend en charge l'association des ressources suivantes avec des handles d'équipe : + +- [Dashboards][5] +- [Incidents][6] +- [Monitors][7] +- [Resource Catalog][8] +- [Software Catalog][9] +- [Service Level Objectives][10] +- Tests Synthetic Monitoring, variables globales, emplacements privés + +### Envoyer des notifications à un canal de communication spécifique + +Ajoutez un canal de notification à votre équipe pour acheminer les alertes vers des canaux de communication comme Slack ou Microsoft Teams. Les alertes de monitor adressées à `@team-` sont redirigées vers le canal sélectionné. + +1. Sur la [page de répertoire des équipes][1], cliquez sur l'équipe que vous souhaitez modifier. +1. Cliquez sur l'icône **Settings** en haut de l'écran. Une fenêtre contextuelle s'affiche. +1. Sélectionnez **Notifications**. +1. Ajoutez un canal, puis cliquez sur **Save**. + +## Filtre d'équipe + +Le filtre d'équipe personnalise votre expérience sur Datadog en vous montrant le contenu associé à votre Teams. La liste **My Teams** comprend les équipes dont vous êtes membre et celles que vous avez sélectionnées comme favorites. + +{{< img src="/account_management/teams/team-filter.png" alt="Page de la liste des monitors avec un encadré rouge autour du filtre d'équipe. Deux équipes de My Teams sont sélectionnées." >}} + +Lorsque vous activez le filtre d'équipe, vous voyez uniquement les ressources associées à vos équipes ou aux services détenus par vos équipes. L'état du filtre d'équipe est global et persistant, ce qui permet à Datadog d'appliquer votre contexte d'équipe pendant la navigation entre les différents produits. + +Le filtre d'équipe fonctionne en ajoutant des termes de recherche basés sur l'équipe à la requête de recherche. Lorsque vous activez le filtre d'équipe, vous pouvez voir les termes de recherche associés dans la barre de recherche. + +### Ajouter une équipe aux favoris + +Vous pouvez vous intéresser aux ressources d'une équipe sans en être membre. Ajouter une équipe à vos équipes favorites permet d'obtenir une vue filtrée de ses ressources sans avoir à rejoindre l'équipe. + +Vos équipes favorites apparaissent aux côtés des équipes auxquelles vous appartenez en haut de la page du répertoire des équipes et dans le filtre d'équipe. + +#### Ajouter ou supprimer une équipe des favoris + +Vous pouvez ajouter ou retirer une équipe de vos favoris depuis la page du répertoire des équipes ou depuis le filtre d'équipe. + +Depuis la [page du répertoire des équipes][1] : +1. Cliquez sur l'équipe que vous souhaitez ajouter aux favoris. La [page de détails de l'équipe][3] s'affiche. +1. Cliquez sur **Add Favorite** ou **Remove Favorite** en haut à droite. + +Vous pouvez également procéder depuis la page du répertoire des équipes : +1. Placez le pointeur sur l'équipe à ajouter ou à retirer. Des icônes contextuelles s'affichent à droite du nom de l'équipe. +1. Cliquez sur l'étoile (**Add to Favorites** ou **Remove from Favorites**). + +À partir du filtre de l'équipe : +1. Si le filtre est réduit, cliquez sur **My Teams** pour le développer. +1. Cliquez sur **Add Favorites**. Un champ de recherche et une liste d'équipes apparaissent. +1. Pour réduire la liste des équipes, commencez à saisir le nom d'une équipe dans le champ de recherche. +1. Cliquez sur l'étoile à côté de l'équipe souhaitée pour l'ajouter ou la supprimer de vos favoris. + +### Produits pris en charge + +Le tableau suivant décrit les produits dans lesquels vous pouvez utiliser le filtre d'équipe : + +| Page de la liste des produits | Filtre de base | +|-------------------------|----------------------------------------------------------------------------------| +| [Dashboards][11] | Handle d'équipe | +| [Resource Catalog][8] | Handle d'équipe | +| [Software Catalog][12] | Handle d'équipe | +| [Incidents][13] | Handle d'équipe | +| [Monitors][14] | Handle d'équipe | +| [APM Error Tracking][15] | Service détenu par des équipes (selon le [Software Catalog][12]) | +| [Logs Error Tracking][15] | Service détenu par des équipes (selon le [Software Catalog][12]) | +| [Service Level Objectives][17] | Handle d'équipe | +| [Data Streams Monitoring][18] | Handle d'équipe | +| [Tests Synthetic Monitoring][19] | Handle d'équipe | +| [Notebooks][20] | Handle d'équipe | + + +## Autorisations + +Tout utilisateur disposant du rôle avec l'autorisation Teams Manage peut créer des équipes, renommer des équipes, supprimer des équipes et modifier les identifiants d'équipe. Les utilisateurs disposant de `user_access_manage` peuvent ajouter, retirer et promouvoir des membres et des responsables d'équipe. + +## Gérer des équipes + +Pour personnaliser votre équipe, consultez la rubrique relative à la [gestion des équipes][3]. + + +[1]: https://app.datadoghq.com/organization-settings/teams +[2]: https://app.datadoghq.com/teams +[3]: /fr/account_management/teams/manage/ +[4]: /fr/account_management/saml/mapping/#map-saml-attributes-to-teams +[5]: /fr/dashboards/#dashboard-details +[6]: /fr/service_management/incident_management/ +[7]: /fr/monitors/configuration/?tab=thresholdalert#add-metadata +[8]: /fr/infrastructure/resource_catalog/ +[9]: /fr/tracing/software_catalog/adding_metadata/#add-metadata-from-the-datadog-ui +[10]: /fr/service_management/service_level_objectives/#slo-tags +[11]: https://app.datadoghq.com/dashboard/lists +[12]: https://app.datadoghq.com/services +[13]: https://app.datadoghq.com/incidents +[14]: https://app.datadoghq.com/monitors/manage +[15]: https://app.datadoghq.com/apm/error-tracking +[16]: https://app.datadoghq.com/logs/error-tracking +[17]: https://app.datadoghq.com/slo/manage +[18]: https://app.datadoghq.com/data-streams +[19]: https://app.datadoghq.com/synthetics +[20]: https://app.datadoghq.com/notebook/list/ \ No newline at end of file diff --git a/content/fr/account_management/teams/manage.md b/content/fr/account_management/teams/manage.md new file mode 100644 index 0000000000000..fed50182fe69d --- /dev/null +++ b/content/fr/account_management/teams/manage.md @@ -0,0 +1,102 @@ +--- +description: Personnalisez les pages d'équipe, gérez les membres, configurez des sous-équipes + et définissez l'accès aux équipes via les fournisseurs d'identité ou le mappage + d'attributs SAML. +title: Gestion d'équipe +--- + +## Détail de l'équipe + +Chaque équipe dispose d'une page de détails qui affiche des informations sur l'équipe, ses membres et les ressources qui lui sont associées. Accédez à une page de détails en cliquant sur une équipe depuis le [répertoire des équipes][1]. + +La page de l'équipe affiche les ressources suivantes associées à votre équipe : +- Dashboards +- Notebooks +- Monitors +- Services +- Liens +- Incidents en cours +- Endpoints de l'API + +Vous pouvez modifier les ressources affichées et leur ordre sur la page. + +Personnalisez l'apparence de votre équipe en choisissant un avatar emoji et une bannière. L'avatar emoji s'affiche à côté du nom de l'équipe dans les listes à travers Datadog. + +Consultez les instructions suivantes pour personnaliser votre équipe. + +### Personnaliser la mise en page + +Pour modifier la présentation de la page de l'équipe, vous devez avoir l'autorisation `user_access_manage` ou `teams_manage`. Vous pouvez également être membre ou responsable d'une équipe configurée pour permettre aux membres et aux responsables de modifier les détails de l'équipe. + +1. Cliquez sur **Page Layout**. La boîte de dialogue de disposition de la page s'affiche. +1. Pour réorganiser les ressources, cliquez sur les icônes de la poignée de déplacement et faites-les glisser. +1. Pour masquer une ressource, passez la souris sur un élément et cliquez sur l'icône de l'œil (**Hide content**). + +Les ressources masquées s'affichent en bas de la boîte de dialogue de mise en page. Pour révéler une ressource, passez la souris dessus et cliquez sur l'icône **Masquer le contenu**. + +### Customize settings + +Pour modifier les détails de l'équipe, vous devez avoir l'autorisation `user_access_manage` ou `teams_manage`. Vous pouvez également être membre ou responsable d'une équipe configurée pour permettre aux membres et aux responsables de modifier les détails de l'équipe. + +Cliquez sur **Settings**. La boîte de dialogue des réglages apparaît. + +Dans la boîte de dialogue des paramètres, utilisez le menu pour personnaliser les paramètres suivants de l'équipe : +- Membres +- Liens +- Nom et description +- Avatar et bannière +- Disposition de la page +- Autorisations +- Section Notifications +- Connexion GitHub + +## Composition de l'équipe + +Pour différencier les membres de votre équipe, désignez-les comme chefs d'équipe. Dans la liste des membres, un badge « CHEF D'EQUIPE » apparaît à côté du nom des chefs d'équipe. + +Sous les paramètres de l'équipe, indiquez quels utilisateurs peuvent modifier la composition de l'équipe. Les options suivantes sont disponibles : +- Seuls les utilisateurs disposant de l'autorisation `user_access_manage` +- Chefs d'équipe +- Chefs et membres d'équipe +- Toute personne de l'organisation + +Les utilisateurs disposant de l'autorisation `user_access_manage` peuvent définir des règles par défaut concernant les personnes autorisées à ajouter ou à supprimer des membres, ou à modifier les détails de l'équipe. Définissez les règles par défaut à l'aide du bouton **Default Settings** dans la page du répertoire de l'équipe. Ces règles peuvent être modifiées pour une équipe individuelle dans le panneau des détails de l'équipe. + +### Sous-équipes (équipes hiérarchiques) + +Avec les sous-équipes, vous pouvez imbriquer les équipes les unes dans les autres afin de reproduire la hiérarchie de votre entreprise dans Datadog, ce qui permet d'obtenir un modèle de propriété plus complet et plus précis. Les sous-équipes améliorent également l'expérience de filtrage : sélectionnez une équipe plus large (comme un groupe au niveau directeur) pour trouver toutes les données associées à l'une de ses sous-équipes. + {{< img src="account_management/teams/teams_filter_hierarchies.png" alt="Filtrer les équipes hiérarchiques" >}} + +Dans l'onglet **Subteams**, vous pouvez ajouter et supprimer des équipes existantes. Pour avoir une vision claire de la place d'une équipe dans sa hiérarchie, accédez à [**Service Management** > **Teams** > **Map View**][4], puis recherchez l'équipe avec son nom. +Pour automatiser la gestion des sous-équipes en fonction de la structure hiérarchique de votre organisation, utilisez les [API Teams][5]. + +## Gérer des équipes par le biais d'un fournisseur d'identité + +Lorsque vous créez une équipe gérée, vous configurez les propriétés suivantes de l'équipe en externe par le biais de l'intégration d'un fournisseur d'identité : + - Nom de l'équipe + - Handle d'équipe + - Appartenance à une équipe (synchronisée à partir du groupe de fournisseurs d'identité correspondant) + +Pour garantir que les équipes gérées restent cohérentes avec leur configuration dans votre fournisseur d'identité, vous devez apporter les modifications aux propriétés gérées dans le fournisseur d'identité, et non via le site Datadog ou l'API. + +Datadog prend en charge Okta et d'autres fournisseurs d'identité conformes au SCIM pour la gestion des équipes. + +Pour en savoir plus sur les capacités des équipes gérées et leur configuration, consultez la section [SCIM][3]. + +## Mappage des attributs SAML + +Pour gérer des équipes et leur composition à l'aide d'attributs SAML, consultez la rubrique [Associer des attributs SAML à des équipes][2]. + +## Déléguer la gestion d'équipe + +Pour un modèle d'adhésion ouvert, configurez les paramètres par défaut de votre équipe de sorte que **N'importe qui dans l'organisation** puisse ajouter ou retirer des membres. Attribuez l'autorisation `teams_manage` aux rôles appropriés pour permettre à quiconque de créer des équipes ou de modifier les détails d'une équipe. + +Si vous préférez un modèle d'adhésion piloté par les équipes, définissez les paramètres par défaut de votre équipe de sorte que les **responsables d'équipe** ou les **responsables et membres d'équipe** puissent ajouter ou retirer des membres. Attribuez l'autorisation `teams_manage` à un rôle contenant tous vos responsables d'équipe. + +Pour appliquer un modèle d'adhésion strict, configurez les paramètres par défaut de votre équipe de sorte que **seuls les utilisateurs disposant de user_access_manage** puissent ajouter ou retirer des membres. Attribuez l'autorisation `teams_manage` uniquement aux administrateurs d'organisation. + +[1]: https://app.datadoghq.com/organization-settings/teams +[2]: /fr/account_management/saml/mapping/#map-saml-attributes-to-teams +[3]: /fr/account_management/scim/ +[4]: https://app.datadoghq.com/teams/map +[5]: /fr/api/latest/teams/#add-a-member-team \ No newline at end of file diff --git a/content/fr/actions/actions_catalog/_index.md b/content/fr/actions/actions_catalog/_index.md new file mode 100644 index 0000000000000..a8617756b2544 --- /dev/null +++ b/content/fr/actions/actions_catalog/_index.md @@ -0,0 +1,21 @@ +--- +aliases: +- /fr/workflows/actions_catalog +- /fr/service_management/service_management/workflows/actions_catalog +- /fr/service_management/workflows/actions_catalog +cascade: + algolia: + rank: 40 + disable_sidebar: true + type: actioncatalog +description: Parcourez et découvrez des actions pour Workflow Automation et App Builder + parmi les fournisseurs cloud, les outils SaaS et les services Datadog. +disable_sidebar: false +disable_toc: true +title: Action Catalog +type: actioncatalog +--- + +L'Action Catalog Datadog fournit des actions qui peuvent être exécutées sur votre infrastructure et vos intégrations à l'aide des produits Workflow Automation ou App Builder. Vous pouvez orchestrer et automatiser vos processus de bout en bout en associant des actions qui effectuent des tâches dans vos fournisseurs cloud, vos outils SaaS et vos comptes Datadog. + +Consultez ci-dessous la liste de toutes les actions disponibles. Cliquez sur une action pour afficher sa description, ses entrées, ses sorties et ses paramètres. \ No newline at end of file diff --git a/content/fr/actions/app_builder/_index.md b/content/fr/actions/app_builder/_index.md new file mode 100644 index 0000000000000..ac898d750c033 --- /dev/null +++ b/content/fr/actions/app_builder/_index.md @@ -0,0 +1,98 @@ +--- +aliases: +- /fr/developers/datadog_apps/ +- /fr/developers/ui_extensions/ +- /fr/developers/faq/ui_extensions +- /fr/service_management/app_builder/ +description: Plateforme low-code pour créer des outils internes avec une interface + de glisser-déposer, une prise en charge de JavaScript et une intégration avec des + services externes. +disable_toc: false +further_reading: +- link: /actions/actions_catalog/ + tag: Documentation + text: Action Catalog +- link: https://www.datadoghq.com/blog/datadog-app-builder-low-code-internal-tools/ + tag: Blog + text: Créer des outils de surveillance et de remédiation personnalisés avec la solution App Builder + Datadog +- link: https://www.datadoghq.com/blog/app-builder-remediation/ + tag: Blog + text: Corriger les applications créées avec Datadog App Builder +- link: https://www.datadoghq.com/blog/ai-assistant-workflows-apps/ + tag: Blog + text: Créer des workflows et des applications Datadog en quelques minutes avec notre + assistant IA +- link: https://www.datadoghq.com/blog/pm-app-automation/ + tag: Blog + text: Comment nous avons créé une application unique pour automatiser les tâches + répétitives avec Datadog Workflow Automation, Datastore et App Builder +- link: https://learn.datadoghq.com/courses/getting-started-app-builder/ + tag: Centre d'apprentissage + text: Débuter avec App Builder +title: App Builder +--- + +Datadog App Builder est une plateforme de création d'applications low-code. Elle simplifie le développement de vos outils internes grâce à une interface de glisser-déposer conviviale et à une prise en charge intégrée de JavaScript. App Builder s'intègre à des services populaires comme AWS et GitHub, ce qui vous permet d'exploiter des données et de vous connecter de manière transparente à des API externes et à des banques de données. En s'intégrant aux capacités existantes de Datadog, App Builder fournit un contexte centralisé qui vous permet de prendre des mesures préventives ou de répondre à des incidents en cours, le tout depuis la même vue que celle que vous utilisez pour le dépannage. + +{{< img src="/service_management/app_builder/app-builder-app.png" alt="Une application dans App Builder" style="width:100%;" >}} + +## Configurer les actions d'App Builder + +Datadog App Builder fournit un [Action Catalog][1] de centaines d'actions pour de multiples intégrations. L'Action Catalog et les identifiants de connexion pour chaque intégration sont partagés avec [Datadog Workflow Automation][2]. S'il n'existe pas d'intégration qui accomplit votre tâche, vous pouvez utiliser des actions génériques telles que les requêtes HTTP et les fonctions JavaScript pour effectuer toute tâche dont votre application a besoin. + +{{< img src="/service_management/app_builder/app-builder-action-catalog.png" alt="Datadog App Builder fournit un Action Catalog de centaines d'actions pour de multiples intégrations." style="width:100%;" >}} + +## Commencer avec les blueprints + +Datadog vous fournit des flux préconfigurés sous la forme de [blueprints][3] prêts à l'emploi pour vous aider à [démarrer][5]. + +Vous trouverez ci-dessous quelques exemples des possibilités offertes par les applications App Builder : +- Identifier les causes les plus probables d'une régression sur la base d'une description textuelle d'un incident et des 150 derniers commits d'un référentiel +- Surveiller le statut de votre service PagerDuty pour bénéficier de tout le contexte nécessaire à la résolution d'incidents +- Autoriser des utilisateurs à gérer leurs instances EC2 directement à partir d'un dashboard +- Autoriser des utilisateurs à explorer et visualiser le contenu d'un compartiment S3 +- Utiliser une intégration PagerDuty pour identifier les membres en service de chaque équipe d'une organisation +- Consulter un résumé de la progression de chaque PR au sein d'un référentiel donné + +{{< img src="/service_management/app_builder/app-builder-blueprints-2.png" alt="Blueprints d'apps" style="width:100%;" >}} + +## Effectuer une action directement depuis les dashboards + +Vous pouvez utiliser vos applications depuis la page Apps ou [y accéder directement depuis vos dashboards][6]. Les applications Datadog fonctionnent comme des intégrations de dashboard natives, ce qui vous permet de personnaliser et d'effectuer des actions sur vos données directement dans le contexte de votre dashboard. + +{{< img src="/service_management/app_builder/app-builder-embedded-dashboard.png" alt="Une application intégrée dans un dashboard" style="width:100%;" >}} + +### Applications créées par Datadog + +Les applications créées par Datadog sont des applications intégrées dans les dashboards d'intégration. Elles fonctionnent sans avoir à les créer ; il vous suffit de choisir une connexion. + +Par exemple, le [dashboard d'intégration EC2][7] propose une application de gestion d'instances EC2. Lorsque vous chargez le dashboard, l'application est remplie avec des données de démonstration : + +{{< img src="/service_management/app_builder/ootb-app-ec2-demo-data.png" alt="Application EC2 créée par Datadog, remplie avec des données de démonstration" style="width:100%;" >}} + +Pour utiliser l'application avec vos données, cliquez sur **+ Connect Data**, puis créez une nouvelle connexion ou sélectionnez une connexion existante. Une fois votre sélection enregistrée, l'application affiche les données de votre connexion. + +Vous pouvez modifier la connexion sélectionnée en cliquant sur **Change Connection** dans l'application. + +## Dashboard App Builder Overview + +Le dashboard App Builder Overview fournit une vue d'ensemble de haut niveau de vos applications Datadog. Pour trouver le dashboard, accédez à votre [liste de dashboards][8] et recherchez `App Builder Overview`. + +{{< img src="service_management/app_builder/app-builder-overview-dashboard.png" alt="Le dashboard App Builder Overview" style="width:100%;" >}} + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Avez-vous des questions ou des commentaires ? Rejoignez le canal **#app-builder** sur le [slack de la communauté Datadog][4]. + +[1]: https://app.datadoghq.com/actions/action-catalog/ +[2]: /fr/service_management/workflows/ +[3]: https://app.datadoghq.com/app-builder/blueprints +[4]: https://datadoghq.slack.com/ +[5]: /fr/service_management/app_builder/build/#build-an-app-from-a-blueprint +[6]: /fr/service_management/app_builder/embedded_apps/#add-apps-to-your-dashboard +[7]: https://app.datadoghq.com/dash/integration/60 +[8]: https://app.datadoghq.com/dashboard/lists +[9]: https://app.datadoghq.com/app-builder/apps/list \ No newline at end of file diff --git a/content/fr/actions/workflows/_index.md b/content/fr/actions/workflows/_index.md new file mode 100644 index 0000000000000..9d6ebc5f8c07d --- /dev/null +++ b/content/fr/actions/workflows/_index.md @@ -0,0 +1,86 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation +aliases: +- /fr/workflows +- /fr/service_management/workflows +description: Orchestrer et automatiser des processus de bout en bout avec des workflows + qui connectent des actions dans votre infrastructure et vos outils. +disable_toc: false +further_reading: +- link: /getting_started/workflow_automation/ + tag: Documentation + text: Débuter avec Workflow Automation +- link: https://www.datadoghq.com/blog/automate-end-to-end-processes-with-datadog-workflows/ + tag: Blog + text: Automatiser les processus de bout en bout et répondre rapidement aux événements + avec Datadog Workflows +- link: https://www.datadoghq.com/blog/automate-security-tasks-with-workflows-and-cloud-siem/ + tag: Blog + text: Automatiser les tâches de sécurité courantes et anticiper les menaces avec + les workflows Datadog et Cloud SIEM +- link: https://www.datadoghq.com/blog/soar/ + tag: Blog + text: Automatiser la protection des identités, le confinement des menaces et le + renseignement sur les menaces avec les workflows Datadog SOAR +- link: https://www.datadoghq.com/blog/azure-workflow-automation/ + tag: Blog + text: Corriger rapidement les problèmes de vos applications Azure grâce à la solution + Workflow Automation Datadog +- link: https://www.datadoghq.com/blog/ai-assistant-workflows-apps/ + tag: Blog + text: Créer des workflows et des applications Datadog en quelques minutes avec notre + assistant IA +- link: https://www.datadoghq.com/blog/pm-app-automation/ + tag: Blog + text: Comment nous avons créé une application unique pour automatiser les tâches + répétitives avec Datadog Workflow Automation, Datastore et App Builder +- link: https://learn.datadoghq.com/courses/automated-workflows + tag: Centre d'apprentissage + text: Corriger les problèmes avec Workflow Automation +title: Automatisation de workflows +--- + +{{< vimeo url="https://player.vimeo.com/progressive_redirect/playback/852419580/rendition/1080p/file.mp4?loc=external&signature=fb7ae8df018e24c9f90954f62ff3217bc1b904b92e600f3d3eb3f5a9d143213e" poster="/images/poster/workflow_automation.png" >}} + +Datadog Workflow Automation vous permet d'orchestrer et d'automatiser vos processus de bout en bout. Créez des workflows composés d'[actions][1] qui se connectent à votre infrastructure et à vos outils. Ces actions peuvent également effectuer des opérations de données et des opérations logiques, ce qui vous permet de créer des flux complexes avec des branches, des décisions et des opérations de données. + +## Configurer des actions de workflow + +Datadog Workflow Automation fournit plus de 2 000 actions pour plusieurs outils, ainsi que des actions spécifiques au workflow telles que l'action HTTP et l'opérateur de données JavaScript. Ces actions vous permettent d'effectuer n'importe quelle tâche nécessaire à votre workflow. + +## Commencer avec les blueprints + +Datadog vous fournit des flux préconfigurés sous la forme de [blueprints][2] prêts à l'emploi. Des dizaines de blueprints vous aident à créer des processus autour de la gestion des incidents, de DevOps, de la gestion des changements, de la sécurité et de la correction. + +## Automatiser les tâches critiques + +Déclenchez vos workflows depuis des monitors, des signaux de sécurité ou des dashboards, ou déclenchez-les manuellement. Cette flexibilité vous permet de répondre avec le workflow approprié au moment où vous prenez connaissance d'un problème affectant l'intégrité de votre système. L'automatisation de tâches critiques avec Datadog Workflow Automation aide à maintenir vos systèmes opérationnels en améliorant le délai de résolution et en réduisant la possibilité d'erreurs. + +## Dashboard Workflows Overview + +Le dashboard Workflows Overview fournit une vue d'ensemble de haut niveau de vos workflows et exécutions Datadog. Pour trouver le dashboard, accédez à votre [liste de dashboards][3] et recherchez `Workflows Overview`. + +{{< img src="service_management/workflows/workflows-dashboard.png" alt="Le dashboard Workflows Overview" style="width:100%;" >}} + +## Exemples + +Voici quelques exemples de workflows que vous pouvez créer : +- Automatiser la mise à l'échelle de vos groupes AWS Auto Scaling lorsque les monitors qui suivent les métriques critiques de ces groupes Auto Scaling passent à l'état d'alerte. +- Créer automatiquement des notebooks d'enquête sur les adresses IP malveillantes à détecter par Security Signals, puis bloquer ces adresses IP dans CloudFlare en un clic. +- Exécuter des workflows pour revenir à des versions stables de votre application directement depuis les dashboards que vous utilisez pour suivre l'intégrité de vos systèmes. +- Gérer les feature flags en mettant automatiquement à jour vos fichiers de configuration de feature flag dans GitHub et en automatisant le processus de pull request et de merge. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][4]. + +[1]: /fr/actions/actions_catalog/ +[2]: /fr/workflows/build/#build-a-workflow-from-a-blueprint +[3]: https://app.datadoghq.com/dashboard/lists +[4]: https://datadoghq.slack.com/ \ No newline at end of file diff --git a/content/fr/actions/workflows/trigger.md b/content/fr/actions/workflows/trigger.md new file mode 100644 index 0000000000000..a17947d707271 --- /dev/null +++ b/content/fr/actions/workflows/trigger.md @@ -0,0 +1,300 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation +aliases: +- /fr/workflows/trigger +- /fr/service_management/workflows/trigger +description: Découvrez comment déclencher des workflows manuellement ou automatiquement + depuis des dashboards, des monitors, des signaux de sécurité et d'autres sources. +disable_toc: false +further_reading: +- link: https://www.datadoghq.com/blog/datadog-automation-rules + tag: Blog + text: Répondre instantanément aux modifications de vos données avec les règles d'automatisation + Datadog +- link: /getting_started/workflow_automation/ + tag: Documentation + text: Débuter avec Workflow Automation +- link: /actions/workflows/access_and_auth/#use-a-service-account + tag: Documentation + text: En savoir plus sur les comptes de service pour les workflows +- link: serverless_aws_lambda + tag: Documentation + text: En savoir plus sur la configuration d'un dashboard +- link: /security + tag: Documentation + text: En savoir plus sur les signaux de sécurité +- link: notebooks + tag: Documentation + text: En savoir plus sur les monitors +- link: /security/cloud_security_management/workflows + tag: Documentation + text: Automatiser les workflows de sécurité avec Workflow Automation +title: Déclencher un workflow +--- + +Vous pouvez déclencher un workflow manuellement ou automatiquement et un workflow peut avoir plusieurs déclencheurs. Cela vous permet de déclencher un workflow depuis diverses sources différentes, comme un monitor Datadog et un dashboard Datadog. + +Un workflow peut soit s'exécuter avec l'identité de l'utilisateur qui en est propriétaire, soit avec l'identité d'un compte de service associé au workflow. Pour obtenir plus d'informations sur les comptes de service, consultez la section [Comptes de service pour Workflow Automation][1]. + +{{< img src="service_management/workflows/multiple-triggers.png" alt="Un workflow avec plusieurs déclencheurs" style="width:100%;" >}} + +## Déclencheurs manuels + +Pour déclencher un workflow manuellement : +1. Depuis la page du workflow, cliquez sur **Run**. +1. Saisissez les valeurs pour les variables de déclencheur existantes. +1. Lorsque vous êtes prêt à exécuter le workflow, cliquez sur **Save & Run**. + +## Déclencheurs de dashboard + +Pour déclencher un workflow depuis un dashboard, ajoutez le widget **Run Workflow** : +1. Depuis votre dashboard, cliquez sur **Add Widget**. +1. Recherchez `workflows` et ajoutez le widget **Run Workflow**. +1. Sous **Select the workflow**, trouvez votre workflow dans le menu déroulant. Seuls les workflows publiés avec des déclencheurs de dashboard apparaissent dans la liste. +1. Mappez des template variables de dashboard aux paramètres d'entrée de votre workflow. De cette manière, les valeurs de vos template variables de dashboard sont associées directement aux paramètres d'entrée lors de l'exécution du workflow. +1. Attribuez un titre au widget, puis cliquez sur **Save**. + +Pour exécuter le workflow, procédez comme suit : +1. Cliquez sur **Run Workflow** dans votre widget de dashboard. +1. Les template variables que vous avez mappées aux entrées du workflow s'affichent automatiquement sous **Execution parameters**. Saisissez les valeurs des paramètres d'exécution qui ne sont pas mappés ou modifiez des valeurs existantes si nécessaire. +1. Cliquez sur **Run** pour exécuter le workflow. + +## Déclencheurs de monitor + +### Ajouter un déclencheur de monitor à votre workflow + +1. Ajoutez un déclencheur de monitor à votre workflow : + - Si votre workflow n'a aucun déclencheur, cliquez sur **Add Trigger** > **Monitor**. + - Si votre workflow a déjà un ou plusieurs déclencheurs et que vous ajoutez le monitor comme déclencheur supplémentaire, cliquez sur l'icône **Add Trigger** (éclair) et sélectionnez **Monitor**. +1. Assurez-vous que le déclencheur est connecté à une étape dans le workflow. Vous pouvez connecter le déclencheur à une étape en cliquant et en faisant glisser l'icône plus (**+**) sous le déclencheur. +1. Cliquez sur le déclencheur et prenez note du **Mention handle**. +1. Les déclencheurs de monitor sont configurés pour se déclencher automatiquement par défaut. Si vous ne souhaitez pas que le workflow se déclenche automatiquement, basculez l'option **Automatic triggering**. +1. Enregistrez votre workflow. +1. Cliquez sur **Publish** pour publier votre workflow. Les workflows ne s'exécutent pas automatiquement tant que vous ne les avez pas publiés. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][11]. + +### Ajouter le workflow à votre monitor + +1. Accédez à la page [**Monitors**][2] dans Datadog. +1. Trouvez le monitor que vous souhaitez utiliser pour déclencher le workflow et modifiez-le, ou créez un nouveau monitor. +1. Dans la section **Configure notifications & automations**, cliquez sur **+ Add Workflow**. +1. Utilisez le nom de mention du workflow pour rechercher votre workflow et sélectionnez-le dans le menu déroulant. Seuls les workflows avec des déclencheurs de monitor apparaissent dans la liste.
Une mention pour le monitor apparaît dans le champ de message de notification, au format `@workflow-name` s'il ne prend aucun paramètre d'entrée ou `@workflow-name(param="")` s'il prend des paramètres d'entrée. +1. Si le workflow prend des paramètres d'entrée : + 1. Cliquez sur **Configure Inputs** à côté du nom et de l'ID du monitor. + {{< img src="service_management/workflows/monitor-configure-inputs-arrow.png" alt="Un workflow attaché avec un lien Configure Inputs disponible" style="width:100%;" >}} + 1. Saisissez les valeurs pour les paramètres d'entrée.
**Remarque** : les valeurs peuvent inclure des variables de modèle de message de monitor. Pour voir une liste des variables disponibles, cliquez sur **Use Message Template Variables** dans le coin supérieur droit de la section **Configure notifications & automations**. +
Les paramètres se remplissent dans la mention dans le champ de message de notification.
Par exemple, si vous configurez un workflow nommé `@workflow-test-inputs` pour avoir les paramètres suivants : + {{< img src="service_management/workflows/monitor-configure-inputs-modal.png" alt="Panneau Configure Inputs avec les valeurs définies comme suit : im_a_string sur 'abc', im_a_number sur 123, im_a_boolean basculé sur true, et i_have_a_default_value sur 'override this'" style="width:70%;" >}} + la mention devient `@workflow-test-inputs(im_a_string="abc", im_a_number=123, im_a_boolean=true, i_have_a_default_value="override this")`. +1. Enregistrez le monitor. + +Chaque fois que le seuil du monitor est atteint, le monitor déclenche une exécution de workflow. + +### Tester un déclencheur de monitor + +Consultez la page de test et de débogage pour obtenir des informations sur [comment tester un déclencheur de monitor][12]. + +## Déclencheurs d'incident + +Pour déclencher un workflow depuis une règle de notification d'incident, vous devez d'abord ajouter un déclencheur d'incident à votre workflow : +1. Ajoutez un déclencheur d'incident à votre workflow : + - Si votre workflow n'a aucun déclencheur, cliquez sur **Add Trigger** > **Incident**. + - Si votre workflow a déjà un ou plusieurs déclencheurs et que vous ajoutez le déclencheur de sécurité comme déclencheur supplémentaire, cliquez sur l'icône **Add Trigger** (éclair) et sélectionnez **Incident**. +1. Assurez-vous que le déclencheur est connecté à une étape dans le workflow. Vous pouvez connecter le déclencheur à une étape en cliquant et en faisant glisser l'icône plus (**+**) sous le déclencheur. +1. Cliquez sur le déclencheur et prenez note du **Mention handle**. +1. Les déclencheurs d'incident sont configurés pour se déclencher automatiquement par défaut. Si vous ne souhaitez pas que le workflow se déclenche automatiquement, basculez l'option **Automatic triggering**. +1. Enregistrez votre workflow. +1. Cliquez sur **Publish** pour publier votre workflow. Les workflows ne s'exécutent pas automatiquement tant que vous ne les avez pas publiés. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][11]. + +Ajoutez le workflow à votre règle de notification d'incident : +1. Sur la page [Incidents Settings][6], sélectionnez **Rules**. +1. Cliquez sur **New Rule**. +1. Configurez une **Severity**, un **Service** et d'**Other attributes** pour votre règle de notification. +1. Sous **Notify**, collez le handle du workflow que vous avez copié précédemment. +1. Dans la section **Recipient**, utilisez le nom de mention du workflow pour trouver votre workflow. Par exemple, `@workflow-my-workflow`. Le workflow doit avoir un déclencheur d'incident avant que vous puissiez le déclencher depuis un incident. +1. Saisissez un **Template** et configurez les paramètres **Renotify** pour la règle de notification. +1. Cliquez sur **Save**. + +## Déclencheurs de sécurité + +Vous pouvez déclencher un workflow automatiquement pour tout Security Signal, ou déclencher manuellement un workflow depuis un panneau de Security Signal Cloud SIEM. Avant de pouvoir ajouter un workflow à un Security Signal, le workflow doit avoir un déclencheur de sécurité. + +### Déclencheurs de règle de notification de Security Signal + +Vous pouvez configurer un workflow pour qu'il se déclenche chaque fois qu'une règle de notification de Security Signal se déclenche. + +Pour déclencher un workflow depuis une règle de notification, vous devez d'abord ajouter un déclencheur de sécurité à votre workflow : +1. Ajoutez un déclencheur de sécurité à votre workflow : + - Si votre workflow n'a aucun déclencheur, cliquez sur **Add Trigger** > **Security**. + - Si votre workflow a déjà un ou plusieurs déclencheurs et que vous ajoutez le déclencheur de sécurité comme déclencheur supplémentaire, cliquez sur l'icône **Add Trigger** (éclair) et sélectionnez **Security**. +1. Assurez-vous que le déclencheur est connecté à une étape dans le workflow. Vous pouvez connecter le déclencheur à une étape en cliquant et en faisant glisser l'icône plus (**+**) sous le déclencheur. +1. Cliquez sur le déclencheur et prenez note du **Mention handle**. +1. Les déclencheurs de sécurité sont configurés pour se déclencher automatiquement par défaut. Si vous ne souhaitez pas que le workflow se déclenche automatiquement, basculez l'option **Automatic triggering**. +1. Enregistrez votre workflow. +1. Cliquez sur **Publish** pour publier votre workflow. Les workflows ne s'exécutent pas automatiquement tant que vous ne les avez pas publiés. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][11]. + +Ajoutez le workflow à votre règle de notification : +1. Depuis la page [Configuration][3], trouvez la règle de notification que vous souhaitez utiliser pour déclencher votre workflow, ou créez une nouvelle règle. +1. Dans la section **Recipient**, utilisez le nom de mention du workflow pour trouver votre workflow. Par exemple, `@workflow-my-workflow`. +1. Sélectionnez le workflow dans le menu déroulant. Seuls les workflows avec des déclencheurs de sécurité apparaissent dans la liste. +1. Cliquez sur **Save**. + +{{< img src="service_management/workflows/notification-rule-trigger2.png" alt="Ajoutez le nom du workflow à la section recipient d'une règle de notification" >}} + +Chaque fois que la règle de notification se déclenche, elle déclenche une exécution de workflow. + +### Déclencheurs de Security Signal Cloud SIEM + +Vous pouvez démarrer manuellement un workflow depuis un panneau de Security Signal Cloud SIEM. + +1. Cliquez sur **Run Workflow** en haut du panneau **Security Signal**. +1. Dans la fenêtre de recherche, saisissez le nom du workflow que vous souhaitez exécuter et sélectionnez-le. Seuls les workflows avec des déclencheurs de sécurité apparaissent dans la liste. +1. Si votre workflow nécessite des paramètres d'entrée, saisissez les valeurs comme requis. Vous pouvez copier les valeurs depuis le JSON de l'objet Signal affiché à côté des paramètres d'entrée, et les coller dans les champs de paramètres. +1. Cliquez sur **Run**. +1. Vous pouvez voir le statut d'exécution du workflow dans la section **Workflow** du Security Signal. + +Pour obtenir des exemples supplémentaires de workflows de sécurité que vous pouvez automatiser, consultez la section [Automatiser les workflows de sécurité avec Workflow Automation][4]. + +## Déclencheurs de Software Catalog + +Pour exécuter un workflow depuis une entité de Software Catalog, vous devez d'abord ajouter un déclencheur de Software Catalog à votre workflow : + +1. Ajoutez un déclencheur de Software Catalog à votre workflow : + - Si votre workflow n'a aucun déclencheur, cliquez sur **Add Trigger** > **Software Catalog**. + - Si votre workflow a déjà un ou plusieurs déclencheurs et que vous ajoutez le Software Catalog comme déclencheur supplémentaire, cliquez sur l'icône **Add Trigger** (éclair) et sélectionnez **Software Catalog**. +2. Assurez-vous que le déclencheur est connecté à une étape dans le workflow. Vous pouvez connecter le déclencheur à une étape en cliquant et en faisant glisser l'icône plus (**+**) sous le déclencheur. +3. Enregistrez votre workflow. +4. Cliquez sur **Publish** pour publier votre workflow. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][11]. + +Exécutez le workflow depuis votre entité Software Catalog : + +1. Sur la [page Software Catalog][14], choisissez une entité dans la liste. +1. Cliquez sur **Run Workflow** en haut du panneau latéral. +1. Dans la fenêtre de recherche, saisissez le nom du workflow que vous souhaitez exécuter et sélectionnez-le. Seuls les workflows avec des déclencheurs Software Catalog apparaissent dans la liste. +1. Si votre workflow nécessite des paramètres d'entrée, saisissez les valeurs comme requis. +1. Cliquez sur **Run** pour exécuter le workflow. + +## Déclencheurs GitHub + +
Votre compte GitHub doit avoir l'autorisation de créer des webhooks pour utiliser cette fonctionnalité.
+ +Vous pouvez déclencher un workflow depuis GitHub en suivant les étapes suivantes. + +1. Ajoutez un déclencheur GitHub à votre workflow : + - Si votre workflow n'a aucun déclencheur, cliquez sur **Add Trigger > GitHub**. + - Si votre workflow a déjà un ou plusieurs déclencheurs et que vous ajoutez GitHub comme déclencheur supplémentaire, cliquez sur l'icône **Add Trigger** (éclair) et sélectionnez **GitHub**. +1. Accédez au référentiel GitHub que vous souhaitez utiliser pour déclencher votre workflow. +1. Dans GitHub, cliquez sur **Settings**, cliquez sur **Webhooks**, puis cliquez sur **Add webhook**. +1. Dans l'onglet **Configure** de votre workflow, copiez la **Payload URL**. Collez-la dans le champ **Payload URL** sur la page de création de webhook GitHub. +1. Dans GitHub, définissez le **Content type** de votre webhook sur `application/json`. +1. Dans GitHub, créez un secret d'au moins 16 caractères, puis copiez ce secret dans le champ **Secret** de votre déclencheur de workflow. +1. Dans GitHub, choisissez les événements que vous souhaitez qui déclenchent votre webhook, puis cliquez sur **Add webhook**. +1. _Facultativement_, dans votre workflow, cliquez sur le **plus** (+) pour ajouter une **Rate Limit**. +1. Cliquez sur **Save** sur votre workflow. +1. Cliquez sur **Publish** pour publier le workflow. Un workflow doit être publié avant que vous puissiez le déclencher depuis GitHub. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][11]. + +## Déclencheurs Slack + +
Vous devez installer l'application Datadog dans votre espace de travail Slack pour utiliser cette fonctionnalité. Pour obtenir plus d'informations, consultez la section Configuration de Slack.
+ +
Démarrage rapide : Cliquez pour créer un workflow avec un déclencheur Slack.
+ +Vous pouvez déclencher un workflow depuis Slack en suivant les étapes suivantes. + +1. Ajoutez un déclencheur Slack à votre workflow : + - Si votre workflow n'a aucun déclencheur, cliquez sur **Add Trigger** > **Slack**. + - Si votre workflow a déjà un ou plusieurs déclencheurs et que vous ajoutez le déclencheur Slack comme déclencheur supplémentaire, cliquez sur l'icône **Add Trigger** (éclair) et sélectionnez **Slack**. +1. Assurez-vous que le déclencheur est connecté à une étape dans le workflow. Vous pouvez connecter le déclencheur à une étape en cliquant et en faisant glisser l'icône plus (**+**) sous le déclencheur. +1. Cliquez sur **Save** sur votre workflow. +1. Cliquez sur **Publish** pour publier le workflow. Un workflow doit être publié avant que vous puissiez le déclencher depuis Slack. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][11]. +1. Dans un canal Slack avec l'application Datadog, exécutez `/datadog workflow` pour sélectionner et exécuter un workflow. Vous pouvez également utiliser l'alias `/dd` pour exécuter les commandes /datadog. + +## Déclencheurs d'API + +Déclencher un workflow à l'aide d'un appel d'API nécessite une [clé d'API][8] et une [clé d'application][9] avec la portée `workflows_run`. Pour obtenir des informations sur l'ajout d'une portée à une clé d'application, consultez la section [Portées][10]. + +
Les clés sans portée n'incluent pas la portée workflows_run par défaut. Assurez-vous de suivre les bonnes pratiques de sécurité et d'utiliser une clé d'application avec les portées minimales nécessaires pour effectuer la tâche souhaitée.
+ +Vous pouvez déclencher un workflow en envoyant une requête POST avec l'ID du workflow vers l'endpoint `https://api.datadoghq.com/api/v2/workflows/WORKFLOW-ID/instances`. Lorsque vous ajoutez un déclencheur d'API à un workflow, l'interface du déclencheur vous donne un exemple de requête cURL que vous pouvez utiliser pour déclencher le workflow. + +Pour ajouter un déclencheur d'API à un workflow : +1. Cliquez sur **Add Trigger** > **API**. +1. Sur le canevas du workflow, cliquez sur **API** et notez l'exemple de requête cURL du workflow, qui inclut les en-têtes et les données requis pour déclencher votre workflow. + + Une requête cURL pour déclencher un workflow ressemble à quelque chose comme ceci : + {{< code-block lang="shell" >}} +curl -X POST \ + -H "Content-Type: application/json" \ + -H "DD-API-KEY: ${DD_API_KEY}" \ + -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ + -d {} \ + https://api.datadoghq.com/api/v2/workflows/32866005-d275-4553-be86-9f1b13066d84/instances +{{< /code-block >}} + + Si le workflow inclut des paramètres d'entrée, incluez-les dans la charge utile de la requête. L'exemple suivant utilise deux paramètres d'entrée, `example_input1` et `example_input2` : + + {{< code-block lang="shell" >}} +curl -X POST \ + -H "Content-Type: application/json" \ + -H "DD-API-KEY: ${DD_API_KEY}" \ + -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ + -d { "meta": { "payload": { \ + "example_input1": "...", \ + "example_input2": "..." \ + } } } \ + https://api.datadoghq.com/api/v2/workflows/32866005-d275-4553-be86-9f1b13066d84/instances + {{< /code-block >}} +1. Cliquez sur **Save**. +1. Cliquez sur **Publish** pour publier le workflow. Un workflow doit être publié avant que vous puissiez le déclencher avec une requête POST. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][11]. + +## Déclencheurs planifiés + +Pour planifier une exécution de workflow : +1. Sur le canevas du workflow, cliquez sur **Add an Automated Trigger** et sélectionnez **Schedule**. +1. Cliquez sur **Create** pour créer un compte de service. Pour obtenir plus d'informations, consultez la section [Utiliser un compte de service][1]. +1. Saisissez une heure et une fréquence pour l'exécution. +1. (Facultatif) Saisissez une description pour le workflow dans le champ **Memo**. +1. Cliquez sur **Save**. +1. Cliquez sur **Publish**. Les workflows planifiés ne s'exécutent pas tant que vous ne les avez pas publiés. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][11]. + +## Déclencher un workflow depuis un workflow + +Vous pouvez déclencher un workflow enfant depuis un autre workflow à l'aide de l'action **Trigger Workflow**. Par exemple, si vous avez une série complexe d'étapes que vous devez réutiliser dans plusieurs workflows, il n'est pas nécessaire de recréer ces étapes pour tous vos workflows. Au lieu de cela, ajoutez les étapes à un nouveau workflow et déclenchez-le dans vos autres workflows à l'aide de l'action Trigger Workflow. + +
À des fins de facturation, déclencher un workflow enfant s'enregistre comme une nouvelle exécution de workflow.
+ +Si le workflow enfant a des [paramètres d'entrée][5], ces paramètres apparaissent comme des champs obligatoires dans l'action Trigger Workflow. Dans l'exemple ci-dessous, le paramètre d'entrée **service_name** est obligatoire car `service_name` est défini comme paramètre d'entrée dans le workflow enfant. + +{{< img src="service_management/workflows/trigger-workflow-step.png" alt="Le paramètre d'entrée service_name est obligatoire dans le workflow enfant" style="width:100%;" >}} + +### Accéder au résultat d'un workflow enfant + +Vous pouvez transmettre le résultat d'un workflow enfant au workflow parent en définissant des **Output parameters** dans le workflow enfant. Utilisez la variable de contexte `WorkflowOutputs` dans le workflow parent pour récupérer les paramètres de sortie du workflow enfant. Par exemple, étant donné un workflow enfant nommé `Example_workflow` avec un paramètre de sortie nommé `exampleList`, utilisez `Steps.Example_workflow.workflowOutputs.exampleList` pour accéder au résultat du workflow enfant. + +## Historique d'exécution + +Après avoir déclenché un workflow, la page du workflow bascule vers le **Run History** du workflow. Cliquez sur **Configuration** ou **Run History** en haut à gauche pour basculer entre les vues de configuration et d'historique d'exécution. Utilisez l'historique d'exécution pour suivre la progression d'un workflow déclenché ou [déboguer une étape ayant échoué][13]. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][7]. + +[1]: /fr/actions/workflows/access_and_auth/#use-a-service-account +[2]: https://app.datadoghq.com/monitors/manage +[3]: https://app.datadoghq.com/security/configuration/notification-rules +[4]: /fr/security/cloud_security_management/workflows +[5]: /fr/service_management/workflows/build/#input-parameters +[6]: https://app.datadoghq.com/incidents/settings#Rules +[7]: https://datadoghq.slack.com/ +[8]: /fr/account_management/api-app-keys/#api-keys +[9]: /fr/account_management/api-app-keys/#application-keys +[10]: /fr/account_management/api-app-keys/#scopes +[11]: https://www.datadoghq.com/pricing/?product=workflow-automation#products +[12]: /fr/service_management/workflows/test_and_debug/#test-a-monitor-trigger +[13]: /fr/service_management/workflows/test_and_debug/#debug-a-failed-step +[14]: https://app.datadoghq.com/software \ No newline at end of file diff --git a/content/fr/agent/configuration/dual-shipping.md b/content/fr/agent/configuration/dual-shipping.md new file mode 100644 index 0000000000000..97d294d0fb095 --- /dev/null +++ b/content/fr/agent/configuration/dual-shipping.md @@ -0,0 +1,532 @@ +--- +aliases: +- /fr/agent/guide/dual-shipping +description: Configurez le site Datadog Agent pour qu'il envoie simultanément des + métriques, des loget des traceà plusieurs organisations Datadog. +further_reading: +- link: /agent/configuration/réseau/ + tag: Guide + text: Trafic réseau +- link: /observability_pipelines/ + tag: documentation + text: Envoyer logs à des destinations externes avec Observability Pipelines +title: Transmission multiple +--- + +
+Si vous envoyez des données à plusieurs organisations Datadog, la fonctionnalité de transmission multiple peut avoir une incidence sur vos coûts. Pour en savoir plus sur les frais supplémentaires engendrés par cette configuration, contactez l'assistance Datadog. +
+ +## Présentation + +Ce document fournit des exemples de configurations de l'Agent pour l'envoi double de différents types de données (par exemple, APM, logs, métriques du Cluster Agent, etc.) vers plusieurs organisations Datadog. + +**Remarque** : utilisez [Observability Pipelines][1] si vous souhaitez effectuer un envoi double de logs ou répartir le trafic de logs entre différents fournisseurs de journalisation, stockages cloud ou fournisseurs SIEM. + +Pour obtenir une liste complète des destinations du trafic réseau, consultez la section [Trafic réseau][2]. + +## Métriques et checks de service + +Vous pouvez ajouter la configuration YAML à votre `datadog.yaml` ou lancer l'Agent avec les variables d'environnement appropriées. + +### Configuration YAML + +Nécessite la version >= 6.17 ou 7.17 de l'Agent. + +Dans `datadog.yaml` : + +```yaml +additional_endpoints: + "https://app.datadoghq.com": + - apikey2 + - apikey3 + "https://app.datadoghq.eu": + - apikey4 +``` + +### Configuration des variables d'environnement + +Nécessite la version >= 6.18 ou 7.18 de l'Agent. + +```bash +DD_ADDITIONAL_ENDPOINTS='{\"https://app.datadoghq.com\": [\"apikey2\", \"apikey3\"], \"https://app.datadoghq.eu\": [\"apikey4\"]}' +``` + +## APM + +### Configuration YAML + +Nécessite la version >= 6.7.0 de l'Agent. + +Dans `datadog.yaml` : +```yaml +apm_config: + [...] + additional_endpoints: + "https://trace.agent.datadoghq.com": + - apikey2 + - apikey3 + "https://trace.agent.datadoghq.eu": + - apikey4 +``` + +### Configuration des variables d'environnement + +Nécessite la version >= 6.19 ou 7.19 de l'Agent. + +```bash +DD_APM_ADDITIONAL_ENDPOINTS='{\"https://trace.agent.datadoghq.com\": [\"apikey2\", \"apikey3\"], \"https://trace.agent.datadoghq.eu\": [\"apikey4\"]}' +``` + +## Profileur en continu + +### Configuration YAML + +Nécessite la version >= 6.7.0 de l'Agent. + +Dans `datadog.yaml` : + +```yaml +apm_config: + [...] + profiling_additional_endpoints: + "https://intake.profile.datadoghq.com/api/v2/profile": + - apikey2 + - apikey3 + "https://intake.profile.datadoghq.eu/api/v2/profile": + - apikey4 +``` + +### Configuration des variables d'environnement + +Nécessite la version >= 6.19 ou 7.19 de l'Agent. + +```bash +DD_APM_PROFILING_ADDITIONAL_ENDPOINTS='{\"https://intake.profile.datadoghq.com/api/v2/profile\": [\"apikey2\", \"apikey3\"], \"https://intake.profile.datadoghq.eu/api/v2/profile\": [\"apikey4\"]}' +``` + +**Remarque** : les uploads vers des endpoints supplémentaires pour le produit Continuous Profiler sont effectués via une livraison au mieux. +* L'endpoint principal a la priorité la plus élevée. Les uploads vers des endpoints supplémentaires ne sont gérés qu'après que les uploads vers l'endpoint principal ont été terminés avec succès. +* Les réponses des endpoints supplémentaires ne sont pas renvoyées au profileur. Toutes les erreurs survenues lors de la livraison vers des endpoints supplémentaires sont enregistrées dans les logs d'erreur de l'Agent. + +## Live processes + +### Configuration YAML + +Nécessite la version >= 6.4.0 de l'Agent. + +Dans `datadog.yaml` : +```yaml +process_config: + [...] + additional_endpoints: + "https://process.datadoghq.com": + - apikey2 + - apikey3 + "https://process.datadoghq.eu": + - apikey4 +``` + +### Configuration des variables d'environnement + +Nécessite la version >= 6.20 ou 7.20 de l'Agent. + +```bash +DD_PROCESS_ADDITIONAL_ENDPOINTS='{\"https://process.datadoghq.com\": [\"apikey2\", \"apikey3\"], \"https://process.datadoghq.eu\": [\"apikey4\"]}' +``` + +## Métriques de l'Agent de cluster + +Configurez l'Agent pour envoyer les métriques de l'Agent de cluster, telles que Kubernetes State Metrics Core, vers des endpoints supplémentaires. + +### Configuration HELM +Dans le fichier `values.yaml` de Datadog : +```yaml +clusterAgent: + env: + - name: DD_ADDITIONAL_ENDPOINTS + value: '{"https://app.datadoghq.com": ["apikey2"]}' +``` +### Fournisseur de métriques de l'Agent de cluster + +Pour garantir que l'autoscaling est résilient aux défaillances, configurez l'Agent de cluster pour exécuter vos requêtes de métriques pour le HPA sur vos plusieurs régions Datadog avec des données envoyées en double. Configurez le manifeste de l'Agent de cluster Datadog avec plusieurs endpoints : + +{{< code-block lang="yaml" filename="cluster-agent-deployment.yaml" collapsible="true" >}} +external_metrics_provider: + endpoints: + - api_key: + app_key: + url : https://app.datadoghq.eu + - api_key: + app_key: + url: https://app.datadoghq.com +{{< /code-block >}} + +## Orchestrateur + +### Configuration HELM +Dans le fichier `values.yaml` de Datadog : +```yaml +agents: + customAgentConfig: + process_config: + additional_endpoints: + "https://process.datadoghq.com": + - apikey2 + orchestrator_explorer: + orchestrator_additional_endpoints: + "https://orchestrator.datadoghq.com": + - apikey2 + +clusterAgent: +... + datadog_cluster_yaml: + orchestrator_explorer: + orchestrator_additional_endpoints: + "https://orchestrator.ddog-gov.com": + - apikey2 +``` + + +### Configuration des variables d'environnement + +```bash +DD_ORCHESTRATOR_EXPLORER_ORCHESTRATOR_ADDITIONAL_ENDPOINTS='{\"https://orchestrator.datadoghq.com\": [\"apikey2\", \"apikey3\"], \"https://orchestrator.datadoghq.eu\": [\"apikey4\"]}' +``` + +## CI Visibility + +### Configuration YAML + +Nécessite l'Agent >= 6.38 ou 7.38. + +Dans `datadog.yaml` : +```yaml +evp_proxy_config: + [...] + additional_endpoints: + "https://-app.agent.datadoghq.com": + - apikey2 + - apikey3 + "https://-app.agent.datadoghq.eu": + - apikey4 +``` + +### Configuration des variables d'environnement + +```bash +DD_EVP_PROXY_CONFIG_ADDITIONAL_ENDPOINTS='{\"https://-app.agent.datadoghq.com\": [\"apikey2\", \"apikey3\"], \"https://-app.agent.datadoghq.eu\": [\"apikey4\"]}' +``` + +## Logs + +Utilisez l'Agent si vous souhaitez effectuer un envoi double de logs vers plusieurs organisations Datadog. Utilisez [Observability Pipelines][2] si vous souhaitez envoyer des logs à Datadog et vers des destinations externes. + +TCP nécessite la version >= 6.6 de l'Agent.
+HTTPS nécessite la version >= 6.13 de l'Agent. + +### Configuration YAML +Dans `datadog.yaml` : +```yaml +logs_config: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "agent-http-intake.logs.datadoghq.com" + Port: 443 + is_reliable: true +``` + +### Configuration des variables d'environnement + +Nécessite l'Agent >= 6.18 ou 7.18. + +```bash +DD_LOGS_CONFIG_FORCE_USE_HTTP=true +DD_LOGS_CONFIG_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"agent-http-intake.logs.datadoghq.com\", \"Port\": 443, \"is_reliable\": true}]" +``` + +{{% agent-dual-shipping %}} + +## Database Monitoring + +### Configuration YAML + +Nécessite l'Agent >= 6.29 ou 7.29. + +Dans `datadog.yaml` : +```yaml +database_monitoring: + samples: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "dbm-metrics-intake.datadoghq.com" + Port: 443 + is_reliable: true + activity: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "dbquery-intake.datadoghq.com" + Port: 443 + is_reliable: true + metrics: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "dbm-metrics-intake.datadoghq.com" + Port: 443 + is_reliable: true +``` + +### Configuration des variables d'environnement + +```bash +DD_DATABASE_MONITORING_SAMPLES_USE_HTTP=true +DD_DATABASE_MONITORING_SAMPLES_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"dbm-metrics-intake.datadoghq.com\", \"Port\": 443, \"is_reliable\": true}]" +DD_DATABASE_MONITORING_ACTIVITY_USE_HTTP=true +DD_DATABASE_MONITORING_ACTIVITY_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"dbquery-intake.datadoghq.com\", \"Port\": 443, \"is_reliable\": true}]" +DD_DATABASE_MONITORING_METRICS_USE_HTTP=true +DD_DATABASE_MONITORING_METRICS_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"dbm-metrics-intake.datadoghq.com\", \"Port\": 443, \"is_reliable\": true}]" +``` + +{{% agent-dual-shipping %}} + +## Network Devices + +### Configuration YAML + +Nécessite l'Agent >= 6.29 ou 7.29. + +Dans `datadog.yaml` : +```yaml +network_devices: + metadata: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "ndm-intake.datadoghq.com" + Port: 443 + is_reliable: true + snmp_traps: + forwarder: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "ndm-intake.datadoghq.com" + Port: 443 + is_reliable: true + netflow: + forwarder: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "ndm-intake.datadoghq.com" + Port: 443 + is_reliable: true +``` + +### Configuration des variables d'environnement + +```bash +DD_NETWORK_DEVICES_METADATA_USE_HTTP=true +DD_NETWORK_DEVICES_METADATA_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"ndm-intake.datadoghq.com\", \"Port\": 443, \"is_reliable\": true}]" +``` + +{{% agent-dual-shipping %}} + +## Chemin réseau + +### Configuration YAML + +Nécessite l'Agent >= 6.55 ou 7.55. + +Dans `datadog.yaml` : +```yaml +network_path: + forwarder: + use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "netpath-intake.datadoghq.com" + Port: 443 + is_reliable: true +``` + +### Configuration des variables d'environnement + +```bash +DD_NETWORK_PATH_FORWARDER_USE_HTTP=true +DD_NETWORK_PATH_FORWARDER_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"netpath-intake.datadoghq.com\", \"Port\": 443, \"is_reliable\": true}]" +``` + +{{% agent-dual-shipping %}} + +## Cloud Security Misconfigurations + +### Configuration YAML + +Dans `datadog.yaml` : +```yaml +compliance_config: + endpoints: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "https://-app.agent.datadoghq.eu" + Port: 443 + is_reliable: true +``` + +### Configuration des variables d'environnement + +```bash +DD_COMPLIANCE_CONFIG_ENDPOINTS_USE_HTTP=true +DD_COMPLIANCE_CONFIG_ENDPOINTS_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"https://-app.agent.datadoghq.eu\", \"Port\": 443, \"is_reliable\": true}]" +``` + +{{% agent-dual-shipping %}} + +## Workload Protection + +### Configuration YAML +Dans `datadog.yaml` : +```yaml +runtime_security_config: + endpoints: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "https://-app.agent.datadoghq.eu" + Port: 443 + is_reliable: true +``` + +### Configuration des variables d'environnement + +```bash +DD_RUNTIME_SECURITY_CONFIG_ENDPOINTS_USE_HTTP=true +DD_RUNTIME_SECURITY_CONFIG_ENDPOINTS_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"https://-app.agent.datadoghq.eu\", \"Port\": 443, \"is_reliable\": true}]" +``` + +{{% agent-dual-shipping %}} + +## Transmission multiple dans Kubernetes + +{{< tabs >}} {{% tab "Helm" %}} + +Si vous utilisez le [chart Helm de l'Agent Datadog][1], vous pouvez configurer ces paramètres avec une configmap. Dans le fichier `values.yaml`, définissez `useConfigMap: true` et ajoutez les paramètres pertinents à `customAgentConfig`. et ajoutez les paramètres appropriés à `customAgentConfig`. + +```yaml +# agents.useConfigMap -- Configures a configmap to provide the agent configuration. Use this in combination with the `agents.customAgentConfig` parameter. + useConfigMap: true + + # agents.customAgentConfig -- Specify custom contents for the datadog agent config (datadog.yaml) + ## ref: https://docs.datadoghq.com/agent/configuration/agent-configuration-files/?tab=agentv6 + ## ref: https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml + ## Note the `agents.useConfigMap` needs to be set to `true` for this parameter to be taken into account. + customAgentConfig: + additional_endpoints: + "https://app.datadoghq.com": + - apikey2 + - apikey3 + "https://app.datadoghq.eu": + - apikey4 + + logs_config: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "agent-http-intake.logs.datadoghq.com" + Port: 443 + is_reliable: true +``` + +Pour éviter d'exposer votre ou vos clés d'API en clair à l'intérieur de la `ConfigMap`, vous pouvez également utiliser la configuration de variable d'environnement et référencer un secret Kubernetes. Voici un exemple pour envoyer des métriques vers une région supplémentaire : + +1. Créez un secret Kubernetes avec la valeur de configuration de votre variable d'environnement issue de ce guide : + ```bash + kubectl create -n secret generic dual-shipping --from-literal metrics='{"https://app.datadoghq.eu": ["apikey4"]}' + ``` +2. Utilisez les [paramètres du chart Helm][2] `datadog.env` ou `datadog.envFrom` pour référencer ce secret dans votre configuration : + ```yaml + datadog: + [...] + env: + - name: DD_ADDITIONAL_ENDPOINTS + valueFrom: + secretKeyRef: + name: dual-shipping + key: metrics + ``` + +[1]: https://github.com/DataDog/helm-charts +[2]: https://github.com/DataDog/helm-charts/blob/e1ec85127de74c8b876eef6a81bb1579d17b49bf/charts/datadog/values.yaml#L563-L578 + +{{% /tab %}} + +{{% tab "Datadog Operator" %}} + +Si vous utilisez l'[opérateur de l'Agent Datadog][1], vous pouvez définir la clé de [remplacement][2] `[key].customConfigurations.[key].configData` pour définir ces paramètres. L'exemple ci-dessous remplace le fichier de configuration `datadog.yaml` du node Agent pour envoyer des métriques et des logs vers des régions supplémentaires. + +```yaml +apiVersion: datadoghq.com/v2alpha1 +kind: DatadogAgent +metadata: + name: datadog +spec: + override: + nodeAgent: + customConfigurations: + datadog.yaml: + configData: |- + additional_endpoints: + "https://app.datadoghq.com": + - apikey2 + - apikey3 + "https://app.datadoghq.eu": + - apikey4 + logs_config: + force_use_http: true + additional_endpoints: + - api_key: "apiKey2" + Host: "agent-http-intake.logs.datadoghq.com" + Port: 443 + is_reliable: true +``` + +Pour éviter d'exposer votre ou vos clés d'API en clair à l'intérieur de la `ConfigMap`, vous pouvez également utiliser la configuration de variable d'environnement et référencer un secret Kubernetes. Voici un exemple pour envoyer des métriques vers une région supplémentaire : + +1. Créez un secret Kubernetes avec la valeur de configuration de votre variable d'environnement issue de ce guide : + ```bash + kubectl create -n secret generic dual-shipping --from-literal metrics='{"https://app.datadoghq.eu": ["apikey4"]}' + ``` +2. Utilisez le paramètre `[key].env` pour référencer ce secret dans votre configuration : + ```yaml + apiVersion: datadoghq.com/v2alpha1 + kind: DatadogAgent + metadata: + name: datadog + spec: + override: + nodeAgent: + env: + - name: DD_ADDITIONAL_ENDPOINTS + valueFrom: + secretKeyRef: + name: dual-shipping + key: metrics + ``` + +[1]: https://github.com/DataDog/datadog-operator +[2]: https://github.com/DataDog/datadog-operator/blob/main/docs/configuration.v2alpha1.md + +{{% /tab %}} {{< /tabs >}} + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/observability_pipelines/ +[2]: /fr/agent/configuration/network/ \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-proxy.md b/content/fr/agent/guide/agent-5-proxy.md new file mode 100644 index 0000000000000..667ff0996795e --- /dev/null +++ b/content/fr/agent/guide/agent-5-proxy.md @@ -0,0 +1,1147 @@ +--- +disable_toc: false +private: true +title: Configuration du proxy de l'Agent 5 +--- + +## Section Overview + +Cette page couvre la configuration du proxy pour l'Agent 5. Pour obtenir des informations sur la dernière version de l'Agent, consultez la section [Configuration du proxy de l'Agent][1]. + +Si votre configuration réseau restreint le trafic sortant, vous pouvez utiliser un proxy pour transférer la totalité du trafic de l'Agent vers un ou plusieurs hosts dotés de stratégies de connexion sortante plus souples. + +Quelques options sont disponibles pour envoyer du trafic à Datadog via SSL/TLS pour les hosts qui ne sont pas directement connectés à Internet. + +1. Utiliser un proxy Web, tel que Squid ou Microsoft Web Proxy, qui est déjà déployé sur votre réseau. +2. Utiliser HAProxy (si vous souhaitez proxyfier **plus de 16 à 20 Agents** via le même proxy). +3. Utiliser l'Agent comme proxy pour un maximum de 16 Agents par proxy. **L'utilisation de l'Agent comme proxy n'est prise en charge que sur l'Agent 5**. + +## Conformité FIPS + +Pour obtenir des informations sur la configuration du proxy FIPS de l'Agent Datadog avec l'Agent Datadog, consultez la section [Conformité FIPS de Datadog][1]. Le proxy FIPS n'est disponible que dans la région US1-FED. Le proxy FIPS de l'Agent Datadog ne peut pas être utilisé avec un proxy standard. + +## Proxy Web + +Pour obtenir des informations spécifiques concernant Squid, consultez la section [Squid][#squid] de cette page. + +Les proxies Web traditionnels sont pris en charge de manière native par l'Agent. Si vous devez vous connecter à Internet via un proxy, modifiez le fichier de configuration de l'Agent. + +
+Le &ltHOST>:&ltPORT> utilisé pour le proxy des métriques ne peut PAS être utilisé pour le proxy des journaux. Voir la section Proxy pour les journaux Page (page). +
+ +Modifiez le fichier `datadog.conf` en ajoutant les informations de votre proxy : + +```text +# Si vous avez besoin d'un proxy pour vous connecter à Internet, indiquez les paramètres ci-dessous +proxy_host: mon-proxy.exemple.com +proxy_port: 3128 +proxy_user: mon_utilisateur +proxy_password: mon_mdp +``` + +N'oubliez pas de redémarrer l'Agent[2] pour que les nouveaux paramètres prennent effet. + +### Squid + +[Squid][3] est un proxy de transfert pour le Web prenant en charge HTTP, HTTPS, FTP et bien plus encore. Il fonctionne sur la plupart des systèmes d'exploitation disponibles, y compris Windows, et est distribué sous licence GNU GPL. Squid est une option simple si vous n'avez pas déjà un proxy Web en cours d'exécution dans votre réseau. + +#### Redirection vers un proxy avec Squid + +##### Configurer Squid pour envoyer uniquement du trafic vers Datadog + +Installez Squid sur un host qui dispose d'une connectivité à la fois avec vos Agents internes et Datadog. Utilisez le gestionnaire de packages de votre système d'exploitation ou installez le logiciel directement depuis la [page du projet Squid][3]. + +Pour configurer Squid, modifiez le fichier de configuration. Ce fichier se trouve généralement dans `/etc/squid/squid.conf` sous Linux ou `C:\squid\etc\squid.conf` sous Windows. + +Modifiez votre fichier de configuration `squid.conf` afin que Squid puisse accepter le trafic local et le transférer vers les intakes Datadog nécessaires : + +```conf +http_port 0.0.0.0:3128 + +acl local src 127.0.0.1/32 + +acl Datadog dstdomain .{{< region-param key="dd_site" >}} + +http_access allow Datadog +http_access allow local manager +``` + +##### Démarrer Squid + +Démarrez (ou redémarrez) Squid afin que vos nouvelles configurations puissent être appliquées. + +{{< tabs >}} +{{% tab "Linux" %}} + +```bash +sudo systemctl start squid +``` + +Si Squid est déjà en cours d'exécution, redémarrez plutôt Squid avec la commande suivante : + +```bash +sudo systemctl restart squid +``` + +{{% /tab %}} +{{% tab "Windows" %}} + +Si vous configurez Squid sous Windows, vous devez d'abord [configurer Squid en tant que service système][1]. Vous pouvez ensuite exécuter la commande suivante dans une invite de commandes Administrateur : + +```bash +net start squid +``` + +Si Squid est déjà en cours d'exécution, redémarrez plutôt Squid avec les commandes suivantes : + +```bash +net stop squid +net start squid +``` + +[1]: https://wiki.squid-cache.org/KnowledgeBase/Windows +{{% /tab %}} +{{< /tabs >}} + +##### Configuration de l'Agent Datadog + +Modifiez le fichier de configuration de l'Agent (`datadog.conf`) pour inclure les éléments suivants : + +```conf +proxy_host: 127.0.0.1 +proxy_port: 3128 +``` + +Après avoir enregistré ces modifications, [redémarrez l'Agent][2]. + +Vérifiez que Datadog est capable de recevoir les données de vos Agents en consultant votre [Infrastructure Overview][4]. + +## HAProxy + +[HAProxy][5] est une solution gratuite, rapide et fiable qui peut être utilisée comme proxy TCP ou HTTP. Même si HAProxy est généralement utilisé en tant que répartiteur de charge pour distribuer les requêtes entrantes vers un pool de serveurs, vous pouvez également l'utiliser pour faire transiter par un proxy le trafic de l'Agent vers Datadog à partir des hosts qui ne présentent aucune connectivité externe : + +`agent ---> haproxy ---> Datadog` + +Il s'agit d'une autre bonne option si vous n'avez pas de proxy Web facilement disponible dans votre réseau et que vous souhaitez proxyfier un grand nombre d'Agents. Dans certains cas, une seule instance HAProxy suffit à gérer le trafic de l'Agent local dans votre réseau, car chaque proxy peut accueillir plus de 1 000 Agents. + +**Remarque** : ce chiffre est une estimation prudente basée sur les performances des instances `m3.xl` spécifiquement. De nombreuses variables liées au réseau et à l'host peuvent influencer le débit de HAProxy, vous devez donc surveiller votre déploiement de proxy à la fois avant et après sa mise en service. Consultez la [documentation HAProxy][5] pour obtenir des informations supplémentaires. + +La communication entre HAProxy et Datadog est toujours chiffrée avec TLS. La communication entre l'host de l'Agent et l'host HAProxy n'est pas chiffrée par défaut, car le proxy et l'Agent sont supposés être sur le même host. Cependant, il est recommandé de sécuriser cette communication avec le chiffrement TLS si l'host HAproxy et l'host de l'Agent ne sont pas situés sur le même réseau local isolé. +Pour chiffrer les données entre l'Agent et HAProxy, vous devez créer un certificat x509 avec l'extension Subject Alternative Name (SAN) pour l'host HAProxy. Ce bundle de certificats (*.pem) doit contenir à la fois le certificat public et la clé privée. Consultez cet [article de blog HAProxy][6] pour obtenir plus d'informations. + + +**Remarque** : Téléchargez le certificat Datadog avec l'une des commandes suivantes : + +```shell +sudo apt-get install ca-certificates # (Debian, Ubuntu) +yum install ca-certificates # (CentOS, Red Hat) +``` + +Le chemin vers le certificat est `/etc/ssl/certs/ca-certificates.crt` pour Debian et Ubuntu, ou `/etc/ssl/certs/ca-bundle.crt` pour CentOS et Red Hat. + +### Redirection vers un proxy avec HAProxy + +#### Configuration de HAProxy + +HAProxy doit être installé sur un host qui dispose d'une connectivité vers Datadog. Vous pouvez utiliser l'un des fichiers de configuration suivants si vous ne l'avez pas déjà configuré. La configuration dépend du service Datadog et du site. Pour consulter les configurations en fonction de votre [site Datadog][7], utilisez le sélecteur `DATADOG SITE` sur la droite. + +**Remarque** : il est recommandé d'utiliser le fichier de configuration `HTTPS` si l'Agent et HAProxy ne font pas partie du même réseau local isolé. + +##### HTTP + +```conf +# Basic configuration +global + log 127.0.0.1 local0 + maxconn 4096 + stats socket /tmp/haproxy + +# Some sane defaults +defaults + log global + option dontlognull + retries 3 + option redispatch + timeout client 5s + timeout server 5s + timeout connect 5s + +# This declares a view into HAProxy statistics, on port 3833 +# You do not need credentials to view this page and you can +# turn it off once you are done with setup. +listen stats + bind *:3833 + mode http + stats enable + stats uri / + +# This section is to reload DNS Records +# Replace and with your DNS Server IP addresses. +# For HAProxy 1.8 and newer +resolvers my-dns + nameserver dns1 :53 + nameserver dns2 :53 + resolve_retries 3 + timeout resolve 2s + timeout retry 1s + accepted_payload_size 8192 + hold valid 10s + hold obsolete 60s + +# This declares the endpoint where your Agents connects for +# sending metrics (for example, the value of "dd_url"). +frontend metrics-forwarder + bind *:3834 + mode http + option tcplog + default_backend datadog-metrics + + use_backend datadog-api if { path_beg -i /api/v1/validate } + use_backend datadog-flare if { path_beg -i /support/flare/ } + +# This declares the endpoint where your Agents connects for +# sending traces (for example, the value of "endpoint" in the APM +# configuration section). +frontend traces-forwarder + bind *:3835 + mode tcp + option tcplog + default_backend datadog-traces + +# This declares the endpoint where your Agents connects for +# sending profiles (for example, the value of "apm_config.profiling_dd_url"). +frontend profiles-forwarder + bind *:3836 + mode tcp + option tcplog + default_backend datadog-profiles + +# This declares the endpoint where your agents connects for +# sending processes (for example, the value of "url" in the process +# configuration section). +frontend processes-forwarder + bind *:3837 + mode tcp + option tcplog + default_backend datadog-processes + +# This declares the endpoint where your Agents connects for +# sending Logs (e.g the value of "logs.config.logs_dd_url") +# If sending logs with force_use_http: true +frontend logs_http_frontend + bind *:3838 + mode http + option tcplog + default_backend datadog-logs-http + +# If sending logs with force_use_tcp: true +# frontend logs_frontend +# bind *:10514 +# mode tcp +# option tcplog +# default_backend datadog-logs + +# This declares the endpoint where your Agents connects for +# sending database monitoring metrics and activity (e.g the value of "database_monitoring.metrics.dd_url" and "database_monitoring.activity.dd_url") +frontend database_monitoring_metrics_frontend + bind *:3839 + mode http + option tcplog + default_backend datadog-database-monitoring-metrics + +# This declares the endpoint where your Agents connects for +# sending database monitoring samples (e.g the value of "database_monitoring.samples.dd_url") +frontend database_monitoring_samples_frontend + bind *:3840 + mode http + option tcplog + default_backend datadog-database-monitoring-samples + +# This declares the endpoint where your Agents connects for +# sending Network Devices Monitoring metadata (e.g the value of "network_devices.metadata.dd_url") +frontend network_devices_metadata_frontend + bind *:3841 + mode http + option tcplog + default_backend datadog-network-devices-metadata + +# This declares the endpoint where your Agents connects for +# sending Network Devices SNMP Traps data (e.g the value of "network_devices.snmp_traps.forwarder.dd_url") +frontend network_devices_snmp_traps_frontend + bind *:3842 + mode http + option tcplog + default_backend datadog-network-devices-snmp-traps + +# This declares the endpoint where your Agents connect for +# sending Instrumentation Telemetry data (e.g. the value of "apm_config.telemetry.dd_url") +frontend instrumentation_telemetry_data_frontend + bind *:3843 + mode tcp + option tcplog + default_backend datadog-instrumentations-telemetry + +# This declares the endpoint where your Agents connect for +# sending Network Devices Monitoring NetFlow flows (for example, the value of "network_devices.netflow.forwarder.dd_url") +frontend network_devices_netflow_frontend + bind *:3845 + mode http + option tcplog + default_backend datadog-network-devices-netflow + +# This declares the endpoint where your Agents connects for +# receiving Remote Configurations (for example, the value of "remote_configuration.rc_dd_url") +frontend remote_configuration_frontend + bind *:3846 + mode http + option tcplog + default_backend datadog-remote-configuration + +# This declares the endpoint where your Agents connect for +# sending Network Path data (for example, the value of "network_path.forwarder.dd_url") +frontend network_path_frontend + bind *:3847 + mode http + option tcplog + default_backend datadog-network-path + +# This is the Datadog server. In effect, any TCP request coming +# to the forwarder frontends defined above are proxied to +# Datadog's public endpoints. +backend datadog-metrics + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 metrics.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership metrics.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-api + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 api.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership api.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-flare + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 flare.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership flare.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-traces + balance roundrobin + mode tcp + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 trace.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership trace.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-profiles + balance roundrobin + mode tcp + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 intake.profile.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership profile.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-processes + balance roundrobin + mode tcp + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 process.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership process.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-logs-http + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 agent-http-intake.logs.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server datadog agent-http-intake.logs.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-database-monitoring-metrics + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 dbm-metrics-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server datadog agent-http-intake.logs.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-database-monitoring-samples + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 dbquery-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server datadog agent-http-intake.logs.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-network-devices-metadata + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 ndm-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership ndm-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-network-devices-snmp-traps + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 snmp-traps-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership snmp-traps-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-instrumentations-telemetry + balance roundrobin + mode tcp + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 instrumentation-telemetry-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership instrumentation-telemetry-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-network-devices-netflow + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 ndmflow-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership ndmflow-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-remote-configuration + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 config.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership config.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-network-path + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 netpath-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership netpath-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file +``` + +##### HTTPS + +Cette configuration ajoute le chiffrement SSL/TLS sur la communication entre l'Agent et HAProxy. Remplacez la variable `` par le chemin vers le bundle de certificats du proxy (*.pem). + +```conf +# Basic configuration +global + log 127.0.0.1 local0 + maxconn 4096 + stats socket /tmp/haproxy + +# Some sane defaults +defaults + log global + option dontlognull + retries 3 + option redispatch + timeout client 5s + timeout server 5s + timeout connect 5s + +# This declares a view into HAProxy statistics, on port 3833 +# You do not need credentials to view this page and you can +# turn it off once you are done with setup. +listen stats + bind *:3833 + mode http + stats enable + stats uri / + +# This section is to reload DNS Records +# Replace and with your DNS Server IP addresses. +# For HAProxy 1.8 and newer +resolvers my-dns + nameserver dns1 :53 + nameserver dns2 :53 + resolve_retries 3 + timeout resolve 2s + timeout retry 1s + accepted_payload_size 8192 + hold valid 10s + hold obsolete 60s + +# This declares the endpoint where your Agents connect for +# sending metrics (for example, the value of "dd_url"). +frontend metrics-forwarder + bind *:3834 ssl crt + mode http + option tcplog + default_backend datadog-metrics + + use_backend datadog-api if { path_beg -i /api/v1/validate } + use_backend datadog-flare if { path_beg -i /support/flare/ } + +# This declares the endpoint where your Agents connect for +# sending traces (for example, the value of "endpoint" in the APM +# configuration section). +frontend traces-forwarder + bind *:3835 ssl crt + mode tcp + option tcplog + default_backend datadog-traces + +# This declares the endpoint where your Agents connect for +# sending profiles (for example, the value of "apm_config.profiling_dd_url"). +frontend profiles-forwarder + bind *:3836 ssl crt + mode tcp + option tcplog + default_backend datadog-profiles + +# This declares the endpoint where your Agents connect for +# sending processes (for example, the value of "url" in the process +# configuration section). +frontend processes-forwarder + bind *:3837 ssl crt + mode tcp + option tcplog + default_backend datadog-processes + +# This declares the endpoint where your Agents connect for +# sending Logs (e.g the value of "logs.config.logs_dd_url") +# If sending logs with force_use_http: true +frontend logs_http_frontend + bind *:3838 ssl crt + mode http + option tcplog + default_backend datadog-logs-http + +# If sending logs with force_use_tcp: true +# frontend logs_frontend +# bind *:10514 ssl crt +# mode tcp +# option tcplog +# default_backend datadog-logs + +# This declares the endpoint where your Agents connect for +# sending database monitoring metrics and activity (e.g the value of "database_monitoring.metrics.dd_url" and "database_monitoring.activity.dd_url") +frontend database_monitoring_metrics_frontend + bind *:3839 ssl crt + mode http + option tcplog + default_backend datadog-database-monitoring-metrics + +# This declares the endpoint where your Agents connect for +# sending database monitoring samples (e.g the value of "database_monitoring.samples.dd_url") +frontend database_monitoring_samples_frontend + bind *:3840 ssl crt + mode http + option tcplog + default_backend datadog-database-monitoring-samples + +# This declares the endpoint where your Agents connect for +# sending Network Devices Monitoring metadata (e.g the value of "network_devices.metadata.dd_url") +frontend network_devices_metadata_frontend + bind *:3841 ssl crt + mode http + option tcplog + default_backend datadog-network-devices-metadata + +# This declares the endpoint where your Agents connect for +# sending Network Devices SNMP Traps data (e.g the value of "network_devices.snmp_traps.forwarder.dd_url") +frontend network_devices_snmp_traps_frontend + bind *:3842 ssl crt + mode http + option tcplog + default_backend datadog-network-devices-snmp-traps + + +# This declares the endpoint where your Agents connect for +# sending Instrumentation Telemetry data (e.g. the value of "apm_config.telemetry.dd_url") +frontend instrumentation_telemetry_data_frontend + bind *:3843 ssl crt + mode tcp + option tcplog + default_backend datadog-instrumentations-telemetry + +# This declares the endpoint where your Agents connect for +# sending Network Devices Monitoring NetFlow flows (for example, the value of "network_devices.netflow.forwarder.dd_url") +frontend network_devices_netflow_frontend + bind *:3845 ssl crt + mode http + option tcplog + default_backend datadog-network-devices-netflow + +# This declares the endpoint where your Agents connects for +# receiving Remote Configurations (for example, the value of "remote_configuration.rc_dd_url") +frontend remote_configuration_frontend + bind *:3846 ssl crt + mode http + option tcplog + default_backend datadog-remote-configuration + +# This declares the endpoint where your Agents connect for +# sending Network Path data (for example, the value of "network_path.forwarder.dd_url") +frontend network_path_frontend + bind *:3847 ssl crt + mode http + option tcplog + default_backend datadog-network-path + +# This is the Datadog server. In effect any TCP request coming +# to the forwarder frontends defined above are proxied to +# Datadog's public endpoints. +backend datadog-metrics + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 metrics.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership metrics.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-api + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 api.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership api.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-flare + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 flare.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership flare.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-traces + balance roundrobin + mode tcp + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 trace.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership trace.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-profiles + balance roundrobin + mode tcp + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 intake.profile.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership profile.agent.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-processes + balance roundrobin + mode tcp + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 process.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership process.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-logs-http + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 agent-http-intake.logs.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server datadog agent-http-intake.logs.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-database-monitoring-metrics + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 dbm-metrics-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server datadog agent-http-intake.logs.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-database-monitoring-samples + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 dbquery-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server datadog agent-http-intake.logs.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-network-devices-metadata + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 ndm-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership ndm-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-network-devices-snmp-traps + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 snmp-traps-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership snmp-traps-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-instrumentations-telemetry + balance roundrobin + mode tcp + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 instrumentation-telemetry-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership instrumentation-telemetry-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-network-devices-netflow + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 ndmflow-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership ndmflow-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-remote-configuration + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 config.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership config.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file + +backend datadog-network-path + balance roundrobin + mode http + # The following configuration is for HAProxy 1.8 and newer + server-template mothership 5 netpath-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file check resolvers my-dns init-addr none resolve-prefer ipv4 + # Uncomment the following configuration for older HAProxy versions + # server mothership netpath-intake.{{< region-param key="dd_site" >}}:443 check port 443 ssl verify required ca-file +``` + +**Remarque** : vous pouvez utiliser `verify none` au lieu de `verify required ca-file ` si vous ne parvenez pas à obtenir les certificats sur l'host du proxy, mais sachez que HAProxy ne pourra pas vérifier le certificat d'intake de Datadog dans ce cas. + +HAProxy 1.8 et les versions plus récentes permettent la découverte de services DNS pour détecter les changements de serveur et les appliquer automatiquement à votre configuration. +Si vous utilisez une version plus ancienne de HAProxy, vous devez recharger ou redémarrer HAProxy. **Il est recommandé d'avoir une tâche `cron` qui recharge HAProxy toutes les 10 minutes** (tel que `service haproxy reload`) pour forcer une actualisation du cache DNS de HAProxy, au cas où {{< region-param key="dd_full_site" code="true" >}} basculerait vers une autre adresse IP. + +#### Configuration de l'Agent Datadog + +Lors de l'utilisation du chiffrement entre l'Agent et HAProxy, si l'Agent n'a pas accès au certificat du proxy, est incapable de le valider ou si la validation n'est pas nécessaire, vous pouvez modifier le fichier de configuration `datadog.yaml` de l'Agent et définir `skip_ssl_validation` sur `true`. +Avec cette option définie sur `true`, l'Agent ignore l'étape de validation du certificat et ne vérifie pas l'identité du proxy, mais la communication est toujours chiffrée avec SSL/TLS. + +```yaml +skip_ssl_validation: true +``` + +Enfin, [redémarrez l'Agent][2]. + +Pour vérifier que tout fonctionne correctement, consultez les statistiques HAProxy à l'adresse `http://haproxy.example.com:3833` ainsi que l'[Infrastructure Overview][4]. + +Modifiez chaque Agent pour qu'il pointe vers HAProxy en définissant son `dd_url` sur l'adresse de HAProxy, par exemple : `haproxy.example.com`. +Ce paramètre `dd_url` se trouve dans le fichier `datadog.conf`. + +`dd_url: http://haproxy.example.com:3834` + +Pour envoyer des traces ou des processus en passant par le proxy, définissez les paramètres suivants dans le fichier `datadog.conf` : + +```conf +[trace.api] +endpoint = http://haproxy.example.com:3835 + +[process.api] +endpoint = http://haproxy.example.com:3837 +``` + +Modifiez la configuration de votre superviseur pour désactiver la vérification du certificat SSL. Ceci est nécessaire pour forcer Python à ignorer la différence entre le hostname du certificat SSL (`app.datadoghq.com`) et le hostname de votre HAProxy. Le fichier de configuration du superviseur se trouve à l'emplacement suivant : + +* `/etc/dd-agent/supervisor_ddagent.conf` sur les systèmes basés sur Debian +* `/etc/dd-agent/supervisor.conf` sur les systèmes basés sur Red Hat +* `/opt/local/datadog/supervisord/supervisord.conf` sur SmartOS +* `/usr/local/etc/datadog/supervisord/supervisord.conf` sur FreeBSD +* `~/.datadog-agent/supervisord/supervisord.conf` sur macOS + +Si on part du principe que le fichier de supervision se nomme `` : + +```bash +sed -i 's/ddagent.py/ddagent.py --sslcheck=0/' +``` + +Si vous utilisez l'Agent Windows, modifiez votre fichier de configuration `datadog.conf` et ajoutez cette option : + +```conf +skip_ssl_validation: yes +``` + +Enfin, [redémarrez l'Agent][2]. + +Pour vérifier que tout fonctionne correctement, consultez les statistiques HAProxy à l'adresse `http://haproxy.example.com:3833` ainsi que l'[Infrastructure Overview][4]. + +## NGINX + +[NGINX][8] est un serveur Web qui peut également être utilisé comme reverse proxy, répartiteur de charge, proxy de messagerie ou cache HTTP. Vous pouvez également utiliser NGINX comme proxy pour vos Agents Datadog : + +`agent ---> nginx ---> Datadog` + +La communication entre NGINX et Datadog est toujours chiffrée avec TLS. La communication entre l'host de l'Agent et l'host NGINX n'est pas chiffrée par défaut, car le proxy et l'Agent sont supposés être sur le même host. Cependant, il est recommandé de sécuriser cette communication avec le chiffrement TLS s'ils ne sont pas situés sur le même réseau local isolé. +Afin de chiffrer les données entre l'Agent et NGINX, vous devez créer un certificat x509 avec l'extension Subject Alternative Name (SAN) pour l'host NGINX. + +**Remarque** : téléchargez le certificat Datadog avec l'une des commandes suivantes : + +```shell +sudo apt-get install ca-certificates # (Debian, Ubuntu) +yum install ca-certificates # (CentOS, Red Hat) +``` + +Le chemin vers le certificat est `/etc/ssl/certs/ca-certificates.crt` pour Debian et Ubuntu ou `/etc/ssl/certs/ca-bundle.crt` pour CentOS et Red Hat. + +### Redirection vers un proxy avec NGINX + +#### Configuration de NGINX + +NGINX doit être installé sur un host qui dispose d'une connectivité vers Datadog. Vous pouvez utiliser l'un des fichiers de configuration suivants si vous ne l'avez pas déjà configuré. La configuration dépend du service Datadog et du site. Pour consulter les configurations en fonction de votre [site Datadog][7], utilisez le sélecteur `DATADOG SITE` sur la droite. + +**Remarque** : il est recommandé d'utiliser le fichier de configuration `HTTPS` si l'Agent et NGINX ne font pas partie du même réseau local isolé. + +##### HTTP + +```conf +user nginx; +worker_processes auto; +error_log /var/log/nginx/error.log; +pid /run/nginx.pid; + +events { + worker_connections 1024; +} +# HTTP Proxy for Datadog Agent +http { + + proxy_ssl_trusted_certificate ; + + server { + listen 3834; #listen for metrics + access_log off; + + location /api/v1/validate { + proxy_ssl_verify on; + proxy_pass https://api.{{< region-param key="dd_site" >}}:443/api/v1/validate; + } + location /support/flare/ { + proxy_ssl_verify on; + proxy_pass https://flare.{{< region-param key="dd_site" >}}:443/support/flare/; + } + location / { + proxy_ssl_verify on; + proxy_pass https://metrics.agent.{{< region-param key="dd_site" >}}:443/; + } + } +} +# TCP Proxy for Datadog Agent +stream { + + proxy_ssl_trusted_certificate ; + + server { + listen 3835; #listen for traces + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass trace.agent.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3836; #listen for profiles + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass intake.profile.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3837; #listen for processes + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass process.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3838; #listen for logs with force_use_http: true + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass agent-http-intake.logs.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3839; #listen for database monitoring metrics + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass dbm-metrics-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3840; #listen for database monitoring samples + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass dbquery-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3841; #listen for network devices metadata + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass ndm-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3842; #listen for network devices traps + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass snmp-traps-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3843; #listen for instrumentations telemetry data + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass instrumentation-telemetry-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3845; #listen for network devices netflow + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass ndmflow-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3846; #listen for Remote Configuration requests + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass config.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3847; #listen for network path + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass netpath-intake.{{< region-param key="dd_site" >}}:443; + } +} +``` + +##### HTTPS + +Cette configuration ajoute le chiffrement SSL/TLS sur la communication entre l'Agent et NGINX. Remplacez `` par le chemin vers le certificat public du proxy et `` par le chemin vers la clé privée. + +```conf +user nginx; +worker_processes auto; +error_log /var/log/nginx/error.log; +pid /run/nginx.pid; + +events { + worker_connections 1024; +} +# HTTP Proxy for Datadog Agent +http { + + proxy_ssl_trusted_certificate ; + + ssl_certificate ; + ssl_certificate_key ; + + server { + listen 3834 ssl; #listen for metrics + access_log off; + + location /api/v1/validate { + proxy_ssl_verify on; + proxy_pass https://api.{{< region-param key="dd_site" >}}:443/api/v1/validate; + } + location /support/flare/ { + proxy_ssl_verify on; + proxy_pass https://flare.{{< region-param key="dd_site" >}}:443/support/flare/; + } + location / { + proxy_ssl_verify on; + proxy_pass https://metrics.agent.{{< region-param key="dd_site" >}}:443/; + } + } +} +# TCP Proxy for Datadog Agent +stream { + + proxy_ssl_trusted_certificate ; + + ssl_certificate ; + ssl_certificate_key ; + + server { + listen 3835 ssl; #listen for traces + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass trace.agent.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3836 ssl; #listen for profiles + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass intake.profile.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3837 ssl; #listen for processes + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass process.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3838 ssl; #listen for logs with force_use_http: true + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass agent-http-intake.logs.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3839 ssl; #listen for database monitoring metrics + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass dbm-metrics-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3840 ssl; #listen for database monitoring samples + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass dbquery-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3841 ssl; #listen for network devices metadata + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass ndm-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3842 ssl; #listen for network devices traps + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass snmp-traps-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3843 ssl; #listen for instrumentations telemetry data + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass instrumentation-telemetry-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3845 ssl; #listen for network devices netflow + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass ndmflow-intake.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3846 ssl; #listen for Remote Configuration requests + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass config.{{< region-param key="dd_site" >}}:443; + } + server { + listen 3847 ssl; #listen for network path + proxy_ssl_verify on; + proxy_ssl on; + proxy_pass netpath-intake.{{< region-param key="dd_site" >}}:443; + } +} +``` + +**Remarque** : vous pouvez supprimer `proxy_ssl_verify on` si vous ne parvenez pas à obtenir les certificats sur l'host du proxy, mais sachez que NGINX ne pourra pas vérifier le certificat d'intake de Datadog dans ce cas. + +#### Configuration de l'Agent Datadog + +Modifiez chaque fichier de configuration de l'Agent pour qu'il pointe vers Nginx en définissant son `dd_url` sur l'adresse de Nginx, par exemple : `nginx.example.com`. +Ce paramètre `dd_url` se trouve dans le fichier `datadog.yaml`. + +`dd_url: "://nginx.example.com:3834"` + +Remplacez `` par `https` si vous avez précédemment choisi la configuration HAProxy HTTPS, ou par `http` si vous n'avez pas choisi HTTPS. + +Pour envoyer des traces, des profils, des processus et des logs via le proxy, configurez les éléments suivants dans le fichier `datadog.yaml` : + +```yaml +apm_config: + apm_dd_url: ://nginx.example.com:3835 + profiling_dd_url: ://nginx.example.com:3836/api/v2/profile + telemetry: + dd_url: ://nginx.example.com:3843 + +process_config: + process_dd_url: ://nginx.example.com:3837 + +logs_config: + force_use_http: true + logs_dd_url: nginx.example.com:3838 + # Comment the line below to use encryption between the Agent and NGINX + logs_no_ssl: true + +database_monitoring: + metrics: + logs_dd_url: nginx.example.com:3839 + # Comment the line below to use encryption between the Agent and NGINX + logs_no_ssl: true + activity: + logs_dd_url: nginx.example.com:3839 + # Comment the line below to use encryption between the Agent and NGINX + logs_no_ssl: true + samples: + logs_dd_url: nginx.example.com:3840 + # Comment the line below to use encryption between the Agent and NGINX + logs_no_ssl: true + +network_devices: + metadata: + logs_dd_url: nginx.example.com:3841 + # Comment the line below to use encryption between the Agent and NGINX + logs_no_ssl: true + snmp_traps: + forwarder: + logs_dd_url: nginx.example.com:3842 + # Comment the line below to use encryption between the Agent and NGINX + logs_no_ssl: true + netflow: + forwarder: + logs_dd_url: nginx.example.com:3845 + # Comment the line below to use encryption between the Agent and NGINX + logs_no_ssl: true + +remote_configuration: + rc_dd_url: nginx.example.com:3846 + # Comment the line below to use encryption between the Agent and NGINX + no_tls: true +``` + + +Lors de l'utilisation du chiffrement entre l'Agent et NGINX, si l'Agent n'a pas accès au certificat du proxy, est incapable de le valider ou si la validation n'est pas nécessaire, vous pouvez modifier le fichier de configuration `datadog.yaml` de l'Agent et définir `skip_ssl_validation` sur `true`. +Avec cette option définie sur `true`, l'Agent ignore l'étape de validation du certificat et ne vérifie pas l'identité du proxy, mais la communication est toujours chiffrée avec SSL/TLS. + +```yaml +skip_ssl_validation: true +``` + +Lors de l'envoi de logs via TCP, consultez la section [Proxy TCP pour les logs][9]. + +## Agent Datadog + +Il est recommandé d'utiliser un proxy réel (un proxy Web ou HAProxy) pour transférer votre trafic vers Datadog, cependant si ces options ne vous sont pas disponibles, il est possible de configurer une instance de l'**Agent v5** pour servir de proxy. + +1. Désignez un nœud **sur lequel est exécuté datadog-agent** comme proxy. + Dans cet exemple, on part du principe que le nom du proxy est `proxy-node`. Ce nœud **doit** pouvoir atteindre `https://app.datadoghq.com`. + +2. Vérifiez la connectivité SSL sur `proxy-node` : + + ```shell + curl -v https://app.datadoghq.com/account/login 2>&1 | grep "200 OK" + ``` + +3. Autorisez le trafic non local sur `proxy-node` en modifiant la ligne suivante dans `datadog.conf`. + `# non_local_traffic: no` doit être remplacé par `non_local_traffic: yes`. + +4. Assurez-vous que `proxy-node` peut être atteint à partir des autres nœuds sur le port 17123. Démarrez l'Agent sur le `proxy-node` et exécutez-le sur les autres nœuds : + + `curl -v http://proxy-node:17123/status 2>&1 | grep "200 OK"` + +5. Mettez à jour les nœuds non-proxy afin de rediriger vers `proxy-node`. Modifiez la ligne suivante dans `datadog.conf` en remplaçant : + + `dd_url: https://app.datadoghq.com` + par + `dd_url: http://proxy-node:17123` + +6. Vérifiez sur la [page Infrastructure][1] que tous les nœuds rapportent des données à Datadog. + + +[1]: https://app.datadoghq.com/infrastructure#overview + +[1]: /fr/agent/configuration/fips-compliance +[2]: /fr/agent/guide/agent-5-commands +[3]: http://www.squid-cache.org/ +[4]: https://app.datadoghq.com/infrastructure +[5]: http://haproxy.1wt.eu +[6]: https://www.haproxy.com/blog/haproxy-ssl-termination/ +[7]: /fr/getting_started/site/ +[8]: https://www.nginx.com +[9]: /fr/agent/logs/proxy \ No newline at end of file diff --git a/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json index 1636323641faa..cad09139e6eec 100644 --- a/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-ed6465a0-5303-45e8-814f-26b9621a3692": { + "ast-str-d99877d8-715e-4487-94e7-253da6a3fcc3": { "string": "Options de confidentialité de Mobile Session Replay" } }, "description": { - "ast-str-96c0458c-0687-4a95-9d66-6fa097d06464": { + "ast-str-4c42a407-da36-4de3-b98c-b310d7ca15a5": { "string": "Configurer des options de confidentialité pour Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-39f6993e-dc05-4968-992e-893036c5506b": { + "ast-str-3eb652ce-96b4-40b2-8255-2d04b7840875": { "string": "Session Replay sur mobile" } }, "tag": { - "ast-str-af631d8c-8fc9-4e98-bee2-6afd3dbdf311": { + "ast-str-715f18f2-b07d-4c37-8060-9fddf27ea39a": { "string": "Documentation" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-1c25456b-e5f6-4548-af66-3fae7a05f423": { + "ast-str-3dcad688-c0ec-4ce2-a4d4-6aa755c86ddb": { "string": "Impact de Mobile Session Replay sur les performances des applications" } }, "tag": { - "ast-str-a29b4ca3-075b-414c-8a68-0c33e0cfae6b": { + "ast-str-1781edad-2125-43bb-8a68-c8e611add905": { "string": "Documentation" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-7d913357-3de0-47f5-995d-20902115e88a": { + "ast-str-0bccdca7-2ab8-4ce2-8dc0-b149e35c98bc": { "string": "Installer et configurer Mobile Session Replay" } }, "tag": { - "ast-str-fd654bd7-9157-4811-bf1b-322a453db21e": { + "ast-str-1cb3706b-3e56-4a7b-ba44-13366a28e5e8": { "string": "Documentation" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-6aae3788-1d07-41c1-943e-ce84e0eea71a": { + "ast-str-d0f38e09-f640-4129-ad56-4597b2eeca29": { "string": "Dépanner Mobile Session Replay" } }, "tag": { - "ast-str-e66e4cab-d520-4636-b58e-572a077d362a": { + "ast-str-d6aa91e3-beaf-4709-bc4c-fa48a8677e1f": { "string": "Documentation" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-efabc85f-a81a-409d-9ef3-4e3c49b0e2c8": { + "ast-str-dd5212b7-7eee-4399-8463-267cc0189b1f": { "string": "Session Replay" } }, "tag": { - "ast-str-6d52c7ad-1cdd-4740-b4ef-e0103e5209e0": { + "ast-str-d3836ed8-23dd-4e60-9e62-d7edd17541fb": { "string": "Documentation" } } diff --git a/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index c85dad101d001..f78d0c5f02824 100644 --- a/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-5b85bfe0-cdd5-4616-80a4-f7b16289b9c8": { + "ast-str-209f705e-d4b1-4890-ad80-6be194d8fc99": { "string": "Installer et configurer Mobile Session Replay" } }, "description": { - "ast-str-9ab98d47-4bc8-4cff-aab2-1a2c829a477c": { + "ast-str-eacb40a8-910e-4fa5-a34f-1c13ea5b02db": { "string": "Installer et configurer Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/product_analytics/session_replay/mobile", "text": { - "ast-str-6b7dd627-cfc2-449b-930b-c7c9202bb7f2": { + "ast-str-223ce0a2-060a-47f2-ad20-b1b96b4918f0": { "string": "Session Replay sur mobile" } }, "tag": { - "ast-str-ad1f968c-ba7d-47fb-a595-fd656cf1a665": { + "ast-str-e23f3edb-4334-447e-b65a-b533378c2bfc": { "string": "Documentation" } } @@ -31,12 +31,12 @@ "1": { "link": "/product_analytics/session_replay/mobile/app_performance", "text": { - "ast-str-5d4a3252-2fe5-4bd4-a75c-043fcd234a1b": { + "ast-str-dae9ced1-e49b-4d03-b084-8e0e2756874e": { "string": "Impact de Mobile Session Replay sur les performances des applications" } }, "tag": { - "ast-str-257753f4-c29e-4eb9-8c21-0b283b791d22": { + "ast-str-240a6e5a-af1c-432f-b5d0-61100ba56b35": { "string": "Documentation" } } @@ -44,12 +44,12 @@ "2": { "link": "/product_analytics/session_replay/mobile/privacy_options", "text": { - "ast-str-7a98b6b8-a1cb-461b-985f-a6b645661066": { + "ast-str-d089e855-4841-473c-882d-1d9eaa0155d6": { "string": "Options de confidentialité de Mobile Session Replay" } }, "tag": { - "ast-str-33326998-f6db-4a64-ad65-8e45a2955242": { + "ast-str-881372cb-a4b9-44d6-9b14-86ead284f858": { "string": "Documentation" } } @@ -57,12 +57,12 @@ "3": { "link": "/product_analytics/session_replay/mobile/troubleshooting", "text": { - "ast-str-304a8f3a-51bb-426b-8ca2-bc7ae13a7cd9": { + "ast-str-ab371002-b6f3-4bbe-86db-f54d98a69f2a": { "string": "Dépanner Mobile Session Replay" } }, "tag": { - "ast-str-6c5f9454-e16e-4312-8512-305ad68f7b0e": { + "ast-str-ac779f5a-d0dc-4ab9-8774-7dfc3c1d4d95": { "string": "Documentation" } } @@ -70,12 +70,12 @@ "4": { "link": "/product_analytics/session_replay", "text": { - "ast-str-cc897da2-4f3a-435e-984d-b0002dda36cd": { + "ast-str-8a383d5b-df7f-42f1-a10b-f640f3cf7b40": { "string": "Session Replay" } }, "tag": { - "ast-str-af12f79d-bd7f-4f9e-8ea7-72971640339c": { + "ast-str-7c9ac9d0-5aa2-4864-b747-232082345ea5": { "string": "Documentation" } } diff --git a/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 980331ef2d93f..4853317d3853b 100644 --- a/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-cf77a210-8bdd-4954-95fb-dab7e2deba53": { + "ast-str-1d6765ec-05f2-4061-b6eb-3491b6f860a1": { "string": "Options de confidentialité de Mobile Session Replay" } }, "description": { - "ast-str-5c1d73d9-4393-4d1a-a7de-55de0b118877": { + "ast-str-dca2dfce-1c6c-482e-bb94-2965f89d14fd": { "string": "Configurer des options de confidentialité pour Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-7783691c-f46e-4c9b-b0ec-ee8d288c7337": { + "ast-str-8475c94d-f84d-4674-82fc-decb65d009e7": { "string": "Session Replay sur mobile" } }, "tag": { - "ast-str-d5affb81-aca0-40fa-8c23-16f0d059f758": { + "ast-str-c5645fe4-d05f-444f-a89d-adc8e96cb73b": { "string": "Documentation" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-c868b0cd-784e-42f2-be58-7983427d84ea": { + "ast-str-2362c5d7-1131-40ad-a000-fc28bb1491c8": { "string": "Impact de Mobile Session Replay sur les performances des applications" } }, "tag": { - "ast-str-2a10486f-3901-4eb7-b003-20cc7d23f1ee": { + "ast-str-bd194498-7095-4067-baee-d72654e0a6db": { "string": "Documentation" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-cd9f333d-13ac-4283-bba5-680fc1b94093": { + "ast-str-c951c01a-4c8a-4288-ad38-6807d8898605": { "string": "Installer et configurer Mobile Session Replay" } }, "tag": { - "ast-str-1e9dc563-9f7e-4a3c-b6ff-84303e00e726": { + "ast-str-96c999f2-7bb9-4295-a6cd-066ab4e9530b": { "string": "Documentation" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-71010d1e-8251-4250-9cf0-5685318f478c": { + "ast-str-d44ba4c0-7fd6-40eb-bd41-46219b2a7e4c": { "string": "Dépanner Mobile Session Replay" } }, "tag": { - "ast-str-1fef1fd1-f553-4651-b0c9-b05ec8549243": { + "ast-str-9fe48841-97e2-4863-be00-00e71cbcc11b": { "string": "Documentation" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-fcfb9502-d1c1-4ec1-9898-667568c705e8": { + "ast-str-a5a66c70-f3e2-48a4-bcdd-aab5a769c6b1": { "string": "Session Replay" } }, "tag": { - "ast-str-d4dec885-9a19-45eb-bf6d-2d227790d9cb": { + "ast-str-064c6aa0-3fef-4cfd-a91d-54bad56aab0e": { "string": "Documentation" } } diff --git a/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 1e30efe1a8a5c..147f50f799a7f 100644 --- a/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-485e15cc-0738-4baa-98b9-db3f8d752021": { + "ast-str-7c124611-ecb3-4fa6-abe2-4a8158daaf75": { "string": "Installer et configurer Mobile Session Replay" } }, "description": { - "ast-str-2b6994a7-5d24-4d85-8aca-c842cf4ee2ee": { + "ast-str-6e790010-0410-4bc8-8272-4a12fbf32d04": { "string": "Installer et configurer Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-9213fa71-a375-4bf7-9b6a-8015d1282f36": { + "ast-str-d16ef26e-381b-4eb8-b1de-70f969cd4eec": { "string": "Session Replay sur mobile" } }, "tag": { - "ast-str-fa56b914-44fe-4871-940d-7603600b6274": { + "ast-str-e12e54d4-5679-464d-8395-97238d1ae11b": { "string": "Documentation" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-379f506e-3d7a-4fea-b58f-490fec1cc61a": { + "ast-str-59880ecd-7a93-4b65-be2c-3e312586a956": { "string": "Impact de Mobile Session Replay sur les performances des applications" } }, "tag": { - "ast-str-7a8e5a41-0f5a-45ec-a218-471f1f769312": { + "ast-str-f5de440d-94a8-4c72-b204-4ebad6ab4d53": { "string": "Documentation" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/privacy_options", "text": { - "ast-str-a35c2181-a87a-4f27-a952-7e4a2196c747": { + "ast-str-22570d2d-e2c7-495b-894c-d503eaa47a6c": { "string": "Options de confidentialité de Mobile Session Replay" } }, "tag": { - "ast-str-166d237b-a671-42e7-b59d-8653457db279": { + "ast-str-71164fa2-9910-4173-8da0-c119c38df091": { "string": "Documentation" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-7202702e-8627-46a1-b4c1-9d7d0ce8f95a": { + "ast-str-a966523b-1775-4b19-ab4c-5b1b1eb779bb": { "string": "Dépanner Mobile Session Replay" } }, "tag": { - "ast-str-fd107bd1-b4a4-4fdd-89e5-1240a31a9f04": { + "ast-str-2a4d546c-ef45-420a-bda3-eddb6f8b9e30": { "string": "Documentation" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-58e8f44c-bfb9-4d8b-b918-3b9216e1e522": { + "ast-str-aaea3198-36d2-441f-92f5-bb4c0f304fe2": { "string": "Session Replay" } }, "tag": { - "ast-str-45071591-2694-4e30-8e47-902cdeb8a28b": { + "ast-str-ab6c252b-84b1-4b1e-aa85-73679522086b": { "string": "Documentation" } } @@ -83,12 +83,12 @@ "5": { "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", "text": { - "ast-str-22e2b6a5-6d8d-4a2a-a861-8142fdd70d05": { + "ast-str-e7e182ec-27f5-4009-b3c2-4042ac233d91": { "string": "Suivi des vues Web" } }, "tag": { - "ast-str-0cd14bce-40c2-46b6-93f1-d5a05bd92239": { + "ast-str-d968d7e5-2c3c-426d-8969-9ffa2437cf80": { "string": "Documentation" } } diff --git a/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json index 138d6b6f1f645..d3586edb5c254 100644 --- a/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-ed6465a0-5303-45e8-814f-26b9621a3692": { + "ast-str-d99877d8-715e-4487-94e7-253da6a3fcc3": { "string": "モバイルセッションリプレイのプライバシーオプション" } }, "description": { - "ast-str-96c0458c-0687-4a95-9d66-6fa097d06464": { + "ast-str-4c42a407-da36-4de3-b98c-b310d7ca15a5": { "string": "モバイルセッションリプレイのプライバシーオプションの構成" } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-39f6993e-dc05-4968-992e-893036c5506b": { + "ast-str-3eb652ce-96b4-40b2-8255-2d04b7840875": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-af631d8c-8fc9-4e98-bee2-6afd3dbdf311": { + "ast-str-715f18f2-b07d-4c37-8060-9fddf27ea39a": { "string": "ドキュメント" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-1c25456b-e5f6-4548-af66-3fae7a05f423": { + "ast-str-3dcad688-c0ec-4ce2-a4d4-6aa755c86ddb": { "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } }, "tag": { - "ast-str-a29b4ca3-075b-414c-8a68-0c33e0cfae6b": { + "ast-str-1781edad-2125-43bb-8a68-c8e611add905": { "string": "ドキュメント" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-7d913357-3de0-47f5-995d-20902115e88a": { + "ast-str-0bccdca7-2ab8-4ce2-8dc0-b149e35c98bc": { "string": "モバイルセッションリプレイの設定と構成" } }, "tag": { - "ast-str-fd654bd7-9157-4811-bf1b-322a453db21e": { + "ast-str-1cb3706b-3e56-4a7b-ba44-13366a28e5e8": { "string": "ドキュメント" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-6aae3788-1d07-41c1-943e-ce84e0eea71a": { + "ast-str-d0f38e09-f640-4129-ad56-4597b2eeca29": { "string": "モバイルセッションリプレイのトラブルシューティング" } }, "tag": { - "ast-str-e66e4cab-d520-4636-b58e-572a077d362a": { + "ast-str-d6aa91e3-beaf-4709-bc4c-fa48a8677e1f": { "string": "ドキュメント" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-efabc85f-a81a-409d-9ef3-4e3c49b0e2c8": { + "ast-str-dd5212b7-7eee-4399-8463-267cc0189b1f": { "string": "Session Replay" } }, "tag": { - "ast-str-6d52c7ad-1cdd-4740-b4ef-e0103e5209e0": { + "ast-str-d3836ed8-23dd-4e60-9e62-d7edd17541fb": { "string": "ドキュメント" } } diff --git a/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 3fc6e00b860ba..36efc97c44775 100644 --- a/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-5b85bfe0-cdd5-4616-80a4-f7b16289b9c8": { + "ast-str-209f705e-d4b1-4890-ad80-6be194d8fc99": { "string": "モバイルセッションリプレイの設定と構成" } }, "description": { - "ast-str-9ab98d47-4bc8-4cff-aab2-1a2c829a477c": { + "ast-str-eacb40a8-910e-4fa5-a34f-1c13ea5b02db": { "string": "モバイルセッションリプレイの設定と構成" } }, @@ -18,12 +18,12 @@ "0": { "link": "/product_analytics/session_replay/mobile", "text": { - "ast-str-6b7dd627-cfc2-449b-930b-c7c9202bb7f2": { + "ast-str-223ce0a2-060a-47f2-ad20-b1b96b4918f0": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-ad1f968c-ba7d-47fb-a595-fd656cf1a665": { + "ast-str-e23f3edb-4334-447e-b65a-b533378c2bfc": { "string": "ドキュメント" } } @@ -31,12 +31,12 @@ "1": { "link": "/product_analytics/session_replay/mobile/app_performance", "text": { - "ast-str-5d4a3252-2fe5-4bd4-a75c-043fcd234a1b": { + "ast-str-dae9ced1-e49b-4d03-b084-8e0e2756874e": { "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } }, "tag": { - "ast-str-257753f4-c29e-4eb9-8c21-0b283b791d22": { + "ast-str-240a6e5a-af1c-432f-b5d0-61100ba56b35": { "string": "ドキュメント" } } @@ -44,12 +44,12 @@ "2": { "link": "/product_analytics/session_replay/mobile/privacy_options", "text": { - "ast-str-7a98b6b8-a1cb-461b-985f-a6b645661066": { + "ast-str-d089e855-4841-473c-882d-1d9eaa0155d6": { "string": "モバイルセッションリプレイのプライバシーオプション" } }, "tag": { - "ast-str-33326998-f6db-4a64-ad65-8e45a2955242": { + "ast-str-881372cb-a4b9-44d6-9b14-86ead284f858": { "string": "ドキュメント" } } @@ -57,12 +57,12 @@ "3": { "link": "/product_analytics/session_replay/mobile/troubleshooting", "text": { - "ast-str-304a8f3a-51bb-426b-8ca2-bc7ae13a7cd9": { + "ast-str-ab371002-b6f3-4bbe-86db-f54d98a69f2a": { "string": "モバイルセッションリプレイのトラブルシューティング" } }, "tag": { - "ast-str-6c5f9454-e16e-4312-8512-305ad68f7b0e": { + "ast-str-ac779f5a-d0dc-4ab9-8774-7dfc3c1d4d95": { "string": "ドキュメント" } } @@ -70,12 +70,12 @@ "4": { "link": "/product_analytics/session_replay", "text": { - "ast-str-cc897da2-4f3a-435e-984d-b0002dda36cd": { + "ast-str-8a383d5b-df7f-42f1-a10b-f640f3cf7b40": { "string": "Session Replay" } }, "tag": { - "ast-str-af12f79d-bd7f-4f9e-8ea7-72971640339c": { + "ast-str-7c9ac9d0-5aa2-4864-b747-232082345ea5": { "string": "ドキュメント" } } diff --git a/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 68a5cc23cc30b..38f08c54705c0 100644 --- a/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-cf77a210-8bdd-4954-95fb-dab7e2deba53": { + "ast-str-1d6765ec-05f2-4061-b6eb-3491b6f860a1": { "string": "モバイルセッションリプレイのプライバシーオプション" } }, "description": { - "ast-str-5c1d73d9-4393-4d1a-a7de-55de0b118877": { + "ast-str-dca2dfce-1c6c-482e-bb94-2965f89d14fd": { "string": "モバイルセッションリプレイのプライバシーオプションの構成" } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-7783691c-f46e-4c9b-b0ec-ee8d288c7337": { + "ast-str-8475c94d-f84d-4674-82fc-decb65d009e7": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-d5affb81-aca0-40fa-8c23-16f0d059f758": { + "ast-str-c5645fe4-d05f-444f-a89d-adc8e96cb73b": { "string": "ドキュメント" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-c868b0cd-784e-42f2-be58-7983427d84ea": { + "ast-str-2362c5d7-1131-40ad-a000-fc28bb1491c8": { "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } }, "tag": { - "ast-str-2a10486f-3901-4eb7-b003-20cc7d23f1ee": { + "ast-str-bd194498-7095-4067-baee-d72654e0a6db": { "string": "ドキュメント" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-cd9f333d-13ac-4283-bba5-680fc1b94093": { + "ast-str-c951c01a-4c8a-4288-ad38-6807d8898605": { "string": "モバイルセッションリプレイの設定と構成" } }, "tag": { - "ast-str-1e9dc563-9f7e-4a3c-b6ff-84303e00e726": { + "ast-str-96c999f2-7bb9-4295-a6cd-066ab4e9530b": { "string": "ドキュメント" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-71010d1e-8251-4250-9cf0-5685318f478c": { + "ast-str-d44ba4c0-7fd6-40eb-bd41-46219b2a7e4c": { "string": "モバイルセッションリプレイのトラブルシューティング" } }, "tag": { - "ast-str-1fef1fd1-f553-4651-b0c9-b05ec8549243": { + "ast-str-9fe48841-97e2-4863-be00-00e71cbcc11b": { "string": "ドキュメント" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-fcfb9502-d1c1-4ec1-9898-667568c705e8": { + "ast-str-a5a66c70-f3e2-48a4-bcdd-aab5a769c6b1": { "string": "Session Replay" } }, "tag": { - "ast-str-d4dec885-9a19-45eb-bf6d-2d227790d9cb": { + "ast-str-064c6aa0-3fef-4cfd-a91d-54bad56aab0e": { "string": "ドキュメント" } } diff --git a/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 5d5000b687adf..094515ae94be5 100644 --- a/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-485e15cc-0738-4baa-98b9-db3f8d752021": { + "ast-str-7c124611-ecb3-4fa6-abe2-4a8158daaf75": { "string": "モバイルセッションリプレイの設定と構成" } }, "description": { - "ast-str-2b6994a7-5d24-4d85-8aca-c842cf4ee2ee": { + "ast-str-6e790010-0410-4bc8-8272-4a12fbf32d04": { "string": "モバイルセッションリプレイの設定と構成" } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-9213fa71-a375-4bf7-9b6a-8015d1282f36": { + "ast-str-d16ef26e-381b-4eb8-b1de-70f969cd4eec": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-fa56b914-44fe-4871-940d-7603600b6274": { + "ast-str-e12e54d4-5679-464d-8395-97238d1ae11b": { "string": "ドキュメント" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-379f506e-3d7a-4fea-b58f-490fec1cc61a": { + "ast-str-59880ecd-7a93-4b65-be2c-3e312586a956": { "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } }, "tag": { - "ast-str-7a8e5a41-0f5a-45ec-a218-471f1f769312": { + "ast-str-f5de440d-94a8-4c72-b204-4ebad6ab4d53": { "string": "ドキュメント" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/privacy_options", "text": { - "ast-str-a35c2181-a87a-4f27-a952-7e4a2196c747": { + "ast-str-22570d2d-e2c7-495b-894c-d503eaa47a6c": { "string": "モバイルセッションリプレイのプライバシーオプション" } }, "tag": { - "ast-str-166d237b-a671-42e7-b59d-8653457db279": { + "ast-str-71164fa2-9910-4173-8da0-c119c38df091": { "string": "ドキュメント" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-7202702e-8627-46a1-b4c1-9d7d0ce8f95a": { + "ast-str-a966523b-1775-4b19-ab4c-5b1b1eb779bb": { "string": "モバイルセッションリプレイのトラブルシューティング" } }, "tag": { - "ast-str-fd107bd1-b4a4-4fdd-89e5-1240a31a9f04": { + "ast-str-2a4d546c-ef45-420a-bda3-eddb6f8b9e30": { "string": "ドキュメント" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-58e8f44c-bfb9-4d8b-b918-3b9216e1e522": { + "ast-str-aaea3198-36d2-441f-92f5-bb4c0f304fe2": { "string": "Session Replay" } }, "tag": { - "ast-str-45071591-2694-4e30-8e47-902cdeb8a28b": { + "ast-str-ab6c252b-84b1-4b1e-aa85-73679522086b": { "string": "ドキュメント" } } @@ -83,12 +83,12 @@ "5": { "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", "text": { - "ast-str-22e2b6a5-6d8d-4a2a-a861-8142fdd70d05": { + "ast-str-e7e182ec-27f5-4009-b3c2-4042ac233d91": { "string": "Web ビューのトラッキング" } }, "tag": { - "ast-str-0cd14bce-40c2-46b6-93f1-d5a05bd92239": { + "ast-str-d968d7e5-2c3c-426d-8969-9ffa2437cf80": { "string": "ドキュメント" } } diff --git a/content/ko/code_analysis/software_composition_analysis/_index.md b/content/ko/code_analysis/software_composition_analysis/_index.md new file mode 100644 index 0000000000000..8e8d979418fc6 --- /dev/null +++ b/content/ko/code_analysis/software_composition_analysis/_index.md @@ -0,0 +1,110 @@ +--- +algolia: + tags: + - 소프트웨어 구성 분석 + - datadog software composition analysis + - library vulnerabilities + - SCA +description: 코드가 프로덕션 환경으로 전송되기 전 불러온 오픈 소스 라이브러리를 스캔하여 알려진 보안 취약성 문제를 검사하는 Datadog + 소프트웨어 구성 요소 분석에 대해 알아보세요. +further_reading: +- link: https://www.datadoghq.com/blog/iast-datadog-application-vulnerability-management/ + tag: 블로그 + text: 소프트웨어 구성 요소 분석으로 프로덕션 환경의 애플리케이션 보안 강화 +- link: https://www.datadoghq.com/blog/sca-prioritize-vulnerabilities/ + tag: 블로그 + text: Datadog SCA로 취약성 해결 우선 순위 지정하기 +- link: /getting_started/application_security/software_composition_analysis + tag: 설명서 + text: 소프트웨어 구성 요소 분석 시작하기 +- link: /security/application_security/software_composition_analysis/ + tag: 설명서 + text: 소프트웨어 구성 요소 분석에 대해 알아보기 +- link: /integrations/guide/source-code-integration/ + tag: 설명서 + text: 소스 코드 통합에 대해 알아보기 +is_beta: false +title: 소프트웨어 구성 분석(SCA) +--- + +{{< callout url="#" btn_hidden="true" header="평가판 신청하기!" >}} +Software Composition Analysis는 평가판으로 제공됩니다. +{{< /callout >}} + +{{% site-region region="gov" %}} +
+ Code Analysis는 {{< region-param key="dd_site_name" >}} 사이트에서 이용할 수 없습니다. +
+{{% /site-region %}} + +## 개요 + +Software Composition Analysis(SCA)는 `npm`과 같은 패키지 관리자를 통해 리포지토리로 가져온 오픈 소스 라이브러리를 검사하여 [알려진 취약점][1]을 찾아내고, 리포지토리 전체에서 사용되는 라이브러리의 카탈로그를 생성하여 위험한 라이선스, 지원 종료 라이브러리, 취약점을 식별함으로써 고품질의 안전한 코드베이스를 유지할 수 있도록 합니다. + +SCA 검사는 Datadog을 통해 직접 실행하거나 CI 파이프라인에서 [Code Analysis][3]를 통해 실행하여 라이브러리 취약점이 프로덕션 환경에 적용되기 전에 탐지할 수 있습니다. Datadog은 [Datadog Application Security][1]를 통해 런타임 탐지 기능도 제공합니다. + +## Software Composition Analysis 설정 + +SCA는 다음 언어와 기술을 사용하는 라이브러리 검사를 지원합니다. + +{{< partial name="code_analysis/sca-getting-started.html" >}} + +시작하려면 [**Code Analysis** 페이지][2]에서 Software Composition Analysis를 설정하거나 [Setup 설명서][3]를 참고하세요. + +### Lockfiles + +SCA는 Lockfile에 포함된 라이브러리를 검사합니다. 지원되는 Lockfile은 다음과 같습니다: + +| Package Manager | Lockfile | +|-----------------|------------------------------------------| +| C# (.NET) | `packages.lock.json` | +| Go (mod) | `go.mod` | +| JVM (Gradle) | `gradle.lockfile` | +| JVM (Maven) | `pom.xml` | +| Node.js (npm) | `package-lock.json` | +| Node.js (pnpm) | `pnpm-lock.yaml` | +| Node.js (yarn) | `yarn.lock` | +| PHP (composer) | `composer.lock` | +| Python (pip) | `requirements.txt`, `Pipfile.lock` | +| Python (poetry) | `poetry.lock` | +| Ruby (bundler) | `Gemfile.lock` | + +## 소프트웨어 개발 라이프사이클에 Software Composition Analysis를 통합하세요 + +### CI 제공업체 +{{< whatsnext desc="원하는 CI 플랫폼 제공업체에서 SCA를 실행할 수 있습니다. CI 파이프라인에 SCA를 설정하려면 제공업체별 설명서를 참고하세요:">}} + {{< nextlink href="code_analysis/software_composition_analysis/github_actions" >}}GitHub Actions{{< /nextlink >}} + {{< nextlink href="code_analysis/software_composition_analysis/generic_ci_providers" >}}일반 CI 제공업체{{< /nextlink >}} +{{< /whatsnext >}} + +## 결과 검색 및 필터링 + +
Datadog Software Composition Analysis(SCA)는 소프트웨어 개발 수명 주기(SDLC) 전반에 걸쳐 취약한 라이브러리를 찾아낼 수 있습니다. Code Analysis는 리포지토리를 직접 검사하여 발견된 결과를 요약합니다. 리포지토리와 런타임에서 발견된 모든 취약점을 통합하여 보려면 Application Security를 확인하세요.
+ +Datadog SCA를 실행하도록 CI 파이프라인을 구성하면 [**Code Analysis Repositories** 페이지][4]에서 리포지토리별 위반 사항이 요약됩니다. 리포지토리를 클릭하면 Software Composition Analysis 결과인 **Library Vulnerabilities** 및 **Library Catalog**를 분석할 수 있습니다. + +* **Library Vulnerabilities** 탭에는 Datadog SCA에서 발견된 취약한 라이브러리 버전이 포함되어 있습니다. +* **Library Catalog** 탭에는 Datadog SCA에서 발견된 모든 라이브러리(취약 여부와 관계없이)가 포함되어 있습니다. + +결과를 필터링하려면 목록 왼쪽의 패싯이나 상단의 검색 창을 사용하세요. 결과는 서비스 또는 팀 패싯별로 필터링할 수 있습니다. 결과가 Datadog 서비스 및 팀에 어떻게 연결되는지 알아보려면 [Code Analysis 시작하기][5]를 참고하세요. + +각 행은 고유한 라이브러리 및 버전 조합을 나타냅니다. 각 조합은 페이지 상단의 필터에서 선택한 특정 커밋 및 브랜치와 연결됩니다(기본적으로, 선택한 리포지토리의 기본 브랜치에서 가장 최신 커밋을 기준으로 함). + +취약점이 있는 라이브러리를 클릭하면 위반 범위와 발생 위치 정보가 포함된 사이드 패널이 열립니다. + +{{< img src="code_analysis/software_composition_analysis/sca-violation.png" alt="SCA 위반에 대한 사이드 패널" style="width:80%;">}} + +위반 내용은 탭에 표시됩니다: + +- **전체 설명**: 라이브러리의 특정 버전의 취약점에 관한 설명입니다. +- **이벤트**: SCA 위반 사항 이벤트와 관련된 JSON 메타데이터입니다. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/security/application_security/software_composition_analysis/ +[2]: https://app.datadoghq.com/ci/setup/code-analysis +[3]: /ko/code_analysis/software_composition_analysis/setup +[4]: https://app.datadoghq.com/ci/code-analysis +[5]: /ko/getting_started/code_analysis/?tab=datadoghosted#linking-services-to-code-violations-and-libraries \ No newline at end of file diff --git a/content/ko/developers/guide/what-best-practices-are-recommended-for-naming-metrics-and-tags.md b/content/ko/developers/guide/what-best-practices-are-recommended-for-naming-metrics-and-tags.md index 953094282f1ee..caeeeea7386b0 100644 --- a/content/ko/developers/guide/what-best-practices-are-recommended-for-naming-metrics-and-tags.md +++ b/content/ko/developers/guide/what-best-practices-are-recommended-for-naming-metrics-and-tags.md @@ -8,37 +8,43 @@ further_reading: - link: /getting_started/tagging/ tag: 설명서 text: 태그 시작하기 - title: 메트릭과 태그 이름을 지정할 때 참고할 수 있는 모범 사례가 있나요? --- -Datadog은 메트릭, 태그, 서비스 이름 지정과 관련해 모범 사례를 제공합니다. +이름 규칙은 중요한 기술입니다. 그렇기 때문에 합의하기가 가장 어려운 결정이기도 합니다. 깨끗하고, 읽기 쉬우며, 유지 관리가 가능한 텔레메트리 데이터를 확보하려면 메트릭, 태그, 서비스에 대한 이름 규칙을 정의해야 합니다. 다음은 몇 가지 권장 사항입니다. + +* 의미를 명확하게 설명하는 이름을 제공하세요. 메트릭이나 태그는 값의 목적이나 의미를 명확하게 설명합니다. +* 아래에 설명된 형식과 제한 사항을 준수하세요. +* 여러 의미를 가질 수 있는 약어는 피하세요. +* 팀, 앱, 서비스 전체에서 동일한 규칙을 적용하세요. +* 다른 태그나 메트릭과 충돌을 일으킬 수 있는 예약 키워드는 피하세요. +* 메트릭 이름에는 데이터를 생성하는 애플리케이션이나 서비스를 나타내는 네임스페이스를 접두사로 붙이세요. +* 어떠한 종류의 개인 정보나 민감한 데이터를 사용하지 마세요. -## 메트릭 이름 지정에 관한 규칙 및 모범 사례 +## 메트릭 이름 규칙 및 모범 사례 * 메트릭 이름은 문자로 시작해야 합니다. -* ASCII 영숫자, 밑줄, 마침표만 사용할 수 있습니다. 다른 문자는 밑줄로 변환됩니다. +* ASCII 영숫자, 밑줄, 마침표만 포함할 수 있습니다. 다른 문자는 밑줄로 변환됩니다. * 200자를 초과할 수 없습니다 (UI를 고려해 100자 미만으로 하는 것이 좋습니다). * 유니코드는 지원되지 않습니다. -* 띄어쓰기는 사용하지 않는 것이 좋습니다. 에이전트가 보고하는 메트릭은 의사 계층적 점선 형식입니다 (예:`http.nginx.response_time`). 의사 계층 구조인 이유는 실제로 계층을 적용하는 것이 아니라 특정 관계를 유추하기 때문입니다 (예: _"호스트A와 호스트B가`http.nginx.*`를 보고하므로, 웹 프론트엔드일 것이다"_). **참고**: Datadog에서 메트릭 이름은 대소문자를 구분합니다. -## 태그 이름 지정에 관한 규칙과 모범 사례 +## 태그 이름 규칙 및 모범 사례 -Datadog에서는 태그를 할당할 때 통합 서비스 태깅을 사용하시길 모범 사례로 권장합니다. 통합 서비스 태깅은 표준 태그 3가지(`env`, `service`, `version`)를 사용하여 Datadog 원격 측정 데이터와 결합합니다. 사용자의 환경에서 통합형 태깅을 설정하는 방법을 자세히 알아보려면 [통합 서비스 태깅][8] 가이드를 참조하세요. +Datadog은 모범 사례로써 태그를 할당할 때 통합 서비스 태깅을 사용할 것을 권장합니다. 통합 서비스 태깅은 표준 태그 3가지(`env`, `service`, `version`)를 사용하여 Datadog 원격 측정 데이터와 결합합니다. 사용자의 환경에서 통합형 태깅을 설정하는 방법을 자세히 알아보려면 [통합 서비스 태깅][1] 가이드를 참조하세요. * 태그는 문자로 시작해야 합니다. -* 영문자, 밑줄, 빼기 기호, 콜론, 마침표, 슬래시를 사용할 수 있습니다. 다른 문자는 밑줄로 변환됩니다. -* 변환된 문자이든 본래 태그 값이든, 후행 밑줄은 모두 제거됩니다. +* 영숫자, 밑줄, 빼기 기호, 콜론, 마침표, 슬래시를 포함할 수 있습니다. 다른 문자는 밑줄로 변환됩니다. +* 끝에 붙은 밑줄은 변환된 문자에서 유래했든 원래 태그 값에 있었든 제거됩니다. * 연속된 밑줄은 하나의 밑줄로 축소됩니다. -* 태그 이름은 최대 200자까지 지정할 수 있으며, 유니코드를 지원합니다. +* 태그는 키와 값을 포함하여 최대 200자까지 가능하며 유니코드를 지원합니다. 이 제한을 초과하는 문자는 잘립니다. * 태그는 소문자로 변환됩니다. * 최적의 기능을 위해 `key:value` 구문을 사용하는 것이 좋습니다. -일반적으로 많이 사용되는 메트릭 태그 키는 `instance`, `name`, `role`입니다. +일반적으로 사용되는 메트릭 태그 키는 `instance`, `name`, `role`입니다. ## 참고 자료 diff --git a/content/ko/integrations/cisco_secure_email_threat_defense.md b/content/ko/integrations/cisco_secure_email_threat_defense.md new file mode 100644 index 0000000000000..a3d07abfe148b --- /dev/null +++ b/content/ko/integrations/cisco_secure_email_threat_defense.md @@ -0,0 +1,118 @@ +--- +app_id: cisco-secure-email-threat-defense +app_uuid: 9776e6c8-2031-4dda-98b5-3628b181625b +assets: + dashboards: + Cisco Secure Email Threat Defense: assets/dashboards/cisco_secure_email_threat_defense.json + integration: + auto_install: false + events: + creates_events: false + service_checks: + metadata_path: assets/service_checks.json + source_type_id: 21617758 + source_type_name: Cisco Secure Email Threat Defense +author: + homepage: https://www.datadoghq.com + name: Datadog + sales_email: info@datadoghq.com + support_email: help@datadoghq.com +categories: +- 로그 수집 +- security +- 클라우드 +custom_kind: 통합 +dependencies: +- https://github.com/DataDog/integrations-core/blob/master/cisco_secure_email_threat_defense/README.md +display_on_public_website: true +draft: false +git_integration_title: cisco_secure_email_threat_defense +integration_id: cisco-secure-email-threat-defense +integration_title: Cisco Secure Email Threat Defense +integration_version: '' +is_public: true +manifest_version: 2.0.0 +name: cisco_secure_email_threat_defense +public_title: Cisco Secure Email Threat Defense +short_description: Cisco Secure Email Threat Defense 메시지 로그에 관한 인사이트를 얻으세요. +supported_os: [] +tile: + changelog: CHANGELOG.md + classifier_tags: + - Category::Log Collection + - Category::Security + - Category::Cloud + - Offering::Integration + - Submitted Data Type::Logs + configuration: README.md#Setup + description: Cisco Secure Email Threat Defense 메시지 로그에 대한 인사이트를 얻으세요. + media: + - caption: Cisco Secure Email Threat Defense + image_url: images/cisco_secure_email_threat_defense.png + media_type: 이미지 + overview: README.md#Overview + support: README.md#Support + title: Cisco Secure Email Threat Defense +--- + + +## 개요 + +[Cisco Secure Email Threat Defense][1]는 Microsoft 365를 위한 통합 클라우드 기반 보안 솔루션입니다. 간편한 배포, 쉬운 공격 대응, 인바운드, 아웃바운드 및 내부 사용자 간 메시지에 탁월한 가시성을 제공합니다. + +본 통합은 다음 로그를 수집합니다. +- Message: Message 로그는 발신자, 수신자, 타임스탬프, 제목, 위협 관련 데이터 등 이메일 커뮤니케이션에 관한 정보를 자세히 제공하여 분석 및 모니터링이 가능하도록 합니다. + +Cisco Secure Email Threat Defense 통합 기능은 Cisco Secure Email Threat Defense의 메시지 로그에 관한 인사이트를 확보하고 필요한 조치를 취할 수 있도록 기본 대시보드를 제공합니다. 또한, 잠재적인 보안 위협을 효과적으로 모니터링하고 대응할 수 있도록 기본 탐지 규칙도 제공합니다. + +**주의사항**: 개인 정보를 포함한 데이터가 수집될 수 있는 이 통합 기능의 사용은 Datadog과의 계약에 따라 이루어집니다. Cisco는 통합 기능을 사용함으로써 전송되는 개인 정보를 포함한 모든 최종 사용자 정보의 개인정보보호, 보안 또는 무결성에 관해 책임을 지지 않습니다. + +## 설정 + +### Cisco Secure Email Threat Defense에서 API 자격 증명 생성 + +1. Cisco Secure Email Threat Defense UI에 로그인합니다. +2. **Administration**으로 이동하여 **API Clients** 탭을 선택합니다. +3. **Add New Client**를 클릭합니다. +4. **Client Name**을 입력하고 필요시 설명을 입력합니다. +5. **Submit**을 클릭합니다. 이렇게 하면 **Client ID**와 **Client Password**가 생성됩니다. +6. **API 키** 섹션에서 API 키를 검색합니다. + +### Cisco Secure Email Threat Defense 계정을 Datadog에 연결 + +1. Cisco Secure Email Threat Defense 자격 증명 추가 + + | 파라미터 | 설명 | + | ---------- | ----------- | + | Host Name | Host name은 Cisco Secure Email Threat Defense 서버가 위치한 지역을 기준으로 합니다. 자세한 내용은 시스템 관리자에게 문의하세요. | + | Client ID | Cisco Secure Email Threat Defense 계정의 Client ID | + | Client Password | Cisco Secure Email Threat Defense 계정의 Client 비밀번호. | + | API Key | Cisco Secure Email Threat Defense 계정의 API 키. | + | Verdict Delay | 이벤트는 Verdict Delay에 지정된 시간(분)에 따라 지연 후 가져옴. | + + +2. **Save** 버튼을 클릭하여 설정을 저장합니다. + + +## 수집한 데이터 + +### 로그 + +Cisco Secure Email Threat Defense 통합 기능은 Cisco Secure Email Threat Defense 메시지 로그를 수집하여 Datadog에 전달합니다. 이 통합은 사기, 악성, 피싱, BEC, 스팸, 그레이메일, 중립 평결 값을 가진 메시지를 수집합니다. + +**참고**: 이벤트는 Verdict Delay에 지정된 시간에 따라 지연 후 수집됩니다. 이 지연은 로그에 사후 평결이 포함되도록 하기 위해 필요합니다. 다만, 업데이트에 소요되는 시간은 달라질 수 있으므로, 이 시간 안에 모든 사후 평결이 반드시 반영된다는 것을 보장하지는 않습니다. 완전한 평결 정보를 확인하려면 Cisco Secure Email Threat Defense 시스템에 로그인하세요. + +### 메트릭 + +Cisco Secure Email Threat Defense 통합은 메트릭을 포함하지 않습니다. + +### 이벤트 + +Cisco Secure Email Threat Defense 통합은 이벤트를 포함하지 않습니다. + +## 지원 + +추가 지원이 필요하면 [Datadog 지원팀][2]에 문의하세요. + +[1]: https://www.cisco.com/site/us/en/products/security/secure-email/index.html?dtid=osscdc000283 +[2]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file diff --git a/content/ko/integrations/google_gemini.md b/content/ko/integrations/google_gemini.md new file mode 100644 index 0000000000000..631ca3e1cc315 --- /dev/null +++ b/content/ko/integrations/google_gemini.md @@ -0,0 +1,186 @@ +--- +app_id: google-gemini +app_uuid: 93179a9e-98f8-48fe-843a-59f9c9bb84df +assets: + dashboards: + LLM Observability Overview Dashboard: assets/dashboards/llm_observability_overview_dashboard.json + integration: + auto_install: false + events: + creates_events: false + service_checks: + metadata_path: assets/service_checks.json + source_type_id: 31079799 + source_type_name: Google Gemini +author: + homepage: https://www.datadoghq.com + name: Datadog + sales_email: info@datadoghq.com + support_email: help@datadoghq.com +categories: +- ai/ml +- google cloud +- 메트릭 +custom_kind: 통합 +dependencies: [] +display_on_public_website: true +draft: false +git_integration_title: google_gemini +integration_id: google-gemini +integration_title: Google Gemini +integration_version: '' +is_public: true +manifest_version: 2.0.0 +name: google_gemini +public_title: Google Gemini +short_description: 애플리케이션 수준에서 Google Gemini 사용 및 상태 모니터링 +supported_os: +- linux +- 윈도우즈(Windows) +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Category::AI/ML + - Category::Google Cloud + - Category::Metrics + - Submitted Data Type::Traces + - Supported OS::Linux + - Supported OS::Windows + - Supported OS::macOS + - Offering::Integration + configuration: README.md#Setup + description: 애플리케이션 수준에서 Google Gemini 사용 및 상태 모니터링 + media: [] + overview: README.md#Overview + support: README.md#Support + title: Google Gemini +--- + + + + +## 개요 + +[Google Gemini][1]를 사용하여 챗봇이나 데이터 추출 도구와 같은 LLM 기반 애플리케이션을 모니터링하고 문제를 해결하며 평가합니다. + +LLM 애플리케이션을 구축하는 경우 Datadog의 LLM Observability를 사용하여 문제의 근본 원인을 조사하고, 운영 성능을 모니터링하며, LLM 애플리케이션의 품질, 개인 정보 보호 및 안전성을 평가하세요. + +트레이스 조사 방법 예시를 보려면 [LLM Observability 추적 뷰 동영상][2]을 확인하세요. + +## 설정 + +### LLM Observability: Google Gemini를 사용하여 LLM 애플리케이션에 대한 엔드투엔드 가시성 확보 +다양한 환경에서 LLM Observability를 활성화할 수 있습니다. 시나리오에 따라 적절한 설정을 따르세요. + +#### Python용 설치 + +##### Datadog Agent가 없는 경우: +1. `ddtrace` 패키지를 설치합니다. + + ```shell + pip install ddtrace + ``` + +2. 다음 명령으로 애플리케이션을 시작하고 Agentless 모드를 활성화합니다. + + ```shell + DD_SITE= DD_API_KEY= DD_LLMOBS_ENABLED=1 DD_LLMOBS_AGENTLESS_ENABLED=1 DD_LLMOBS_ML_APP= ddtrace-run python .py + ``` + +##### Datadog Agent가 설치되어 있는 경우: +1. Agent가 실행 중이고 APM과 StatsD가 활성화되어 있는지 확인하세요. 예를 들어 Docker에서 다음 명령을 사용하세요. + + ```shell + docker run -d \ + --cgroupns host \ + --pid host \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ + -v /proc/:/host/proc/:ro \ + -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ + -e DD_API_KEY= \ + -p 127.0.0.1:8126:8126/tcp \ + -p 127.0.0.1:8125:8125/udp \ + -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \ + -e DD_APM_ENABLED=true \ + gcr.io/datadoghq/agent:latest + ``` + +2. 설치되어 있지 않다면 `ddtrace` 패키지를 설치합니다. + + ```shell + pip install ddtrace + ``` + +3. `ddtrace-run` 명령을 사용하여 추적을 자동으로 활성화하는 애플리케이션을 시작합니다. + + ```shell + DD_SITE= DD_API_KEY= DD_LLMOBS_ENABLED=1 DD_LLMOBS_ML_APP= ddtrace-run python .py + ``` + +**참고**: Agent가 사용자 지정 호스트 또는 포트에서 실행되는 경우 `DD_AGENT_HOST` 및 `DD_TRACE_AGENT_PORT`를 적절히 설정하세요. + +##### 서버리스 환경에서 LLM Observability를 실행하는 경우: + +다음 환경 변수를 설정하여 LLM Observability를 활성화합니다. + + ```shell + DD_SITE= DD_API_KEY= DD_LLMOBS_ENABLED=1 DD_LLMOBS_ML_APP= + ``` + +**참고**: 서버리스 환경에서 Datadog은 서버리스 함수 실행이 완료되면 자동으로 스팬을 플러시합니다. + +##### 자동 Google Gemini 추적 + +Google Gemini 통합은 Google AI Python SDK의 콘텐츠 생성 호출에 대한 자동 추적 기능을 제공합니다. 이를 통해 지연 시간, 오류, 입출력 메시지, 그리고 Google Gemini 작업의 토큰 사용량을 파악할 수 있습니다. + +다음 메서드는 동기 및 비동기 Google Gemini 작업 모두에 추적됩니다. +- 콘텐츠 생성(스트리밍 호출 포함): `model.generate_content()`, `model.generate_content_async()` +- 채팅 메시지: `chat.send_message()`, `chat.send_message_async()` + +이 메서드에는 추가 설정이 필요하지 않습니다. + +##### 검증 +애플리케이션 로그에서 스팬 생성이 성공적으로 완료되었는지 확인하여 LLM Observability가 스팬을 제대로 캡처하고 있는지 확인하세요. 다음 명령을 실행하여 `ddtrace` 통합 상태를 확인할 수도 있습니다. + + ```shell + ddtrace-run --info + ``` + +다음 메시지가 표시되는지 확인하여 설정이 완료되었는지 확인하세요. + + ```shell + Agent error: None + ``` + +##### 디버깅 +설치 중에 문제가 발생하면 `--debug` 플래그를 전달하여 디버그 로깅을 활성화하세요. + + ```shell + ddtrace-run --debug + ``` + +여기에는 Google Gemini 트레이스 문제를 포함하여 데이터 전송이나 계측과 관련된 모든 오류가 표시됩니다. + +## 수집한 데이터 + +### 메트릭 + +Google Gemini 통합은 메트릭을 포함하지 않습니다. + +### 서비스 점검 + +Google Gemini 통합은 서비스 점검을 포함하지 않습니다. + +### 이벤트 + +Google Gemini 통합은 이벤트를 포함하지 않습니다. + +## 트러블슈팅 + +도움이 필요하신가요? [Datadog 지원팀][3]에 문의하세요. + + +[1]: https://gemini.google.com/ +[2]: https://imgix.datadoghq.com/video/products/llm-observability/expedite-troubleshooting.mp4?fm=webm&fit=max +[3]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file diff --git a/content/ko/integrations/jamf_protect.md b/content/ko/integrations/jamf_protect.md new file mode 100644 index 0000000000000..d9d98350a6a6c --- /dev/null +++ b/content/ko/integrations/jamf_protect.md @@ -0,0 +1,236 @@ +--- +app_id: jamf-protect +app_uuid: a863cfe8-5ba4-45ae-923c-d273510f099c +assets: + dashboards: + jamf-protect-overview: assets/dashboards/jamf_protect_overview.json + integration: + auto_install: true + events: + creates_events: false + service_checks: + metadata_path: assets/service_checks.json + source_type_id: 10433 + source_type_name: jamf_logs +author: + homepage: https://www.jamf.com/products/jamf-protect/ + name: Jamf Protect + sales_email: support@jamf.com + support_email: support@jamf.com +categories: +- security +custom_kind: 통합 +dependencies: +- https://github.com/DataDog/integrations-extras/blob/master/jamf_protect/README.md +display_on_public_website: true +draft: false +git_integration_title: jamf_protect +integration_id: jamf-protect +integration_title: Jamf Protect +integration_version: '' +is_public: true +manifest_version: 2.0.0 +name: jamf_protect +public_title: Jamf Protect +short_description: Mac 및 모바일 기기를 위한 엔드포인트 보안 및 모바일 위협 방어(MTD) +supported_os: +- windows +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Supported OS::Windows + - Supported OS::macOS + - Category::Security + - 제공::통합 + configuration: README.md#Setup + description: Mac 및 모바일 기기를 위한 엔드포인트 보안 및 모바일 위협 방어(MTD) + media: [] + overview: README.md#Overview + support: README.md#Support + title: Jamf Protect +--- + + + + +## 개요 +[Jamf Protect][1]는 macOS, iOS, iPadOS 엔드포인트 및 기타 지원 플랫폼을 포함한 Apple 엔드포인트용으로 특별히 설계된 포괄적인 보안 솔루션입니다. Jamf Protect는 Apple의 내장 보안 기능을 강화하고 악성 애플리케이션, 스크립트 및 사용자 활동을 실시간으로 탐지합니다. + +Jamf Protect는 알려진 맬웨어와 애드웨어를 탐지할 뿐만 아니라 알려지지 않은 위협을 방지하고 명령 및 제어 트래픽과 위험한 도메인을 차단합니다. 또한, 엔드포인트 활동에 대한 세부적인 인사이트를 제공하여 엔드포인트 상태 및 컴플라이언스를 보장하고 자동화된 워크플로를 통해 인시던트 대응을 지원합니다. 이 통합은 Jamf Protect 이벤트에서 로그를 수집하며, Datadog을 사용하여 분석할 수 있습니다. 이 통합은 macOS Security와 Jamf Security Cloud 모두의 Jamf Protect 로그를 모니터링합니다. + +## 설정 + +### 사전 필수 조건 + +- Datadog 수신 URL. [Datadog API Logs 문서][2]를 확인하고, 페이지 상단에서 Datadog Site를 선택하세요. +- [Datadog API 및 App 키][3]. + +### 설치 + +[Integrations 페이지][4]로 이동하여 "Jamf Protect" 타일을 검색합니다. + +### macOS Security Portal +1. Jamf Protect에서 **Actions**를 클릭합니다. +2. **Create Actions**를 클릭합니다. +3. *Action Config Name* 필드에 이름(예: `Datadog`)을 입력합니다. +4. (선택 사항) 알림을 수집하려면 **Remote Alert Collection Endpoints**를 클릭하고 다음을 추가합니다. + + a. **URL:** `https://${DATADOG_INTAKE_URL}/api/v2/logs?ddsource=jamfprotect&service=alerts` + + b. **Min Severity & Max Severity**를 설정합니다. + + c. **+ Add HTTP Header** 를 두번 클릭하고 다음 HTML 헤더 필드를 추가합니다. + ``` + Name: DD-API-KEY + Value: + ``` + ``` + Name: DD-APPLICATION-KEY + Value: + ``` + +5. (선택 사항) 통합 로그를 수집하려면 **+ Unified Logs Collection Endpoints**를 클릭하고 다음을 추가합니다. + + a. **URL:** `https://${DATADOG_INTAKE_URL}/api/v2/logs?ddsource=jamfprotect&service=unifiedlogs` + + b. **+ Add HTTP Header**를 두 번 클릭하고 다음 HTML 헤더 필드를 추가합니다. + ``` + Name: DD-API-KEY + Value: + ``` + ``` + Name: DD-APPLICATION-KEY + Value: + ``` + +6. (선택 사항) 텔레메트리 데이터를 수집하려면 **+ Telemetry Collection Endpoints**를 클릭합니다. + + a. **URL:** `https://${DATADOG_INTAKE_URL}/api/v2/logs?ddsource=jamfprotect&service=telemetry` + + b. **+ Add HTTP Header**를 두 번 클릭하고 다음 HTML 헤더 필드를 추가합니다. + ``` + Name: DD-API-KEY + Value: + ``` + ``` + Name: DD-APPLICATION-KEY + Value: + ``` + +7. **Save**을 클릭합니다. + +### 구성된 Actions를 사용하도록 플랜 업데이트 + +1. **Plans**를 클릭합니다. +1. 기기에 할당된 플랜을 찾습니다. +1. 플랜 이름 옆에 있는 **Edit**을 클릭합니다. +1. *Action Configuration* 드롭다운 메뉴에서 Action을 선택합니다. 이는 Datadog 구성을 포함하는 Action 구성 이름입니다. +1. **Save**을 클릭합니다. + +### (선택 사항) Jamf Security Cloud + +1. hreat Events Stream에서 **Integrations**를 클릭합니다. +2. **Data Streams**를 클릭합니다. +3. **New Configuration**을 클릭합니다. +4. **Threat Events**를 선택합니다. +5. **Generic HTTP**를 선택합니다. +6. **Continue**를 클릭합니다. + | **구성** | **세부 내용** | + |--------------------------|-------------------------------------| + | **Name** | Datadog (Threat) | + | **Protocol** | HTTPS | + | **Server Hostname/IP** | `${DATADOG_INTAKE_URL}` | + | **Port** | 443 | + | **Endpoint** | `api/v2/logs?ddsource=jamfprotect&` | + +7. **Create option "DD-API-KEY"**를 클릭합니다. + ``` + Header Value: + Header Name: DD-APPLICATION-KEY + ``` +8. **Create option "DD-APPLICATION-KEY"**를 클릭합니다. + ``` + Header Value: + ``` +9. **Test Configuration**을 클릭합니다. + +10. 성공적으로 완료되면 **Create Configuration**을 클릭합니다. + +### (선택 사항) Network Traffic Stream + +1. **Integrations**를 클릭합니다. +2. **Data Streams**를 클릭합니다. +3. **New Configuration**을 클릭합니다. +4. **Threat Events**를 선택합니다. + +5. **Generic HTTP**를 선택합니다. + +6. **Continue**를 클릭합니다. + a. **Configuration Name:** Datadog (Threat) + + b. **Protocol:** **HTTPS** + + c. **Server** **Hostname/IP:** `${DATADOG_INTAKE_URL}` + + d. **Port:** **443** + + e. **Endpoint:** `api/v2/logs?ddsource=jamfprotect&service=networktraffic` + + f. **Additional Headers:** + + i. **Header Name:** DD-API-KEY + + 1. Click **Create option "DD-API-KEY"**. + + ii. **Header Value:** + + i. Header Name: DD-APPLICATION-KEY + + iv. Click **Create option "DD-APPLICATION-KEY"**. + + i. Header Value: + +7. **Test Configuration**을 클릭합니다. +8. 성공적으로 완료되면 **Create Configuration**을 클릭합니다. + +### 검증 + +[Logs Explorer][5]로 이동한 후 `source:jamfprotect`를 검색하여 로그를 수신하고 있는지 확인합니다. + +## 수집한 데이터 + +### 로그 + +Jamf Protect 통합을 사용하면 [Jamf Audit Logs][6]를 Datadog으로 보낼 수 있습니다. + +### 메트릭 + +Jamf Protect는 메트릭을 포함하지 않습니다. + +### 서비스 점검 + +Jamf Protect는 서비스 점검을 포함하지 않습니다. + +### 이벤트 + +Jamf Protect는 이벤트를 포함하지 않습니다. + +## 트러블슈팅 + +도움이 필요하신가요? [Datadog 지원팀][7]에 문의하세요. + +## 참고 자료 + +기타 유용한 문서, 링크 및 기사: + +[Jamf 설명서: Datadog과 Jamf Protect 통합하기][8] + +[1]: https://www.jamf.com/products/jamf-protect/ +[2]: https://docs.datadoghq.com/ko/api/latest/logs/#send-logs +[3]: https://docs.datadoghq.com/ko/account_management/api-app-keys/ +[4]: https://app.datadoghq.com/integrations +[5]: https://app.datadoghq.com/logs +[6]: https://learn.jamf.com/bundle/jamf-protect-documentation/page/Audit_Logs.html +[7]: https://docs.datadoghq.com/ko/help/ +[8]: https://learn.jamf.com/en-US/bundle/jamf-protect-documentation/page/SecurityIntegration_Datadog.html \ No newline at end of file diff --git a/content/ko/integrations/superwise_license.md b/content/ko/integrations/superwise_license.md new file mode 100644 index 0000000000000..bc361eda2101a --- /dev/null +++ b/content/ko/integrations/superwise_license.md @@ -0,0 +1,114 @@ +--- +algolia: + subcategory: Marketplace 통합 +app_id: superwise-license +app_uuid: f15082a6-d0ed-4f6f-a315-f7cbcaae6823 +assets: {} +author: + homepage: https://www.superwise.ai + name: Superwise + sales_email: sales@superwise.ai + support_email: support@superwise.ai + vendor_id: superwise +categories: +- 인시던트 +- marketplace +- 알림 +- ai/ml +custom_kind: integration +dependencies: [] +display_on_public_website: true +draft: false +git_integration_title: superwise_license +integration_id: superwise-license +integration_title: Superwise 모델 옵저버빌리티 +integration_version: '' +is_public: true +legal_terms: + eula: assets/eula.pdf +manifest_version: 2.0.0 +name: superwise_license +pricing: +- billing_type: tag_count + includes_assets: true + metric: datadog.marketplace.superwise + product_id: license + short_description: 모델당 월 단위로 과금되며, 규모가 커질수록 가격이 낮아집니다. + tag: models + unit_label: 모니터링 대상 모델 + unit_price: 199.0 +public_title: Superwise 모델 옵저버빌리티 +short_description: 셀프 서비스 ML 옵저버빌리티 및 모니터링 SaaS 플랫폼. +supported_os: +- 리눅스 +- windows +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Category::Incidents + - Category::Marketplace + - Category::Notifications + - Category::AI/ML + - Offering::Software License + - Supported OS::Linux + - Supported OS::Windows + - Supported OS::macOS + configuration: README.md#Setup + description: 셀프 서비스 ML 옵저버빌리티 및 모니터링 SaaS 플랫폼. + media: + - caption: Superwise는 ML 엔지니어링 팀이 프로덕션 환경에서 모델 상태를 모니터링하고, 탐지 및 해결 시간을 단축하도록 도와줍니다. + image_url: images/1_4.png + media_type: image + - caption: Superwise 모델 옵저버빌리티 대시보드를 사용하면 모델 활동, 드리프트, 미해결 인시던트에 대한 즉각적인 가시성을 얻을 + 수 있습니다. + image_url: images/2_4.png + media_type: image + - caption: Superwise 인시던트를 사용하면 모니터링 정책 위반 사항을 자세히 살펴보고 근본 원인을 빠르게 파악할 수 있습니다. + image_url: images/3_4.png + media_type: image + - caption: 모니터링 정책 빌더를 사용하면 메트릭, 기능, 하위 집단에 대한 정책을 쉽게 구성하고 이를 Datadog로 보낼 수 있습니다. + image_url: images/4_4.png + media_type: image + overview: README.md#Overview + resources: + - resource_type: 블로그 + url: https://www.datadoghq.com/blog/superwise-datadog-marketplace/ + - resource_type: 설명서 + url: https://docs.superwise.ai + support: README.md#Support + title: Superwise 모델 옵저버빌리티 + uninstallation: README.md#Uninstallation +--- + + + + +## 개요 +Superwise는 기업이 프로덕션 환경에서 머신러닝(ML) 모델의 상태를 모니터링하여, 추론 스트림 전반에 걸친 모델 성능 및 무결성 문제를 신속하게 감지할 수 있도록 지원합니다. Superwise는 모델 메트릭을 자동으로 보정하고, 이벤트를 분석하며, 이상 징후의 연관성을 파악해 ML 엔지니어링 팀과 실무자가 모델이 언제, 어디서, 왜 비정상적으로 동작하는지 쉽게 파악할 수 있도록 합니다. 이를 통해 문제가 비즈니스 결과에 영향을 미치기 전에 해결 시간을 단축할 수 있습니다. + + +Superwise 모델 옵저버빌리티 플랫폼을 사용하면 어떤 규모에서든 프로덕션 ML을 모니터링할 수 있습니다. Datadog Marketplace를 통해 Superwise 구독을 구매하면 14일 동안 무제한으로 모델을 사용할 수 있는 무료 체험판이 제공됩니다. 체험판이 만료되면 처음 3개 모델은 영구적으로 무료로 사용할 수 있으며, Superwise의 사용량 기반 요금제를 통해 언제든지 모니터링 규모를 늘리거나 줄일 수 있습니다. 자세한 내용은 [sales@superwise.ai][1]로 문의하세요. + +이 타일에서 Superwise 구독을 구매할 수 있습니다. 이미 Superwise 계정이 있다면 [Superwise Integration 타일][2]을 클릭하여 Superwise Datadog 통합을 설정하세요. + +Superwise 통합을 통해 Datadog 사용자는 기존 Datadog 워크플로 내에서 ML 모델을 전체적으로 모니터링하고, 모델 문제에 대한 심층적인 조사를 위해 Superwise 메트릭 및 인시던트를 포함하여 옵저버빌리티를 강화할 수 있습니다. Superwise 사용자는 비즈니스에 중요한 사용자 지정 메트릭을 Superwise 내에서 모니터링하도록 구성하고, 해당 정보를 Datadog에 전송하여 모든 사용 사례에 대한 옵저버빌리티를 확장할 수 있습니다. + +## 지원 + +지원이나 기능 요청은 다음 채널을 통해 Superwise에 문의하세요. + +- 이메일: [support@superwise.ai][3] + +### 참고 자료 + +- [Datadog Marketplace에서 Superwise의 제품으로 모델 성능 모니터링][4] +- [Superwise 설명서][5] + +[1]: mailto:sales@superwise.ai +[2]: https://app.datadoghq.com/integrations/superwise +[3]: mailto:support@superwise.ai +[4]: https://www.datadoghq.com/blog/superwise-datadog-marketplace/ +[5]: https://docs.superwise.ai +--- +이 애플리케이션은 Datadog Marketplace를 통해 제공되며 Datadog Technology Partner가 지원합니다. 사용하려면 Marketplace에서 구매하세요. \ No newline at end of file diff --git a/content/ko/logs/log_collection/unity.md b/content/ko/logs/log_collection/unity.md new file mode 100644 index 0000000000000..5c78e9cf11326 --- /dev/null +++ b/content/ko/logs/log_collection/unity.md @@ -0,0 +1,117 @@ +--- +description: Unity 프로젝트에서 로그 데이터를 수집하세요. +further_reading: +- link: https://github.com/DataDog/dd-sdk-unity + tag: 소스 코드 + text: dd-sdk-unity 소스 코드 +- link: real_user_monitoring/reactnative/ + tag: 설명서 + text: 로그 탐색 방법 알아보기 +title: Unity 로그 수집 +--- +[Datadog의 Unity 패키지][1]를 사용하여 Unity 애플리케이션에서 Datadog으로 로그를 보내고 다음 기능을 활용하세요. + +* JSON 네이티브 형식으로 Datadog에 로깅합니다. +* 기본 설정으로 전송한 각 로그에 커스텀 속성을 추가합니다. +* 실제 클라이언트 IP 주소와 User-Agents를 기록합니다. +* 자동 대량 포스트로 네트워크 사용량을 최적화합니다. + +## 설정 + +로그용 Datadog Unity SDK를 초기화하려면 [설정][2]을 참고하세요. + +Datadog Unity SDK를 설정하면 SDK의 `DefaultLogger`를 사용하여 Datadog에 로그를 보낼 수 있습니다. + +```cs +var logger = DatadogSdk.Instance.DefaultLogger; + +logger.Debug("A debug message."); +logger.Info("Some relevant information?"); +logger.Warn("An important warning..."); +logger.Error("An error was met!"); +``` + +"Forward Unity Logs" 옵션을 설정하면 Unity의 `Debug.Log*` 메서드를 사용하여 Unity로 전송된 로그가 자동으로 `DatadogSdk.Instance.DefaultLogger`로 전송됩니다. + +`CreateLogger` 메서드를 사용하여 다양한 서비스와 이름으로 추가 로거를 만들 수도 있습니다. + +```dart +var loggingOptions = new DatadogLoggingOptions() +{ + Service = "com.example.custom_service", + Name = "Additional logger", +}; +var logger = DatadogSdk.Instance.CreateLogger(loggingOptions); + +logger.Info('Info from my additional logger.'); +``` + +## 태그 관리 + +로거에 설정된 태그는 각 로거에 로컬 적용됩니다. + +### 태그 추가 + +`DdLogger.AddTag` 메서드를 사용하면 특정 로거에서 보낸 모든 로그에 태그를 추가할 수 있습니다. + +```cs +// 이렇게 하면 "build_configuration:debug" 태그가 추가됩니다. +logger.AddTag("build_configuration", "debug") +``` + +### 태그 제거 + +`DdLogger.RemoveTag` 메서드를 사용하면 특정 로거에서 보낸 모든 로그에서 태그를 제거할 수 있습니다. + +```cs +// 이렇게 하면 "build_configuration"으로 시작하는 모든 태그가 제거됩니다. +logger.RemoveTag("build_configuration") +``` + +자세한 내용은 [태그 시작하기][3]를 참고하세요. + +## 속성 관리 + +로거에 설정된 속성은 각 로거에 로컬 적용됩니다. + +### 기본 속성 + +기본적으로 로거에서 보낸 로그 전체에 다음 속성이 추가됩니다. + +* `http.useragent` 및 추출 `device`와 `OS` 속성 +* `network.client.ip`와 추출된 지역 속성(`country`, `city`) +* `logger.version`, Datadog SDK 버전 +* `logger.thread_name`, (`main`, `background`) +* `version`, `Info.plist` 또는 `application.manifest`에서 추출한 클라이언트 앱 버전 +* `environment`, SDK 초기화에 사용되는 환경 이름 + +### 속성 추가 + +`DatadogLogger.AddAttribute` 메서드를 사용하면 특정 로거에서 보낸 모든 로그에 사용자 정의 속성을 추가할 수 있습니다. + +```cs +logger.AddAttribute("user-status", "unregistered") +``` + +`value`는 [`JsonCovert.SerializeObject`][4]를 사용하여 직렬화 가능한 대부분의 유형이 될 수 있습니다. + +### 속성 삭제 + +`DdLogger.RemoveAttribute` 메서드를 사용하면 특정 로거에서 보낸 모든 로그에서 사용자 정의 속성을 제거할 수 있습니다. + +```cs +// 이렇게 하면 앞으로 전송되는 모든 로그에서 "user-status" 속성이 제거됩니다. +logger.RemoveAttribute("user-status") +``` + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: https://github.com/DataDog/unity-package +[2]: /ko/real_user_monitoring/application_monitoring/unity/setup +[3]: /ko/getting_started/tagging/ +[4]: https://www.newtonsoft.com/json/help/html/m_newtonsoft_json_jsonconvert_serializeobject.htm +[5]: https://api.flutter.dev/flutter/services/StandardMessageCodec-class.html +[6]: https://pub.dev/packages/logger \ No newline at end of file diff --git a/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json index 6dcbd8ee77610..5a6a313a6d54b 100644 --- a/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-ed6465a0-5303-45e8-814f-26b9621a3692": { + "ast-str-d99877d8-715e-4487-94e7-253da6a3fcc3": { "string": "모바일 세션 리플레이 개인정보 보호 옵션" } }, "description": { - "ast-str-96c0458c-0687-4a95-9d66-6fa097d06464": { + "ast-str-4c42a407-da36-4de3-b98c-b310d7ca15a5": { "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-39f6993e-dc05-4968-992e-893036c5506b": { + "ast-str-3eb652ce-96b4-40b2-8255-2d04b7840875": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-af631d8c-8fc9-4e98-bee2-6afd3dbdf311": { + "ast-str-715f18f2-b07d-4c37-8060-9fddf27ea39a": { "string": "설명서" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-1c25456b-e5f6-4548-af66-3fae7a05f423": { + "ast-str-3dcad688-c0ec-4ce2-a4d4-6aa755c86ddb": { "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } }, "tag": { - "ast-str-a29b4ca3-075b-414c-8a68-0c33e0cfae6b": { + "ast-str-1781edad-2125-43bb-8a68-c8e611add905": { "string": "설명서" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-7d913357-3de0-47f5-995d-20902115e88a": { + "ast-str-0bccdca7-2ab8-4ce2-8dc0-b149e35c98bc": { "string": "모바일 세션 리플레이 설정 및 구성" } }, "tag": { - "ast-str-fd654bd7-9157-4811-bf1b-322a453db21e": { + "ast-str-1cb3706b-3e56-4a7b-ba44-13366a28e5e8": { "string": "설명서" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-6aae3788-1d07-41c1-943e-ce84e0eea71a": { + "ast-str-d0f38e09-f640-4129-ad56-4597b2eeca29": { "string": "모바일 세션 리플레이 문제 해결" } }, "tag": { - "ast-str-e66e4cab-d520-4636-b58e-572a077d362a": { + "ast-str-d6aa91e3-beaf-4709-bc4c-fa48a8677e1f": { "string": "설명서" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-efabc85f-a81a-409d-9ef3-4e3c49b0e2c8": { + "ast-str-dd5212b7-7eee-4399-8463-267cc0189b1f": { "string": "Session Replay" } }, "tag": { - "ast-str-6d52c7ad-1cdd-4740-b4ef-e0103e5209e0": { + "ast-str-d3836ed8-23dd-4e60-9e62-d7edd17541fb": { "string": "설명서" } } diff --git a/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 94728867f1ff4..f0be38ae26230 100644 --- a/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-5b85bfe0-cdd5-4616-80a4-f7b16289b9c8": { + "ast-str-209f705e-d4b1-4890-ad80-6be194d8fc99": { "string": "모바일 세션 리플레이 설치 및 설정" } }, "description": { - "ast-str-9ab98d47-4bc8-4cff-aab2-1a2c829a477c": { + "ast-str-eacb40a8-910e-4fa5-a34f-1c13ea5b02db": { "string": "모바일 세션 리플레이을 설치하고 설정합니다." } }, @@ -18,12 +18,12 @@ "0": { "link": "/product_analytics/session_replay/mobile", "text": { - "ast-str-6b7dd627-cfc2-449b-930b-c7c9202bb7f2": { + "ast-str-223ce0a2-060a-47f2-ad20-b1b96b4918f0": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-ad1f968c-ba7d-47fb-a595-fd656cf1a665": { + "ast-str-e23f3edb-4334-447e-b65a-b533378c2bfc": { "string": "설명서" } } @@ -31,12 +31,12 @@ "1": { "link": "/product_analytics/session_replay/mobile/app_performance", "text": { - "ast-str-5d4a3252-2fe5-4bd4-a75c-043fcd234a1b": { + "ast-str-dae9ced1-e49b-4d03-b084-8e0e2756874e": { "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } }, "tag": { - "ast-str-257753f4-c29e-4eb9-8c21-0b283b791d22": { + "ast-str-240a6e5a-af1c-432f-b5d0-61100ba56b35": { "string": "설명서" } } @@ -44,12 +44,12 @@ "2": { "link": "/product_analytics/session_replay/mobile/privacy_options", "text": { - "ast-str-7a98b6b8-a1cb-461b-985f-a6b645661066": { + "ast-str-d089e855-4841-473c-882d-1d9eaa0155d6": { "string": "모바일 세션 리플레이 개인정보 보호 옵션" } }, "tag": { - "ast-str-33326998-f6db-4a64-ad65-8e45a2955242": { + "ast-str-881372cb-a4b9-44d6-9b14-86ead284f858": { "string": "설명서" } } @@ -57,12 +57,12 @@ "3": { "link": "/product_analytics/session_replay/mobile/troubleshooting", "text": { - "ast-str-304a8f3a-51bb-426b-8ca2-bc7ae13a7cd9": { + "ast-str-ab371002-b6f3-4bbe-86db-f54d98a69f2a": { "string": "모바일 세션 리플레이 문제 해결" } }, "tag": { - "ast-str-6c5f9454-e16e-4312-8512-305ad68f7b0e": { + "ast-str-ac779f5a-d0dc-4ab9-8774-7dfc3c1d4d95": { "string": "설명서" } } @@ -70,12 +70,12 @@ "4": { "link": "/product_analytics/session_replay", "text": { - "ast-str-cc897da2-4f3a-435e-984d-b0002dda36cd": { + "ast-str-8a383d5b-df7f-42f1-a10b-f640f3cf7b40": { "string": "Session Replay" } }, "tag": { - "ast-str-af12f79d-bd7f-4f9e-8ea7-72971640339c": { + "ast-str-7c9ac9d0-5aa2-4864-b747-232082345ea5": { "string": "설명서" } } diff --git a/content/ko/real_user_monitoring/guide/monitor-kiosk-sessions-using-rum.md b/content/ko/real_user_monitoring/guide/monitor-kiosk-sessions-using-rum.md new file mode 100644 index 0000000000000..772fd63b899d0 --- /dev/null +++ b/content/ko/real_user_monitoring/guide/monitor-kiosk-sessions-using-rum.md @@ -0,0 +1,116 @@ +--- +description: RUM을 사용하여 키오스크 세션을 모니터링하기 위한 가이드입니다. +further_reading: +- link: /real_user_monitoring/platform/dashboards/ + tag: 설명서 + text: RUM 대시보드 +title: RUM을 사용하여 키오스크 세션 모니터링 +--- + +## 개요 +패스트푸드 주문기나 항공사 체크인 단말기와 같은 키오스크 애플리케이션은 짧은 시간 동안 여러 사용자를 연속적으로 응대하는 경우가 많습니다. 이러한 이유로, 세션을 자동 만료(예: 15분 비활성 또는 총 4시간 경과)를 기다리는 대신 사용자 행동을 기반으로 세션 종료를 트리거하는 기능이 필수적입니다. 이를 통해 각 사용자에 대한 정확한 세션 데이터와 메트릭을 수집할 수 있습니다. Datadog RUM SDK를 사용하면 이러한 기능을 활용하여 더욱 향상된 세션 추적 경험을 제공할 수 있습니다. + +## 사용자가 상호 작용을 종료할 때 `stopSession()` 사용 + +SDK `stopSession()` 메서드를 사용하여 사용자가 애플리케이션과의 상호 작용을 완료할 때(예: 홈 화면으로 돌아가거나 로그아웃할 때) 세션을 중지합니다. 사용자가 애플리케이션과 다시 상호 작용하거나 새 View가 시작되면(모바일만 해당) 새 세션이 생성됩니다. + +세션 내에서 사용자가 식별되면 새로 시작하기 위해 `stopSession()` 호출 이후에 사용자 정보를 초기화해야 할 수 있습니다. 애플리케이션 프레임워크에 따라 다음 문서를 참고하세요. [Browser][1], [iOS][2], [Android][3], [Flutter][4], [React Native][5]. + +### 브라우저 + +이 기능을 사용하려면 RUM Browser SDK 버전 4.37.0 이상이 필요합니다. 설치 지침은 [여기][6]에서 확인하세요. + +`stopSession()` 메서드는 설치 방법에 따라 다릅니다. + +{{< tabs >}} +{{% tab "NPM" %}} + +```javascript +datadogRum.stopSession() +``` + +{{% /tab %}} +{{% tab "CDN async" %}} + +```javascript +DD_RUM.onReady(function() { + DD_RUM.stopSession() +}) +``` + +{{% /tab %}} +{{% tab "CDN sync" %}} + +```javascript +window.DD_RUM && + window.DD_RUM.stopSession() +``` + +{{% /tab %}} +{{< /tabs >}} + +애플리케이션이 **여러 브라우저 탭**에 열려 있는 경우 RUM 세션을 중지하면 모든 탭에서 세션이 종료됩니다. + +애플리케이션이 **Logs SDK**를 사용하는 경우 RUM 세션을 중지하면 Logs 세션도 종료됩니다. + +### 모바일 + +`stopSession()` 메서드는 모바일 SDK 프레임워크에 따라 다릅니다. + +{{< tabs >}} +{{% tab "iOS" %}} + +이 기능을 사용하려면 RUM iOS SDK 버전 1.18.0 이상이 필요합니다. 설치 지침은 [여기][1]에서 확인하세요. + +```swift +RUMMonitor.shared().stopSession() +``` + +[1]: https://docs.datadoghq.com/ko/real_user_monitoring/ios/ + +{{% /tab %}} +{{% tab "Android" %}} + +이 기능을 사용하려면 RUM Android SDK 버전 1.19.0 이상이 필요합니다. 설치 지침은 [여기][1]에서 확인하세요. + +```kotlin +GlobalRumMonitor.get().stopSession() +``` + +[1]: https://docs.datadoghq.com/ko/real_user_monitoring/android/ + +{{% /tab %}} +{{% tab "Flutter" %}} + +이 기능을 사용하려면 RUM Flutter SDK 버전 1.4.0 이상이 필요합니다. 설치 지침은 [여기][1]에서 확인하세요. + +```dart +DatadogSdk.instance.rum?.stopSession(); +``` + +[1]: https://docs.datadoghq.com/ko/real_user_monitoring/application_monitoring/flutter/setup/ + +{{% /tab %}} +{{% tab "React Native" %}} + +이 기능을 사용하려면 RUM React Native SDK 버전 1.6.0 이상이 필요합니다. 설치 지침은 [여기][1]에서 확인하세요. + +```javascript +DdRum.stopSession() +``` + +[1]: https://docs.datadoghq.com/ko/real_user_monitoring/reactnative/ + +{{% /tab %}} +{{< /tabs >}} + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/real_user_monitoring/application_monitoring/browser/advanced_configuration/?tab=cdnsync#clear-user-session-property +[2]: /ko/real_user_monitoring/ios/advanced_configuration/?tab=swift +[3]: /ko/real_user_monitoring/application_monitoring/android/advanced_configuration/?tab=kotlin#track-user-sessions +[4]: /ko/real_user_monitoring/application_monitoring/flutter/advanced_configuration/#track-user-sessions +[5]: /ko/real_user_monitoring/reactnative/#user-information +[6]: /ko/real_user_monitoring/application_monitoring/browser/ \ No newline at end of file diff --git a/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 2b12c43a48c77..61da020e4f73b 100644 --- a/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-cf77a210-8bdd-4954-95fb-dab7e2deba53": { + "ast-str-1d6765ec-05f2-4061-b6eb-3491b6f860a1": { "string": "모바일 세션 리플레이 개인정보 보호 옵션" } }, "description": { - "ast-str-5c1d73d9-4393-4d1a-a7de-55de0b118877": { + "ast-str-dca2dfce-1c6c-482e-bb94-2965f89d14fd": { "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-7783691c-f46e-4c9b-b0ec-ee8d288c7337": { + "ast-str-8475c94d-f84d-4674-82fc-decb65d009e7": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-d5affb81-aca0-40fa-8c23-16f0d059f758": { + "ast-str-c5645fe4-d05f-444f-a89d-adc8e96cb73b": { "string": "설명서" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-c868b0cd-784e-42f2-be58-7983427d84ea": { + "ast-str-2362c5d7-1131-40ad-a000-fc28bb1491c8": { "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } }, "tag": { - "ast-str-2a10486f-3901-4eb7-b003-20cc7d23f1ee": { + "ast-str-bd194498-7095-4067-baee-d72654e0a6db": { "string": "설명서" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-cd9f333d-13ac-4283-bba5-680fc1b94093": { + "ast-str-c951c01a-4c8a-4288-ad38-6807d8898605": { "string": "모바일 세션 리플레이 설정 및 구성" } }, "tag": { - "ast-str-1e9dc563-9f7e-4a3c-b6ff-84303e00e726": { + "ast-str-96c999f2-7bb9-4295-a6cd-066ab4e9530b": { "string": "설명서" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-71010d1e-8251-4250-9cf0-5685318f478c": { + "ast-str-d44ba4c0-7fd6-40eb-bd41-46219b2a7e4c": { "string": "모바일 세션 리플레이 문제 해결" } }, "tag": { - "ast-str-1fef1fd1-f553-4651-b0c9-b05ec8549243": { + "ast-str-9fe48841-97e2-4863-be00-00e71cbcc11b": { "string": "설명서" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-fcfb9502-d1c1-4ec1-9898-667568c705e8": { + "ast-str-a5a66c70-f3e2-48a4-bcdd-aab5a769c6b1": { "string": "Session Replay" } }, "tag": { - "ast-str-d4dec885-9a19-45eb-bf6d-2d227790d9cb": { + "ast-str-064c6aa0-3fef-4cfd-a91d-54bad56aab0e": { "string": "설명서" } } diff --git a/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 3775c404c5b84..deaec3be332b7 100644 --- a/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-485e15cc-0738-4baa-98b9-db3f8d752021": { + "ast-str-7c124611-ecb3-4fa6-abe2-4a8158daaf75": { "string": "모바일 세션 리플레이 설치 및 설정" } }, "description": { - "ast-str-2b6994a7-5d24-4d85-8aca-c842cf4ee2ee": { + "ast-str-6e790010-0410-4bc8-8272-4a12fbf32d04": { "string": "모바일 세션 리플레이을 설치하고 설정합니다." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-9213fa71-a375-4bf7-9b6a-8015d1282f36": { + "ast-str-d16ef26e-381b-4eb8-b1de-70f969cd4eec": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-fa56b914-44fe-4871-940d-7603600b6274": { + "ast-str-e12e54d4-5679-464d-8395-97238d1ae11b": { "string": "설명서" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-379f506e-3d7a-4fea-b58f-490fec1cc61a": { + "ast-str-59880ecd-7a93-4b65-be2c-3e312586a956": { "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } }, "tag": { - "ast-str-7a8e5a41-0f5a-45ec-a218-471f1f769312": { + "ast-str-f5de440d-94a8-4c72-b204-4ebad6ab4d53": { "string": "설명서" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/privacy_options", "text": { - "ast-str-a35c2181-a87a-4f27-a952-7e4a2196c747": { + "ast-str-22570d2d-e2c7-495b-894c-d503eaa47a6c": { "string": "모바일 세션 리플레이 개인정보 보호 옵션" } }, "tag": { - "ast-str-166d237b-a671-42e7-b59d-8653457db279": { + "ast-str-71164fa2-9910-4173-8da0-c119c38df091": { "string": "설명서" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-7202702e-8627-46a1-b4c1-9d7d0ce8f95a": { + "ast-str-a966523b-1775-4b19-ab4c-5b1b1eb779bb": { "string": "모바일 세션 리플레이 문제 해결" } }, "tag": { - "ast-str-fd107bd1-b4a4-4fdd-89e5-1240a31a9f04": { + "ast-str-2a4d546c-ef45-420a-bda3-eddb6f8b9e30": { "string": "설명서" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-58e8f44c-bfb9-4d8b-b918-3b9216e1e522": { + "ast-str-aaea3198-36d2-441f-92f5-bb4c0f304fe2": { "string": "Session Replay" } }, "tag": { - "ast-str-45071591-2694-4e30-8e47-902cdeb8a28b": { + "ast-str-ab6c252b-84b1-4b1e-aa85-73679522086b": { "string": "설명서" } } @@ -83,12 +83,12 @@ "5": { "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", "text": { - "ast-str-22e2b6a5-6d8d-4a2a-a861-8142fdd70d05": { + "ast-str-e7e182ec-27f5-4009-b3c2-4042ac233d91": { "string": "웹 보기 추적" } }, "tag": { - "ast-str-0cd14bce-40c2-46b6-93f1-d5a05bd92239": { + "ast-str-d968d7e5-2c3c-426d-8969-9ffa2437cf80": { "string": "설명서" } } diff --git a/content/ko/security/application_security/code_security/setup/compatibility/dotnet.md b/content/ko/security/application_security/code_security/setup/compatibility/dotnet.md new file mode 100644 index 0000000000000..e26e9faffd2f7 --- /dev/null +++ b/content/ko/security/application_security/code_security/setup/compatibility/dotnet.md @@ -0,0 +1,123 @@ +--- +code_lang: dotnet +code_lang_weight: 10 +title: .NET 호환성 요구 사항 +type: multi-code-lang +--- + +## 애플리케이션 보안 기능 지원 + +지정된 트레이서 버전에서 아래 애플리케이션 보안 기능이 .NET 라이브러리에서 지원됩니다. + +| 애플리케이션 보안 기능 | 최소 .NET 트레이서 버전 | +| -------------------------------- | ----------------------------| +| 위협 탐지 | 2.23.0| +| Threat Protection | 2.26.0| +| 차단된 요청에 대한 응답 사용자 지정 | 2.27.0 | +| 소프트웨어 구성 분석(SCA) | 2.16.0 | +| 코드 보안 | 2.42.0 | +| 자동 사용자 활동 이벤트 추적 | 2.32.0 | +| API Security | 2.42.0 | + +.NET에서 지원되는 모든 애플리케이션 보안 기능을 사용하는데 필요한 최소 트레이서 버전은 2.42.0입니다. + +**참고**: Threat Protection을 사용하려면 [Remote Configuration][3]을 활성화해야 하며, 이는 표기된 최소 트레이서 버전에 포함되어 있습니다. + +### 지원되는 배포 유형 +| 유형 | 위협 탐지 지원 | 소프트웨어 구성 분석 | +|-------------------|--------------------------|------------------------------------------| +| Docker | {{< X >}} | {{< X >}} | +| 쿠버네티스(Kubernetes) | {{< X >}} | {{< X >}} | +| Amazon ECS | {{< X >}} | {{< X >}} | +| AWS Fargate | {{< X >}} | {{< X >}} | +| AWS Lambda | {{< X >}} | | +| Azure 앱 서비스 | {{< X >}} | {{< X >}} | + +**참고**: Azure App Service는 **웹 애플리케이션**에서만 지원됩니다. Azure Functions에서는 Application Security 기능이 지원되지 않습니다. + +## 언어 및 프레임워크 호환성 + +### 지원되는 .NET 버전 + +| .NET Framework 버전 | Microsoft 지원 종료 | 지원 레벨 | 패키지 버전 | +| ----------------------- | --------------------- | ----------------------------------- | --------------------------- | +| 4.8.1 | | GA | 최신 | +| 4.8 | | GA | 최신 | +| 4.7.2 | | GA | 최신 | +| 4.7.1 | | GA | 최신 | +| 4.7 | | GA | 최신 | +| 4.6.2 | 2027/01/12 | GA | 최신 | +| 4.6.1 | 2022/04/26 | GA | 최신 | + +| .NET Core 버전 | Microsoft 지원 종료 | 지원 레벨 | 패키지 버전 | +| ----------------------- | --------------------- | ----------------------------------- | --------------------------- | +| 9 | 2026/04/12 | GA | 최신 | +| 8 | 2026/11/10 | GA | 최신 | +| 7 | 2024/04/14 | GA | 최신 | +| 6 | 2024/11/12 | GA | 최신 | +| 5 | 2022/04/10 | GA | 최신 | +| 3.1 | 2022/12/13 | GA | 최신 | +| 3.0 | 2020/03/03 | GA | 최신 | +| 2.2 | 2019/10/23 | GA | 최신 | +| 2.1 | 2021/08/21 | GA | 최신 | + + +다음 아키텍처에서 지원됩니다. +- Linux (GNU) x64, ARM64 - (.Net Core) +- Alpine Linux (musl) x64, ARM64 - (.Net Core) +- macOS (Darwin) x64, ARM64 - (.Net Core) +- Windows (msvc) x86, x86-64 - (.Net Core 및 .Net Framework) + + +### 웹 프레임워크 호환성 + +- 공격자 소스 HTTP 요청 세부 정보 +- HTTP 요청 태그(상태 코드, 메소드 등) +- Distributed Tracing으로 애플리케이션을 통한 공격 플로 확인 + +##### Application Security 기능 노트 +- **Software Composition Analysis**는 모든 프레임워크에서 지원됩니다. +- 아래 목록에 사용 중인 프레임워크가 없어도 **Code Security**는 여전히 ​​Insecure Cookie 취약점을 감지합니다. + + +| 프레임워크 | Threat Detection이 지원되나요? | Threat Protection이 지원되나요? | Code Security? | +| ----------------------- | --------------- | ---------------------------------------------- | ---------------------------------------------- | +| ASP.NET MVC | {{< X >}} |{{< X >}} | {{< X >}} | +| ASP.NET Web API 2 | {{< X >}} | {{< X >}} | {{< X >}} | + +
원하는 프레임워크가 목록에 없다면 저희에게 알려주세요! 간단한 양식을 작성하여 자세한 내용을 보내주세요.
+ +### 데이터 스토어 호환성 + +**Datastore 추적은 다음을 제공합니다.** + +- SQL 공격 탐지 +- 쿼리 정보(예: 보안 처리된(sanitized) 쿼리 문자열) +- 오류 및 스택 트레이스 캡처 + +##### Application Security 기능 노트 +- **Threat Protection**는 HTTP 요청(인풋) 레이어에서도 작동하므로, 아래 표에 명시되지 않은 데이터베이스를 포함한 모든 데이터베이스에서 기본적으로 작동합니다. + +| 프레임워크 | Threat Detection이 지원되나요? | Threat Protection이 지원되나요? | Code Security? | +|-------------------|-----------------|---------------------|---| +| OracleDB | {{< X >}} | {{< X >}} |{{< X >}} | +| ADO.NET | {{< X >}} | {{< X >}} |{{< X >}} | +| SQL 서버 | {{< X >}} | {{< X >}} |{{< X >}} | +| MySQL | {{< X >}} | {{< X >}} |{{< X >}} | +| SQLite | {{< X >}} | {{< X >}} |{{< X >}} | + +### 사용자 Authentication Frameworks 호환성 + +**User Authentication Frameworks와의 통합**은 다음을 제공합니다. + +- 사용자 ID를 포함한 사용자 로그인 이벤트 +- 사용자 가입 이벤트(내장 SignInManager를 사용하는 앱) +- 사용자 로그인 이벤트에 대한 계정 탈취 탐지 모니터링 + +| 프레임워크 | +|-------------------| +| > .Net Core 2.1 | + +[1]: /ko/tracing/trace_collection/compatibility/dotnet-core/ +[2]: /ko/tracing/trace_collection/compatibility/dotnet-framework/ +[3]: /ko/agent/remote_config/#enabling-remote-configuration \ No newline at end of file From 791ad4db8a8e3219a39393ce212454eef35a6db8 Mon Sep 17 00:00:00 2001 From: "webops-guacbot[bot]" <214537265+webops-guacbot[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:05:06 +0000 Subject: [PATCH 6/6] Translated file updates --- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 24 +- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 28 +- .../fr/actions/workflows/actions/_index.md | 45 ++ .../actions/workflows/actions/flow_control.md | 89 ++++ content/fr/actions/workflows/build.md | 216 +++++++++ content/fr/actions/workflows/expressions.md | 108 +++++ content/fr/actions/workflows/limits.md | 69 +++ content/fr/actions/workflows/saved_actions.md | 72 +++ .../fr/actions/workflows/test_and_debug.md | 70 +++ content/fr/actions/workflows/track.md | 121 +++++ content/fr/actions/workflows/variables.md | 157 ++++++ content/fr/administrators_guide/build.md | 105 ++++ .../administrators_guide/getting_started.md | 131 +++++ content/fr/administrators_guide/run.md | 131 +++++ content/fr/agent/basic_agent_usage/chef.md | 204 ++++---- content/fr/agent/basic_agent_usage/puppet.md | 105 ++-- .../fr/agent/configuration/fips-compliance.md | 219 +++++++++ content/fr/agent/configuration/proxy_squid.md | 99 ++++ .../fleet_automation/remote_management.md | 157 ++++++ .../fr/agent/guide/agent-5-architecture.md | 46 ++ .../fr/agent/guide/agent-5-check-status.md | 82 ++++ content/fr/agent/guide/agent-5-commands.md | 132 +++++ .../guide/agent-5-configuration-files.md | 45 ++ content/fr/agent/guide/agent-5-debug-mode.md | 63 +++ content/fr/agent/guide/agent-5-flare.md | 86 ++++ content/fr/agent/guide/agent-5-log-files.md | 43 ++ .../agent/guide/agent-5-permissions-issues.md | 95 ++++ content/fr/agent/guide/agent-5-ports.md | 49 ++ .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 24 +- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 28 +- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 24 +- .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 28 +- content/ko/code_analysis/_index.md | 177 +++++++ .../code_analysis/static_analysis/_index.md | 162 +++++++ .../ko/containers/troubleshooting/_index.md | 181 +++++++ .../continuous_integration/explorer/_index.md | 102 ++++ .../setup_mongodb/selfhosted.md | 199 ++++++++ content/ko/integrations/redis_cloud.md | 183 +++++++ .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 24 +- .../error_tracking/mobile/unity.md | 120 +++++ .../mobile/privacy_options.ast.json | 24 +- .../mobile/setup_and_configuration.ast.json | 28 +- .../setup/compatibility/nodejs.md | 181 +++++++ .../test_impact_analysis/how_it_works.md | 74 +++ .../guide/tutorial-enable-java-host.md | 450 ++++++++++++++++++ 52 files changed, 4644 insertions(+), 324 deletions(-) create mode 100644 content/fr/actions/workflows/actions/_index.md create mode 100644 content/fr/actions/workflows/actions/flow_control.md create mode 100644 content/fr/actions/workflows/build.md create mode 100644 content/fr/actions/workflows/expressions.md create mode 100644 content/fr/actions/workflows/limits.md create mode 100644 content/fr/actions/workflows/saved_actions.md create mode 100644 content/fr/actions/workflows/test_and_debug.md create mode 100644 content/fr/actions/workflows/track.md create mode 100644 content/fr/actions/workflows/variables.md create mode 100644 content/fr/administrators_guide/build.md create mode 100644 content/fr/administrators_guide/getting_started.md create mode 100644 content/fr/administrators_guide/run.md create mode 100644 content/fr/agent/configuration/fips-compliance.md create mode 100644 content/fr/agent/configuration/proxy_squid.md create mode 100644 content/fr/agent/fleet_automation/remote_management.md create mode 100644 content/fr/agent/guide/agent-5-architecture.md create mode 100644 content/fr/agent/guide/agent-5-check-status.md create mode 100644 content/fr/agent/guide/agent-5-commands.md create mode 100644 content/fr/agent/guide/agent-5-configuration-files.md create mode 100644 content/fr/agent/guide/agent-5-debug-mode.md create mode 100644 content/fr/agent/guide/agent-5-flare.md create mode 100644 content/fr/agent/guide/agent-5-log-files.md create mode 100644 content/fr/agent/guide/agent-5-permissions-issues.md create mode 100644 content/fr/agent/guide/agent-5-ports.md create mode 100644 content/ko/code_analysis/_index.md create mode 100644 content/ko/code_analysis/static_analysis/_index.md create mode 100644 content/ko/containers/troubleshooting/_index.md create mode 100644 content/ko/continuous_integration/explorer/_index.md create mode 100644 content/ko/database_monitoring/setup_mongodb/selfhosted.md create mode 100644 content/ko/integrations/redis_cloud.md create mode 100644 content/ko/real_user_monitoring/error_tracking/mobile/unity.md create mode 100644 content/ko/security/application_security/software_composition_analysis/setup/compatibility/nodejs.md create mode 100644 content/ko/tests/test_impact_analysis/how_it_works.md create mode 100644 content/ko/tracing/guide/tutorial-enable-java-host.md diff --git a/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json index 0fc4f5c577490..8829920d4b91c 100644 --- a/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/es/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-d99877d8-715e-4487-94e7-253da6a3fcc3": { + "ast-str-ccbaa22a-5868-4366-8acf-f9786fe5cc64": { "string": "Opciones de privacidad de Mobile Session Replay" } }, "description": { - "ast-str-4c42a407-da36-4de3-b98c-b310d7ca15a5": { + "ast-str-cf658844-2097-43a1-a48c-fc3c6fd3f68f": { "string": "Configura opciones de privacidad para Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-3eb652ce-96b4-40b2-8255-2d04b7840875": { + "ast-str-40943a1a-edde-4589-8972-16cfd2af6d15": { "string": "Session Replay para móviles" } }, "tag": { - "ast-str-715f18f2-b07d-4c37-8060-9fddf27ea39a": { + "ast-str-d805da84-5bb4-41ee-8d1c-5dcaf2f57da4": { "string": "Documentación" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-3dcad688-c0ec-4ce2-a4d4-6aa755c86ddb": { + "ast-str-acf142d0-cd75-453a-8fe2-eb485b9f213e": { "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" } }, "tag": { - "ast-str-1781edad-2125-43bb-8a68-c8e611add905": { + "ast-str-4ac7c19e-67ac-44e9-aaa5-28780431795f": { "string": "Documentación" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-0bccdca7-2ab8-4ce2-8dc0-b149e35c98bc": { + "ast-str-76195321-3f00-4b5a-a106-51ed78a73882": { "string": "Configuración de Mobile Session Replay" } }, "tag": { - "ast-str-1cb3706b-3e56-4a7b-ba44-13366a28e5e8": { + "ast-str-6d14bdaf-653b-4949-a988-bd72160b6cd8": { "string": "Documentación" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-d0f38e09-f640-4129-ad56-4597b2eeca29": { + "ast-str-85754c8c-58a4-448d-ae08-472723af4b84": { "string": "Solución de problemas de Mobile Session Replay" } }, "tag": { - "ast-str-d6aa91e3-beaf-4709-bc4c-fa48a8677e1f": { + "ast-str-d6a0ce74-4536-4173-a168-d57916978c0a": { "string": "Documentación" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-dd5212b7-7eee-4399-8463-267cc0189b1f": { + "ast-str-a635174d-ef8d-4ab6-9834-e3507bcf410b": { "string": "Session Replay" } }, "tag": { - "ast-str-d3836ed8-23dd-4e60-9e62-d7edd17541fb": { + "ast-str-310cb21b-701c-4684-afb1-d449f8e564c7": { "string": "Documentación" } } diff --git a/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 7bb20bebc5e90..3b74addfe8389 100644 --- a/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/es/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-209f705e-d4b1-4890-ad80-6be194d8fc99": { + "ast-str-8bc75e14-52d8-47b9-8b37-7a1bd7f97881": { "string": "Instalación y configuración de Session Replay para móviles" } }, "description": { - "ast-str-eacb40a8-910e-4fa5-a34f-1c13ea5b02db": { + "ast-str-c80d6782-5698-497d-b45e-0051e109783e": { "string": "Instala y configura Session Replay para móviles." } }, @@ -18,12 +18,12 @@ "0": { "link": "/product_analytics/session_replay/mobile", "text": { - "ast-str-223ce0a2-060a-47f2-ad20-b1b96b4918f0": { + "ast-str-e7d7a9db-512d-40eb-872f-1f1263d7e130": { "string": "Session Replay para móviles" } }, "tag": { - "ast-str-e23f3edb-4334-447e-b65a-b533378c2bfc": { + "ast-str-482967ed-742a-4cc5-bf08-a90707e49069": { "string": "Documentación" } } @@ -31,12 +31,12 @@ "1": { "link": "/product_analytics/session_replay/mobile/app_performance", "text": { - "ast-str-dae9ced1-e49b-4d03-b084-8e0e2756874e": { + "ast-str-d01e28f2-29f5-49e3-8163-621edb676c8a": { "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" } }, "tag": { - "ast-str-240a6e5a-af1c-432f-b5d0-61100ba56b35": { + "ast-str-a671d16d-fcc1-4d02-8c77-fcee81e7b188": { "string": "Documentación" } } @@ -44,12 +44,12 @@ "2": { "link": "/product_analytics/session_replay/mobile/privacy_options", "text": { - "ast-str-d089e855-4841-473c-882d-1d9eaa0155d6": { + "ast-str-2c7c52b1-10f5-4302-a472-80f0d709b31e": { "string": "Opciones de privacidad de Mobile Session Replay" } }, "tag": { - "ast-str-881372cb-a4b9-44d6-9b14-86ead284f858": { + "ast-str-404bcf03-12a3-4f75-9b2b-b99828680e18": { "string": "Documentación" } } @@ -57,12 +57,12 @@ "3": { "link": "/product_analytics/session_replay/mobile/troubleshooting", "text": { - "ast-str-ab371002-b6f3-4bbe-86db-f54d98a69f2a": { + "ast-str-4a42c626-16ea-4ea3-9e74-246746eb5068": { "string": "Solución de problemas de Mobile Session Replay" } }, "tag": { - "ast-str-ac779f5a-d0dc-4ab9-8774-7dfc3c1d4d95": { + "ast-str-5caa4848-2d0a-4973-a3be-f36a6d1ebad5": { "string": "Documentación" } } @@ -70,12 +70,12 @@ "4": { "link": "/product_analytics/session_replay", "text": { - "ast-str-8a383d5b-df7f-42f1-a10b-f640f3cf7b40": { + "ast-str-606f1237-9b7f-453c-8ae7-49bbc3d2b75f": { "string": "Session Replay" } }, "tag": { - "ast-str-7c9ac9d0-5aa2-4864-b747-232082345ea5": { + "ast-str-b4299a90-07c0-4070-bf12-df4a07c7de82": { "string": "Documentación" } } diff --git a/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 1b5e9cdc75d4b..bfc353df6c5b3 100644 --- a/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/es/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-1d6765ec-05f2-4061-b6eb-3491b6f860a1": { + "ast-str-53263dcc-c7ec-4d64-a139-4f00386ed868": { "string": "Opciones de privacidad de Mobile Session Replay" } }, "description": { - "ast-str-dca2dfce-1c6c-482e-bb94-2965f89d14fd": { + "ast-str-1cda96eb-ecc3-4897-a958-37bfd13a254e": { "string": "Configura opciones de privacidad para Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-8475c94d-f84d-4674-82fc-decb65d009e7": { + "ast-str-9153c32c-9f3b-4297-83b0-1d8e5e790aa9": { "string": "Session Replay para móviles" } }, "tag": { - "ast-str-c5645fe4-d05f-444f-a89d-adc8e96cb73b": { + "ast-str-f6f9bf61-8e2b-4e08-8258-4a4f9fda0063": { "string": "Documentación" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-2362c5d7-1131-40ad-a000-fc28bb1491c8": { + "ast-str-265efd53-4f2a-45b4-95c8-613cf4db534a": { "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" } }, "tag": { - "ast-str-bd194498-7095-4067-baee-d72654e0a6db": { + "ast-str-69973a7e-d10f-4fdf-998e-ea79bff3f2a9": { "string": "Documentación" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-c951c01a-4c8a-4288-ad38-6807d8898605": { + "ast-str-40554c8e-ece6-416f-8da6-a827f00068b7": { "string": "Configuración de Mobile Session Replay" } }, "tag": { - "ast-str-96c999f2-7bb9-4295-a6cd-066ab4e9530b": { + "ast-str-603bebb3-4f48-4845-ba62-f2ab83d78653": { "string": "Documentación" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-d44ba4c0-7fd6-40eb-bd41-46219b2a7e4c": { + "ast-str-f450e1cc-9426-4b69-8253-3b46d4ff2361": { "string": "Solución de problemas de Mobile Session Replay" } }, "tag": { - "ast-str-9fe48841-97e2-4863-be00-00e71cbcc11b": { + "ast-str-f4b8f251-cae7-461d-becb-4ecc3874d1c6": { "string": "Documentación" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-a5a66c70-f3e2-48a4-bcdd-aab5a769c6b1": { + "ast-str-15faaca3-c0f0-4f24-a51f-9a888f62f8d3": { "string": "Session Replay" } }, "tag": { - "ast-str-064c6aa0-3fef-4cfd-a91d-54bad56aab0e": { + "ast-str-4760f4f1-077d-46ab-af8d-ebced0cced6c": { "string": "Documentación" } } diff --git a/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 41139d605260c..6d195114eac90 100644 --- a/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/es/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-7c124611-ecb3-4fa6-abe2-4a8158daaf75": { + "ast-str-e6058273-913f-46bb-9080-40f7dc9b34ae": { "string": "Instalación y configuración de Session Replay para móviles" } }, "description": { - "ast-str-6e790010-0410-4bc8-8272-4a12fbf32d04": { + "ast-str-e1880e45-f1ca-40b8-b80d-7e13841e67dc": { "string": "Instala y configura Session Replay para móviles." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-d16ef26e-381b-4eb8-b1de-70f969cd4eec": { + "ast-str-aeea9316-7851-464f-a0e5-908b6f1b7dd8": { "string": "Session Replay para móviles" } }, "tag": { - "ast-str-e12e54d4-5679-464d-8395-97238d1ae11b": { + "ast-str-3c9ae4ac-2195-4740-bcd3-a52fbb4cf619": { "string": "Documentación" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-59880ecd-7a93-4b65-be2c-3e312586a956": { + "ast-str-ac54f8ca-37b7-413f-b3d0-0a918b37b1b5": { "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" } }, "tag": { - "ast-str-f5de440d-94a8-4c72-b204-4ebad6ab4d53": { + "ast-str-3eecfad5-5996-44a4-85ed-994091673150": { "string": "Documentación" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/privacy_options", "text": { - "ast-str-22570d2d-e2c7-495b-894c-d503eaa47a6c": { + "ast-str-9476d72e-e89e-457c-832b-d1876d8154c2": { "string": "Opciones de privacidad de Mobile Session Replay" } }, "tag": { - "ast-str-71164fa2-9910-4173-8da0-c119c38df091": { + "ast-str-3023c936-fb3f-41c2-9765-9041533094fb": { "string": "Documentación" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-a966523b-1775-4b19-ab4c-5b1b1eb779bb": { + "ast-str-ca2c7ee9-4fe3-4bcd-9897-43ab42c7434b": { "string": "Solución de problemas de Mobile Session Replay" } }, "tag": { - "ast-str-2a4d546c-ef45-420a-bda3-eddb6f8b9e30": { + "ast-str-3977546e-a1bb-4526-bf38-ca1c391da8e6": { "string": "Documentación" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-aaea3198-36d2-441f-92f5-bb4c0f304fe2": { + "ast-str-13fc98fe-a961-4b16-a2f9-fbf4c3670cc0": { "string": "Session Replay" } }, "tag": { - "ast-str-ab6c252b-84b1-4b1e-aa85-73679522086b": { + "ast-str-856f47a5-5069-429c-a560-8082fbf32ae4": { "string": "Documentación" } } @@ -83,12 +83,12 @@ "5": { "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", "text": { - "ast-str-e7e182ec-27f5-4009-b3c2-4042ac233d91": { + "ast-str-c42c9b1d-9d9a-4622-89a1-e2f7dee5712e": { "string": "Web View Tracking" } }, "tag": { - "ast-str-d968d7e5-2c3c-426d-8969-9ffa2437cf80": { + "ast-str-130ec363-d662-4b11-b461-4d66edcce43d": { "string": "Documentación" } } diff --git a/content/fr/actions/workflows/actions/_index.md b/content/fr/actions/workflows/actions/_index.md new file mode 100644 index 0000000000000..9d7dc17ddb8ce --- /dev/null +++ b/content/fr/actions/workflows/actions/_index.md @@ -0,0 +1,45 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation +aliases: +- /fr/workflows/generic_actions +- /fr/service_management/workflows/actions_catalog/generic_actions/ +- /fr/service_management/workflows/actions +description: Utilisez les actions de workflow génériques pour le contrôle logique, + la transformation de données, les requêtes HTTP et les opérations JavaScript dans + vos workflows. +disable_sidebar: false +disable_toc: false +further_reading: +- link: /integrations/ + tag: Documentation + text: En savoir plus sur les intégrations +title: Actions +type: documentation +--- + +Datadog fournit une collection d'actions de workflow qui ne sont pas associées à un outil ni à une intégration spécifique. Ces actions vous permettent de mieux contrôler vos workflows en vous permettant d'effectuer des tâches de type : +- ajouter de la logique pour contrôler le chemin d'exécution de votre workflow. +- transformer les données collectées par une action. +- effectuer des requêtes HTTP personnalisées. + +{{< whatsnext desc="En savoir plus sur les actions génériques :" >}} + {{< nextlink href="/service_management/workflows/actions/flow_control" >}}Utiliser les actions logiques pour ajouter un intervalle de veille, créer une branche sur une condition, utiliser l'itération, et plus encore.{{< /nextlink >}} + {{< nextlink href="/service_management/workflows/expressions" >}}Effectuer des transformations de données personnalisées dans vos workflows à l'aide de JavaScript.{{< /nextlink >}} + {{< nextlink href="/actions/connections/http" >}}Utiliser l'action HTTP pour effectuer une requête vers un endpoint personnalisé.{{< /nextlink >}} + {{< nextlink href="/service_management/workflows/actions/saved_actions" >}}Utiliser la fonctionnalité Saved Actions pour stocker et réutiliser une action et ses paramètres.{{< /nextlink >}} +{{< /whatsnext >}} + +Si votre cas d'utilisation n'est pas couvert par une intégration ou une action générique de Datadog, vous pouvez [demander une nouvelle action ou une intégration complète][1]. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][2]. + +[1]: https://forms.gle/JzPazvxXox7fvA2R8 +[2]: https://datadoghq.slack.com/ \ No newline at end of file diff --git a/content/fr/actions/workflows/actions/flow_control.md b/content/fr/actions/workflows/actions/flow_control.md new file mode 100644 index 0000000000000..4222004356cb4 --- /dev/null +++ b/content/fr/actions/workflows/actions/flow_control.md @@ -0,0 +1,89 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation + - logic + - logic step + - flux +aliases: +- /fr/workflows/logic_actions +- /fr/service_management/workflows/actions_catalog/logic_actions/ +- /fr/service_management/workflows/actions/flow_control +description: Ajouter une logique de contrôle aux workflows à l'aide de conditions + if, d'instructions switch, de boucles, d'intervalles de veille et d'actions de branchement. +disable_toc: false +further_reading: +- link: /integrations/ + tag: Documentation + text: En savoir plus sur les intégrations +is_beta: false +title: Logique de workflow +type: workflows +--- + +Utilisez les [actions logiques][1] pour ajouter une logique de contrôle à votre workflow. Par exemple, vous pouvez créer une branche à partir d'une condition, effectuer une action de manière itérative, inclure un intervalle de veille, et plus encore. + +## If condition + +Vous pouvez créer une branche dans le chemin d'exécution de votre workflow en fonction de l'évaluation d'une ou plusieurs instructions que vous définissez. Dans la capture d'écran ci-dessous, une action **If condition** détermine l'étape suivante dans le workflow en fonction de si le code de statut d'une action de requête HTTP précédente renvoie `200`. + +{{< img src="service_management/workflows/if-condition.png" alt="Le canevas du workflow avec une action if condition sélectionnée et l'onglet de configuration ouvert. La section Statements est mise en évidence avec deux instructions spécifiant que le statut d'une requête précédente doit être 200." >}} + +## Switch statement + +Utilisez l'action Switch statement pour gérer plusieurs chemins de branchement dans une seule étape. Spécifiez une expression switch et comparez-la à une ou plusieurs valeurs de cas. Si aucun cas ne correspond, une branche par défaut s'exécute à la place. Dans l'exemple ci-dessous, une instruction Switch achemine le workflow en fonction de si le code de statut d'une requête HTTP précédente est `200`, `403`, `404`, `500` ou une autre valeur. + +{{< img src="service_management/workflows/switch-statement.png" alt="Le canevas du workflow montrant une action Switch statement nommée 'Make_request.status' se ramifiant en plusieurs cas pour différents codes de statut HTTP. Chaque cas envoie un message Slack différent, et la branche par défaut génère une erreur inattendue si aucun autre cas ne correspond." >}} + +## Sleep + +L'action **Sleep** met en pause l'exécution du workflow pendant une durée spécifiée. Sélectionnez une durée prédéfinie dans le menu déroulant **Duration**, ou saisissez une variable personnalisée en secondes. + +## For loop + +L'action **For loop** vous permet d'exécuter un ensemble d'actions de manière itérative pour chaque élément d'une liste d'entrée donnée. Les boucles for acceptent une liste d'entrée allant jusqu'à 2 000 éléments. Vous pouvez effectuer de nombreuses opérations différentes dans une boucle for, y compris la configuration de chemins d'erreur et la mise à jour de variables. + +Dans l'exemple ci-dessous, une boucle for itère sur une liste d'incidents et envoie un message Slack pour tout incident de plus d'une semaine. + +{{< img src="service_management/workflows/iteration2.png" alt="Un workflow avec une boucle for. La boucle itère sur une liste d'incidents et envoie un message à un canal slack si l'incident a plus d'une semaine." style="width:100%;" >}} + +Pour ajouter une boucle for à votre workflow : +1. Cliquez sur l'icône plus (**+**) sur votre canevas de workflow pour ouvrir le catalogue d'actions. +1. Recherchez et sélectionnez l'étape **For loop**. +1. Cliquez sur l'étape de boucle et saisissez une **Input list** sur laquelle l'étape doit itérer. Vous pouvez saisir une liste personnalisée ou utiliser une variable de workflow. +1. À l'intérieur du cadre de la boucle, cliquez sur l'icône (**+**) pour ajouter une étape à la boucle. +1. Configurez l'action en boucle. Pour accéder à la valeur actuelle dans la liste d'entrée, utilisez la variable `{{Current.Value}}`. Pour accéder à l'index de la valeur actuelle, utilisez `{{Current.Index}}`. +1. Ajoutez et configurez toutes les étapes supplémentaires que vous devez mettre en boucle. Vous pouvez utiliser une **if statement** et un **break** pour quitter votre boucle prématurément. +1. **Enregistrez** et **publiez** le workflow. + +Lorsqu'une exécution se termine, le workflow passe en mode **Debug**. Sélectionnez une étape dans la boucle pour voir une liste de **toutes** les itérations, des itérations **ayant échoué** ou des itérations **réussies** pour cette étape. Sélectionnez une itération pour voir la sortie ou le message d'erreur. + +## While loop + +L'action **While loop** vous permet d'exécuter un ensemble d'actions de manière itérative en fonction d'un ensemble de conditions et est recommandée pour les modèles d'automatisation où le nombre de répétitions n'est pas connu à l'avance. Les boucles while exécutent un maximum de 2 000 itérations. Vous pouvez effectuer différentes opérations avec une boucle while, y compris la pagination, l'interrogation de la progression et la réessai jusqu'au succès. + +L'exemple suivant utilise une boucle while pour paginer l'API AWS S3 List Buckets pour une application. + +{{< img src="service_management/workflows/iteration3.png" alt="Un workflow avec une boucle while. Le workflow utilise une boucle while pour paginer l'API AWS S3 List Buckets pour une application." style="width:100%;" >}} + +Pour ajouter une boucle while à votre workflow : +1. Cliquez sur l'icône plus (**+**) sur votre canevas de workflow pour ouvrir le catalogue d'actions. +1. Recherchez et sélectionnez l'étape **While loop**. +1. Cliquez sur l'étape de boucle et définissez la condition que la boucle While évaluera avant chaque itération. La boucle continue si la condition est vraie, et s'arrête lorsqu'elle évalue à faux. +1. À l'intérieur du cadre de la boucle, cliquez sur l'icône plus (**+**) pour ajouter une étape à la boucle. +1. Configurez l'action en boucle. Pour accéder à l'index de la valeur actuelle, utilisez `{{Current.Index}}`. +1. Ajoutez et configurez toutes les étapes supplémentaires que vous devez mettre en boucle. Vous pouvez utiliser une **if statement** et une action **break** pour quitter votre boucle prématurément. +1. **Enregistrez** et **publiez** le workflow. + +Lorsqu'une exécution se termine, le workflow passe en mode **Debug**. Sélectionnez une étape dans la boucle pour voir une liste de **toutes** les itérations, des itérations **ayant échoué** ou des itérations **réussies** pour cette étape. Sélectionnez une itération pour voir la sortie ou le message d'erreur. Sélectionnez l'étape While Loop et un index spécifique pour voir la condition évaluée à cet index. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][2]. + +[1]: https://app.datadoghq.com/workflow/action-catalog#logic//com.datadoghq.core.if +[2]: https://datadoghq.slack.com/ \ No newline at end of file diff --git a/content/fr/actions/workflows/build.md b/content/fr/actions/workflows/build.md new file mode 100644 index 0000000000000..1cf7dce886942 --- /dev/null +++ b/content/fr/actions/workflows/build.md @@ -0,0 +1,216 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation +aliases: +- /fr/workflows/build +- /fr/service_management/workflows/build +description: Créer des workflows à partir de blueprints ou créer des workflows personnalisés + à l'aide de l'assistance IA, de la configuration manuelle et d'actions glisser-déposer. +disable_toc: false +further_reading: +- link: /getting_started/workflow_automation/ + tag: Documentation + text: Débuter avec Workflow Automation +- link: /actions/actions_catalog + tag: Documentation + text: Parcourir les actions disponibles dans l'Action Catalog +- link: /security/cloud_security_management/workflows + tag: Documentation + text: Automatiser les workflows de sécurité avec Workflow Automation +- link: /service_management/workflows/variables + tag: Documentation + text: Variables et paramètres +title: Créer des workflows +--- + +Vous pouvez créer des workflows ou modifier des workflows existants depuis la page [Workflow Automation][1]. La page répertorie des informations sur les workflows existants, telles que le propriétaire du workflow, le type de déclencheur, les dates de dernière modification et d'exécution de chaque workflow, et si le workflow est publié ou non. +- Passez la souris sur un workflow pour obtenir les options permettant de supprimer, cloner ou modifier les autorisations du workflow. +- Activez l'option **My workflows** si vous souhaitez uniquement voir les workflows que vous avez créés. + +## Créer un workflow à partir d'un blueprint + +1. Cliquez sur l'onglet [**Blueprints**][5]. +1. Si vous le souhaitez, utilisez la barre de recherche pour filtrer la liste des blueprints par nom, catégorie ou intégration. +1. Trouvez le blueprint que vous souhaitez utiliser et cliquez dessus. Le canevas du workflow apparaît. +1. Cliquez sur **Create From Blueprint**. Le canevas du workflow se met à jour pour afficher votre workflow nouvellement créé. +1. Saisissez un nouveau nom et une nouvelle description pour le workflow. +1. Facultativement, sélectionnez ou saisissez des tags que vous souhaitez appliquer au workflow. Pour obtenir plus d'informations sur les tags Datadog, consultez la section [Débuter avec les tags][7]. +1. Facultativement, sélectionnez tous les [services][8] associés à appliquer au workflow. +1. Facultativement, sélectionnez des [équipes][9] à associer au workflow. Si une équipe n'existe pas, vous pouvez saisir un nom pour la créer. +1. Cliquez sur **Save** pour appliquer vos modifications. +1. Les étapes de workflow qui nécessitent des mises à jour sont marquées de points d'exclamation. Cliquez sur chaque étape de workflow que vous souhaitez modifier et remplissez tous les champs vides dans l'onglet **Configure**. +1. Lorsque vous avez terminé de modifier le workflow, cliquez sur **Run** pour tester votre workflow. +1. Lorsque vous êtes prêt à publier votre workflow, cliquez sur **Publish**. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][4]. + +## Créer ou modifier un workflow avec l'IA {#create-a-workflow-with-ai} + +Si vous ne savez pas par où commencer, vous pouvez générer automatiquement un workflow ou itérer sur un workflow existant avec l'IA. + +Pour générer un workflow : +1. Depuis la page [Workflow Automation][1], cliquez sur **New Workflow**. +1. Cliquez sur **Create a workflow with AI**. +1. Saisissez une invite détaillée pour votre workflow. Spécifiez les intégrations et les actions que vous souhaitez utiliser. +1. Cliquez sur la flèche vers le haut (**↑**) pour créer votre workflow. + +Pour itérer sur un workflow existant : +1. Depuis un workflow existant, cliquez sur **Edit with AI**. +1. Saisissez une invite détaillée pour le comportement que vous souhaitez ajouter à votre workflow. Incluez les intégrations et les actions que vous souhaitez utiliser. +1. Cliquez sur la flèche vers le haut (**↑**) pour ajouter la fonctionnalité à votre workflow. + +
L'IA de Workflow Automation ne répond pas aux questions sur le produit. Si vous avez des questions ou des commentaires, envisagez de rejoindre le canal #workflows sur le Slack de la communauté Datadog
+ +## Créer un workflow personnalisé + +Pour créer un workflow, cliquez sur **New workflow** sur la page [Workflow Automation][1]. + +Pour configurer votre workflow : +1. Dans le panneau de configuration du workflow, saisissez un **Name** pour votre workflow. +1. Facultativement, sélectionnez ou saisissez des tags que vous souhaitez appliquer au workflow. Pour obtenir plus d'informations sur les tags Datadog, consultez la section [Débuter avec les tags][7]. +1. Facultativement, sélectionnez tous les [services][8] associés à appliquer au workflow. +1. Facultativement, sélectionnez des [équipes][9] à associer au workflow. Si une équipe n'existe pas, vous pouvez saisir un nom pour la créer. +1. Saisissez des paramètres d'entrée ou de sortie si votre workflow les utilise. +1. Cliquez sur **Save** pour appliquer vos modifications. + +Si vous n'êtes pas sûr de la configuration de votre workflow, vous pouvez revenir au panneau plus tard en cliquant n'importe où sur le canevas du workflow. + +### Créer un workflow avec le créateur de workflow + +1. Si votre workflow nécessite un déclencheur, cliquez sur **Add Trigger**. Pour obtenir plus d'informations, consultez la section [Déclencher un workflow][3]. +1. Cliquez sur **Add Step** pour commencer à ajouter des étapes à votre workflow. +1. Recherchez une action à l'aide de la barre de recherche ou parcourez les différentes intégrations et leurs actions associées pour trouver l'action qui vous intéresse. Cliquez sur une action pour l'ajouter en tant qu'étape dans la fenêtre d'édition. +1. Cliquez sur l'étape dans le canevas du workflow pour la configurer ou afficher ses sorties ou ses variables de contexte. Pour obtenir plus d'informations sur les sorties et les variables de contexte, consultez la section [Variables de contexte][14]. +1. Après avoir configuré l'étape, cliquez sur l'icône IA ou sur l'icône plus (**+**) pour ajouter une autre étape, ou enregistrez le workflow si vous avez terminé. +1. Lorsque vous êtes prêt à publier votre workflow, cliquez sur **Publish**. Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][4]. + +Chaque étape du workflow peut être modifiée à tout moment en cliquant dessus. Cliquez sur les étapes et faites-les glisser pour les réorganiser. + +#### Raccourcis et outils de canevas + +Pour voir les raccourcis clavier et souris pour le canevas du générateur de workflow, tapez `?` (shift+`/`) ou cliquez sur le bouton **Keyboard** {{< img src="service_management/workflows/keyboard-icon.png" inline="true" style="width:40px;">}}. Une liste de raccourcis apparaît. + +Les boutons **Zoom out** {{< img src="service_management/workflows/zoom-out-mag-icon.png" inline="true" style="width:30px;">}}, **Zoom in** {{< img src="service_management/workflows/zoom-in-mag-icon.png" inline="true" style="width:30px;">}} et **Reset viewport** {{< img src="service_management/workflows/reset-viewport-icon.png" inline="true" style="width:34px;">}} contrôlent la façon dont la fenêtre d'affichage est affichée. + +Le bouton **Auto layout** {{< img src="service_management/workflows/auto-layout-icon.png" inline="true" style="width:80px;">}} aligne et distribue les étapes de votre workflow. + +Le bouton **Add annotation** {{< img src="service_management/workflows/add-annotation-icon.png" inline="true" style="width:30px;">}} vous permet d'ajouter des notes d'annotation à votre workflow. Ces notes offrent une barre de formatage pour ajouter divers formats de texte tels que le gras et l'italique, les liens et les listes. Vous pouvez également saisir vos annotations en Markdown. + +{{< img src="service_management/workflows/workflow-annotation-with-bar.png" alt="Une annotation vide, avec la barre de formatage affichée au-dessus" style="width:70%;" >}} + +## Tester une étape + +Consultez la page de test et de débogage pour obtenir des informations sur [comment tester une étape][11]. + +## Publier un workflow + +Les workflows planifiés et déclenchés ne se déclenchent pas automatiquement tant que vous ne les avez pas publiés. Pour publier le workflow, cliquez sur **Publish** depuis la page du workflow. + +Les workflows publiés engendrent des coûts en fonction des exécutions de workflow. Pour obtenir plus d'informations, consultez la [page de la tarification de Datadog][4]. + +### Mettre à jour un workflow publié + +Vous pouvez mettre à jour les workflows publiés sans affecter la version en ligne jusqu'à ce que vous soyez prêt. + +La modification d'un workflow publié crée un brouillon. Toutes les modifications apportées au brouillon ne modifient pas le workflow publié. Chaque workflow peut avoir un brouillon actif, que tous les éditeurs peuvent modifier. Lorsque vous êtes prêt, cliquez sur **Publish Changes** pour remplacer la version publiée. + +Les brouillons exécutent toutes les étapes configurées comme n'importe quel workflow normal. Vous pouvez uniquement exécuter des brouillons depuis l'éditeur de workflow. + +Pour supprimer le brouillon, cliquez sur l'**icône de roue dentée** dans le coin supérieur droit de l'éditeur et sélectionnez **Discard draft**. + +**Remarques** : +- L'exécution d'un brouillon pour les workflows publiés n'engendre pas de coûts. +- Toute mise à jour des propriétés du workflow (nom, tags ou notifications) contourne le flux de brouillon et est appliquée immédiatement à la version publiée. + +## Variables et paramètres + +Pour obtenir des informations sur l'utilisation de variables et de paramètres dans vos workflows, consultez la section [Variables et paramètres][12]. + +## Notifications de workflow + +Vous pouvez configurer votre workflow pour qu'il vous envoie une notification en cas de succès ou d'échec. Les intégrations suivantes sont prises en charge : +- Slack +- Microsoft Teams +- PagerDuty +- E-mail + +Pour ajouter une notification : +1. Dans le panneau de configuration du workflow, faites défiler jusqu'à la section **Notifications**. +1. Pour ajouter une notification si le workflow réussit : + 1. Cliquez sur l'icône plus (`+`) à côté de **Notify on success**. + 1. Sélectionnez l'intégration que vous souhaitez utiliser pour les notifications. + 1. Remplissez les champs requis pour l'intégration spécifiée. + 1. Cliquez sur **Save** pour enregistrer votre workflow. +1. Pour ajouter une notification si le workflow échoue : + 1. Cliquez sur l'icône plus (`+`) à côté de **Notify on failure**. + 1. Sélectionnez l'intégration que vous souhaitez utiliser pour les notifications. + 1. Remplissez les champs requis pour l'intégration spécifiée. + 1. Cliquez sur **Save** pour enregistrer votre workflow. + +## Gestion des erreurs + +Vous pouvez spécifier le nombre de fois que vous souhaitez que votre workflow réessaie une étape ayant échoué, et à quel intervalle, avant de passer à un chemin d'erreur facultatif. Si aucun chemin d'erreur n'est présent, le workflow se termine après épuisement de toutes les tentatives. + +### Tentatives + +Pour configurer les tentatives pour une étape : +1. Cliquez sur l'étape concernée dans la fenêtre d'édition du workflow. +1. Dans la section **Retries**, ajustez les valeurs **Interval** et **Max retries**. +1. Enregistrez votre workflow pour appliquer les modifications. + +### Ajouter un chemin d'erreur + +Vous pouvez ajouter un chemin d'erreur que le workflow doit suivre s'il rencontre une erreur. + +Pour ajouter un chemin d'erreur : +1. Passez la souris sur l'étape où vous souhaitez ajouter un chemin d'erreur. +1. Cliquez et faites glisser l'icône **Error path** {{< img src="service_management/workflows/error-path-icon.png" inline="true" style="width:24px;">}} pour placer un nouveau chemin d'erreur sur le canevas. +1. Sélectionnez une étape de workflow à ajouter au chemin d'erreur. +1. Après avoir configuré votre étape, vous pouvez ajouter d'autres étapes à un chemin d'erreur et même fusionner votre chemin d'erreur avec le chemin de workflow principal. +1. Lorsque vous avez terminé de configurer les étapes de votre chemin d'erreur, cliquez sur **Save** pour appliquer vos modifications. + +## Attendre jusqu'à ce que la condition soit remplie + +Certaines actions vous permettent d'ajouter une condition qui doit être remplie avant qu'un workflow puisse marquer une étape comme terminée et continuer. + +Pour ajouter une condition : +1. Cliquez sur l'étape concernée dans la fenêtre d'édition du workflow. +1. Dans la section **Wait until condition**, utilisez le menu déroulant pour sélectionner une condition préconfigurée, ou sélectionnez **Configure custom wait condition** et créez votre propre condition. + - La liste des conditions préconfigurées disponibles dépend de l'action. + - Les variables d'instruction conditionnelle peuvent être soit une chaîne de caractères, soit un nombre, soit un booléen, soit une variable de sortie d'étape. + - Seules les variables de sortie de l'étape actuelle peuvent être utilisées dans une instruction conditionnelle personnalisée. +1. Saisissez un temps d'attente maximum pour le workflow. Si la condition n'est pas remplie à temps, l'étape échoue. + +{{< img src="service_management/workflows/wait-until-condition2.png" alt="Un exemple de wait until condition" style="width:100%;" >}} + +## Modifier un workflow avec JSON + +Modifiez un workflow en JSON en cliquant sur **Edit JSON Spec** sur la page de votre workflow. L'éditeur JSON vous permet également de : +- **Format JSON** : améliorez l'apparence de votre JSON. +- **Export JSON** : permet de télécharger le workflow. + +## Interagir avec les workflows à l'aide de l'API + +Pour effectuer des tâches à l'aide de l'API, consultez la [documentation de l'API Workflow Automation][13]. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][10]. + +[1]: https://app.datadoghq.com/workflow +[2]: https://handlebarsjs.com/guide/expressions.html#expressions +[3]: /fr/service_management/workflows/trigger +[4]: https://www.datadoghq.com/pricing/?product=workflow-automation#products +[5]: https://app.datadoghq.com/workflow/blueprints +[6]: /fr/service_management/workflows/actions/#testing-expressions-and-functions +[7]: /fr/getting_started/tagging/ +[8]: /fr/glossary/#service +[9]: /fr/account_management/teams/ +[10]: https://datadoghq.slack.com/ +[11]: /fr/service_management/workflows/test_and_debug/#test-a-step +[12]: /fr/service_management/workflows/variables/ +[13]: /fr/api/latest/workflow-automation/ +[14]: /fr/service_management/workflows/variables/#context-variables \ No newline at end of file diff --git a/content/fr/actions/workflows/expressions.md b/content/fr/actions/workflows/expressions.md new file mode 100644 index 0000000000000..b1b46ed3b6a0b --- /dev/null +++ b/content/fr/actions/workflows/expressions.md @@ -0,0 +1,108 @@ +--- +aliases: +- /fr/service_management/workflows/actions/data_transformation/ +- /fr/service_management/workflows/expressions +description: Utiliser des expressions JavaScript en ligne et des actions function/expression + dédiées pour des transformations de données personnalisées dans les workflows. +disable_toc: false +further_reading: +- link: /service_management/workflows/variables/ + tag: Documentation + text: Variables et paramètres +title: Expressions JavaScript +--- + +JavaScript est disponible dans les workflows à l'aide d'expressions en ligne ou via les actions dédiées **Function** et **Expression** JS. + +## Expressions JavaScript en ligne + +Vous pouvez utiliser des expressions JavaScript (JS) directement dans les étapes de workflow pour effectuer un large éventail de transformations de données sans avoir besoin d'inclure des étapes JS dédiées. + +Pour utiliser une expression en ligne dans votre workflow, encadrez l'expression dans `${}`. Par exemple, pour convertir un ID de chaîne de caractères (`Trigger.stringId`) en entier, utilisez `${ parseInt(Trigger.stringId) }`. + +La bibliothèque utilitaire [Lodash][1] est disponible dans les expressions en ligne. Le préfixe underscore Lodash (`_`) est facultatif. Par exemple, `${ _.toNumber("1") }` et `${ toNumber("1") }` sont tous deux des expressions en ligne valides. + +### Exemples + +#### Récupérer un horodatage + +L'exemple suivant utilise la fonction Lodash `now()` à l'intérieur d'une étape **Get hosts total** pour obtenir le nombre de hosts au cours de la dernière minute. + +L'action utilise l'expression en ligne suivante dans le champ **From** : +```js +${ Math.floor(now() / 1000) - 60 } +``` + +{{< img src="/service_management/workflows/timestamp.png" alt="Une expression en ligne utilisant la fonction lowdash now()" style="width:90%;" >}} + +#### Incrémenter une valeur + +L'exemple suivant incrémente la capacité souhaitée à l'intérieur d'une étape **Set desired capacity** de 1. + +L'action utilise l'expression en ligne suivante dans le champ **Desired capacity** : +```js +${ Steps.Describe_auto_scaling_group.autoScalingGroup.DesiredCapacity + 1 } +``` + +{{< img src="/service_management/workflows/increment.png" alt="Une expression en ligne qui incrémente la capacité souhaitée de un" style="width:90%;" >}} + +## Actions d'expression JavaScript + +Les actions [Expression](#expression-step) et [Function](#function-step) effectuent des transformations de données personnalisées dans vos workflows à l'aide de JavaScript. Utilisez les valeurs de toutes les variables de contexte disponibles dans votre workflow comme entrées pour vos expressions et fonctions JavaScript avec la syntaxe `$.Steps..`. + +Les données renvoyées par ces actions peuvent ensuite être référencées dans les étapes suivantes du workflow. + +Vous pouvez utiliser un underscore (`_`) pour utiliser [Lodash][1] dans vos étapes d'expression et de fonction. Par exemple, pour référencer la variable de statut de requête HTTP (`status`) de l'étape de requête HTTP (`Make_request`), vous utiliseriez la variable de contexte suivante : + +``` +$.Steps.Make_request.status +``` + +Et pour déterminer si un tableau renvoyé par `Array_function` inclut le nom `Bits`, appliquez la fonction Lodash `_.includes` avec la syntaxe suivante : + +``` +_.includes($.Steps.Array_function.data, "Bits") +``` + +### Étape Function + +L'action function permet les affectations de variables et les transformations de données complexes nécessitant plusieurs expressions. + +Pour ajouter une action function : +- Dans un nouveau workflow, cliquez sur **Add step** et recherchez `function`. Sélectionnez l'action **Function** pour l'ajouter à votre workflow. +- Dans un workflow existant, cliquez sur **+** et recherchez `function`. Sélectionnez l'action **Function** pour l'ajouter à votre workflow. + +#### Écrire des étapes de fonction avec l'IA + +Vous pouvez utiliser Bits AI pour vous aider à écrire le JavaScript pour une étape **Function**. Pour utiliser cette fonctionnalité, effectuez les étapes suivantes : + +1. Ajoutez une étape **Function** à votre workflow. +1. Sous **General**, dans le champ **Script**, cliquez sur ** Write with Bits AI**. +1. Dans le champ **Describe your transformation script**, saisissez une description de ce que vous souhaitez que votre script fasse. Cliquez sur la flèche vers le haut (**↑**) pour soumettre votre description. +1. Choisissez une option pour **Replace script**, **Insert in script** ou **Copy to clipboard**. +1. Vérifiez le script et modifiez-le si nécessaire pour répondre à vos besoins. + +### Étape Expression + +Dans la plupart des cas, utilisez une expression en ligne au lieu d'une étape d'expression dédiée. Les actions d'expression acceptent une seule ligne de code. Par exemple, `[1, 2, 3].filter(x => x < 3)`. Les affectations de variables ne sont pas disponibles dans les expressions. + +Pour ajouter une action expression : +- Dans un nouveau workflow, cliquez sur **Add step** et recherchez `expression`. Sélectionnez l'action **Expression** pour l'ajouter à votre workflow. +- Dans un workflow existant, cliquez sur **+** et recherchez `expression`. Sélectionnez l'action **Expression** pour l'ajouter à votre workflow. + +Dans une étape d'expression, l'exécution utilise des _copies_ de toutes les variables disponibles. Muter une variable dans une étape n'a aucun effet sur la valeur de la variable en dehors de l'étape. Pour affecter le résultat d'une expression à une variable, consultez la section [Définir des variables][4]. + +## Tester des expressions et des fonctions + +Consultez la page de test et de débogage pour apprendre comment [tester une étape de workflow][3]. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][2]. + +[1]: https://lodash.com/ +[2]: https://datadoghq.slack.com/ +[3]: /fr/service_management/workflows/test_and_debug/#test-a-step +[4]: /fr/service_management/workflows/actions/set_variables \ No newline at end of file diff --git a/content/fr/actions/workflows/limits.md b/content/fr/actions/workflows/limits.md new file mode 100644 index 0000000000000..c9ce979fcab3a --- /dev/null +++ b/content/fr/actions/workflows/limits.md @@ -0,0 +1,69 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation +aliases: +- /fr/service_management/workflows/limits +description: Limites de débit pour Workflow Automation +disable_toc: false +further_reading: +- link: /service_management/workflows/build + tag: Documentation + text: Créer des workflows +title: Limites +--- + +Cette page décrit les limites de débit et les limitations qui s'appliquent à Workflow Automation. + +## Limites au niveau du compte + +### Comptes payants + +Chaque organisation : + +* Peut créer jusqu'à 500 workflows par minute. +* Peut exécuter jusqu'à 200 workflows par minute. +* Peut exécuter jusqu'à 50 workflows par minute pour une source (comme un monitor spécifique). +* Peut mettre en mémoire tampon jusqu'à 500 requêtes. + +Lorsqu'une organisation dépasse un seuil, les requêtes d'exécution en attente se mettent en file d'attente jusqu'à un maximum de 500 par organisation, puis sont traitées selon les limites décrites précédemment. Par exemple, si un monitor déclenche 500 exécutions de workflow, seules 50 sont déclenchées dans la première minute. Les 450 exécutions de workflow restantes sont mises en file d'attente et 50 workflows sont déclenchés chaque minute jusqu'à ce que tous les workflows aient été déclenchés. + +### Comptes d'essai + +Chaque organisation : + +* Peut créer jusqu'à 20 workflows par minute. +* Peut exécuter jusqu'à 50 workflows par 20 minutes. +* Peut exécuter jusqu'à 20 workflows par minute pour une source (comme un monitor spécifique). +* Peut mettre en mémoire tampon jusqu'à 100 requêtes. + +Lorsqu'une organisation dépasse un seuil, les requêtes d'exécution en attente se mettent en file d'attente jusqu'à un maximum de 100 par organisation, puis sont traitées selon les limites décrites précédemment. Par exemple, si un monitor déclenche 100 exécutions de workflow, seules 50 sont déclenchées dans les 20 premières minutes. Les 50 exécutions de workflow restantes sont mises en file d'attente et se déclenchent après 20 minutes. + +## Limites au niveau du workflow + +* Un workflow peut contenir jusqu'à 150 étapes. Si vous avez besoin de plus de 150 étapes dans un workflow, vous pouvez utiliser l'action **Trigger workflow** pour [appeler un workflow enfant][2]. Utilisez les paramètres de sortie pour transmettre la sortie d'un workflow enfant à votre workflow principal. +* Un workflow peut s'exécuter pendant jusqu'à 7 jours. Les workflows se terminent lorsqu'ils tentent de s'exécuter pendant plus de 7 jours. +* Un workflow peut démarrer jusqu'à 60 étapes par minute. Si vous dépassez ce débit, les étapes sont limitées et démarrent à un débit de 60 par minute. +* La somme de toutes les sorties d'étape pour un workflow peut atteindre jusqu'à 150 Mo. +* La taille de sortie d'un workflow peut atteindre jusqu'à 5 Mo. + +## Limites d'action + +* L'entrée d'une action peut atteindre jusqu'à 15 Mo. +* La sortie d'une action peut atteindre jusqu'à 5 Mo. +* Le JavaScript fourni par l'utilisateur peut atteindre jusqu'à 10 Ko. +* Chaque organisation peut exécuter jusqu'à 10 000 actions d'envoi d'e-mail par jour. Si vous dépassez cette limite, l'action échoue avec un message d'erreur. +* L'action [for loop][1] peut s'exécuter jusqu'à 2 000 itérations. Si vous avez besoin de plus de 2 000 itérations, vous pouvez partitionner votre entrée en ensembles de 2 000 et les calculer en parallèle. + + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][9]. + +[1]: /fr/service_management/workflows/actions/flow_control/#for-loop +[2]: /fr/service_management/workflows/trigger/#trigger-a-workflow-from-a-workflow +[9]: https://datadoghq.slack.com/ \ No newline at end of file diff --git a/content/fr/actions/workflows/saved_actions.md b/content/fr/actions/workflows/saved_actions.md new file mode 100644 index 0000000000000..04c652a3e6842 --- /dev/null +++ b/content/fr/actions/workflows/saved_actions.md @@ -0,0 +1,72 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation +aliases: +- /fr/workflows/actions_catalog/action_blueprints/ +- /fr/service_management/workflows/actions_catalog/saved_actions/ +- /fr/service_management/workflows/actions/saved_actions/ +- /fr/service_management/workflows/saved_actions +description: Enregistrer et réutiliser des actions et leurs paramètres +disable_sidebar: false +disable_toc: false +further_reading: +- link: /integrations/ + tag: Documentation + text: En savoir plus sur les intégrations +- link: /actions/app_builder/saved_actions/ + tag: Documentation + text: Enregistrer et réutiliser des actions dans les applications +title: Enregistrer et réutiliser des actions +type: documentation +--- + +Utilisez la fonction _Saved Actions_ (Actions enregistrées) pour stocker et réutiliser une action et ses paramètres. Vous pouvez insérer une action enregistrée dans votre workflow en tant que nouvelle étape ou l'utiliser pour remplir les paramètres d'une étape existante. + +## Enregistrer une action + +1. Dans le canevas du workflow, cliquez sur une action que vous souhaitez enregistrer. +1. Cliquez sur **Save action**. +1. Saisissez un nom et une description pour l'action. +1. Si vous voulez que n'importe quel autre membre de votre organisation ait accès à l'action, cochez **Usable by others in the organization**. +1. Vérifiez les détails de la configuration de l'action et cliquez sur **Save Action Configuration**. + +{{< img src="service_management/workflows/save_action_1.mp4" alt="Cliquez sur l'icône Saved Action pour enregistrer une action pour l'utiliser plus tard." video="true" width=80% >}} + +## Utiliser une action enregistrée dans votre workflow + +Pour ajouter une action enregistrée en tant que nouvelle étape de votre workflow : +1. Cliquez sur l'icône plus (`+`) dans le canevas du workflow et sélectionnez Saved Actions. +1. Utilisez la barre de recherche ou parcourez la liste pour rechercher l'action enregistrée de votre choix. +1. Sélectionnez l'action enregistrée pour l'ajouter en tant qu'étape configurée dans le canevas de votre workflow. + +Pour configurer une étape existante à l'aide d'une action enregistrée : +1. Sélectionnez une étape de votre workflow que vous souhaitez remplir avec une action préconfigurée. +1. Cliquez sur l'icône **Saved Actions** et sélectionnez **Configure using a saved action**. +1. Sélectionnez l'action enregistrée que vous souhaitez utiliser pour configurer votre étape et cliquez sur **Use Saved Action**. + +## Gérer une action enregistrée + +Vous pouvez prévisualiser, modifier ou supprimer vos actions enregistrées à partir de l'onglet [Catalogue d'actions][1]. + +Pour rechercher une action enregistrée : +1. Sur la page [Workflow Automation][2], cliquez sur [**Action Catalog**][1]. +1. Cliquez sur **Saved Actions** et recherchez dans la liste l'action sauvegardée que vous souhaitez prévisualiser, modifier ou supprimer. +1. Survolez l'action et cliquez sur **Preview/Edit saved configurations** pour obtenir un aperçu de l'action. +1. Dans l'écran de prévisualisation, sélectionnez l'action pour la modifier ou la supprimer. + +Si vous n'avez pas créé l'action, vous ne pouvez pas la modifier directement. Sélectionnez plutôt l'icône **Clone** pour la copier et apporter vos modifications à la configuration. Vous ne pouvez pas supprimer une action que vous n'avez pas créée. + +{{< img src="service_management/workflows/edit_saved_action.png" alt="Prévisualiser, modifier ou supprimer une action enregistrée depuis le catalogue des actions." style="width:80%;" >}} + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][3]. + +[1]: https://app.datadoghq.com/workflow/action-catalog +[2]: https://app.datadoghq.com/workflow/ +[3]: https://datadoghq.slack.com/ \ No newline at end of file diff --git a/content/fr/actions/workflows/test_and_debug.md b/content/fr/actions/workflows/test_and_debug.md new file mode 100644 index 0000000000000..e712fd0b4f31d --- /dev/null +++ b/content/fr/actions/workflows/test_and_debug.md @@ -0,0 +1,70 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation +aliases: +- /fr/service_management/workflows/test_and_debug +description: Tester les déclencheurs de monitor, les étapes de workflow individuelles + et déboguer les étapes ayant échoué à l'aide de l'historique d'exécution et des + messages d'erreur. +disable_toc: false +further_reading: +- link: /getting_started/workflow_automation/ + tag: Documentation + text: Débuter avec Workflow Automation +- link: /service_management/workflows/build + tag: Documentation + text: Créer des workflows +- link: /service_management/workflows/trigger + tag: Documentation + text: Déclencher des workflows +title: Tester et déboguer +--- + +## Tester un déclencheur de monitor + +Vous pouvez tester un déclencheur de monitor pendant la création du workflow. Tester un monitor génère un extrait que vous pouvez coller dans la fenêtre de notification de votre monitor pour déclencher le workflow. + +Pour tester un déclencheur de monitor : +1. Sélectionnez l'action de déclencheur de monitor dans votre workflow. +1. Cliquez sur **Test from Monitor**. +1. Si votre monitor transmet des entrées au workflow, saisissez une valeur de test sous **Workflow Inputs**. +1. Sélectionnez un monitor à tester. +1. Sélectionnez un état de monitor. +1. Cliquez sur **Run From Monitor**. + + +## Tester une étape + +Pour vous assurer qu'une étape fonctionne comme souhaité sans avoir à exécuter l'intégralité du workflow, vous pouvez tester l'étape de manière indépendante. + +Pour tester une étape de workflow : +1. Cliquez sur **Test** dans la section **Inputs** de l'étape. +1. Facultativement, ajustez la configuration de l'étape. Si votre étape utilise des variables de sortie d'une étape précédente, saisissez des données de test codées en dur pour que l'étape les utilise. +1. Cliquez sur **Test** pour tester l'action. +1. Lorsque vous avez terminé de tester l'étape, cliquez sur **Use in configuration** pour utiliser votre nouvelle configuration dans le workflow, ou fermez l'écran pour revenir au workflow sans enregistrer votre configuration de test. + +Le test n'est pas disponible pour les actions de branchement et de logique. Pour tester une action de fonction ou d'expression JavaScript qui utilise des variables de sortie d'une étape précédente, commentez les variables dans votre code et remplacez-les par des données de test. Pour obtenir plus d'informations, consultez la section [Tester des expressions et des fonctions][6]. + + +## Déboguer une étape ayant échoué + +Vous pouvez utiliser le **Run History** d'un workflow pour déboguer une étape ayant échoué. Cliquez sur **Configuration** ou **Run History** en haut à gauche pour basculer entre les vues de configuration et d'historique d'exécution. + +Cliquer sur une étape ayant échoué vous donne les entrées, les sorties et le contexte d'exécution pour l'étape, ainsi que le message d'erreur associé. L'exemple ci-dessous montre une étape _GitHub pull request status_ ayant échoué. Le message d'erreur montre que l'étape a échoué en raison d'autorisations manquantes : + +{{< img src="service_management/workflows/failed-step4.png" alt="Un workflow avec une étape ayant échoué." >}} + +L'historique d'exécution initial d'un workflow fournit un panneau avec la liste des exécutions de workflow précédentes et si chaque exécution a réussi ou échoué. Les échecs incluent un lien vers l'étape de workflow ayant échoué. Cliquez sur une exécution de workflow dans la liste pour l'inspecter. Vous pouvez revenir à l'historique d'exécution initial à tout moment en cliquant n'importe où sur le canevas du workflow. + + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][10]. + +[6]: #test-expressions-and-functions +[10]: https://datadoghq.slack.com/ \ No newline at end of file diff --git a/content/fr/actions/workflows/track.md b/content/fr/actions/workflows/track.md new file mode 100644 index 0000000000000..be5b431d1c652 --- /dev/null +++ b/content/fr/actions/workflows/track.md @@ -0,0 +1,121 @@ +--- +algolia: + tags: + - workflow + - workflows + - workflow automation +aliases: +- /fr/service_management/workflows/track +description: Surveillez l'activité, les métriques et les coûts des workflows à l'aide + de dashboards, d'audit trails, de gestion d'événements et d'attribution de l'utilisation. +disable_toc: false +further_reading: +- link: /service_management/workflows/build + tag: Documentation + text: Créer des workflows +- link: /account_management/audit_trail/ + tag: Documentation + text: Journal d'audit Datadog +- link: /account_management/billing/usage_attribution/ + tag: Documentation + text: Attribution de l'utilisation +title: Suivre les workflows +--- + +Cette page explique comment suivre différents types d'activité de workflow et de coûts de workflow. + +## Dashboard prêt à l'emploi + +Le dashboard Workflows Overview fournit une vue d'ensemble de haut niveau de vos workflows et exécutions Datadog. Pour trouver le dashboard, accédez à votre [liste de dashboards][2] et recherchez **Workflows Overview**. + +{{< img src="service_management/workflows/workflows-dashboard.png" alt="Le dashboard Workflows Overview" style="width:80%;" >}} + + +## Afficher les modifications et les exécutions de workflow dans Audit Trail + +Vous pouvez afficher les modifications et les exécutions de workflow à l'aide d'Audit Trail. + +Par exemple, pour voir qui a modifié un workflow : + +1. Depuis votre workflow, cliquez sur l'icône **(roue dentée)** dans le coin supérieur droit et cliquez sur **View audit events**.
Une recherche Audit Trail filtrée sur votre workflow s'ouvre. +1. À gauche, sous les filtres **Core**, développez **Action**. +1. Passez la souris sur **Modified** et cliquez sur **Only** pour filtrer les résultats afin d'afficher uniquement les modifications de workflow.
La colonne **User ID** affiche le nom d'utilisateur de la personne qui a effectué chaque modification. + + +## Notifier à propos des exécutions + +Consultez la section [Notifications de workflow][3] pour obtenir des instructions sur l'utilisation des notifications de workflow intégrées. + + +## Suivre les métriques de workflow avec un monitor Datadog + +Vous pouvez utiliser les monitors Datadog pour suivre diverses métriques de workflow. + +La liste des métriques disponibles est : + +| Métrique | Rôle | +| ------ | ----------- | +| `datadog.workflows.count` | Nombre de workflows non supprimés. | +| `datadog.workflows.executions.started` | Nombre d'instances de workflow qui ont démarré. | +| `datadog.workflows.executions.completed` | Nombre d'instances de workflow qui se sont terminées. | +| `datadog.workflows.steps.executions.started` | Nombre d'étapes d'instance de workflow qui ont démarré. | +| `datadog.workflows.steps.executions.completed` | Nombre d'étapes d'instance de workflow qui se sont terminées. | + +Pour créer un monitor qui suit si les exécutions de workflow quotidiennes dépassent un certain seuil, effectuez les étapes suivantes : + +1. Accédez à [New Monitor][4] et sélectionnez le type de monitor **Metric**. +1. Sous **Define the metric**, pour **a**, remplissez `datadog.workflows.executions.started`. +1. _Facultativement_, pour restreindre le monitor à un workflow spécifique, pour **from**, remplissez `workflow_id:[WORKFLOW-ID]`, en remplaçant `[WORKFLOW-ID]` par l'ID de votre workflow. +1. Pour **Evaluation Details**, utilisez les valeurs suivantes : + - **Evaluate the** : `sum` + - **Of the query over the** : `last 1 day`. +1. Pour **Set alert conditions**, choisissez **above**, puis remplissez un seuil d'alerte et d'avertissement. Par exemple, vous pourriez remplir un **Alert threshold** de `200` et un **Warning threshold** de `150`. +1. Sous **Configure notifications & automations**, nommez votre workflow, puis remplissez le texte du message. Par exemple, vous pourriez utiliser un texte de message comme le suivant : + + {{< code-block lang="none" >}}@slack-alert-channel + +{{#is_warning}} +Le workflow a été exécuté {{warn_threshold}} fois au cours du dernier jour ; une action manuelle pourrait être nécessaire pour éviter l'alerte. +{{/is_warning}} +{{#is_alert}} +Le workflow a été exécuté {{threshold}} fois au cours du dernier jour, ce qui correspond à notre seuil budgétaire pour les workflows. Nous devrions dépublier le workflow pour éviter d'autres exécutions automatiques pour la journée. +{{/is_alert}} +{{< /code-block >}} +1. Cliquez sur **Create**. + + +## Afficher les événements de workflow dans Event Manager + +Vous pouvez utiliser [Event Manager][5] pour afficher les événements de démarrage et de fin de workflow en filtrant sur `source:workflow_automation`. + +Pour voir les événements d'un workflow spécifique, dans la zone **Search facets**, recherchez `workflow.workflow_id`. Vous pouvez sélectionner un ensemble spécifique d'ID pour afficher uniquement les événements de ces workflows. + +Vous pouvez également filtrer la sortie par **Status** pour voir uniquement les messages `info`, `warn` ou `error`. + + +## Suivre la facturation des workflows dans Usage Attribution + +
+Usage Attribution est une fonctionnalité avancée incluse dans le plan Enterprise. Pour tous les autres plans, contactez votre représentant de compte ou success@datadoghq.com pour demander cette fonctionnalité. +
+ +Pour suivre la facturation de vos exécutions de workflow, effectuez les étapes suivantes : + +1. Accédez à la page [Usage Attribution][6]. +1. Sous **Products** à gauche, recherchez **Workflow Executions**. +1. Passez la souris sur **Workflow Executions** et cliquez sur **Only** pour afficher l'attribution de l'utilisation uniquement pour les workflows. + + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][1]. + + +[1]: https://datadoghq.slack.com/ +[2]: https://app.datadoghq.com/dashboard/lists +[3]: /fr/service_management/workflows/build/#workflow-notifications +[4]: https://app.datadoghq.com/monitors/create +[5]: https://app.datadoghq.com/event/explorer?query=source%3Aworkflow_automation +[6]: https://app.datadoghq.com/billing/usage-attribution \ No newline at end of file diff --git a/content/fr/actions/workflows/variables.md b/content/fr/actions/workflows/variables.md new file mode 100644 index 0000000000000..714d03552b9fe --- /dev/null +++ b/content/fr/actions/workflows/variables.md @@ -0,0 +1,157 @@ +--- +algolia: + tags: + - workflow variables + - variables + - mutable +aliases: +- /fr/service_management/workflows/actions/set_variables/ +- /fr/service_management/workflows/variables +description: Utiliser des variables de contexte, des paramètres d'entrée, des paramètres + de sortie et des variables personnalisées pour transmettre des données entre les + étapes de workflow. +disable_toc: false +further_reading: +- link: /service_management/workflows/actions/flow_control#for-loop + tag: Documentation + text: Utiliser une boucle for pour effectuer une action de manière itérative +title: Variables et paramètres +--- + +Les variables et paramètres suivants sont disponibles dans les workflows : +- [Variables de contexte](#context-variables) : les variables de contexte sont une large catégorie de variables immuables qui stockent des informations contextuelles sur un workflow, ou contiennent des données qui sont transmises au workflow par un événement déclencheur. +- [Paramètres d'entrée](#input-parameters) : les paramètres d'entrée sont des paires clé-valeur immuables que vous pouvez utiliser pour transmettre des données dans un workflow au moment de l'exécution. +- [Paramètres de sortie](#output-parameters) : les paramètres de sortie vous permettent de transmettre le résultat d'un workflow à un autre workflow. +- [Variables personnalisées](#custom-variables) : les variables personnalisées sont mutables. Elles vous permettent de déclarer, mettre à jour et accéder aux variables tout au long de votre workflow. + +## Variables de contexte + +Pour créer des workflows utiles, il est parfois nécessaire de transmettre des données d'une étape à une autre ou de configurer des étapes qui agissent en fonction de la source de déclenchement du workflow. Vous pouvez utiliser des variables de contexte pour mettre en place ce type d'interpolations de données. + +- **Workflow variables** vous donne des informations sur le workflow actuel : + - 'WorkflowName' : le nom du workflow. + - 'WorkflowId' : l'ID du workflow. + - 'InstanceId' : l'ID de l'instance d'exécution du workflow. +- Certaines étapes intègrent des **variables de sortie d'étape**, qui vous permettent de transmettre les données d'une étape à une autre étape ultérieure. +- Les **variables de déclenchement** sont transmises dans le workflow par l'événement de déclenchement. +- Les **variables d'objet source** sont transmises dans le workflow par l'événement de déclenchement. + +Pour chaque étape, l'onglet **Context Variables** affiche une carte des différentes variables de contexte qui peuvent être utilisées. + +{{< img src="service_management/workflows/context-variables5.png" alt="L'onglet Context Variables" >}} + +Accédez à une variable de contexte dans une étape en l'encadrant dans des accolades doubles (`{{`). Pour accéder aux champs dans les variables de contexte, utilisez la [syntaxe d'expression Handlebars][4]. + +### Variables de sortie d'étape + +Certaines étapes génèrent des sorties que les étapes ultérieures peuvent ensuite utiliser. Pour accéder à une variable d'étape, utilisez la syntaxe `Steps..`. Par exemple, pour récupérer la variable de statut d'une pull request (`state`) depuis l'étape de statut d'une pull request GitHub (`Get_pull_request_status`), utilisez la variable de contexte suivante : + +``` +{{ Steps.Get_pull_request_status.state }} +``` + +Si vous ne savez pas quelle variable vous recherchez, Datadog suggère les sorties d'étapes existantes au fur et à mesure que vous tapez. Vous pouvez également consulter l'onglet [Context Variables](#context-variables) pour obtenir une liste des variables disponibles. + +{{< img src="service_management/workflows/step-outputs2.png" alt="Datadog suggère les sorties d'étapes existantes au fur et à mesure que vous saisissez du texte." style="width:100%;" >}} + +### Variables d'objet source + +Les variables d'objet source sont des propriétés de l'événement déclencheur qui sont résolues lors de l'exécution. Les variables disponibles dans le workflow dépendent du type de déclencheur qui a initié l'instance de workflow. Par exemple, si l'instance de workflow est déclenchée par un monitor, la variable d'ID du monitor est disponible via `{{Source.monitor.id}}`. Si le workflow est déclenché par une règle de détection ou de notification de signal de sécurité, l'ID du signal est disponible via `{{Source.securitySignal.id}}`. + +Toutes les variables de l'objet source sont visibles depuis l'onglet Context Variables. + +{{< img src="service_management/workflows/context-variables-tab-source-object-variables2.png" alt="Les variables de l'objet Source dans l'onglet Context Variables" style="width:60%;" >}} + +## Paramètres d'entrée + +Les paramètres d'entrée sont des paires clé-valeur immuables que vous pouvez utiliser pour transmettre des données dans un workflow. Vous pouvez utiliser des paramètres d'entrée dans les workflows qui : +- les workflows déclenchés manuellement, par exemple à partir d'un dashboard +- les workflows déclenchés via une mention, par exemple dans un monitor ou dans les règles de notification des signaux de sécurité + +Pour ajouter un paramètre d'entrée : +1. Cliquez sur la fenêtre d'édition du workflow. +1. Cliquez sur l'icône **+** à proximité de **Input Parameters**. +1. Indiquez le nom du paramètre, le type de données et une description. Le nom d'affichage est automatiquement généré à partir du nom du paramètre. Cochez la case **Use custom display name** pour le personnaliser. Le nom d'affichage doit être lisible par un humain, tandis que le nom du paramètre est utilisé pour faire référence au paramètre dans vos étapes de workflow. +1. Si vous le souhaitez, attribuez une valeur par défaut au paramètre. Si vous ajoutez une valeur par défaut, le paramètre est alors facultatif lors de l'exécution. + +Pour faire référence au paramètre d'entrée dans une étape, utilisez la syntaxe `{{ Trigger.}}`. Par exemple, pour faire référence à un paramètre d'entrée nommé `user`, utilisez `{{Trigger.user}}`. + +La section **Input Parameters** affiche les noms de tous les paramètres d'entrée existants avec leur nombre d'utilisations. Passez votre souris sur un nombre pour voir les étapes qui utilisent le paramètre. + +{{< img src="service_management/workflows/input-parameter3.png" alt="Passez la souris sur un compteur pour voir quelles étapes utilisent le paramètre." style="width:60%;" >}} + +Vous pouvez ajouter un paramètre d'entrée implicite (c'est-à-dire qui n'existe pas déjà dans le workflow) en le saisissant dans une étape de workflow à l'aide la syntaxe `{{ Trigger. }}`. Lorsque vous enregistrerez le workflow, une fenêtre apparaîtra pour vous inviter à convertir le paramètre en paramètre explicite. Pour en savoir plus sur le déclenchement de workflows, consultez la section [Déclencher un workflow][5]. + +Si vous recherchez le nom d'un paramètre d'entrée existant, commencez à saisir `{{ Trigger.` pour voir s'il apparaît dans les suggestions. Vous pouvez également consulter l'onglet [Context Variables](#context-variables) pour obtenir la liste des paramètres disponibles. + +## Paramètres de sortie + +Les paramètres de sortie vous permettent d'accéder au résultat d'un workflow. Ceci est utile lorsque vous souhaitez transmettre le résultat d'un workflow à un autre workflow ou à une application App Builder. + +Pour ajouter un paramètre de sortie : +1. Cliquez sur la fenêtre d'édition du workflow. +1. Cliquez sur l'icône **+** à côté de **Output Parameters**. +1. Ajoutez un nom de paramètre, une valeur et un type de données pour le paramètre. +1. Si vous le souhaitez, attribuez une valeur par défaut au paramètre. Si vous ajoutez une valeur par défaut, le paramètre est alors facultatif lors de l'exécution. + +La section **Output Parameters** affiche les noms de tous les paramètres de sortie existants ainsi qu'un compteur. + +Pour obtenir des informations sur la transmission de données entre workflows, consultez la section [Accéder au résultat d'un workflow enfant][7]. + +Pour obtenir un exemple de la façon d'utiliser des paramètres de sortie pour transmettre des informations entre Workflows et App Builder, consultez la section [retourner les résultats de workflow à une application][6]. + +## Variables personnalisées + +Pour définir une variable de workflow mutable, utilisez l'action [Set variable][1]. Vous pouvez utiliser cette action pour déclarer, mettre à jour et accéder aux variables personnalisées tout au long de votre workflow, ce qui vous permet d'effectuer des opérations de workflow plus complexes. Par exemple : +- _Gestion de la pagination d'API_ : les requêtes API nécessitent parfois de suivre un jeton de page ou un offset. +- _Gestion des listes_ : vous pouvez utiliser une variable pour initialiser un tableau et effectuer des actions comme map et reduce. +- _Itération_ : les variables vous permettent de manipuler et de stocker des données à l'intérieur d'une [boucle for][2]. Vous pouvez ensuite utiliser ces données dans le reste du workflow. + +### Définir une variable personnalisée + +Pour définir une variable personnalisée : +1. Cliquez sur l'icône plus (**+**) sur votre canevas de workflow pour ouvrir le catalogue d'actions. +1. Recherchez et sélectionnez l'étape **Set variable**. +1. Cliquez sur l'étape **Set variable** et saisissez un **Step name**. +1. Saisissez un **variable name**. Les noms de variables doivent commencer par une lettre et ne peuvent contenir que des caractères alphanumériques et des underscores. +1. Saisissez une valeur pour la variable. + - Tapez ``{{`` si vous souhaitez utiliser une variable de contexte de workflow. + - Pour créer un objet, cliquez sur le bouton **Create object** . + - Pour créer un tableau, cliquez sur le bouton **Create array** [ ]. + +Si vous devez modifier la valeur d'une variable personnalisée après l'avoir définie, vous devez ajouter une étape **Set variable** supplémentaire et soit réattribuer la variable, soit créer une nouvelle variable. + +Voici un exemple d'un workflow qui démontre l'étape **Set variable** : + +1. Dans votre workflow, commencez par une étape **Set variable** pour déclarer une variable appelée `intList` et donnez-lui la valeur `[1,2,3,4]`. +1. Ajoutez une deuxième étape **Set variable** et déclarez une variable nommée `evenList` avec la valeur `${Variables.intList.filter(number => number % 2 === 0)}`. Il s'agit d'une [expression JavaScript en ligne][8] qui filtre les nombres impairs. +1. Ajoutez une étape **Echo** pour répercuter la valeur d'`evenList` (`2,4`). + +{{< img src="service_management/workflows/set-variable-updated.png" alt="Ce workflow définit une variable pour contenir une liste de nombres, déclare une deuxième variable qui filtre les nombres impairs dans la liste à l'aide d'une expression en ligne, puis affiche la deuxième variable." style="width:100%;" >}} + +### Accéder à une variable personnalisée + +Vous pouvez accéder à une variable personnalisée dans votre workflow en utilisant `{{ Variables.variableName }}`. Par exemple, pour accéder à une variable personnalisée nommée `DashboardList`, utilisez `{{ Variables.DashboardList }}`. + +### Itération + +Définir une variable personnalisée à l'intérieur d'une **For loop** ou d'une **While loop** vous permet de stocker des données pour les utiliser en dehors de la boucle. Par exemple, si vous effectuez plusieurs requêtes API à l'intérieur d'une **For loop**, vous pouvez définir une variable personnalisée et y ajouter les données dont vous avez besoin à chaque itération. En dehors de la boucle, vous pouvez accéder à la variable personnalisée et gérer les données que vous avez collectées. + +Pour éviter une erreur de type résultant d'une variable non définie, attribuez une variable personnalisée avant de l'utiliser dans une boucle. Dans l'exemple ci-dessous, la variable personnalisée `evenList` est définie sur un tableau vide avant d'être utilisée dans la boucle. + +{{< img src="service_management/workflows/loop.png" alt="Ce workflow définit une variable avant qu'elle ne soit utilisée dans une boucle." style="width:100%;" >}} + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +
Vous avez des questions ou des commentaires ? Rejoignez le canal **#workflows** sur le [Slack de la communauté Datadog][3]. + +[1]: https://app.datadoghq.com/workflow/action-catalog#/com.datadoghq.core/com.datadoghq.core.setVariable +[2]: /fr/service_management/workflows/actions/flow_control#for-loop +[3]: https://datadoghq.slack.com/ +[4]: https://handlebarsjs.com/guide/expressions.html#expressions +[5]: /fr/service_management/workflows/trigger +[6]: /fr/service_management/app_builder/queries/#return-workflow-results-to-an-app +[7]: /fr/service_management/workflows/trigger/#access-the-result-of-a-child-workflow +[8]: /fr/service_management/workflows/expressions/#inline-javascript-expressions \ No newline at end of file diff --git a/content/fr/administrators_guide/build.md b/content/fr/administrators_guide/build.md new file mode 100644 index 0000000000000..c16341a2c6f12 --- /dev/null +++ b/content/fr/administrators_guide/build.md @@ -0,0 +1,105 @@ +--- +description: Créer votre installation Datadog et prioriser les fonctionnalités. +further_reading: +- link: /getting_started/integrations/ + tag: Documentation + text: Débuter avec les intégrations +title: Créer votre installation Datadog +--- + +Après avoir planifié la conception et les meilleures pratiques de votre installation Datadog, concentrez-vous sur la construction de Datadog elle-même, en comprenant ce qui doit être installé et la meilleure façon d'y parvenir. + +À mesure que votre infrastructure IT s'agrandit, vous devez établir des standards pour l'installation et l'utilisation de logiciels. Pour ce faire, il est important de développer des étapes précises et reproductibles pour configurer des logiciels de manière fiable tout en conservant la flexibilité dont vous avez besoin. Cette section explique comment Datadog peut s'intégrer efficacement à ces standards. + +## Itération sur votre environnement + +Dans la section [planification][7], vous avez exploré une gamme de sujets au sein d'une spécification de conception Datadog. Idéalement, chacune de ces questions devrait être entièrement étudiée et avoir reçu une réponse avant d'exécuter un déploiement à grande échelle. Cependant, l'ingénierie IT d'entreprise vous oblige souvent à faire une pause et à vous adapter au fur et à mesure que vous construisez votre installation. + +### Priorisation des fonctionnalités + +Il est possible d'échelonner l'installation de Datadog et d'augmenter progressivement la complexité. Certaines choses doivent être faites tôt, et d'autres peuvent attendre. Ce qui suit décrit une répartition de la façon dont vous pouvez appliquer les priorités primaires (besoins) par rapport aux priorités secondaires (souhaits) au fur et à mesure que vous faites évoluer votre installation Datadog. + +**Primaires** : +1. Tags de service unifiés - `service:test` `env:prod` `version:1.x` +2. Profils de produits (Infrastructure, APM, Synthetic Monitoring, RUM, Log Management, etc.) +3. Spécificités des intégrations primaires (ports, identifiants, URL) + +**Secondaires** : +1. Intégrations secondaires +2. Options avancées/spécifiques à des cas d'usage + +## Assistance interne + +En tant que propriétaire de votre plateforme Datadog, vous devrez probablement créer un moyen pour vos utilisateurs de consommer votre installation. Il peut s'agir d'un wiki, d'une intégration ServiceNow ou d'un tableau Jira qui publiera Datadog et offrira un moyen de le demander. Il s'agit du guide que vos clients internes utiliseront pour déployer Datadog sur les applications et l'infrastructure qu'ils gèrent. + +La forme de ce système sera différente selon votre environnement, mais il existe quelques éléments fondamentaux qui peuvent accélérer cette création : + +1. Créer une liste des tâches d'installation Datadog, telles que : + + - Intégrer une nouvelle application, incluant tous ses logiciels et son infrastructure. + - Ajouter un compte cloud + - Créer un nouveau nœud de cluster vSphere + - Créer une nouvelle instance de base de données + - Surveiller un nouveau produit logiciel tiers + - Ajouter des tests Synthetic Monitoring + - Créer une alerte/un monitor + - Créer/mettre à jour un dashboard + +2. La collecte des ensembles d'informations minimales peut inclure des éléments tels que : + + - Code de centre de coûts interne + - Nom de l'application, propriétaire, équipe des opérations + - Éléments spécifiques aux conditions locales + +Ces définitions s'appuient sur les fondations du plan architectural terminé lors de la phase de planification. Cependant, si vous rencontrez des difficultés avec l'une de ces définitions, Datadog a développé des mécanismes pour faciliter cette gestion, décrits ci-dessous. + +## Créer du contenu + +Datadog est une plateforme d'API RESTful qui est [entièrement documentée][1] et ouverte. La plupart des éléments que vous voyez dans l'interface utilisateur peuvent être créés de manière programmatique. Datadog encourage et prend entièrement en charge l'utilisation de l'API, même comme source de données pour vos propres applications personnalisées. + +Tous les objets que vous créez dans Datadog, tels que les dashboards, les alertes, les notebooks, les logs parsés et les configurations pour les intégrations cloud, sont stockés dans la plateforme au format JSON. Ils sont exportables et importables. Cela ouvre une multitude de capacités d'administration, notamment la conformité totale à l'Infrastructure as Code (IaC), la sauvegarde de configuration, la migration de compte et la réutilisabilité. Datadog prend également en charge un [fournisseur Terraform][2] et un [outil CLI][3] à ces fins. + +## Provisionnement + +Le provisionnement est essentiel à tout environnement IT d'entreprise. Pour gérer Datadog à grande échelle, intégrez-le dans votre processus de provisionnement. Le modèle d'installation simple de l'Agent Datadog offre diverses façons d'y parvenir. + +### Architecture modulaire + +Comme la plupart des produits logiciels d'entreprise, les installations Datadog peuvent être divisées en trois opérations distinctes, chacune faisant partie de l'[architecture modulaire][6] appelée modèle fichier/package/service. + +**Fichier(s) ** : contient les configurations +**Package** : contient les binaires et contrôle leur déploiement +**Service** : gère l'instance d'exécution via le système de services de l'OS + +Les opérations de base que vous devez effectuer pour installer Datadog sont les suivantes : + +**Fichier** : le contrôle de code source peut être utilisé pour stocker et contrôler les modifications des fichiers de configuration. Les solutions de templating et d'IaC comme Jinja2 et Ansible sont également très efficaces. + +**Package** : utiliser des référentiels de packages internes tels qu'Artifactory ou Nexus pour héberger les packages .rpm, .msi et les packages d'Agent conteneurisés. + +**Service** : utiliser l'IaC ou des scripts shell. + +**IaC :** l'Infrastructure-As-Code a progressé tant en sophistication qu'en robustesse. Bien qu'elle soit presque universellement utilisée dans les infrastructures cloud, elle est souvent adaptée rétroactivement aux infrastructures sur site établies de longue date. Sa structure simple fichier/package/service a été exploitée pour déployer des empreintes Datadog importantes avec des « outils » IaC aussi rudimentaires qu'un script bash. Bien que cela ne soit pas recommandé, cela constitue un encouragement à commencer l'adoption IaC de Datadog dès que possible, et lorsque vous le ferez, vous trouverez Datadog prêt avec des exemples de code et des intégrations pour Ansible, Puppet, Chef, Powershell, Bash, CloudFormations, Terraform, et plus encore. + +**Recommandations :** +En ce qui concerne le déploiement du logiciel de l'Agent Datadog, il est conseillé de réutiliser autant que possible vos systèmes de provisionnement existants. La conception du logiciel Datadog est plate et conforme aux méthodes standard de l'industrie. + +## Résumé + +La conception de l'Agent Datadog est plate afin qu'il puisse facilement s'intégrer à n'importe quel système de provisionnement existant. Utilisez vos capacités existantes pour fichier/package/service et intégrez Datadog dans celles-ci. Bien que la plateforme offre des mécanismes utiles, vos conditions locales déterminent la meilleure méthode pour toute situation donnée. + +## Étapes suivantes + +Consultez la documentation d'[exécution][4] de l'administrateur Datadog pour définir un calendrier de maintenance, effectuer des mises à niveau de l'Agent Datadog, créer des dashboards et vous assurer que votre installation Datadog reste saine. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/api/latest/ +[2]: https://registry.terraform.io/providers/DataDog/datadog/latest/docs +[3]: https://github.com/DataDog/datadog-sync-cli +[4]: /fr/administrators_guide/run +[5]: /fr/agent/basic_agent_usage/ +[6]: /fr/agent/architecture/ +[7]: /fr/administrators_guide/plan \ No newline at end of file diff --git a/content/fr/administrators_guide/getting_started.md b/content/fr/administrators_guide/getting_started.md new file mode 100644 index 0000000000000..4723ff757eae3 --- /dev/null +++ b/content/fr/administrators_guide/getting_started.md @@ -0,0 +1,131 @@ +--- +description: Découvrir des stratégies pour débuter avec votre nouvelle installation + Datadog. +further_reading: +- link: /getting_started/support/ + tag: Documentation + text: Débuter avec l'assistance Datadog +title: Prise en main +--- + +## Section Overview + +Ce guide de démarrage propose des stratégies pour implémenter efficacement Datadog dans votre organisation. Explorez les ressources d'assistance, les cours du centre d'apprentissage pour approfondir vos connaissances et les instructions pour configurer un environnement de test. + +## Obtenir de l'aide + +### Ressources en libre-service + +Au fur et à mesure que vous progressez dans ce guide, vous pouvez consulter les ressources en libre-service suivantes : + +* Les cours de [formation Datadog](#decouvrir-les-bases-de-datadog). +* La [documentation][16] Datadog, en particulier les pages [Débuter][17], pour vous familiariser davantage avec la plateforme. +* L'[interface utilisateur Datadog][18], qui fournit une aide contextuelle, des informations sur des champs de configuration spécifiques, des notes de version et d'autres ressources. Cliquez sur l'icône ? dans toute l'application ou en bas de la navigation des produits. + +{{< img src="/administrators_guide/help_center.png" alt="Capture d'écran du centre d'aide dans l'interface utilisateur Datadog" style="width:90%;">}} + +### Créer un ticket d'assistance + +Pour obtenir de l'assistance lorsque vous rencontrez un problème : + +* [**Assistance Datadog**][20] : disponible pour vous aider avec des problèmes difficiles, guider votre installation, traduire les problèmes en conditions locales, identifier les bugs et consigner les demandes de fonctionnalités. +* [**Flare de l'Agent Datadog**][21] : cet outil CLI crée automatiquement un nouveau ticket d'assistance et envoie un fichier compressé de fichiers logs pertinents expurgés, de paramètres de niveau de débogage et de configurations locales à l'assistance Datadog, sans connexion requise. Pour plus d'informations sur l'utilisation et l'envoi du flare à l'assistance Datadog, consultez la section [envoi d'un flare][21]. +* [**Fleet Automation**][5] : permet la génération de flare à distance depuis l'interface utilisateur de la plateforme. + +## Découvrir les bases de Datadog + +Familiarisez-vous avec les éléments de Datadog qui sont les plus importants pour votre cas d'usage. Commencez par vous inscrire à nos cours gratuits du [centre d'apprentissage][1]. Intégrez les cours suivants dans vos workflows d'onboarding : + +**Débuter** : +{{< whatsnext desc=" " >}} + {{< nextlink href="https://learn.datadoghq.com/courses/datadog-foundation" >}}Datadog Foundation{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/tagging-best-practices" >}}Tagging Best Practices{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/managing-software-catalog" >}}Managing the Software Catalog{{< /nextlink >}} +{{< /whatsnext >}} + +**Administrateurs** : +{{< whatsnext desc=" " >}} + {{< nextlink href="https://learn.datadoghq.com/courses/agent-on-host" >}}The Agent on a Host{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/monitoring-k8s-cluster-agent" >}}Monitoring a Kubernetes Cluster{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/dd-api-automation-iac" >}}Datadog API: Automation and Infrastructure as Code{{< /nextlink >}} +{{< /whatsnext >}} + +**Interface utilisateur** : +{{< whatsnext desc=" " >}} + {{< nextlink href="https://learn.datadoghq.com/courses/intro-dashboards" >}}Introduction to Dashboards{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/dashboard-graph-widgets" >}}Discovering Graph Widgets{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/dashboards-slos" >}}Using Dashboards and SLOs{{< /nextlink >}} +{{< /whatsnext >}} + +**Ingénieurs de fiabilité des sites** : +{{< whatsnext desc=" " >}} + {{< nextlink href="https://learn.datadoghq.com/courses/dd-101-sre" >}}Datadog 101: Site Reliability Engineer{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/apm-monitors-and-alerting" >}}APM Monitors and Alerting{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/core-web-vitals-lab" >}}Using Datadog RUM to track core web vitals{{< /nextlink >}} +{{< /whatsnext >}} + +**Développeurs** : +{{< whatsnext desc=" " >}} + {{< nextlink href="https://learn.datadoghq.com/courses/apm-java-host" >}}Setup APM for Java applications{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/dd-101-dev" >}}Datadog 101: Developer{{< /nextlink >}} + {{< nextlink href="https://learn.datadoghq.com/courses/tracking-errors-rum-javascript" >}}Tracking errors with RUM for javascript web applications{{< /nextlink >}} +{{< /whatsnext >}} + +## Créer un environnement de test + +Après avoir terminé quelques cours, appliquez ce que vous avez appris à vos conditions locales. Installez et expérimentez Datadog dans un bac à sable à faible risque pour vous familiariser avec l'environnement. Créez un environnement simple et accessible pour développer votre configuration de surveillance avant une installation plus large. + +### Configuration de votre environnement de test + +#### Dans l'application + +L'[interface utilisateur Datadog][18] est le meilleur endroit pour commencer à créer votre environnement de test. La plateforme fournit une assistance à la configuration, des analyseurs automatiques de données en direct, des suggestions contextuelles et de nombreux autres outils. L'interface utilisateur Datadog fournit des ressources utiles pour accomplir certaines de ces tâches. + +Voici quelques exemples : + +* Créer un [test Synthetic Monitoring][14] pour commencer à tester des transactions commerciales critiques sur vos applications. +* Créer quelques [Service Level Objectives][15] (SLO) pour définir des cibles de performance d'application. +* Consulter la page [Configuration du service APM][9] et suivre les instructions étape par étape pour commencer à instrumenter vos services. +* Configurer et tester les [pipelines de logs][8] pour déterminer comment vous souhaitez ingérer différents ensembles de logs provenant de l'infrastructure et des applications. +* Consulter la page [Modèles de monitors][10] pour commencer à ajouter des alertes sur votre environnement de test. + +#### Modèles de configuration du host de l'Agent + +L'[Agent Datadog][2] est open source et publié sur GitHub. Le référentiel GitHub de l'Agent est une ressource utile pour consulter les modèles de configuration et les spécifications afin de vous aider à créer votre environnement. + +Voici quelques exemples : + +* [Modèle de configuration de l'Agent][3] +* [Spécifications de configuration d'intégration][4] +* [Fleet Automation][5] + +## Étapes suivantes + +Pour créer avec succès une nouvelle installation Datadog, consultez la page de [planification][11]. Vous apprendrez à créer un exercice de cadrage, à configurer le [tagging de ressources][12], à découvrir les meilleures pratiques des produits, à ajouter d'autres produits et à optimiser votre collecte de données pour assurer une installation fluide. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: https://learn.datadoghq.com/ +[2]: https://github.com/DataDog/datadog-agent +[3]: https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml +[4]: https://github.com/DataDog/integrations-core +[5]: https://app.datadoghq.com/fleet +[6]: /fr/getting_started/tagging/unified_service_tagging/ +[7]: /fr/getting_started/tagging/ +[8]: https://app.datadoghq.com/logs/pipelines/pipeline/add +[9]: https://app.datadoghq.com/apm/service-setup +[10]: https://app.datadoghq.com/monitors/recommended +[11]: /fr/administrators_guide/plan +[12]: /fr/administrators_guide/plan/#resource-tagging +[13]: https://github.com/DataDog/datadog-agent/tree/main/examples +[14]: https://app.datadoghq.com/synthetics/tests +[15]: https://app.datadoghq.com/slo/manage +[16]: https://docs.datadoghq.com +[17]: /fr/getting_started +[18]: https://app.datadoghq.com +[19]: /fr/bits_ai/ +[20]: /fr/help +[21]: /fr/agent/troubleshooting/send_a_flare/?tab=agent \ No newline at end of file diff --git a/content/fr/administrators_guide/run.md b/content/fr/administrators_guide/run.md new file mode 100644 index 0000000000000..6f875366fcee4 --- /dev/null +++ b/content/fr/administrators_guide/run.md @@ -0,0 +1,131 @@ +--- +description: Découvrez la phase d'exécution de l'utilisation de Datadog, y compris + l'intégration d'une nouvelle instance d'infrastructure, la gestion des problèmes + techniques et l'exécution des tâches administratives. +further_reading: +- link: getting_started/dashboards/ + tag: Documentation + text: Débuter avec les dashboards +title: Maintenir et exécuter votre installation Datadog +--- + +Dans les sections relatives à la [planification][24] et à la [conception][25], vous avez acquis des connaissances sur la définition d'objectifs, l'élaboration de stratégies d'intégration et la construction et l'itération de l'environnement Datadog pour une utilisation en production fluide. Ensuite, vous découvrirez la phase d'exécution, où vous gérerez une série de tâches internes et externes pour maintenir le fonctionnement efficace de l'installation Datadog. + +## Tâches de service + +Réduisez les risques et augmentez l'adoption en publiant les nouvelles installations Datadog de manière séquentielle. Cette section répertorie une séquence de publications d'éléments pour optimiser l'expérience utilisateur avec Datadog. En raison de la diversité de l'architecture IT, ce guide est de haut niveau. Voici quelques points clés : + +### Intégration d'une nouvelle instance d'infrastructure + +L'infrastructure est l'élément central de l'IT et de l'observabilité. Il s'agit de la tâche principale et la plus fréquente pour une équipe d'administrateurs Datadog. La plateforme est adaptable et offre des outils pour rationaliser la plupart des tâches. Commencez par l'adapter à votre environnement spécifique. Votre architecture IT peut inclure des composants tels que des hyperviseurs, des hyperscalers et une infrastructure serverless. + +**Recommandations** : + +Utilisez [Fleet Automation][1] pour gérer à distance vos Agents à grande échelle. Surveillez en permanence vos équipes pour détecter de nouvelles demandes d'infrastructure, signalez-les tôt et appliquez des ressources d'ingénierie pour vous concentrer sur des expansions sensées de vos offres d'infrastructure. + +### Intégration d'une nouvelle empreinte applicative + +L'ajout d'une application à Datadog est une tâche courante dans les premiers jours de l'administration Datadog. Développez un mécanisme efficace qui adapte vos conditions locales aux exigences de Datadog. Au minimum, incluez les éléments de la base de connaissances de la phase de planification, ainsi que des considérations supplémentaires : + +- Le tag de service universel `version` est important pour de nombreuses visualisations. Développez une méthode automatisée, fiable et conforme pour alimenter ces visualisations à plus forte valeur ajoutée. + +- L'établissement d'un [Software Catalog][2] complet offre de nombreux avantages à l'avenir. Software Catalog est central dans le modèle de conception Datadog et héberge les objets de gouvernance, de dépendance et de définition de service. + +**Recommandations :** +Développez un tagging de version automatique intégré dans votre processus de build d'application. Concentrez-vous sur Software Catalog et suivez la préparation avec les conseils de configuration. + +## Gestion des problèmes techniques + +En raison de sa structure de plateforme en tant que service, Datadog nécessite peu de dépannage de votre part, en tant qu'administrateur. Pour aider à identifier les problèmes dans l'Agent host, utilisez la [commande][3] `datadog-agent status`. Cette commande fournit des informations granulaires, spécifiques et exploitables qui identifient les domaines à traiter. De plus, utilisez la commande `datadog-agent flare` pour faire remonter rapidement les problèmes qui doivent être traités par l'assistance Datadog. + +**Recommandations** : +Utilisez les commandes `status` et `flare` dès le premier jour. + +## Tâches d'administration + +Comme tous les autres logiciels d'entreprise, les tâches de maintenance continues doivent être bien organisées et respecter vos politiques locales. Les tâches continues courantes incluent : + +### Surveillance de l'utilisation + +La surveillance de la consommation est essentielle, tout comme l'adoption des outils fournis à cet effet. Datadog fournit un dashboard de [métriques d'utilisation estimée][5] qui peut servir de base à cette capacité. Il existe également des dashboards prêts à l'emploi pour visualiser l'[utilisation estimée][6] sur l'ensemble de vos logs, métriques et traces. + +### Déployer des dashboards et des monitors + +Une fois que vos utilisateurs se familiarisent avec Datadog, ils peuvent demander des améliorations et des ajustements aux éléments fréquemment utilisés tels que les [dashboards][7] et les [monitors][8]. Les composants, y compris les SLO et autres objets de contenu, sont conçus pour un développement itératif et sont écrits en JSON. Ils peuvent être clonés, exportés, modifiés, importés et stockés sous forme de fichiers plats. De plus, un [fournisseur terraform][9] est disponible, ainsi qu'une [API de dashboards][10] pour interagir avec et créer des dashboards. + +Lors de la création de dashboards, priorisez le contenu que vous souhaitez afficher plutôt que le processus de construction. Ce processus créatif est pris en charge par les outils de création de dashboards et dans les dashboards préconstruits fournis avec le produit. Chaque dashboard au sein des {{< translate key="integration_count" >}} intégrations est un modèle à valeur ajoutée pour surveiller sa technologie correspondante. Les dashboards prêts à l'emploi offrent l'avantage de l'expérience de Datadog et du modèle prescriptif pour l'observabilité. + +**Recommandations :** + +- Déterminez l'objectif du dashboard que vous créez. +- Configurez des monitors pour l'utilisation de Datadog en fonction des [métriques d'utilisation estimée][6]. +- Créez des [monitors d'anomalie ou de changement][11] sur ces mêmes métriques d'utilisation estimée pour envoyer des alertes lorsque votre utilisation de Datadog augmente brusquement. +- [Réutilisez et clonez][12] d'autres dashboards pour gagner du temps. +- Utilisez les [dashboards prêts à l'emploi][13] pour gérer la consommation. + +Un dashboard prêt à l'emploi courant est le dashboard de présentation AWS EC2 : + +{{< img src="/administrators_guide/ec2_overview.png" alt="Dashboard de présentation AWS EC2" style="width:90%;">}} + +### Rotation des clés API + +La plateforme Datadog utilise l'authentification par clé API RESTful standard et recommande de suivre les pratiques standard de [sécurité des clés API][14], y compris la rotation des clés. Il est également bénéfique d'organiser l'attribution de ces clés à des groupes de travail logiques pour optimiser le profil de sécurité et l'opération de rotation. + +**Recommandations :** + +Incorporez les clés API et App Datadog dans vos propres systèmes de gestion des clés. Organisez les clés en groupes qui peuvent être facilement maintenus. + +### Objets RBAC : rôles, équipes et ensembles d'autorisations + +Le [RBAC][15] Datadog s'appuie sur votre fournisseur SAML et le stockage AD/LDAP en amont de ce fournisseur SAML. Il peut refléter les groupes d'utilisateurs AD et attribuer des autorisations spécifiques à Datadog dans un mappage de groupes standard. Une collaboration entre les administrateurs Datadog et les administrateurs SAML/AD/LDAP est nécessaire pour échanger les noms de groupes et les attributs spécifiques pour la structure clé-valeur. + +## Mises à jour de l'Agent Datadog + +Les composants de l'Agent sont régulièrement mis à jour avec des améliorations de sécurité et de fonctionnalités. Il est donc préférable de rester à jour. Suivez vos procédures locales pour les tests et la publication de nouveaux logiciels. + +**Recommandations :** + +Incluez les mises à niveau Datadog dans les standards de gestion des correctifs et les politiques de mise à niveau existants. Abonnez-vous au [flux de versions Datadog][17] et surveillez de près votre [page Fleet Automation][18] pour les Agents qui nécessitent des mises à niveau. + +## Résumé + +L'administration Datadog comporte plusieurs activités qui devraient bien s'intégrer dans vos standards de processus existants. Incorporez Datadog dans vos systèmes standard pour la rotation des clés, les mises à jour de correctifs, l'onboarding et l'Infrastructure as Code (IaC). Publiez ces standards tôt pour guider les utilisateurs dans le démarrage avec votre nouvelle installation Datadog. + +## Étapes suivantes + +Après avoir planifié, configuré et maintenu avec succès votre installation Datadog, utilisez les ressources suivantes pour soutenir votre parcours Datadog continu : + +- [Obtenir une certification Datadog][20] +- [Débuter avec l'assistance Datadog][21] +- [S'inscrire aux newsletters sur les nouvelles versions et la sécurité de Datadog][22] +- [Consulter le blog The Monitor][23] + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/agent/fleet_automation/ +[2]: /fr/software_catalog/ +[3]: /fr/agent/configuration/agent-commands#agent-information +[4]: /fr/agent/troubleshooting/send_a_flare/?tab=agent\#send-a-flare-using-the-flare-command +[5]: https://app.datadoghq.com/dash/integration/31281/estimated-usage-overview?fromUser=false\&refresh_mode=sliding\&view=spans\&from_ts=1721313591456\&to\_ts=1721317191456\&live=true +[6]: /fr/account_management/billing/usage_metrics/ +[7]: /fr/dashboards/#overview +[8]: /fr/monitors/ +[9]: /fr/getting_started/integrations/terraform/#dashboards +[10]: /fr/api/latest/dashboards/ +[11]: /fr/monitors/types/anomaly/ +[12]: /fr/getting_started/dashboards/#start-by-reusing-other-dashboards +[13]: https://app.datadoghq.com/dashboard/lists +[14]: /fr/account_management/api-app-keys/#using-multiple-api-keys +[15]: /fr/account_management/rbac/?tab=datadogapplication +[16]: /fr/integrations/ +[17]: https://github.com/DataDog/datadog-agent/releases +[18]: https://app.datadoghq.com/fleet +[19]: /fr/api/latest/key-management/ +[20]: https://www.datadoghq.com/certification/overview/ +[21]: /fr/getting_started/support/ +[22]: https://www.datadoghq.com/subscriptions/ +[23]: https://www.datadoghq.com/blog/ +[24]: /fr/administrators_guide/plan/ +[25]: /fr/administrators_guide/build/ \ No newline at end of file diff --git a/content/fr/agent/basic_agent_usage/chef.md b/content/fr/agent/basic_agent_usage/chef.md index 0d1cd529cbad7..ff80565de2e09 100644 --- a/content/fr/agent/basic_agent_usage/chef.md +++ b/content/fr/agent/basic_agent_usage/chef.md @@ -1,20 +1,21 @@ --- dependencies: -- "https://github.com/DataDog/chef-datadog/blob/master/README.md" +- https://github.com/DataDog/chef-datadog/blob/main/README.md title: Chef --- +Le cookbook Chef Datadog automatise l'installation et la configuration de l'Agent Datadog sur les plateformes Linux et Windows prises en charge. Le cookbook est compatible avec `chef-client >= 12.7` et prend en charge les plateformes Windows et Linux. Pour les références complètes d'attributs, les recettes, les exemples d'utilisation et les modèles de configuration d'intégrations, consultez la section [Configurations avancées](#configurations-avancees). + + Les recettes Chef pour Datadog servent à déployer automatiquement les composants et la configuration de Datadog. Le cookbook prend en charge les versions suivantes de l'Agent : * Agent Datadog v7.x (par défaut) * Agent Datadog v6.x * Agent Datadog v5.x -**Remarque** : cette page peut faire référence à des fonctionnalités qui ne sont pas disponibles pour votre version. Consultez le fichier README du +**Remarque** : cette page peut mentionner des fonctionnalités qui ne sont pas disponibles avec votre version. Consultez le fichier README du tag git ou de la version gem pour accéder à la documentation de votre version. -## Configuration - -### Prérequis +## Prérequis Le cookbook Chef pour Datadog est compatible avec `chef-client` 12.7 ou une version ultérieure. Pour une version antérieure de Chef, utilisez une [version 2.x du cookbook][2]. Consultez le [CHANGELOG][3] pour en savoir plus. @@ -22,10 +23,12 @@ Le cookbook Chef pour Datadog est compatible avec `chef-client` 12.7 ou une ver Les plateformes suivantes sont prises en charge : -* Amazon Linux +* AlmaLinux (Chef 16 ou 16.10.8 ou une version supérieure, ou bien Chef 17.0.69 ou une version supérieure requis) +* Amazon Linux * CentOS * Debian * RedHat (RHEL 8 nécessite Chef 15 ou une version ultérieure) +* Rocky (Chef 16 ou 16.17.4 ou une version supérieure, ou bien Chef 17.1.35 ou une version supérieure requis) * Scientific Linux * Ubuntu * Windows @@ -43,29 +46,16 @@ Les cookbooks Opscode suivants sont des dépendances : #### Chef -**Utilisateurs de Chef 12** : en fonction de votre version de Chef 12, des contraintes de dépendance supplémentaires peuvent s'appliquer : - -```ruby -# Chef < 12.14 -depends 'yum', '< 5.0' -``` - -```ruby -# Chef < 12.9 -depends 'apt', '< 6.0.0' -depends 'yum', '< 5.0' -``` - **Utilisateurs de Chef 13** : avec Chef 13 et `chef_handler` 1.x, il se peut que vous rencontriez des problèmes avec la recette `dd-handler`. Pour y remédier, mettez à jour dépendance `chef_handler` en installant la version 2.1 ou une version ultérieure. -**Utilisateurs de Chef 14 et 15** : pour prendre en charge les versions 12 et 13 de Chef, le cookbook `datadog` dispose d'une dépendance avec le cookbook `chef_handler`, qui est fourni en tant que ressource dans Chef 14. Malheureusement, la dépendance génère un message indiquant son obsolescence pour les utilisateurs de Chef 14 et 15. +## Configuration ### Installation 1. Ajoutez le cookbook à votre serveur Chef avec [Berkshelf][5] ou [Knife][6] : ```text # Berksfile - cookbook 'datadog', '~> 4.0.0' + cookbook 'datadog', '~> 4.0' ``` ```shell @@ -96,24 +86,7 @@ depends 'yum', '< 5.0' 5. Patientez jusqu'à la prochaine exécution programmée de `chef-client` ou déclenchez-le manuellement. -### Environnement Dockerisé - -Pour créer un environnement Docker, utilisez les fichiers sous `docker_test_env` : - -``` -cd docker_test_env -docker build -t chef-datadog-container . -``` - -Pour exécuter le conteneur, utilisez : - -``` -docker run -d -v /dev/vboxdrv:/dev/vboxdrv --privileged=true chef-datadog-container -``` - -Ensuite, associez une console au conteneur ou utilisez la fonctionnalité de conteneur distant de VS Code pour développer au sein du conteneur. - -#### Attributs Datadog +### Attributs Datadog Vous pouvez utiliser les méthodes suivantes pour ajouter vos [clés d'API et d'application Datadog][4] : @@ -123,11 +96,11 @@ Vous pouvez utiliser les méthodes suivantes pour ajouter vos [clés d'API et d' **Remarque** : lorsque vous utilisez l'état d'exécution pour stocker vos clés d'API et d'application, définissez-les en fonction de la durée de compilation avant `datadog::dd-handler` dans la run list. -#### Configuration supplémentaire +## Configurations avancées Pour ajouter des éléments supplémentaires qui ne sont pas directement disponibles en tant qu'attributs du cookbook au fichier de configuration de l'Agent (généralement `datadog.yaml`), utilisez l'attribut `node['datadog']['extra_config']`. Il s'agit d'un attribut de hachage, qui est marshalé dans le fichier de configuration en conséquence. -##### Exemples +### Exemples Le code suivant définit le champ `secret_backend_command` dans le fichier de configuration `datadog.yaml` : @@ -153,7 +126,7 @@ Pour les attributs imbriqués, utilisez une syntaxe d'objet. Le code suivant dé default['datadog']['extra_config']['logs_config'] = { 'use_port_443' => true } ``` -#### Déploiement Chef sur AWS OpsWorks +### Déploiement Chef sur AWS OpsWorks Suivez les étapes ci-dessous pour déployer l'Agent Datadog avec Chef sur AWS OpsWorks : @@ -164,25 +137,25 @@ Suivez les étapes ci-dessous pour déployer l'Agent Datadog avec Chef sur AWS  2. Incluez la recette dans la recette `install-lifecycle` : ```ruby - include_recipe 'datadog::dd-agent' + include_recipe '::dd-agent' ``` ### Intégrations Activez les intégrations de l'Agent en ajoutant la [recette](#recettes) et les détails de configuration dans la run list et les attributs de votre rôle. -**Remarque** : vous pouvez créer des recettes d'intégration supplémentaires en utilisant la ressource [datadog_monitor](#monitor-datadog). +**Remarque** : vous pouvez utiliser la ressource `datadog_monitor` pour activer les intégrations de l'Agent sans passer par une recette. Associez vos recettes aux `roles` souhaités. Par exemple, `role:chef-client` doit contenir `datadog::dd-handler`, et `role:base` doit démarrer l'Agent avec `datadog::dd-agent`. Voici un exemple de rôle avec les recettes `dd-handler`, `dd-agent` et `mongo` : ```ruby name 'example' -description 'Exemple de rôle avec Datadog' +description 'Example role using DataDog' default_attributes( 'datadog' => { 'agent_major_version' => 7, - 'api_key' => '', - 'application_key' => '', + 'api_key' => '', + 'application_key' => '', 'mongo' => { 'instances' => [ {'host' => 'localhost', 'port' => '27017'} @@ -200,11 +173,11 @@ run_list %w( **Remarque** : cette recette n'utilise pas de `data_bags`, car il est peu probable d'avoir plusieurs clés d'API avec une seule clé d'application. -## Versions +### Versions Par défaut, la version majeure actuelle de ce cookbook installe l'Agent v7. Les attributs suivants sont disponibles pour contrôler la version de l'Agent installée : -| Paramètre | Description | +| Paramètre | Rôle | |------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `agent_major_version` | Impose la version majeure 5, 6 ou 7 (par défaut) de l'Agent. | | `agent_version` | Impose une version spécifique de l'Agent (conseillé). | @@ -213,7 +186,7 @@ Par défaut, la version majeure actuelle de ce cookbook installe l'Agent v7. Le Consultez le fichier d'exemple [attributes/default.rb][1] correspondant à la version de votre cookbook pour découvrir tous les attributs disponibles. -### Passer à une version supérieure +#### Mise à jour Certains noms d'attributs ont changé entre les versions 3.x et 4.x du cookbook. Référez-vous à ce tableau de référence pour mettre à jour votre configuration : @@ -225,7 +198,7 @@ Certains noms d'attributs ont changé entre les versions 3.x et 4.x du cookbook | Imposer une version de l'Agent | `'agent_version'` ou `'agent6_version'` | `'agent_version'` pour toutes les versions | | Modifier package_action | `'agent_package_action'` ou `'agent6_package_action'` | `'agent_package_action'` pour toutes les versions | | Modifier l'URL du référentiel APT | `'aptrepo'` ou `'agent6_aptrepo'` | `'aptrepo'` pour toutes les versions | -| Modifier la distribution du référentiel APT | `'aptrepo_dist'` ou `'agent6_aptrepo_dist'` | `'aptrepo_dist'` pour toutes les versions | +| Modifier la distribution du référentiel APT | `'aptrepo_dist'` ou `'agent6_aptrepo_dist'` | `'aptrepo_dist'` pour toutes les versions | | Modifier le référentiel YUM | `'yumrepo'` ou `'agent6_yumrepo'` | `'yumrepo'` pour toutes les versions | | Modifier le référentiel SUSE | `'yumrepo_suse'` ou `'agent6_yumrepo_suse'` | `'yumrepo_suse'` pour toutes les versions | @@ -240,13 +213,13 @@ L'exemple suivant permet de passer de la version 6 à la version 7 de l'Agent. default_attributes( 'datadog' => { 'agent_major_version' => 7, - 'agent_version' => '7.15.0', + 'agent_version' => '7.25.1', 'agent_package_action' => 'install', } ) ``` -### Passer à une version antérieure +#### Passer à une version antérieure Pour passer à une version antérieure de l'Agent, définissez les paramètres `'agent_major_version'`, `'agent_version'` et `'agent_allow_downgrade'`. @@ -262,25 +235,45 @@ L'exemple suivant permet de passer de la version 7 à la version 6 de l'Agent. ) ``` -## Recettes +#### Désinstallation + +Pour désinstaller l'Agent, supprimez la recette `dd-agent`, puis ajoutez la recette `remove-dd-agent` sans aucun attribut. + +#### Référentiel d'Agent personnalisé + +Pour utiliser un Agent depuis un référentiel personnalisé, vous pouvez définir l'option `aptrepo`. + +Par défaut, cette option est égale à `[signed-by=/usr/share/keyrings/datadog-archive-keyring.gpg] apt.datadoghq.com`. Si une valeur personnalisée est définie, un autre trousseau `signed-by` peut également être défini `[signed-by=custom-repo-keyring-path] custom-repo`. + +L'exemple ci-dessous utilise le référentiel de staging : + +```ruby + default_attributes( + 'datadog' => { + 'aptrepo' => '[signed-by=/usr/share/keyrings/datadog-archive-keyring.gpg] apt.datad0g.com', + } + } +``` + +### Recettes Accédez aux [recettes Chef pour Datadog sur GitHub][7]. -### Valeur par défaut +#### Valeur par défaut La [recette par défaut][8] est donnée à titre d'exemple. -### Agent +#### Agent La [recette dd-agent][9] permet d'installer l'Agent Datadog sur le système cible, de définir votre [clé d'API Datadog][4] et de démarrer le service afin de transmettre des métriques système locales. **Remarque** : pour les utilisateurs Windows qui effectuent une mise à niveau de l'Agent à partir d'une version <= 5.10.1 vers une version >= 5.12.0, définissez l'attribut `windows_agent_use_exe` sur `true`. Pour en savoir plus, consultez la [page Wiki dd-agent][10]. -### Gestionnaire +#### Gestionnaire La [recette dd-handler][11] permet d'installer le gem [chef-handler-datadog][12] et d'appeler le gestionnaire à la fin d'une exécution Chef pour transmettre les détails au flux d'actualités. -### DogStatsD +#### DogStatsD Pour installer une bibliothèque spécifique à un langage qui interagit avec DogStatsD : @@ -290,7 +283,7 @@ Pour installer une bibliothèque spécifique à un langage qui interagit avec Do python_package 'dogstatsd-python' # assumes python and pip are installed ``` -### Tracing +#### Tracing Pour installer une bibliothèque spécifique à un langage pour le tracing d'applications (APM) : @@ -300,51 +293,63 @@ Pour installer une bibliothèque spécifique à un langage pour le tracing d'app python_package 'ddtrace' # assumes python and pip are installed ``` -### Intégrations +#### Intégrations De nombreuses [recettes][7] peuvent vous aider à déployer des dépendances et des fichiers de configuration pour les intégrations de l'Agent. -## Ressources +#### System-probe -### datadog_monitor +Par défaut, la [recette system-probe][17] est automatiquement incluse. Elle génère le fichier `system-probe.yaml`. Pour désactiver ce comportement, définissez `node['datadog']['system_probe']['manage_config']` sur false. + +Pour activer la solution [Network Performance Monitoring][7] (NPM) dans `system-probe.yaml`, définissez `node['datadog']['system_probe']['network_enabled']` sur true. + +Pour activer [Universal Service Monitoring][7] (USM) dans `system-probe.yaml`, définissez `node['datadog']['system_probe']['service_monitoring_enabled']` sur true. + +**Remarque pour les utilisateurs Windows** : la solution NPM fonctionne sous Windows avec les versions 6.27+ et 7.27+ de l'Agent. Elle est fournie en tant que composant facultatif. Celui-ci est uniquement installé lorsque `node['datadog']['system_probe']['network_enabled']` est défini sur true durant l'installation ou la mise à niveau de l'Agent. Ainsi, pour installer le composant NPM, vous devrez probablement désinstaller et réinstaller l'Agent, sauf si vous en profitez pour mettre à niveau l'Agent. + +### Ressources + +#### Intégrations sans recette Utilisez la ressource `datadog_monitor` pour activer des intégrations de l'Agent sans passer par une recette. -#### Actions +##### Actions - `:add` (par défaut) : active une intégration en configurant le fichier de configuration, en ajoutant les autorisations appropriées au fichier et en redémarrant l'Agent. - `:remove` : désactive une intégration. -#### Syntaxe +##### Syntaxe ```ruby datadog_monitor 'name' do - init_config Hash # valeur par défaut : {} - instances Array # valeur par défaut : [] - logs Array # valeur par défaut : [] - use_integration_template true, false # valeur par défaut : false - action Symbol # valeur par défaut : add + init_config Hash # default value: {} + instances Array # default value: [] + logs Array # default value: [] + use_integration_template true, false # default value: false + config_name String # default value: 'conf' + action Symbol # defaults to :add end ``` -#### Propriétés +##### Propriétés -| Propriété | Description | -|----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `'name'` | Le nom de l'intégration de l'Agent à configurer et à activer. | -| `instances` | Les champs utilisés pour renseigners les valeurs sous la section `instances` dans le fichier de configuration de l'intégration. | -| `init_config` | Les champs utilisés pour renseigner les valeurs sous la section `init_config` dans le fichier de configuration de l'intégration. | -| `logs` | Les champs utilisés pour renseigner les valeurs sous la section `logs` dans le fichier de configuration de l'intégration. | -| `use_integration_template` | Définissez cette propriété sur `true` (conseillé) pour utiliser le modèle par défaut, qui inscrit les valeurs des propriétés `instances`, `init_config` et `logs` dans le fichier YAML sous leurs clés respectives. Cette propriété est par défaut définie sur `false` afin de rendre possible une rétrocompatibilité. La valeur `true` sera prochainement utilisée par défaut dans une prochaine version majeure du cookbook | +| Propriété | Rôle | +|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `'name'` | Le nom de l'intégration de l'Agent à configurer et à activer. | +| `instances` | Les champs utilisés pour renseigners les valeurs sous la section `instances` dans le fichier de configuration de l'intégration. | +| `init_config` | Les champs utilisés pour renseigner les valeurs sous la section `init_config` dans le fichier de configuration de l'intégration. | +| `logs` | Les champs utilisés pour renseigner les valeurs sous la section `logs` dans le fichier de configuration de l'intégration. | +| `use_integration_template` | Définissez cette propriété sur `true` (conseillé) pour utiliser le modèle par défaut, qui inscrit les valeurs des propriétés `instances`, `init_config` et `logs` dans le fichier YAML sous leurs clés respectives. Cette propriété est par défaut définie sur `false` afin de rendre possible une rétrocompatibilité. La valeur `true` sera prochainement utilisée par défaut dans une prochaine version majeure du cookbook. | +| `config_name` | Le nom de fichier utilisé lors de la création d'un fichier de configuration d'intégrations. Le remplacement de cette propriété permet la création de plusieurs fichiers de configuration pour une seule intégration. Par défaut, la valeur est `conf`, ce qui crée un fichier de configuration nommé `conf.yaml`. | -#### Exemple +##### Exemple Cet exemple permet d'activer l'intégration ElasticSearch en utilisant la ressource `datadog_monitor`. Il fournit la configuration d'instance (dans ce cas : l'URL pour se connecter à ElasticSearch) et définit le flag `use_integration_template` afin d'utiliser le modèle de configuration par défaut. En outre, il indique à la ressource `service[datadog-agent]` de redémarrer l'Agent. **Remarque** : l'installation de l'Agent doit être au-dessus de cette recette dans la run list. ```ruby -include_recipe 'datadog::dd-agent' +include_recipe '::dd-agent' datadog_monitor 'elastic' do instances [{'url' => 'http://localhost:9200'}] @@ -355,16 +360,16 @@ end Consultez les [recettes Chef pour les intégrations Datadog][7] afin de découvrir des exemples supplémentaires. -### datadog_integration +#### Versions d'intégration Pour installer une version spécifique d'une intégration Datadog, utilisez la ressource `datadog_integration`. -#### Actions +##### Actions - `:install` (par défaut) : installe la version spécifiée d'une intégration. - `:remove` : supprime une intégration. -#### Syntaxe +##### Syntaxe ```ruby datadog_integration 'name' do @@ -374,20 +379,20 @@ datadog_integration 'name' do end ``` -#### Propriétés +##### Propriétés - `'name'` : le nom de l'intégration de l'Agent à installer, par exemple : `datadog-apache`. - `version` : la version de l'intégration à installer (obligatoire uniquement pour l'action `:install`). - `third_party` : définissez ce paramètre sur false si vous installez une intégration Datadog. Si ce n'est pas le cas, définissez-le sur true. Disponible à partir des versions 6.21/7.21 de l'Agent Datadog uniquement. -#### Exemple +##### Exemple Cet exemple permet d'installer la version `1.11.0` de l'intégration ElasticSearch en utilisant la ressource `datadog_integration`. **Remarque** : l'installation de l'Agent doit être au-dessus de cette recette dans la run list. ```ruby -include_recipe 'datadog::dd-agent' +include_recipe '::dd-agent' datadog_integration 'datadog-elastic' do version '1.11.0' @@ -398,11 +403,37 @@ Pour obtenir la liste des versions disponibles d'une intégration, consultez son **Remarque** : pour les utilisateurs de Chef sous Windows, le `chef-client` doit avoir un accès en lecture au fichier `datadog.yaml` lorsque le binaire `datadog-agent` disponible sur le nœud est utilisé par cette ressource. +### Développement + +#### Environnement Dockerisé + +Pour créer un environnement Docker avec lequel exécuter des tests kitchen, utilisez les fichiers sous `docker_test_env` : + +``` +cd docker_test_env +docker build -t chef-datadog-test-env . +``` + +Pour exécuter le conteneur, utilisez : + +``` +docker run -d -v /var/run/docker.sock:/var/run/docker.sock chef-datadog-test-env +``` + +Attachez ensuite une console au conteneur ou utilisez la fonctionnalité remote-container de VS Code pour développer à l'intérieur du conteneur. + +Pour exécuter des tests kitchen-docker depuis l'intérieur du conteneur : + +``` +# Note: Also set KITCHEN_DOCKER_HOSTNAME=host.docker.internal if on MacOS or Windows +# Run this under a login shell (otherwise `bundle` won't be found) +KITCHEN_LOCAL_YAML=kitchen.docker.yml bundle exec rake circle +``` [1]: https://github.com/DataDog/chef-datadog/blob/master/attributes/default.rb [2]: https://github.com/DataDog/chef-datadog/releases/tag/v2.18.0 [3]: https://github.com/DataDog/chef-datadog/blob/master/CHANGELOG.md -[4]: https://app.datadoghq.com/account/settings#api +[4]: https://app.datadoghq.com/organization-settings/api-keys [5]: https://docs.chef.io/berkshelf/ [6]: https://docs.chef.io/knife/ [7]: https://github.com/DataDog/chef-datadog/tree/master/recipes @@ -415,3 +446,4 @@ Pour obtenir la liste des versions disponibles d'une intégration, consultez son [14]: https://github.com/poise/poise-python [15]: https://github.com/DataDog/chef-datadog/blob/master/recipes/ddtrace-ruby.rb [16]: https://github.com/DataDog/integrations-core +[17]: https://github.com/DataDog/chef-datadog/blob/master/recipes/system-probe.rb \ No newline at end of file diff --git a/content/fr/agent/basic_agent_usage/puppet.md b/content/fr/agent/basic_agent_usage/puppet.md index abe1f172b2dfe..e9f3849a713ee 100644 --- a/content/fr/agent/basic_agent_usage/puppet.md +++ b/content/fr/agent/basic_agent_usage/puppet.md @@ -1,31 +1,40 @@ --- dependencies: -- "https://github.com/DataDog/puppet-datadog-agent/blob/main/README.md" +- https://github.com/DataDog/puppet-datadog-agent/blob/main/README.md title: Puppet --- Ce module installe l'Agent Datadog et envoie les rapports Puppet à Datadog. -### Prérequis +## Prérequis -Le module Puppet Datadog est pris en charge sur Linux et Windows et est compatible avec la version 4.6 ou une version ultérieure de Puppet, ou avec la version 2016.4 ou une version ultérieure de Puppet Enterprise. Pour obtenir des informations détaillées sur la compatibilité, consultez la [page du module sur Puppet Forge][1] (en anglais). +Le module Puppet Datadog prend en charge Linux et Windows et est compatible avec Puppet >= 7.34.x ou Puppet Enterprise +version >= 2021.7.x. Pour des informations détaillées sur la compatibilité, consultez la [page du module sur Puppet Forge][1]. -### Installation +## Installation -Installez le module Puppet [agent_datadog][1] dans le chemin du module de votre master Puppet : +Suivez le [guide d'installation dans l'application dans Fleet Automation][9] pour sélectionner vos fonctionnalités requises, copiez l'extrait de manifeste généré, ajoutez-le à votre manifeste Puppet et appliquez votre déploiement Puppet standard pour déployer l'Agent. Consultez le [module de l'Agent Datadog][1] ou la section [Configurations avancées](#configurations-avancees) pour des configurations supplémentaires, notamment la gestion des mises à niveau de l'Agent, l'activation des intégrations de l'Agent et la configuration du reporting des exécutions Puppet. -```shell -puppet module install datadog-datadog_agent -``` +### Mise à niveau de l'Agent + +> [!IMPORTANT] +> Le module Puppet Datadog v4.x abandonne la prise en charge de Puppet <= 6 et de l'Agent Datadog v5. Pour mettre à niveau ou installer +> l'Agent Datadog v5+ sur Puppet <= 6, utilisez le module v3.x. -#### Mise à niveau +- Par défaut, l'Agent Datadog v7.x est installé. Pour utiliser la version 6 de l'Agent, modifiez le paramètre `agent_major_version`. +- Les options héritées spécifiques à l'Agent v5 ont été supprimées. Consultez le fichier CHANGELOG.md pour plus de détails et les commentaires de la classe datadog_agent pour toutes les options disponibles. -- Par défaut, la version 7.x de l'Agent Datadog est installée. Pour utiliser une version antérieure de l'Agent, modifiez le paramètre `agent_major_version`. -- Le paramètre `agent5_enable` n'est plus utilisé. Il a été remplacé par `agent_major_version`. -- Le paramètre `agent6_extra_options` a été remplacé par `agent_extra_options`, car il concerne les versions 6 et 7 de l'Agent. -- Le paramètre `agent6_log_file` a été remplacé par `agent_log_file`, car il concerne les versions 6 et 7 de l'Agent. -- Les paramètres `agent5_repo_uri` et `agent6_repo_uri` ont été remplacés par le paramètre `agent_repo_uri` pour toutes les versions de l'Agent. -- Les paramètres `conf_dir` et `conf6_dir` ont été remplacés par le paramètre `conf_dir` pour toutes les versions de l'Agent. -- Le nom du fichier de répertoire créé sur Linux, qui était auparavant `datadog5` ou `datadog6`, est désormais `datadog`. +> [!IMPORTANT] +> Des mises à jour et des modifications incompatibles ont été apportées dans les intégrations de l'Agent ci-dessous : + + - ActiveMQ_XML + - Le paramètre `suppress_errors` doit maintenant être utilisé au lieu de `supress_errors` (rétrocompatible) + - ElasticSearch **[MODIFICATIONS INCOMPATIBLES]** + - `ssl_verify` accepte uniquement des valeurs booléennes + - Les options `tls_verify` ont été ajoutées + - Check Disk **[MODIFICATIONS INCOMPATIBLES]** + - `use_mount`, `all_partitions` et `tag_by_filesystem` acceptent uniquement des valeurs booléennes + - Check TCP + - L'option `skip_event` a été supprimée depuis Datadog Agent v6.4+ ### Configuration @@ -88,6 +97,9 @@ Une fois le module `datadog_agent` installé sur votre `puppetserver` ou `puppet 5. (Facultatif) Pour recueillir des métriques et des événements liés au service Puppet, consultez la section [Rapports](#rapports). + +## Configurations avancées + ### Mettre à jour une intégration Pour installer et imposer une version spécifique d'une intégration, utilisez `datadog_agent::install_integration`. La commande `datadog-agent integration` est alors appelée pour s'assurer qu'une intégration spécifique est installée ou désinstallée. Exemple : @@ -114,19 +126,7 @@ Notez qu'il est possible d'installer une version plus ancienne d'une intégratio Pour activer l'envoi de rapports sur les exécutions Puppet vers votre flux Datadog, activez le processeur de rapports sur votre master Puppet et l'envoi de rapports pour vos clients. Les clients renvoient au master un rapport d'exécution après chaque vérification. -1. Installez le gem [dogapi][3] sur votre système. Redémarrez puppetserver une fois le gem installé. - -Pour configurer dogapi au sein de votre code, utilisez notify : - -```puppet -package { 'dogapi': - ensure => 'present', - provider => 'puppetserver_gem', - notify => Service['puppetserver'] -} -``` - -2. Définissez l'option `puppet_run_reports` sur true dans le manifeste de configuration des nœuds pour votre master : +1. Définissez l'option `puppet_run_reports` sur true dans le manifeste de configuration des nœuds pour votre master : ```ruby class { 'datadog-agent': @@ -136,7 +136,9 @@ package { 'dogapi': } ``` -3. Ajoutez ces options de configuration à la configuration du master Puppet (ex. : `/etc/puppetlabs/puppet/puppet.conf`) : + Le gem dogapi est automatiquement installé. Définissez `manage_dogapi_gem` sur false pour personnaliser l'installation. + +2. Ajoutez ces options de configuration à la configuration du master Puppet (ex. : `/etc/puppetlabs/puppet/puppet.conf`) : ```ini [main] @@ -171,7 +173,7 @@ Avec le [module `ini_setting`](https://forge.puppet.com/modules/puppetlabs/inifi } ``` -4. Sur tous vos nœuds client Puppet, ajoutez ce qui suit au même emplacement : +3. Sur tous vos nœuds client Puppet, ajoutez ce qui suit au même emplacement : ```ini [agent] @@ -194,7 +196,7 @@ Avec le [module `ini_setting`](https://forge.puppet.com/modules/puppetlabs/inifi } ``` -5. (Facultatif) Activez le tagging des rapports avec des faits : +4. (Facultatif) Activez le tagging des rapports avec des faits : Vous pouvez ajouter des tags aux rapports qui sont envoyés à Datadog sous la forme d'événements. Ces tags peuvent provenir de faits Puppet propres au nœud sur lequel porte le rapport. Ils doivent être individuels et ne pas comprendre de faits structurés (hashs, tableaux, etc.) pour garantir la lisibilité. Pour activer le tagging des faits standard, définissez le paramètre `datadog_agent::reports::report_fact_tags` sur la valeur de tableau des faits, par exemple `["virtual","operatingsystem"]`. Pour activer le tagging des faits de confiance, définissez le paramètre `datadog_agent::reports::report_trusted_fact_tags` sur la valeur de tableau des faits, par exemple `["certname","extensions.pp_role","hostname"]`. @@ -205,7 +207,31 @@ Avec le [module `ini_setting`](https://forge.puppet.com/modules/puppetlabs/inifi - Ne dupliquez pas les données de surveillance courantes comme le nom de l'host, l'uptime, la mémoire, etc. - Coordonnez les faits essentiels comme le rôle, le propriétaire, le modèle, le centre de données, etc. pour établir des corrélations pertinentes avec les mêmes tags à partir de métriques -6. Vérifiez que vos données Puppet se trouvent dans Datadog en recherchant `sources:puppet` dans le [flux d'événements][5]. +5. Vérifiez que vos données Puppet se trouvent dans Datadog en recherchant `sources:puppet` dans le [flux d'événements][5]. + +### Configuration via NPM + +Pour activer les fonctionnalités Network Performance Monitoring (NPM) de l'Agent Datadog, suivez ces étapes : + +1. (Windows uniquement) Si l'Agent est déjà installé, désinstallez-le en passant `win_ensure => absent` à la classe principale et en supprimant les définitions des autres classes. +2. (Windows uniquement) Passez l'option `windows_npm_install` avec la valeur `true` à la classe `datadog::datadog_agent`. Supprimez `win_ensure` s'il a été ajouté à l'étape précédente. +3. Utilisez la classe `datadog_agent::system_probe` pour créer correctement le fichier de configuration : + +```conf +class { 'datadog_agent::system_probe': + network_enabled => true, +} +``` + +### Configuration USM + +Pour activer Universal Service Monitoring (USM) de l'Agent Datadog, utilisez la classe `datadog_agent::system_probe` pour créer correctement le fichier de configuration : + +```conf +class { 'datadog_agent::system_probe': + service_monitoring_enabled => true, +} +``` ### Dépannage @@ -264,8 +290,8 @@ Pour générer des tags à partir de faits personnalisés, classez vos nœuds en ```conf class { "datadog_agent": - api_key => "", - facts_to_tags => ["osfamily","networking.domain","my_custom_fact"], + api_key => "", + facts_to_tags => ["os.family","networking.domain","my_custom_fact"], } ``` @@ -280,20 +306,22 @@ Ces variables peuvent être définies dans la classe `datadog_agent` afin de con | nom de la variable | description | |-----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `agent_major_version` | La version de l'Agent à installer : 5, 6 ou 7 (valeur par défaut : 7). | +| `agent_major_version` | La version de l'Agent à installer : 6 ou 7 (par défaut : 7). | | `agent_version` | Cette variable vous permet d'imposer l'installation d'une version mineure spécifique de l'Agent, par exemple :`1:7.16.0-1`. Pour installer la dernière version, n'indiquez aucune valeur. | | `collect_ec2_tags` | Définissez cette variable sur `true` pour recueillir les tags EC2 personnalisés d'une instance en tant que tags de l'Agent. | | `collect_instance_metadata` | Définissez cette variable sur `true` pour recueillir les métadonnées EC2 personnalisées d'une instance en tant que tags de l'Agent. | -| `datadog_site` | Le site Datadog auquel envoyer les données (Agents v6 et v7 uniquement). Valeur par défaut : `datadoghq.com`. Exemples : `datadoghq.eu` ou `us3.datadoghq.com`. | +| `datadog_site` | Le site Datadog auquel envoyer les données. La valeur par défaut est `datadoghq.com`, par exemple : `datadoghq.eu` ou `us3.datadoghq.com`. | | `dd_url` | L'URL du serveur entrant de Datadog. Il est peu probable que vous deviez la modifier. Cette variable remplace `datadog_site`. | | `host` | Remplace le hostname du nœud. | | `local_tags` | Un tableau de chaînes `` définies en tant que tags pour le nœud. | -| `non_local_traffic` | Autorise les autres nœuds à relayer leur trafic par ce nœud. | +| `non_local_traffic` | Autoriser d'autres nœuds à relayer leur trafic DogstatsD via ce nœud. | | `apm_enabled` | Une valeur booléenne permettant d'activer l'Agent APM (valeur par défaut : false). | | `process_enabled` | Une valeur booléenne permettant d'activer l'Agent de processus (valeur par défaut : false). | | `scrub_args` | Une valeur booléenne permettant d'activer le nettoyage de lignes de commande de processus (valeur par défaut : true). | | `custom_sensitive_words` | Un tableau permettant d'ajouter des mots supplémentaires pour le nettoyage, en plus des mots par défaut (valeur par défaut : `[]`). | | `logs_enabled` | Une valeur booléenne permettant d'activer l'Agent de logs (valeur par défaut : false). | +| `windows_npm_install` | Un booléen pour activer l'installation du pilote NPM Windows (par défaut false). | +| `win_ensure` | Une énumération (present/absent) pour garantir la présence/absence de l'Agent Datadog sur Windows (par défaut present) | | `container_collect_all` | Une valeur booléenne permettant d'activer la collecte de logs pour tous les conteneurs. | | `agent_extra_options`1 | Un hash permettant de fournir des options de configuration supplémentaires (Agent v6 et v7 uniquement). | | `hostname_extraction_regex`2 | Une expression régulière utilisée pour extraire le groupe de capture associé au hostname, afin de transmettre les résultats de l'exécution dans Datadog, plutôt que de transmettre le nom du nœud Puppet. Exemple :
`'^(?.*\.datadoghq\.com)(\.i-\w{8}\..*)?$'` | @@ -321,3 +349,4 @@ class { "datadog_agent": [6]: https://github.com/DataDog/puppet-datadog-agent/blob/master/manifests/integrations/mongo.pp [7]: https://github.com/DataDog/puppet-datadog-agent/tree/master/manifests/integrations [8]: https://github.com/DataDog/puppet-datadog-agent/blob/master/manifests/init.pp +[9]: https://app.datadoghq.com/fleet/install-agent/latest?platform=puppet \ No newline at end of file diff --git a/content/fr/agent/configuration/fips-compliance.md b/content/fr/agent/configuration/fips-compliance.md new file mode 100644 index 0000000000000..55afead96194f --- /dev/null +++ b/content/fr/agent/configuration/fips-compliance.md @@ -0,0 +1,219 @@ +--- +algolia: + rank: 80 + tags: + - fips + - fips proxy + - compliance + - fedramp + - govcloud + - fips agent +aliases: +- /fr/agent/guide/agent-fips-proxy +- /fr/agent/guide/fips-agent +- /fr/configuration/agent-fips-proxy +description: Configurez les modules cryptographiques conformes FIPS pour l'Agent Datadog + dans les environnements hautement réglementés comme FedRAMP. +disable_toc: false +further_reading: +- link: agent/configuration/proxy + tag: Documentation + text: Configuration de l'Agent pour un proxy +- link: https://www.datadoghq.com/blog/datadog-fips-enabled-agent/ + tag: Blog + text: Surveiller des workloads hautement régulés avec l'Agent FIPS de Datadog +title: Conformité FIPS Datadog +--- + +## Présentation + +L'Agent FIPS est une version de l'Agent Datadog qui prend en charge nativement la conformité aux Federal Information Processing Standards (FIPS). La conformité de l'Agent FIPS repose sur son utilisation du [module cryptographique - Certificat #4282][1] validé FIPS 140-2. Consultez la [politique de sécurité][2] associée pour obtenir des informations sur les environnements d'exploitation validés et les restrictions. + +L'Agent FIPS inclut également une [prise en charge limitée des intégrations][3] qui doivent collecter des données d'observabilité externes au host. + +**Il vous incombe de garantir la conformité de l'environnement d'exploitation avec la politique de sécurité et les directives FIPS plus larges.** + +## Plateformes prises en charge et limitations + +Plateformes prises en charge : + +| | | +| --- | ----------- | +| Bare metal et VM | RHEL >= 7
Debian >= 8
Ubuntu >= 14.04
SUSE >= 12
Windows Server >= 2016
Windows >= 10| +| Cloud et conteneurs| Amazon ECS
AWS EKS (Helm)
Docker| + +Produits pris en charge (Agent 7.65.0 et versions ultérieures) : +- Métriques +- Logs +- Les traces APM +- Profils APM +- Processus +- Orchestrator Explorer +- Runtime Security +- Surveillance sans serveur + +L'Agent FIPS Datadog ne prend **pas** en charge les éléments suivants : +- Communication entre l'Agent de cluster et les Agents de nœuds +- Communication sortante vers autre chose que GovCloud +- [Collecteur DDOT][4] Datadog + + +## Directives de conformité +
+Cette liste n'est pas exhaustive. Ces exigences constituent uniquement une base de référence. Il vous incombe d'évaluer votre environnement et de mettre en œuvre tous les contrôles supplémentaires nécessaires pour atteindre la pleine conformité FIPS. +
+Les contrôles de base suivants s'appliquent à chaque plateforme. Votre système peut nécessiter des contrôles supplémentaires : + +{{< tabs >}} +{{% tab "Linux" %}} +- Un host Linux non conteneurisé. +- Votre OS Linux doit être en mode conforme FIPS. Consultez la documentation de votre fournisseur d'OS pour connaître les étapes requises pour satisfaire cette exigence. +- Stockage conforme FIPS supportant le système de fichiers du host. +{{% /tab %}} + +{{% tab "Windows" %}} +- Un host Windows non conteneurisé. +- Windows doit être en [mode conforme FIPS][1]. +- Stockage conforme FIPS supportant le système de fichiers du host. + +[1]: https://learn.microsoft.com/en-us/windows/security/security-foundations/certification/fips-140-validation +{{% /tab %}} + +{{% tab "AWS Lambda" %}} +- Utilisez une région conforme FIPS (par exemple, AWS GovCloud) +{{% /tab %}} + +{{% tab "AWS ECS" %}} +- Utilisez une région conforme FIPS (par exemple, AWS GovCloud) +- Configurez les services de calcul AWS (EC2 ou Fargate) en mode FIPS +- Utilisez un stockage conforme FIPS pour vos tâches ECS +{{% /tab %}} + +{{% tab "AWS EKS" %}} +- Utilisez une région conforme FIPS (par exemple, AWS GovCloud) +- Configurez les nœuds worker EKS en mode FIPS +- Utilisez un stockage conforme FIPS pour vos nœuds worker EKS +{{% /tab %}} + +{{< /tabs >}} + +En plus des exigences du système d'exploitation (OS) ci-dessus : +- Vous devez avoir accès à un environnement Datadog conforme FIPS (US1-FED). +- La version de l'Agent doit être 7.65.0 et versions ultérieures pour accéder à l'Agent FIPS + +## Installation + +{{< tabs >}} +{{% tab "Linux" %}} + +1. Installez l'Agent avec la prise en charge FIPS. + + **Remarque :** la prise en charge FIPS n'est disponible que sur les versions 7.65.0 et ultérieures de l'Agent : + 1. Si vous utilisez le script d'installation de l'Agent, spécifiez la variable d'environnement `DD_AGENT_FLAVOR="datadog-fips-agent"` dans votre commande d'installation. Par exemple : + + ```sh + DD_SITE="ddog-gov.com" DD_API_KEY="MY_API_KEY" DD_AGENT_FLAVOR="datadog-fips-agent" ... bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)" + ``` + 1. Si vous installez avec un package, [suivez les instructions][1] pour installer le dernier package `datadog-fips-agent` disponible pour votre plateforme. + 1. Ajoutez `GOFIPS=1` à vos variables d'environnement Datadog, rechargez toutes les unités de service et redémarrez le service de l'Agent Datadog (`datadog-agent.service`). Par exemple, si votre host utilise systemd : + + ```sh + echo "GOFIPS=1" | sudo tee -a /etc/datadog-agent/environment + systemctl daemon-reload + systemctl restart 'datadog-agent*' + ``` +1. Exécutez la commande `datadog-agent status` et assurez-vous de voir `FIPS Mode: enabled` dans la sortie du statut. + +{{< img src="/agent/fips-linux.png" alt="Sortie de la commande de statut de l'Agent avec FIPS Mode activé - Linux" style="width:100%;" >}} + +[1]: /fr/agent/guide/installing-the-agent-on-a-server-with-limited-internet-connectivity/ +{{% /tab %}} + +{{% tab "Windows" %}} + +1. Suivez les [instructions Windows][1] pour désinstaller tout Agent Datadog existant sur la machine. +1. Exécutez la commande ci-dessous pour installer l'Agent FIPS, en remplaçant `DATADOG_API_KEY` par votre clé API : + + **Remarque :** la prise en charge FIPS n'est disponible que sur les versions 7.65.0 et ultérieures de l'Agent : + + {{< code-block lang="powershell" >}} +$p = Start-Process -Wait -PassThru msiexec -ArgumentList '/qn /i https://windows-agent.datadoghq.com/datadog-fips-agent-7-latest.amd64.msi /log C:\Windows\SystemTemp\install-datadog.log APIKEY="" SITE="ddog-gov.com"' +if ($p.ExitCode -ne 0) { + Write-Host "msiexec a échoué avec le code de sortie $($p.ExitCode) veuillez vérifier les logs à C:\Windows\SystemTemp\install-datadog.log" -ForegroundColor Red +} +{{< /code-block >}} + +3. Exécutez la commande `datadog-agent status` et assurez-vous de voir `FIPS Mode: enabled` dans la sortie du statut. + + ```powershell + & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" status + ``` + + {{< img src="/agent/fips-linux.png" alt="Sortie de la commande de statut de l'Agent avec FIPS Mode activé - Linux" style="width:100%;" >}} + + +**Remarque** : le nom du programme pour l'Agent FIPS dans **Ajout/Suppression de programmes** est « Datadog FIPS Agent ». + +[1]: /fr/agent/basic_agent_usage/windows/#uninstall-the-agent + +{{% /tab %}} + +{{% tab "AWS Lambda" %}} + +Pour la conformité FIPS AWS Lambda, suivez les instructions de la documentation [Conformité FIPS AWS Lambda][1]. + +[1]: /fr/serverless/aws_lambda/fips-compliance/ + +{{% /tab %}} + +{{% tab "AWS ECS" %}} + +Lorsque vous suivez les [instructions d'installation ECS][1], assurez-vous d'utiliser ces valeurs de configuration spécifiques à FIPS pour votre définition de tâche : +- Définissez `image` dans l'objet `containerDefinitions` sur `public.ecr.aws/datadog/agent:7-fips` +- Définissez la variable d'environnement `DD_SITE` sur `ddog-gov.com` + +[1]: /fr/containers/amazon_ecs/ +{{% /tab %}} + +{{% tab "AWS EKS" %}} + +Lorsque vous suivez les instructions d'[installation de l'Agent Datadog sur Kubernetes][1], assurez-vous d'inclure ces valeurs de configuration spécifiques à FIPS dans le fichier `datadog-agent.yaml` en fonction de votre méthode d'installation choisie : + +Pour l'opérateur Datadog : +```yaml +spec: + global: + site: "ddog-gov.com" + useFIPSAgent: true +``` + +Pour la chart Helm Datadog : +```yaml +datadog: + site: "ddog-gov.com" +useFIPSAgent: true +``` + +[1]: /fr/containers/kubernetes/installation/ +{{% /tab %}} + +{{< /tabs >}} + +## Sécurité et durcissement + +Vous, le client Datadog, êtes responsable de la sécurité et du durcissement du **host**. + +**Considérations de sécurité :** +- Bien que les images Datadog fournies soient construites en tenant compte de la sécurité, elles n'ont pas été évaluées par rapport aux recommandations du benchmark CIS ou aux normes DISA STIG. +- Si vous reconstruisez, reconfigurez ou modifiez l'Agent FIPS Datadog pour l'adapter à vos besoins de déploiement ou de test, vous pourriez vous retrouver avec une configuration techniquement fonctionnelle, mais Datadog ne peut pas garantir la conformité FIPS si l'Agent FIPS Datadog n'est pas utilisé exactement comme expliqué dans la documentation. +- Si vous n'avez pas suivi les étapes d'installation répertoriées ci-dessus exactement comme documenté, Datadog ne peut pas garantir la conformité FIPS. +- Certaines distributions Linux avec `urllib3 ≤ 1.26.20` peuvent échouer au chiffrement FIPS en raison de bibliothèques non conformes. Vérifiez auprès de votre fournisseur Linux pour garantir la prise en charge du chiffrement conforme FIPS. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4282 +[2]: https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp4282.pdf +[3]: /fr/integrations/guide/fips-integrations +[4]: /fr/opentelemetry/setup/ddot_collector \ No newline at end of file diff --git a/content/fr/agent/configuration/proxy_squid.md b/content/fr/agent/configuration/proxy_squid.md new file mode 100644 index 0000000000000..b85907822c902 --- /dev/null +++ b/content/fr/agent/configuration/proxy_squid.md @@ -0,0 +1,99 @@ +--- +algolia: + tags: + - agent proxy +description: Configurez Squid en tant que proxy forward pour acheminer le trafic de + l'Agent Datadog via un serveur proxy HTTP/HTTPS lorsque l'accès direct à Internet + est limité. +further_reading: +- link: /agent/configuration/proxy/ + tag: Documentation + text: Configuration de l'Agent pour un proxy +title: Utiliser un proxy Squid +--- + +[Squid][2] est un proxy forward pour le web prenant en charge HTTP, HTTPS, FTP et plus encore. Il fonctionne sur la plupart des systèmes d'exploitation disponibles, y compris Windows, et est sous licence GNU GPL. Squid est une option simple si vous ne disposez pas déjà d'un proxy web en cours d'exécution dans votre réseau. **Si vous avez déjà un serveur proxy existant, vous n'avez pas besoin d'utiliser Squid.** Suivez plutôt les instructions de la [Configuration du proxy de l'Agent][5]. + +## Transfert de proxy avec Squid + +Pour configurer Squid pour envoyer le trafic vers Datadog, suivez les instructions ci-dessous pour configurer Squid, démarrer le service squid, puis configurer et redémarrer l'Agent Datadog. + +### Configurer Squid pour envoyer uniquement le trafic vers Datadog + +Installez Squid sur un host qui dispose d'une connectivité à la fois vers vos Agents internes et vers Datadog. Utilisez le gestionnaire de packages de votre système d'exploitation ou installez le logiciel directement depuis la [page du projet Squid][2]. + +Pour configurer Squid, modifiez le fichier de configuration. Ce fichier se trouve généralement à `/etc/squid/squid.conf` sur Linux ou `C:\squid\etc\squid.conf` sous Windows. Pour les autres systèmes d'exploitation, consultez la section [Répertoire de configuration de l'Agent][6]. + +Modifiez votre fichier de configuration `squid.conf` afin que Squid puisse accepter le trafic local et le transférer vers les points d'ingestion Datadog nécessaires : + +```conf +http_port 0.0.0.0:3128 + +acl local src 127.0.0.1/32 + +acl Datadog dstdomain .{{< region-param key="dd_site" >}} + +http_access allow Datadog +http_access allow local manager +``` + +### Démarrer Squid + +Démarrez (ou redémarrez) Squid afin que vos nouvelles configurations puissent être appliquées. + +{{< tabs >}} +{{% tab "Linux" %}} + +```bash +sudo systemctl start squid +``` + +Si Squid est déjà en cours d'exécution, redémarrez plutôt Squid avec la commande suivante : + +```bash +sudo systemctl restart squid +``` + +{{% /tab %}} +{{% tab "Windows" %}} + +Si vous configurez Squid sous Windows, vous devez d'abord [configurer Squid en tant que service système][4]. Vous pouvez ensuite exécuter la commande suivante dans une invite de commandes administrateur : + +```bash +net start squid +``` + +Si Squid est déjà en cours d'exécution, redémarrez plutôt Squid avec les commandes suivantes : + +```bash +net stop squid +net start squid +``` + +{{% /tab %}} +{{< /tabs >}} + +### Configurer l'Agent Datadog + +Modifiez le fichier de configuration de l'Agent (`datadog.yaml`) afin d'ajouter les lignes suivantes : + +```yaml +proxy: + http: http://127.0.0.1:3128 + https: http://127.0.0.1:3128 +``` + +Après avoir enregistré ces modifications, [redémarrez l'Agent][1]. + +Vérifiez que Datadog est en mesure de recevoir les données de votre ou vos Agents en consultant votre [vue d'ensemble de l'infrastructure][3]. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/agent/configuration/agent-commands/ +[2]: http://www.squid-cache.org/ +[3]: https://app.datadoghq.com/infrastructure +[4]: https://wiki.squid-cache.org/KnowledgeBase/Windows +[5]: /fr/agent/configuration/proxy/ +[6]: /fr/agent/configuration/agent-configuration-files#agent-configuration-directory \ No newline at end of file diff --git a/content/fr/agent/fleet_automation/remote_management.md b/content/fr/agent/fleet_automation/remote_management.md new file mode 100644 index 0000000000000..eae880f237cea --- /dev/null +++ b/content/fr/agent/fleet_automation/remote_management.md @@ -0,0 +1,157 @@ +--- +description: Mettre à niveau et configurer vos Agents à distance +further_reading: +- link: /agent/fleet_automation/ + tag: Documentation + text: Fleet Automation +- link: /remote_configuration + tag: Documentation + text: Configuration à distance +title: Gestion d'Agents à distance +--- + +## Section Overview + +La gestion d'Agents à distance simplifie le processus de mise à niveau de votre parc d'Agents en réduisant le besoin de coordination avec plusieurs outils de déploiement ou de gestion de configuration. La gestion d'Agents à distance vous donne accès à : +* **Gestion centralisée** - Mettez à niveau les Agents dans tous les environnements avec un seul outil, garantissant la cohérence avec les dernières fonctionnalités et correctifs de sécurité. +* **Visibilité et surveillance** - Suivez l'état des mises à niveau en temps réel, permettant une vérification rapide du succès du déploiement. +* **Efficacité opérationnelle** - Rationalisez le processus de mise à niveau en éliminant la coordination entre équipes et en unifiant le déploiement sur différentes plateformes. + +## Prérequis + +### Plateformes prises en charge + +- VM Linux installées à l'aide du script d'installation ou du rôle Ansible Datadog +- VM Windows + +La mise à niveau à distance d'Agents dans des environnements conteneurisés n'est pas prise en charge. + +### Autorisations +Les utilisateurs doivent disposer de l'autorisation [Agent Upgrade][2] dans Fleet Automation pour les mises à niveau, et de l'autorisation [Fleet Policies Write][2] pour configurer les Agents à distance. L'autorisation est activée par défaut sur le rôle Datadog Admin. + +## Activer la gestion d'Agents à distance +1. Vérifiez que [Remote Configuration est activé pour votre organisation][15]. +2. Confirmez que la version de votre Agent est 7.69 ou ultérieure (pour les hosts Windows, utilisez la version 7.71.1 ou ultérieure). +3. Assurez-vous que votre configuration de l'Agent Datadog (`datadog.yaml`) inclut `remote_updates: true`, ou définissez alternativement la variable d'environnement `DD_REMOTE_UPDATES=true`. L'activation de l'une ou l'autre option active la gestion d'Agents à distance pour l'Agent. + +## Mettre à niveau les Agents à distance + +### Prérequis +* **Espace disque** : Datadog suggère au moins 2 Go pour l'installation initiale de l'Agent et 2 Go supplémentaires pour la mise à niveau de l'Agent depuis Fleet Automation. Plus précisément, la mise à niveau nécessite 1,3 Go dans le répertoire `/opt/datadog-packages` sur Linux, ou `C:\ProgramData\Datadog\Installer\packages` sur Windows. L'espace supplémentaire garantit qu'il y a suffisamment de place pour maintenir temporairement deux installations d'Agent pendant le processus de mise à niveau en cas de besoin de restauration. + +### Comment mettre à niveau les Agents à distance +Pour mettre à niveau vos Agents à distance : +1. [Activez la gestion d'Agents à distance](#activer-la-gestion-d-agents-a-distance). +1. Depuis l'[onglet **Upgrade Agents**][4], cliquez sur **Start Agents Upgrade**. + + {{< img src="/agent/fleet_automation/upgrade-screen.png" alt="Sélectionnez les Agents que vous souhaitez mettre à niveau." style="width:100%;" >}} +1. Sélectionnez les Agents que vous souhaitez mettre à niveau. Vous pouvez cibler un groupe d'Agents en filtrant sur les informations de host ou les tags. + + {{< img src="/agent/fleet_automation/start-agent-upgrade.png" alt="Sélectionnez les Agents que vous souhaitez mettre à niveau." style="width:100%;" >}} + +1. Examinez le plan de déploiement et cliquez sur **Upgrade Agents** pour lancer la mise à niveau. + + {{< img src="/agent/fleet_automation/agent-upgrades-staged.png" alt="Examinez le plan de déploiement de mise à niveau" style="width:100%;" >}} + +1. Utilisez le dashboard [Deployments][10] pour suivre le processus de mise à niveau. Cliquer sur un Agent dans le tableau des déploiements vous donne plus d'informations sur la mise à niveau, notamment la durée, la progression et l'utilisateur qui a lancé la mise à niveau. + {{< img src="/agent/fleet_automation/deployments.png" alt="Sélectionnez les Agents que vous souhaitez mettre à niveau." style="width:100%;" >}} + +### Processus de mise à niveau + +Comme pour une mise à niveau manuelle, attendez-vous à un temps d'arrêt de 5 à 30 secondes pendant le redémarrage de l'Agent. Le processus de mise à niveau complet prend environ 5 minutes. Environ 2 minutes de ce temps sont utilisées pour le processus de mise à niveau. Le reste du temps est consacré à la surveillance de la mise à niveau pour garantir la stabilité et déterminer si une restauration est nécessaire. Si la mise à niveau échoue et qu'une restauration est nécessaire, l'Agent revient automatiquement à la version précédemment exécutée de l'Agent. + +Le processus de mise à niveau ajoute principalement des fichiers aux répertoires suivants : + +Linux : +* `/opt/datadog-packages` +* `/etc/datadog-agent` +* `/etc/systemd/system` + +Windows : +* `C:\ProgramData\Datadog\Installer\packages` +* `C:\Program Files\Datadog\Datadog Agent` + +L'Agent garantit que les autorisations appropriées sont définies pour ces fichiers. Aucun fichier de configuration n'est modifié pendant le processus d'installation. + +### Priorité de mise à niveau + +Pour une expérience de mise à niveau la plus cohérente, Datadog recommande de gérer les mises à niveau à partir d'une seule source à la fois. Utilisez Fleet Automation ou un outil de gestion de configuration. Si vous exécutez un outil de gestion de configuration sur un Agent qui a déjà été mis à niveau à l'aide de Fleet Automation, la mise à niveau ramène l'Agent à la version [`DD_AGENT_MINOR_VERSION`][9] spécifiée dans votre configuration. Si aucune `DD_AGENT_MINOR_VERSION` n'est définie, l'Agent est mis à niveau vers la dernière version disponible. + + +## Configurer les Agents +{{< callout url="https://www.datadoghq.com/product-preview/manage-agent-configurations-from-fleet-automation/" >}} +La gestion des configurations d'Agent dans Fleet Automation est en version préliminaire. Pour y accéder, remplissez le formulaire d'inscription à la version préliminaire. +{{< /callout >}} + +1. Dans Fleet Automation, ouvrez l'onglet [Configure Agents][16] et cliquez sur Create Configuration. +1. Sélectionnez et configurez les produits (par exemple, APM, Logs, NDM) que vous souhaitez que les Agents cibles exécutent. + + {{< img src="/agent/fleet_automation/fa_create_agent_configuration2.png" alt="Sélectionnez le produit à activer." style="width:100%;" >}} + +1. Examinez et nommez votre configuration finale et commencez à définir le périmètre de déploiement vers vos Agents. Alternativement, vous pouvez enregistrer la configuration pour la modifier ou la déployer sur vos Agents ultérieurement depuis la page Configure Agents. +1. Définissez le périmètre des Agents sur lesquels déployer la configuration (par exemple via des tags tels que les noms de hosts, le site ou l'environnement). +1. Examinez le plan de déploiement pour confirmer les Agents ciblés et les paramètres de déploiement, tels que la simultanéité du déploiement. +1. Lancez le déploiement et suivez la progression depuis la page Deployments. + +### Priorité de configuration + +Lorsqu'un fichier de configuration sur le host entre en conflit avec une configuration Fleet Automation, Fleet Automation a la priorité, garantissant une source unique de vérité. Consultez la section [Ordre de priorité de configuration][17]. + +### Modifier, déployer ou restaurer des configurations +À partir de votre liste de configurations dans l'onglet [Configure Agents][16], vous pouvez : + - Déployer la configuration non utilisée sur vos Agents + - Modifier la configuration, enregistrer une nouvelle version et redéployer la configuration mise à jour. + - Restaurer la configuration vers une version précédente et la redéployer. + + +### Miroirs et proxies +Vous pouvez utiliser la gestion d'Agents à distance avec un proxy ou des référentiels miroirs. + +Pour obtenir des instructions sur la configuration de votre Agent pour utiliser un proxy, consultez la section [Configuration du proxy de l'Agent][6]. Après avoir configuré le proxy, redémarrez l'Agent pour appliquer les paramètres. + +Pour obtenir des instructions sur l'utilisation de référentiels miroirs ou isolés, consultez : +- [Synchroniser les images Datadog avec un registre de conteneurs privé][7] +- [Installer l'Agent sur un serveur avec une connectivité Internet limitée][8] + +## Rétrograder les Agents + +Si vous devez rétrograder un Agent, suivez les étapes de [Mettre à niveau vos Agents](#mettre-a-niveau-les-agents-a-distance) et spécifiez la version vers laquelle vous souhaitez rétrograder. Datadog recommande d'utiliser la dernière version de l'Agent et de mettre à niveau vos Agents régulièrement pour vous assurer d'avoir accès aux dernières fonctionnalités. + +## Dépannage + +### Programme d'installation Datadog incompatible avec l'Agent (pré-7.66) + +Si vous étiez un client de la version préliminaire et avez configuré la gestion d'Agents à distance avant la version 7.66 de l'Agent, votre programme d'installation Datadog pourrait être incompatible avec l'Agent. + +Pour prendre en charge la disponibilité générale des mises à niveau d'Agents à distance, le composant d'installation a été intégré à l'Agent à partir de la version 7.66. Cette modification garantit que les deux composants restent à jour ensemble, empêchant les incompatibilités de version et les problèmes de compatibilité associés. Les versions antérieures de l'Agent n'incluaient pas ces composants, entraînant une possible incompatibilité de version qui pourrait empêcher les mises à jour automatiques et la fonctionnalité de gestion d'Agents à distance. + +Pour diagnostiquer et résoudre le problème : +1. Utilisez la [requête suivante dans Fleet Automation][13] pour identifier les hosts affectés : + ```txt + support_remote_upgrade:datadog-installer + ``` +1. Si votre configuration est impactée, [réexécutez le script d'installation][14] sur chaque Agent affecté pour les mettre à niveau manuellement vers la version 7.66 ou ultérieure de l'Agent. Cela garantit la pleine compatibilité avec les fonctionnalités de gestion d'Agents à distance. + +Les mises à niveau manuelles de l'Agent ne sont pas nécessaires après avoir effectué la mise à jour vers la version 7.66 ou ultérieure. Les mises à niveau futures sont gérées automatiquement sans nécessiter d'intervention manuelle. + +Si vous ne mettez pas à niveau une version antérieure de l'Agent vers la version 7.66 ou ultérieure, il n'y a aucun impact sur votre Agent existant. Cependant, les mises à niveau à distance restent indisponibles jusqu'à ce que vous mettiez à jour l'Agent. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/organization-settings/remote-config +[2]: /fr/account_management/rbac/permissions#fleet-automation +[3]: https://app.datadoghq.com/account/settings/agent/latest +[4]: https://app.datadoghq.com/fleet/agent-upgrades +[5]: https://app.datadoghq.com/fleet/deployments +[6]: /fr/agent/configuration/proxy/ +[7]: /fr/containers/guide/sync_container_images/ +[8]: https://docs.datadoghq.com/fr/agent/guide/installing-the-agent-on-a-server-with-limited-internet-connectivity/ +[9]: https://github.com/DataDog/agent-linux-install-script?tab=readme-ov-file#install-script-configuration-options +[10]: https://app.datadoghq.com/fleet/deployments +[13]: https://app.datadoghq.com/fleet?query=support_remote_upgrade%3Adatadog-installer +[14]: https://app.datadoghq.com/fleet/install-agent/latest?platform=overview +[15]: /fr/agent/guide/setup_remote_config +[16]: https://app.datadoghq.com/fleet/agent-management +[17]: https://docs.datadoghq.com/fr/agent/remote_config/?tab=configurationyamlfile#configuration-order-precedence \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-architecture.md b/content/fr/agent/guide/agent-5-architecture.md new file mode 100644 index 0000000000000..110e1886b0fc1 --- /dev/null +++ b/content/fr/agent/guide/agent-5-architecture.md @@ -0,0 +1,46 @@ +--- +disable_toc: false +private: true +title: Architecture de l'Agent 5 +--- + +Cette page couvre l'architecture de l'Agent 5. Pour en savoir plus sur l'architecture de la dernière version de l'Agent, consultez la section [Architecture de l'Agent][1]. + +{{< img src="agent/agent5architecture.jpg" alt="Architecture de l'Agent v5" >}} + +L'Agent 5 est composé de quatre composants majeurs, chacun écrit en Python et exécuté en tant que processus séparé : + +* **Collector** (`agent.py`) : le collector exécute des checks sur la machine actuelle pour les [intégrations][2] configurées et capture les métriques système, telles que la mémoire et le processeur. +* **DogStatsD** (`dogstatsd.py`) : il s'agit d'un serveur backend compatible StatsD auquel vous pouvez envoyer des [métriques custom][3] depuis vos applications. +* **Forwarder** (`ddagent.py`) : le forwarder récupère les données de DogStatsD et du collector, les met en file d'attente pour envoi, puis les envoie à Datadog. +* **SupervisorD** : le collector, le serveur DogStatsD et le forwarder sont tous contrôlés par un seul processus superviseur. Le superviseur est maintenu séparé pour limiter la surcharge de chaque application si vous n'exécutez pas toutes les parties. Cependant, il est généralement recommandé d'exécuter toutes les parties. + +**Remarque** : pour les utilisateurs de Windows, les quatre processus de l'Agent apparaissent sous forme d'instances de `ddagent.exe`, avec la description `DevOps' best friend`. + +### Supervision, privilèges et ports réseau + +Un processus principal SupervisorD s'exécute en tant qu'utilisateur `dd-agent`, et tous les sous-processus créés s'exécutent en tant que même utilisateur. Cela s'applique également à tout appel système (`iostat`, `netstat`) initié par l'Agent Datadog. La configuration de l'Agent se trouve dans `/etc/dd-agent/datadog.conf` et `/etc/dd-agent/conf.d`. Toute la configuration doit être lisible par `dd-agent`. Les autorisations recommandées sont `0600`, car les fichiers de configuration contiennent votre clé API et d'autres identifiants nécessaires pour accéder aux métriques. + +Les [ports][4] suivants sont ouverts pour les opérations : + +| Port | Rôle | +|-----------|-------------------------------------| +| tcp/17123 | Utilisé par le Forwarder pour les opérations normales | +| tcp/17124 | Utilisé par le Forwarder pour la prise en charge de Graphite | +| udp/8125 | DogStatsD | + +Tous les processus d'écoute sont liés par défaut à `127.0.0.1` ou `::1` ou les deux, sur les versions d'Agent 3.4.1 ou ultérieures. Dans les versions antérieures, ils étaient liés à `0.0.0.0` (toutes les interfaces). Pour plus d'informations sur l'exécution de l'Agent via un proxy, consultez la section [Configuration du proxy de l'Agent][5]. Pour plus d'informations sur les plages d'adresses IP à autoriser, consultez la section [Trafic réseau][6]. + +Nous vous conseillons de prévoir 1024 descripteurs de fichiers ouverts. Vous pouvez consulter cette valeur avec la commande `ulimit -a`. Si vous êtes contraint d'utiliser une valeur plus faible en raison d'une limite stricte (par exemple si l'option Shell Fork Bomb Protection est activée), vous pouvez ajouter la ligne suivante dans `supervisord.conf` : + +```conf +[supervisord] +minfds = 100 # Votre limite stricte +``` + +[1]: /fr/agent/architecture +[2]: /fr/integrations/ +[3]: /fr/metrics/custom_metrics/ +[4]: /fr/agent/configuration/network/?tab=agentv5v4#open-ports +[5]: /fr/agent/configuration/proxy/?tab=agentv5 +[6]: /fr/agent/faq/network/ \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-check-status.md b/content/fr/agent/guide/agent-5-check-status.md new file mode 100644 index 0000000000000..0d8873a1d1259 --- /dev/null +++ b/content/fr/agent/guide/agent-5-check-status.md @@ -0,0 +1,82 @@ +--- +disable_toc: false +private: true +title: Dépanner un check de l'Agent sur l'Agent 5 +--- + +Cette page couvre le dépannage d'un check de l'Agent sur l'Agent 5. Pour obtenir des informations sur la dernière version de l'Agent, consultez la section [Dépanner un check de l'Agent][4]. + +Si vous rencontrez des problèmes avec un check de l'Agent, utilisez ces commandes pour obtenir plus d'informations de dépannage. + +**Remarques** : +- Remplacez `` dans les exemples ci-dessous par n'importe quel check de l'Agent. Par exemple : `activemq`, `ceph` ou `elastic`. Consultez la [documentation d'une intégration][1] pour confirmer le nom du check de l'Agent. +- Pour désactiver temporairement un check de service pendant le dépannage, renommez `/conf.d/.d/conf.yaml` en quelque chose d'autre que l'extension de fichier `.yaml` ou `.yml`, comme `conf.yaml.disable`. + +## Linux + +Pour tester un check de l'Agent, exécutez : + +```shell +sudo -u dd-agent dd-agent check +``` + +Remplacez `` par n'importe quel check de l'Agent. Par exemple : `activemq`, `ceph` ou `elastic`. Consultez la [documentation de l'intégration][1] pour vérifier le nom du check de l'Agent. + +Si vous souhaitez inclure des métriques rate, ajoutez `--check-rate` à votre commande. Par exemple, pour l'Agent v6.x, exécutez : + +```shell +sudo -u dd-agent dd-agent check --check-rate +``` + +Si votre problème persiste, [contactez l'équipe d'assistance Datadog][2] avec un [flare][3]. + +## Windows + +{{< tabs >}} +{{% tab "Agent v<=5.11" %}} + +L'installation de l'Agent inclut un fichier appelé `shell.exe` dans votre répertoire `Program Files` pour l'Agent Datadog. Ce fichier peut être utilisé pour exécuter Python dans l'environnement de l'Agent. Une fois votre check (appelé ``) écrit et les fichiers `.py` et `.yaml` aux bons emplacements, exécutez la commande suivante dans shell.exe : + +```python +from checks import run_check +run_check('') +``` + +Cela permet d'afficher toutes les métriques ou tous les événements que le check renvoie. + +{{% /tab %}} +{{% tab "Agent v>=5.12" %}} + +Exécutez le script suivant depuis une ligne de commande PowerShell avec **élévation des privilèges** (en tant qu'administrateur), en utilisant le `` approprié : + +`/embedded/python.exe agent/agent.py check ` + +Par exemple, pour exécuter le check Disk : + +```powershell +& "$env:ProgramFiles\Datadog\Datadog Agent\embedded\python.exe" "$env:ProgramFiles\Datadog\Datadog Agent\agent\agent.py" check disk +``` + +{{% /tab %}} +{{< /tabs >}} + +## Systemd + +Pour les systèmes utilisant `systemd`, utilisez `journalctl` pour faciliter le débogage. + +La commande suivante affiche le statut de l'Agent Datadog. + +```shell +sudo systemctl status dd-agent +``` + +Si l'Agent ne parvient pas à démarrer et qu'aucune information supplémentaire n'est fournie, utilisez la commande suivante pour afficher tous les logs du service de l'Agent Datadog. Si nécessaire, utilisez `-r` pour imprimer les logs dans l'ordre inverse. + +```shell +sudo journalctl -u dd-agent.service +``` + +[1]: /fr/integrations/ +[2]: /fr/help +[3]: /fr/agent/guide/agent-5-flare/ +[4]: /fr/agent/troubleshooting/agent_check_status \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-commands.md b/content/fr/agent/guide/agent-5-commands.md new file mode 100644 index 0000000000000..2d79d186cfb70 --- /dev/null +++ b/content/fr/agent/guide/agent-5-commands.md @@ -0,0 +1,132 @@ +--- +disable_toc: false +private: true +title: Commandes de l'Agent 5 +--- + +## Section Overview + +Cette page couvre les commandes de l'Agent 5. Datadog recommande d'installer ou de mettre à niveau vers l'Agent 7 pour bénéficier des dernières fonctionnalités. Pour plus d'informations sur l'installation de la dernière version de l'Agent, suivez les [instructions d'installation de l'Agent 7][1]. Pour plus d'informations sur la mise à niveau vers l'Agent 7 depuis une version antérieure, consultez la section [Mettre à niveau vers l'Agent Datadog v7][2]. + +**Remarque** : si le wrapper de `service` n'est pas disponible sur votre système, utilisez : + +* Sur les systèmes basés sur `upstart` : `sudo start/stop/restart/status datadog-agent` +* Sur les systèmes basés sur `systemd` : `sudo systemctl start/stop/restart/status datadog-agent` + + +## Démarrer, arrêter et redémarrer l'Agent + +### Démarrer l'Agent + +Liste des commandes pour démarrer l'Agent Datadog : + +| Plateforme | Commande | +|----------|-------------------------------------------| +| Linux | `sudo service datadog-agent start` | +| Docker | Consultez la [documentation de l'Agent Docker][3]. | +| macOS | `/usr/local/bin/datadog-agent start` | +| Source | `sudo ~/.datadog-agent/bin/agent start` | +| Windows | Consultez la section [Commandes Windows](#commandes-windows). | + +### Arrêter l'Agent + +Liste des commandes pour arrêter l'Agent Datadog : + +| Plateforme | Commande | +|----------|-------------------------------------------| +| Linux | `sudo service datadog-agent stop` | +| Docker | Consultez la [documentation de l'Agent Docker][3]. | +| macOS | `/usr/local/bin/datadog-agent stop` | +| Source | `sudo ~/.datadog-agent/bin/agent stop` | +| Windows | Consultez la section [Commandes Windows](#commandes-windows). | + +### Redémarrer l'Agent + +Liste des commandes pour redémarrer l'Agent Datadog : + +| Plateforme | Commande | +|----------|-------------------------------------------| +| Linux | `sudo service datadog-agent restart` | +| Docker | Consultez la [documentation de l'Agent Docker][3]. | +| macOS | `/usr/local/bin/datadog-agent restart` | +| Source | `sudo ~/.datadog-agent/bin/agent restart` | +| Windows | Consultez la section [Commandes Windows](#commandes-windows). | + +## Statut et informations sur l'Agent + +### Statut de service + +Liste des commandes pour afficher le statut de l'Agent Datadog : + +| Plateforme | Commande | +|-----------------|--------------------------------------------------------------------------| +| Linux | `sudo service datadog-agent status` | +| Docker (Debian) | `sudo docker exec -it /etc/init.d/datadog-agent status` | +| Kubernetes | `kubectl exec -it -- /etc/init.d/datadog-agent status` | +| macOS | `datadog-agent status` | +| Source | `sudo ~/.datadog-agent/bin/agent status` | +| Windows | Consultez la section [Commandes Windows](#commandes-windows). | + +### Informations sur l'Agent + +Liste des commandes pour afficher le statut de votre Agent Datadog et les intégrations activées. + +| Plateforme | Commande | +|------------|------------------------------------------------------------------------| +| Linux | `sudo service datadog-agent info` | +| Docker | `sudo docker exec -it /etc/init.d/datadog-agent info` | +| Kubernetes | `kubectl exec -it -- /etc/init.d/datadog-agent info` | +| macOS | `datadog-agent info` | +| Source | `sudo ~/.datadog-agent/bin/info` | +| Windows | Consultez la section [Commandes Windows](#commandes-windows). | + +Une intégration correctement configurée s'affiche dans la section **Checks** sans aucun avertissement ni aucune erreur, comme dans l'exemple ci-dessous : + +```text +Checks +====== + network + ------- + - instance #0 [OK] + - Collected 15 metrics, 0 events & 1 service check +``` + +### Informations de statut sur Windows + +Pour vous assurer que l'Agent est bien lancé, vérifiez si l'état du service indique *En cours d'exécution* dans la liste des services Windows. Un processus appelé `ddagent.exe` doit également être présent dans le gestionnaire des tâches. + +Pour obtenir plus d'informations sur l'état de l'Agent pour les versions 5.2+, accédez à *Datadog Agent Manager -> Settings -> Agent Status* : + +{{< img src="agent/faq/windows_status.png" alt="Statut Windows" style="width:50%;" >}} + +Pour connaître le statut des versions 3.9.1 à 5.1 de l'Agent, accédez à `http://localhost:17125/status`. + +La commande info est disponible pour PowerShell : + +```powershell +& "$env:ProgramFiles\Datadog\Datadog Agent\embedded\python.exe" "$env:ProgramFiles\Datadog\Datadog Agent\agent\agent.py" info +``` + +ou cmd.exe : + +``` +"%ProgramFiles%\Datadog\Datadog Agent\embedded\python.exe" "%ProgramFiles%\Datadog\Datadog Agent\agent\agent.py" info +``` + +## Commandes Windows + +Utilisez Datadog Agent Manager (disponible depuis le menu Démarrer). + +{{< img src="agent/basic_agent_usage/windows/windows-start-menu.png" alt="Menu Démarrer Windows" style="width:75%;">}} + +Utilisez les commandes `start`, `stop` et `restart` dans Datadog Agent Manager : + +{{< img src="agent/basic_agent_usage/windows/manager-snapshot.png" alt="Snapshot de Datadog Agent Manager" style="width:75%;">}} + +Vous pouvez également utiliser Windows PowerShell, lorsqu'il est disponible : +`[start|stop|restart]-service datadogagent` + + +[1]: https://app.datadoghq.com/account/settings/agent/latest?platform=overview +[2]: /fr/agent/versions/upgrade_to_agent_v7/ +[3]: https://github.com/DataDog/docker-dd-agent/blob/master/README.md \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-configuration-files.md b/content/fr/agent/guide/agent-5-configuration-files.md new file mode 100644 index 0000000000000..b8100c1c94933 --- /dev/null +++ b/content/fr/agent/guide/agent-5-configuration-files.md @@ -0,0 +1,45 @@ +--- +disable_toc: false +private: true +title: Fichiers de configuration de l'Agent 5 +--- + +## Section Overview + +Cette page couvre les fichiers de configuration de l'Agent 5. Datadog recommande d'installer ou de mettre à niveau vers l'Agent 7 pour bénéficier des dernières fonctionnalités. Pour plus d'informations sur l'installation de la dernière version de l'Agent, suivez les [instructions d'installation de l'Agent 7][1]. Pour plus d'informations sur la mise à niveau vers l'Agent 7 depuis une version antérieure, consultez la section [Mettre à niveau vers l'Agent Datadog v7][2]. + +## Fichier de configuration principal de l'Agent + +| Plateforme | Commande | +|:-------------------------------------|:---------------------------------------------------------------------------| +| Linux | `/etc/dd-agent/datadog.conf` | +| macOS | `~/.datadog-agent/datadog.conf` | | +| Windows Server 2008, Vista et versions ultérieures | `%ProgramData%\Datadog\datadog.conf` | +| Windows Server 2003, XP ou versions antérieures | `\\Documents and Settings\All Users\Application Data\Datadog\datadog.conf` | + +Consultez l'[exemple de fichier `config_template.yaml`][3] pour toutes les options de configuration disponibles. + +## Répertoire de configuration de l'Agent + +| Plateforme | Commande | +|:-------------------------------------|:---------------------------------------------------------------------| +| Linux | `/etc/dd-agent/conf.d/` | +| CentOS | `/etc/dd-agent/conf.d/` | +| Debian | `/etc/dd-agent/conf.d/` | +| Fedora | `/etc/dd-agent/conf.d/` | +| macOS | `~/.datadog-agent/conf.d/` | +| RedHat | `/etc/dd-agent/conf.d/` | +| Source | `/etc/dd-agent/conf.d/` | +| Suse | `/etc/dd-agent/conf.d/` | +| Ubuntu | `/etc/dd-agent/conf.d/` | +| Windows Server 2008, Vista et versions ultérieures | `%ProgramData%\Datadog\conf.d` | +| Windows Server 2003, XP ou versions antérieures | `\\Documents and Settings\All Users\Application Data\Datadog\conf.d` | + +## Fichier de configuration JMX + +Les checks de l'Agent JMX ont un fichier `metrics.yaml` supplémentaire dans leur dossier de configuration. Il s'agit d'une liste de tous les beans que l'Agent Datadog collecte par défaut. De cette façon, vous n'avez pas besoin de lister tous les beans manuellement lorsque vous configurez un check via [les labels Docker ou les annotations k8s][4]. + +[1]: https://app.datadoghq.com/account/settings/agent/latest?platform=overview +[2]: /fr/agent/versions/upgrade_to_agent_v7/ +[3]: https://github.com/DataDog/dd-agent/blob/master/datadog.conf.example +[4]: /fr/agent/kubernetes/integrations/#configuration \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-debug-mode.md b/content/fr/agent/guide/agent-5-debug-mode.md new file mode 100644 index 0000000000000..a4b92d36bb4c0 --- /dev/null +++ b/content/fr/agent/guide/agent-5-debug-mode.md @@ -0,0 +1,63 @@ +--- +private: true +title: Mode débogage de l'Agent 5 +--- + +## Section Overview + +Par défaut, le niveau de log de l'Agent est défini sur `INFO`. Pour obtenir plus d'informations à partir de vos logs, définissez le niveau de log sur `DEBUG`. + +**Remarque** : le mode debug doit uniquement être utilisé à des fins de debugging. Datadog vous recommande d'activer uniquement `DEBUG` pendant une certaine période, car cela entraîne une hausse du nombre de logs indexés. Redéfinissez le niveau de log sur `INFO` une fois votre debugging terminé. + +Pour activer le mode debugging complet de l'Agent : + +1. Modifiez votre fichier `datadog.conf` local. Consultez la section [Fichier de configuration principal de l'Agent][1] pour obtenir des détails propres à votre système d'exploitation. +2. Remplacez `# log_level: INFO` par `log_level: DEBUG` (effacez le caractère `#` pour supprimer la mise en commentaire de la ligne). +3. Redémarrez l'Agent Datadog. Consultez la section [Commandes de l'Agent][2] pour obtenir des détails propres à votre système d'exploitation. +4. Attendez quelques minutes pour générer quelques logs. Consultez la section [Fichiers de log de l'Agent][3] pour obtenir des détails propres à votre système d'exploitation. + +## Agent conteneurisé + +Lorsqu'il est exécuté dans un conteneur, l'Agent ne peut pas être redémarré avec `service datadog-agent restart` (ou similaire), ce qui entraîne l'arrêt du conteneur par Docker. Utilisez supervisor pour redémarrer un Agent conteneurisé : + +```text +/opt/datadog-agent/bin/supervisorctl -c /etc/dd-agent/supervisor.conf restart all +``` + +Avec les commandes suivantes, activez la journalisation de débogage, redémarrez l'Agent, attendez 60 secondes, puis envoyez un flare, dans cet ordre : + +```shell +sed -i '/\[Main\]/a LOG_LEVEL=DEBUG' /etc/dd-agent/datadog.conf +/opt/datadog-agent/bin/supervisorctl -c /etc/dd-agent/supervisor.conf restart all +sleep 60 +/etc/init.d/datadog-agent flare +``` + +Les logs de debugging peuvent être désactivés avec : + +```shell +sed -i '/LOG_LEVEL=DEBUG/d' /etc/dd-agent/datadog.conf +/opt/datadog-agent/bin/supervisorctl -c /etc/dd-agent/supervisor.conf restart all +``` + +Le conteneur peut également être redémarré. + +## Niveau de journalisation de l'Agent + +Les niveaux de journalisation de l'Agent suivants sont disponibles pour `log_level` ou `DD_LOG_LEVEL` : + +| Option | Logs critiques | Logs d'erreur | Logs d'avertissement | Logs d'information | Logs de debugging | Logs de trace | +|------------|---------------|------------|-----------|-----------|------------|------------| +| `'OFF'` | | | | | | | +| `'CRITICAL'` | {{< X >}} | | | | | | +| `'ERROR'` | {{< X >}} | {{< X >}} | | | | | +| `'WARN'` | {{< X >}} | {{< X >}} | {{< X >}} | | | | +| `'INFO'` | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | | | +| `'DEBUG'` | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | | +| `'TRACE'` | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | + +**Remarque** : lors de la définition du niveau de log sur `'OFF'` dans le fichier de configuration, les guillemets sont obligatoires pour éviter que la valeur ne soit mal analysée. Les guillemets sont facultatifs pour les autres niveaux de log. + +[1]: /fr/agent/guide/agent-5-configuration-files/ +[2]: /fr/agent/guide/agent-5-commands/ +[3]: /fr/agent/guide/agent-5-log-files/ \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-flare.md b/content/fr/agent/guide/agent-5-flare.md new file mode 100644 index 0000000000000..342b5f4d48b70 --- /dev/null +++ b/content/fr/agent/guide/agent-5-flare.md @@ -0,0 +1,86 @@ +--- +aliases: +- /fr/agent/guide/windows-flare-agent-5 +disable_toc: false +private: true +title: Envoyer un flare de l'Agent 5 +--- + +Cette page couvre les ports utilisés par l'Agent 5. Pour plus d'informations sur la dernière version de l'Agent, consultez la section [Envoyer un flare][1]. + +| Plateforme | Commande | +|------------|-------------------------------------------------------------------------| +| Docker | `docker exec -it dd-agent /etc/init.d/datadog-agent flare ` | +| macOS | `datadog-agent flare ` | +| CentOS | `sudo service datadog-agent flare ` | +| Debian | `sudo service datadog-agent flare ` | +| Kubernetes | `kubectl exec -it /etc/init.d/datadog-agent flare ` | +| Fedora | `sudo service datadog-agent flare ` | +| Redhat | `sudo service datadog-agent flare ` | +| SUSE | `sudo service datadog-agent flare ` | +| Source | `sudo ~/.datadog-agent/bin/agent flare ` | +| Windows | Consultez la [section Windows](#windows) | + +**Remarque** : si vous utilisez un système basé sur Linux et que la commande wrapper `service` n'est pas disponible, [consultez la liste des alternatives][3]. + +## Windows + +Pour envoyer une copie de vos configurations et logs Windows à l'assistance Datadog, suivez les étapes suivantes : + +* Ouvrez Datadog Agent Manager. + +* Sélectionnez Actions. + +* Sélectionnez Flare. + +* Saisissez votre numéro de ticket (si vous n'en avez aucun, laissez la valeur 0). + +* Saisissez l'adresse e-mail que vous utilisez pour vous connecter à Datadog. + +{{< img src="agent/faq/windows_flare.jpg" alt="Flare Windows" style="width:70%;">}} + +La commande flare est disponible pour PowerShell : + +```powershell +& "$env:ProgramFiles\Datadog\Datadog Agent\embedded\python.exe" "$env:ProgramFiles\Datadog\Datadog Agent\agent\agent.py" flare +``` + +ou cmd.exe : + +``` +"%ProgramFiles%\N-Datadog\N" "%ProgramFiles%\N- \N-Datadog Agent\N-embedded\Npython.exe" "%ProgramFiles%\N-Datadog\N-embedded\Npython.exe" "%ProgramFiles%\N- Datadog Agent\N-agent\N-agent.py" flare +``` + +#### Échec de l'envoi du flare + +La sortie de la commande flare vous indique où l'archive flare compressée est enregistrée. Si l'envoi du fichier à Datadog échoue, vous pouvez le récupérer dans ce dossier et l'ajouter manuellement comme pièce jointe à un e-mail. Les fichiers flare sont généralement stockés aux emplacements suivants : +- Linux : `\tmp\` +- macOS : `$TMPDIR` +- Windows: `C:\Users\\AppData\Local\Temp\` + +Pour les versions antérieures de l'Agent sous Windows, vous pouvez trouver l'emplacement de ce fichier en exécutant la commande suivante dans l'invite de commandes Python de l'Agent : + +**Étape 1** : + +* Version 5.12+ de l'Agent : + `"%ProgramFiles%\Datadog\Datadog Agent\dist\shell.exe" since` + +* Versions antérieures de l'Agent : + `"%ProgramFiles%\Datadog\Datadog Agent\files\shell.exe"` + +**Étape 2** : + +```python +import tempfile +print tempfile.gettempdir() +``` + +Exemple : + +{{< img src="agent/faq/flare_fail.png" alt="Échec de l'envoi du flare" style="width:70%;">}} + +Pour plus d'informations sur la dernière version de l'Agent, consultez la [documentation Windows][2]. + +[1]: /fr/agent/troubleshooting/send_a_flare +[2]: /fr/agent/basic_agent_usage/windows/#agent-v5 +[3]: /fr/agent/faq/agent-v6-changes/?tab=linux#service-lifecycle-commands \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-log-files.md b/content/fr/agent/guide/agent-5-log-files.md new file mode 100644 index 0000000000000..a9a1e901488c6 --- /dev/null +++ b/content/fr/agent/guide/agent-5-log-files.md @@ -0,0 +1,43 @@ +--- +disable_toc: false +private: true +title: Fichiers logs de l'Agent 5 +--- + +## Section Overview + +Cette page couvre les fichiers logs de l'Agent 5. Datadog recommande d'installer ou de mettre à niveau vers l'Agent 7 pour bénéficier des dernières fonctionnalités. Pour plus d'informations sur l'installation de la dernière version de l'Agent, suivez les [instructions d'installation de l'Agent 7][1]. Pour plus d'informations sur la mise à niveau vers l'Agent 7 depuis une version antérieure, consultez la section [Mettre à niveau vers l'Agent Datadog v7][2]. + +L'Agent Datadog effectue une rotation des logs tous les 10 Mo par défaut. Lorsqu'une rotation se produit, une sauvegarde (`agent.log.1`) est conservée. Si une sauvegarde précédente existe, elle est écrasée lors de la rotation. Pour définir la taille maximale d'un fichier log et le nombre maximal de fichiers de sauvegarde à conserver, utilisez `log_file_max_size` (par défaut : 10485760 octets) et `log_file_max_rolls` (par défaut : 1) dans le [fichier de configuration de l'Agent][3]. + +## Répertoire de logs de l'Agent + +| Plateforme | Commande | +|--------------------------------------|----------------------------------------------------------------------| +| Linux | `/var/log/datadog/` | +| macOS | `/var/log/datadog/` | +| Windows Server 2008, Vista et versions ultérieures | `C:\ProgramData\Datadog\logs\` | +| Windows Server 2003, XP ou versions antérieures | `C:\Documents and Settings\All Users\Application Data\Datadog\logs\` | +| SmartOS | `/opt/local/datadog/logs/supervisord/` | +| Build source | `~/.datadog-agent/supervisord/logs/` | + +**Remarque** : pour Windows Server 2008, Vista et les systèmes plus récents, les logs de l'Agent se trouvent dans `C:\ProgramData\Datadog\logs`. `ProgramData` est un dossier caché. + +## Fichiers de log de l'Agent + +* `collector.log` +* `dogstatsd.log` +* `forwarder.log` +* `supervisord.log` + +## Fichiers de log d'installation de l'Agent + +| Plateforme | Nom du fichier et emplacement | +|--------------------------------------|-------------------------------| +| Linux | `$(pwd)/ddagent-install.log` | +| macOS | `/tmp/dd_agent.log` | +| Windows | `%TEMP%\MSI*.LOG` | + +[1]: https://app.datadoghq.com/account/settings/agent/latest?platform=overview +[2]: /fr/agent/versions/upgrade_to_agent_v7/ +[3]: /fr/agent/guide/agent-5-configuration-files#agent-main-configuration-file \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-permissions-issues.md b/content/fr/agent/guide/agent-5-permissions-issues.md new file mode 100644 index 0000000000000..c6f4b0476c706 --- /dev/null +++ b/content/fr/agent/guide/agent-5-permissions-issues.md @@ -0,0 +1,95 @@ +--- +private: true +title: Problèmes d'autorisations de l'Agent 5 +--- + +L'Agent nécessite un ensemble spécifique d'autorisations pour collecter vos données sur votre host. Vous trouverez ci-dessous les problèmes d'autorisations les plus courants et comment les résoudre. + +## Problèmes d'autorisation liés à la journalisation de l'Agent + +Lorsque vous exécutez l'Agent Datadog sur un host donné, vous pouvez rencontrer un certain nombre de problèmes entraînant une journalisation incorrecte de l'Agent. Par exemple : + +```text +IOError: [Errno 13] Permission denied: '/var/log/datadog/supervisord.log' +``` + +Assurez-vous que les fichiers de log de l'Agent, ainsi que le répertoire qui contient ces fichiers, appartiennent à l'utilisateur de l'Agent Datadog : `dd-agent`. Si ce n'est pas le cas, l'Agent ne pourra pas écrire les entrées de log dans ces fichiers. La commande ci-dessous permet d'afficher les informations sur la propriété des fichiers sur les systèmes Unix : + +```text +ls -l /var/log/datadog/ + +total 52300 +-rw-r--r-- 1 dd-agent dd-agent 5742334 Jul 31 11:49 collector.log +-rw-r--r-- 1 dd-agent dd-agent 10485467 Jul 28 02:45 collector.log.1 +-rw-r--r-- 1 dd-agent dd-agent 1202067 Jul 31 11:48 dogstatsd.log +-rw-r--r-- 1 dd-agent dd-agent 10485678 Jul 28 07:04 dogstatsd.log.1 +-rw-r--r-- 1 dd-agent dd-agent 4680625 Jul 31 11:48 forwarder.log +-rw-r--r-- 1 dd-agent dd-agent 10485638 Jul 28 07:09 forwarder.log.1 +-rw-r--r-- 1 dd-agent dd-agent 1476 Jul 31 11:37 jmxfetch.log +-rw-r--r-- 1 dd-agent dd-agent 31916 Jul 31 11:37 supervisord.log +-rw-r--r-- 1 dd-agent dd-agent 110424 Jul 31 11:48 trace-agent.log +-rw-r--r-- 1 dd-agent dd-agent 10000072 Jul 28 08:29 trace-agent.log.1 +``` + +Si ces fichiers n'appartiennent **PAS** à l'utilisateur `dd-agent`, modifiez la propriété avec la commande ci-dessous, puis [redémarrez l'Agent][1] : + +```text +sudo chown -R dd-agent:dd-agent /var/log/datadog/ +``` + +[En savoir plus sur les emplacements des logs de l'Agent][2]. + +## Problèmes d'autorisation liés aux sockets de l'Agent + +Lorsque vous démarrez l'Agent, le problème d'autorisation de sockets suivant peut se présenter : + +```text +Starting Datadog Agent (using supervisord):Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13) +``` + +À première vue, cela peut sembler indiquer que l'Agent n'est pas en mesure de se connecter aux sockets appropriés, car ils sont déjà occupés. Cependant, même si vous avez déjà vérifié qu'il n'existe [aucun processus persistant restant de l'Agent][3] et que les [ports appropriés][4] sont disponibles pour l'Agent, l'erreur ci-dessus peut continuer à s'afficher. + +Pour les hosts Linux, le répertoire `/opt/datadog-agent/run` doit appartenir à l'utilisateur `dd-agent` pour démarrer correctement l'Agent. Dans de rares cas, la propriété de ce répertoire peut être modifiée et attribuée un utilisateur différent de `dd-agent`. Cela provoque l'erreur ci-dessus lors du démarrage de l'Agent. Vérifiez la propriété de ce répertoire en lançant la commande suivante : + +```text +ls -al /opt/datadog-agent/run +``` + +Si le propriétaire du fichier n'est **PAS** `dd-agent`, lancez la commande suivante pour y remédier : + +```text +chown dd-agent -R /opt/datadog-agent/run +``` + +Une fois cette modification effectuée, la [commande de démarrage de l'Agent][5] fonctionne correctement. Si vous continuez à voir ce problème après avoir suivi ces étapes, contactez l'[assistance Datadog][6] pour obtenir des instructions supplémentaires. + +## Problème d'autorisation lié aux métriques de processus + +Si vous avez activé le [check de processus][7] dans l'Agent qui s'exécute sur un système d'exploitation Linux, il se peut que la métrique `system.processes.open_file_descriptors` ne soit pas recueillie ni transmise par défaut. +Cela se produit lorsque des processus surveillés par le check de processus s'exécutent avec un utilisateur différent de l'utilisateur de l'Agent `dd-agent`. En réalité, l'utilisateur `dd-agent` ne dispose pas d'un accès complet à tous les fichiers dans `/proc`, l'emplacement dans lequel l'Agent effectue ses recherches pour recueillir les données de cette métrique. + +Essayez de mettre à jour vers la [dernière version de l'Agent][8] et d'utiliser l'option `try_sudo`. Si vous ne pouvez pas effectuer la mise à jour, une solution de contournement pour ce problème consiste à exécuter l'Agent en tant que `root`. + +
L'exécution d'un daemon de processus en tant que root n'est pas une bonne pratique sur Linux. L'Agent est open source et peut être audité via le référentiel GitHub.
+ +1. [Arrêtez l'Agent][1] + +2. Ouvrez `/etc/dd-agent/supervisor.conf` et remplacez `dd-agent` par `root` à la [ligne 20][11] et à la [ligne 30][12]. Refaites cela si vous mettez à niveau ou réinstallez l'Agent. + +3. [Démarrez l'Agent][1] + +Consultez les issues GitHub suivantes pour en savoir plus à ce sujet et pour découvrir d'autres méthodes pouvant être employées pour enregistrer cette métrique sur des machines Linux. + +* https://github.com/DataDog/dd-agent/issues/853 +* https://github.com/DataDog/dd-agent/issues/2033 + +[1]: /fr/agent/guide/agent-5-commands/ +[2]: /fr/agent/guide/agent-5-log-files/ +[3]: /fr/agent/faq/error-restarting-agent-already-listening-on-a-configured-port/ +[4]: /fr/agent/faq/network/ +[5]: /fr/agent/configuration/agent-5-commands/#start-the-agent +[6]: /fr/help/ +[7]: /fr/integrations/process/ +[8]: /fr/agent/guide/upgrade/ +[11]: https://github.com/DataDog/dd-agent/blob/master/packaging/supervisor.conf#L20 +[12]: https://github.com/DataDog/dd-agent/blob/master/packaging/supervisor.conf#L30 \ No newline at end of file diff --git a/content/fr/agent/guide/agent-5-ports.md b/content/fr/agent/guide/agent-5-ports.md new file mode 100644 index 0000000000000..35893923abadc --- /dev/null +++ b/content/fr/agent/guide/agent-5-ports.md @@ -0,0 +1,49 @@ +--- +disable_toc: false +private: true +title: Ports de l'Agent 5 +--- + +Cette page couvre les ports utilisés par l'Agent 5. Pour plus d'informations sur la dernière version de l'Agent, consultez la section [Trafic réseau][1]. + +
+Tout le trafic sortant est envoyé via SSL par TCP ou UDP. +

+Assurez-vous que l'Agent est uniquement accessible par vos applications ou sources réseau de confiance en utilisant une règle de pare-feu ou une restriction réseau similaire. Un accès non fiable peut permettre à des acteurs malveillants d'effectuer plusieurs actions invasives, notamment, mais sans s'y limiter, l'écriture de traces et de métriques sur votre compte Datadog, ou l'obtention d'informations sur votre configuration et vos services. +
+ +Ouvrez les ports suivants pour profiter de toutes les fonctionnalités de l'**Agent** : + +#### Trafic sortant + +443/tcp +: Port pour la plupart des données de l'Agent (métriques, APM, Live Processes et conteneurs). + +123/udp +: Port pour NTP ([plus de détails sur l'importance de NTP][2]).
+Voir [cibles NTP par défaut][3]. + +#### Trafic entrant + +6062/tcp +: Port utilisé pour les endpoints de debugging de l'Agent de processus + +6162/tcp +: Port utilisé pour la configuration des paramètres de runtime de l'Agent de processus + +8125/udp +: Port utilisé pour DogStatsD, sauf si `dogstatsd_non_local_traffic` est défini sur true. Ce port est disponible sur localhost : `127.0.0.1`, `::1`, `fe80::1`. + +8126/tcp +: Port pour le [récepteur APM][4]. + +17123/tcp +: Forwarder de l'Agent, utilisé pour mettre en mémoire tampon le trafic en cas de division réseau entre l'Agent et Datadog. + +17124/tcp +: Adaptateur graphite optionnel. + +[1]: /fr/agent/network +[2]: /fr/agent/faq/network-time-protocol-ntp-offset-issues/ +[3]: /fr/integrations/ntp/#overview +[4]: /fr/tracing/ \ No newline at end of file diff --git a/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json index cad09139e6eec..8b55b0b0b2dfd 100644 --- a/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/fr/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-d99877d8-715e-4487-94e7-253da6a3fcc3": { + "ast-str-ccbaa22a-5868-4366-8acf-f9786fe5cc64": { "string": "Options de confidentialité de Mobile Session Replay" } }, "description": { - "ast-str-4c42a407-da36-4de3-b98c-b310d7ca15a5": { + "ast-str-cf658844-2097-43a1-a48c-fc3c6fd3f68f": { "string": "Configurer des options de confidentialité pour Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-3eb652ce-96b4-40b2-8255-2d04b7840875": { + "ast-str-40943a1a-edde-4589-8972-16cfd2af6d15": { "string": "Session Replay sur mobile" } }, "tag": { - "ast-str-715f18f2-b07d-4c37-8060-9fddf27ea39a": { + "ast-str-d805da84-5bb4-41ee-8d1c-5dcaf2f57da4": { "string": "Documentation" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-3dcad688-c0ec-4ce2-a4d4-6aa755c86ddb": { + "ast-str-acf142d0-cd75-453a-8fe2-eb485b9f213e": { "string": "Impact de Mobile Session Replay sur les performances des applications" } }, "tag": { - "ast-str-1781edad-2125-43bb-8a68-c8e611add905": { + "ast-str-4ac7c19e-67ac-44e9-aaa5-28780431795f": { "string": "Documentation" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-0bccdca7-2ab8-4ce2-8dc0-b149e35c98bc": { + "ast-str-76195321-3f00-4b5a-a106-51ed78a73882": { "string": "Installer et configurer Mobile Session Replay" } }, "tag": { - "ast-str-1cb3706b-3e56-4a7b-ba44-13366a28e5e8": { + "ast-str-6d14bdaf-653b-4949-a988-bd72160b6cd8": { "string": "Documentation" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-d0f38e09-f640-4129-ad56-4597b2eeca29": { + "ast-str-85754c8c-58a4-448d-ae08-472723af4b84": { "string": "Dépanner Mobile Session Replay" } }, "tag": { - "ast-str-d6aa91e3-beaf-4709-bc4c-fa48a8677e1f": { + "ast-str-d6a0ce74-4536-4173-a168-d57916978c0a": { "string": "Documentation" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-dd5212b7-7eee-4399-8463-267cc0189b1f": { + "ast-str-a635174d-ef8d-4ab6-9834-e3507bcf410b": { "string": "Session Replay" } }, "tag": { - "ast-str-d3836ed8-23dd-4e60-9e62-d7edd17541fb": { + "ast-str-310cb21b-701c-4684-afb1-d449f8e564c7": { "string": "Documentation" } } diff --git a/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index f78d0c5f02824..a23aaf9994880 100644 --- a/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/fr/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-209f705e-d4b1-4890-ad80-6be194d8fc99": { + "ast-str-8bc75e14-52d8-47b9-8b37-7a1bd7f97881": { "string": "Installer et configurer Mobile Session Replay" } }, "description": { - "ast-str-eacb40a8-910e-4fa5-a34f-1c13ea5b02db": { + "ast-str-c80d6782-5698-497d-b45e-0051e109783e": { "string": "Installer et configurer Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/product_analytics/session_replay/mobile", "text": { - "ast-str-223ce0a2-060a-47f2-ad20-b1b96b4918f0": { + "ast-str-e7d7a9db-512d-40eb-872f-1f1263d7e130": { "string": "Session Replay sur mobile" } }, "tag": { - "ast-str-e23f3edb-4334-447e-b65a-b533378c2bfc": { + "ast-str-482967ed-742a-4cc5-bf08-a90707e49069": { "string": "Documentation" } } @@ -31,12 +31,12 @@ "1": { "link": "/product_analytics/session_replay/mobile/app_performance", "text": { - "ast-str-dae9ced1-e49b-4d03-b084-8e0e2756874e": { + "ast-str-d01e28f2-29f5-49e3-8163-621edb676c8a": { "string": "Impact de Mobile Session Replay sur les performances des applications" } }, "tag": { - "ast-str-240a6e5a-af1c-432f-b5d0-61100ba56b35": { + "ast-str-a671d16d-fcc1-4d02-8c77-fcee81e7b188": { "string": "Documentation" } } @@ -44,12 +44,12 @@ "2": { "link": "/product_analytics/session_replay/mobile/privacy_options", "text": { - "ast-str-d089e855-4841-473c-882d-1d9eaa0155d6": { + "ast-str-2c7c52b1-10f5-4302-a472-80f0d709b31e": { "string": "Options de confidentialité de Mobile Session Replay" } }, "tag": { - "ast-str-881372cb-a4b9-44d6-9b14-86ead284f858": { + "ast-str-404bcf03-12a3-4f75-9b2b-b99828680e18": { "string": "Documentation" } } @@ -57,12 +57,12 @@ "3": { "link": "/product_analytics/session_replay/mobile/troubleshooting", "text": { - "ast-str-ab371002-b6f3-4bbe-86db-f54d98a69f2a": { + "ast-str-4a42c626-16ea-4ea3-9e74-246746eb5068": { "string": "Dépanner Mobile Session Replay" } }, "tag": { - "ast-str-ac779f5a-d0dc-4ab9-8774-7dfc3c1d4d95": { + "ast-str-5caa4848-2d0a-4973-a3be-f36a6d1ebad5": { "string": "Documentation" } } @@ -70,12 +70,12 @@ "4": { "link": "/product_analytics/session_replay", "text": { - "ast-str-8a383d5b-df7f-42f1-a10b-f640f3cf7b40": { + "ast-str-606f1237-9b7f-453c-8ae7-49bbc3d2b75f": { "string": "Session Replay" } }, "tag": { - "ast-str-7c9ac9d0-5aa2-4864-b747-232082345ea5": { + "ast-str-b4299a90-07c0-4070-bf12-df4a07c7de82": { "string": "Documentation" } } diff --git a/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 4853317d3853b..ca127a435e927 100644 --- a/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/fr/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-1d6765ec-05f2-4061-b6eb-3491b6f860a1": { + "ast-str-53263dcc-c7ec-4d64-a139-4f00386ed868": { "string": "Options de confidentialité de Mobile Session Replay" } }, "description": { - "ast-str-dca2dfce-1c6c-482e-bb94-2965f89d14fd": { + "ast-str-1cda96eb-ecc3-4897-a958-37bfd13a254e": { "string": "Configurer des options de confidentialité pour Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-8475c94d-f84d-4674-82fc-decb65d009e7": { + "ast-str-9153c32c-9f3b-4297-83b0-1d8e5e790aa9": { "string": "Session Replay sur mobile" } }, "tag": { - "ast-str-c5645fe4-d05f-444f-a89d-adc8e96cb73b": { + "ast-str-f6f9bf61-8e2b-4e08-8258-4a4f9fda0063": { "string": "Documentation" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-2362c5d7-1131-40ad-a000-fc28bb1491c8": { + "ast-str-265efd53-4f2a-45b4-95c8-613cf4db534a": { "string": "Impact de Mobile Session Replay sur les performances des applications" } }, "tag": { - "ast-str-bd194498-7095-4067-baee-d72654e0a6db": { + "ast-str-69973a7e-d10f-4fdf-998e-ea79bff3f2a9": { "string": "Documentation" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-c951c01a-4c8a-4288-ad38-6807d8898605": { + "ast-str-40554c8e-ece6-416f-8da6-a827f00068b7": { "string": "Installer et configurer Mobile Session Replay" } }, "tag": { - "ast-str-96c999f2-7bb9-4295-a6cd-066ab4e9530b": { + "ast-str-603bebb3-4f48-4845-ba62-f2ab83d78653": { "string": "Documentation" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-d44ba4c0-7fd6-40eb-bd41-46219b2a7e4c": { + "ast-str-f450e1cc-9426-4b69-8253-3b46d4ff2361": { "string": "Dépanner Mobile Session Replay" } }, "tag": { - "ast-str-9fe48841-97e2-4863-be00-00e71cbcc11b": { + "ast-str-f4b8f251-cae7-461d-becb-4ecc3874d1c6": { "string": "Documentation" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-a5a66c70-f3e2-48a4-bcdd-aab5a769c6b1": { + "ast-str-15faaca3-c0f0-4f24-a51f-9a888f62f8d3": { "string": "Session Replay" } }, "tag": { - "ast-str-064c6aa0-3fef-4cfd-a91d-54bad56aab0e": { + "ast-str-4760f4f1-077d-46ab-af8d-ebced0cced6c": { "string": "Documentation" } } diff --git a/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 147f50f799a7f..468869c65f324 100644 --- a/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/fr/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-7c124611-ecb3-4fa6-abe2-4a8158daaf75": { + "ast-str-e6058273-913f-46bb-9080-40f7dc9b34ae": { "string": "Installer et configurer Mobile Session Replay" } }, "description": { - "ast-str-6e790010-0410-4bc8-8272-4a12fbf32d04": { + "ast-str-e1880e45-f1ca-40b8-b80d-7e13841e67dc": { "string": "Installer et configurer Mobile Session Replay." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-d16ef26e-381b-4eb8-b1de-70f969cd4eec": { + "ast-str-aeea9316-7851-464f-a0e5-908b6f1b7dd8": { "string": "Session Replay sur mobile" } }, "tag": { - "ast-str-e12e54d4-5679-464d-8395-97238d1ae11b": { + "ast-str-3c9ae4ac-2195-4740-bcd3-a52fbb4cf619": { "string": "Documentation" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-59880ecd-7a93-4b65-be2c-3e312586a956": { + "ast-str-ac54f8ca-37b7-413f-b3d0-0a918b37b1b5": { "string": "Impact de Mobile Session Replay sur les performances des applications" } }, "tag": { - "ast-str-f5de440d-94a8-4c72-b204-4ebad6ab4d53": { + "ast-str-3eecfad5-5996-44a4-85ed-994091673150": { "string": "Documentation" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/privacy_options", "text": { - "ast-str-22570d2d-e2c7-495b-894c-d503eaa47a6c": { + "ast-str-9476d72e-e89e-457c-832b-d1876d8154c2": { "string": "Options de confidentialité de Mobile Session Replay" } }, "tag": { - "ast-str-71164fa2-9910-4173-8da0-c119c38df091": { + "ast-str-3023c936-fb3f-41c2-9765-9041533094fb": { "string": "Documentation" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-a966523b-1775-4b19-ab4c-5b1b1eb779bb": { + "ast-str-ca2c7ee9-4fe3-4bcd-9897-43ab42c7434b": { "string": "Dépanner Mobile Session Replay" } }, "tag": { - "ast-str-2a4d546c-ef45-420a-bda3-eddb6f8b9e30": { + "ast-str-3977546e-a1bb-4526-bf38-ca1c391da8e6": { "string": "Documentation" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-aaea3198-36d2-441f-92f5-bb4c0f304fe2": { + "ast-str-13fc98fe-a961-4b16-a2f9-fbf4c3670cc0": { "string": "Session Replay" } }, "tag": { - "ast-str-ab6c252b-84b1-4b1e-aa85-73679522086b": { + "ast-str-856f47a5-5069-429c-a560-8082fbf32ae4": { "string": "Documentation" } } @@ -83,12 +83,12 @@ "5": { "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", "text": { - "ast-str-e7e182ec-27f5-4009-b3c2-4042ac233d91": { + "ast-str-c42c9b1d-9d9a-4622-89a1-e2f7dee5712e": { "string": "Suivi des vues Web" } }, "tag": { - "ast-str-d968d7e5-2c3c-426d-8969-9ffa2437cf80": { + "ast-str-130ec363-d662-4b11-b461-4d66edcce43d": { "string": "Documentation" } } diff --git a/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json index d3586edb5c254..4f83c6c605930 100644 --- a/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/ja/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-d99877d8-715e-4487-94e7-253da6a3fcc3": { + "ast-str-ccbaa22a-5868-4366-8acf-f9786fe5cc64": { "string": "モバイルセッションリプレイのプライバシーオプション" } }, "description": { - "ast-str-4c42a407-da36-4de3-b98c-b310d7ca15a5": { + "ast-str-cf658844-2097-43a1-a48c-fc3c6fd3f68f": { "string": "モバイルセッションリプレイのプライバシーオプションの構成" } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-3eb652ce-96b4-40b2-8255-2d04b7840875": { + "ast-str-40943a1a-edde-4589-8972-16cfd2af6d15": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-715f18f2-b07d-4c37-8060-9fddf27ea39a": { + "ast-str-d805da84-5bb4-41ee-8d1c-5dcaf2f57da4": { "string": "ドキュメント" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-3dcad688-c0ec-4ce2-a4d4-6aa755c86ddb": { + "ast-str-acf142d0-cd75-453a-8fe2-eb485b9f213e": { "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } }, "tag": { - "ast-str-1781edad-2125-43bb-8a68-c8e611add905": { + "ast-str-4ac7c19e-67ac-44e9-aaa5-28780431795f": { "string": "ドキュメント" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-0bccdca7-2ab8-4ce2-8dc0-b149e35c98bc": { + "ast-str-76195321-3f00-4b5a-a106-51ed78a73882": { "string": "モバイルセッションリプレイの設定と構成" } }, "tag": { - "ast-str-1cb3706b-3e56-4a7b-ba44-13366a28e5e8": { + "ast-str-6d14bdaf-653b-4949-a988-bd72160b6cd8": { "string": "ドキュメント" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-d0f38e09-f640-4129-ad56-4597b2eeca29": { + "ast-str-85754c8c-58a4-448d-ae08-472723af4b84": { "string": "モバイルセッションリプレイのトラブルシューティング" } }, "tag": { - "ast-str-d6aa91e3-beaf-4709-bc4c-fa48a8677e1f": { + "ast-str-d6a0ce74-4536-4173-a168-d57916978c0a": { "string": "ドキュメント" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-dd5212b7-7eee-4399-8463-267cc0189b1f": { + "ast-str-a635174d-ef8d-4ab6-9834-e3507bcf410b": { "string": "Session Replay" } }, "tag": { - "ast-str-d3836ed8-23dd-4e60-9e62-d7edd17541fb": { + "ast-str-310cb21b-701c-4684-afb1-d449f8e564c7": { "string": "ドキュメント" } } diff --git a/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index 36efc97c44775..40e84f4b55a5a 100644 --- a/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ja/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-209f705e-d4b1-4890-ad80-6be194d8fc99": { + "ast-str-8bc75e14-52d8-47b9-8b37-7a1bd7f97881": { "string": "モバイルセッションリプレイの設定と構成" } }, "description": { - "ast-str-eacb40a8-910e-4fa5-a34f-1c13ea5b02db": { + "ast-str-c80d6782-5698-497d-b45e-0051e109783e": { "string": "モバイルセッションリプレイの設定と構成" } }, @@ -18,12 +18,12 @@ "0": { "link": "/product_analytics/session_replay/mobile", "text": { - "ast-str-223ce0a2-060a-47f2-ad20-b1b96b4918f0": { + "ast-str-e7d7a9db-512d-40eb-872f-1f1263d7e130": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-e23f3edb-4334-447e-b65a-b533378c2bfc": { + "ast-str-482967ed-742a-4cc5-bf08-a90707e49069": { "string": "ドキュメント" } } @@ -31,12 +31,12 @@ "1": { "link": "/product_analytics/session_replay/mobile/app_performance", "text": { - "ast-str-dae9ced1-e49b-4d03-b084-8e0e2756874e": { + "ast-str-d01e28f2-29f5-49e3-8163-621edb676c8a": { "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } }, "tag": { - "ast-str-240a6e5a-af1c-432f-b5d0-61100ba56b35": { + "ast-str-a671d16d-fcc1-4d02-8c77-fcee81e7b188": { "string": "ドキュメント" } } @@ -44,12 +44,12 @@ "2": { "link": "/product_analytics/session_replay/mobile/privacy_options", "text": { - "ast-str-d089e855-4841-473c-882d-1d9eaa0155d6": { + "ast-str-2c7c52b1-10f5-4302-a472-80f0d709b31e": { "string": "モバイルセッションリプレイのプライバシーオプション" } }, "tag": { - "ast-str-881372cb-a4b9-44d6-9b14-86ead284f858": { + "ast-str-404bcf03-12a3-4f75-9b2b-b99828680e18": { "string": "ドキュメント" } } @@ -57,12 +57,12 @@ "3": { "link": "/product_analytics/session_replay/mobile/troubleshooting", "text": { - "ast-str-ab371002-b6f3-4bbe-86db-f54d98a69f2a": { + "ast-str-4a42c626-16ea-4ea3-9e74-246746eb5068": { "string": "モバイルセッションリプレイのトラブルシューティング" } }, "tag": { - "ast-str-ac779f5a-d0dc-4ab9-8774-7dfc3c1d4d95": { + "ast-str-5caa4848-2d0a-4973-a3be-f36a6d1ebad5": { "string": "ドキュメント" } } @@ -70,12 +70,12 @@ "4": { "link": "/product_analytics/session_replay", "text": { - "ast-str-8a383d5b-df7f-42f1-a10b-f640f3cf7b40": { + "ast-str-606f1237-9b7f-453c-8ae7-49bbc3d2b75f": { "string": "Session Replay" } }, "tag": { - "ast-str-7c9ac9d0-5aa2-4864-b747-232082345ea5": { + "ast-str-b4299a90-07c0-4070-bf12-df4a07c7de82": { "string": "ドキュメント" } } diff --git a/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 38f08c54705c0..1bd2639df7e34 100644 --- a/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/ja/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-1d6765ec-05f2-4061-b6eb-3491b6f860a1": { + "ast-str-53263dcc-c7ec-4d64-a139-4f00386ed868": { "string": "モバイルセッションリプレイのプライバシーオプション" } }, "description": { - "ast-str-dca2dfce-1c6c-482e-bb94-2965f89d14fd": { + "ast-str-1cda96eb-ecc3-4897-a958-37bfd13a254e": { "string": "モバイルセッションリプレイのプライバシーオプションの構成" } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-8475c94d-f84d-4674-82fc-decb65d009e7": { + "ast-str-9153c32c-9f3b-4297-83b0-1d8e5e790aa9": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-c5645fe4-d05f-444f-a89d-adc8e96cb73b": { + "ast-str-f6f9bf61-8e2b-4e08-8258-4a4f9fda0063": { "string": "ドキュメント" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-2362c5d7-1131-40ad-a000-fc28bb1491c8": { + "ast-str-265efd53-4f2a-45b4-95c8-613cf4db534a": { "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } }, "tag": { - "ast-str-bd194498-7095-4067-baee-d72654e0a6db": { + "ast-str-69973a7e-d10f-4fdf-998e-ea79bff3f2a9": { "string": "ドキュメント" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-c951c01a-4c8a-4288-ad38-6807d8898605": { + "ast-str-40554c8e-ece6-416f-8da6-a827f00068b7": { "string": "モバイルセッションリプレイの設定と構成" } }, "tag": { - "ast-str-96c999f2-7bb9-4295-a6cd-066ab4e9530b": { + "ast-str-603bebb3-4f48-4845-ba62-f2ab83d78653": { "string": "ドキュメント" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-d44ba4c0-7fd6-40eb-bd41-46219b2a7e4c": { + "ast-str-f450e1cc-9426-4b69-8253-3b46d4ff2361": { "string": "モバイルセッションリプレイのトラブルシューティング" } }, "tag": { - "ast-str-9fe48841-97e2-4863-be00-00e71cbcc11b": { + "ast-str-f4b8f251-cae7-461d-becb-4ecc3874d1c6": { "string": "ドキュメント" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-a5a66c70-f3e2-48a4-bcdd-aab5a769c6b1": { + "ast-str-15faaca3-c0f0-4f24-a51f-9a888f62f8d3": { "string": "Session Replay" } }, "tag": { - "ast-str-064c6aa0-3fef-4cfd-a91d-54bad56aab0e": { + "ast-str-4760f4f1-077d-46ab-af8d-ebced0cced6c": { "string": "ドキュメント" } } diff --git a/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index 094515ae94be5..30d9067017ea3 100644 --- a/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ja/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-7c124611-ecb3-4fa6-abe2-4a8158daaf75": { + "ast-str-e6058273-913f-46bb-9080-40f7dc9b34ae": { "string": "モバイルセッションリプレイの設定と構成" } }, "description": { - "ast-str-6e790010-0410-4bc8-8272-4a12fbf32d04": { + "ast-str-e1880e45-f1ca-40b8-b80d-7e13841e67dc": { "string": "モバイルセッションリプレイの設定と構成" } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-d16ef26e-381b-4eb8-b1de-70f969cd4eec": { + "ast-str-aeea9316-7851-464f-a0e5-908b6f1b7dd8": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-e12e54d4-5679-464d-8395-97238d1ae11b": { + "ast-str-3c9ae4ac-2195-4740-bcd3-a52fbb4cf619": { "string": "ドキュメント" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-59880ecd-7a93-4b65-be2c-3e312586a956": { + "ast-str-ac54f8ca-37b7-413f-b3d0-0a918b37b1b5": { "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" } }, "tag": { - "ast-str-f5de440d-94a8-4c72-b204-4ebad6ab4d53": { + "ast-str-3eecfad5-5996-44a4-85ed-994091673150": { "string": "ドキュメント" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/privacy_options", "text": { - "ast-str-22570d2d-e2c7-495b-894c-d503eaa47a6c": { + "ast-str-9476d72e-e89e-457c-832b-d1876d8154c2": { "string": "モバイルセッションリプレイのプライバシーオプション" } }, "tag": { - "ast-str-71164fa2-9910-4173-8da0-c119c38df091": { + "ast-str-3023c936-fb3f-41c2-9765-9041533094fb": { "string": "ドキュメント" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-a966523b-1775-4b19-ab4c-5b1b1eb779bb": { + "ast-str-ca2c7ee9-4fe3-4bcd-9897-43ab42c7434b": { "string": "モバイルセッションリプレイのトラブルシューティング" } }, "tag": { - "ast-str-2a4d546c-ef45-420a-bda3-eddb6f8b9e30": { + "ast-str-3977546e-a1bb-4526-bf38-ca1c391da8e6": { "string": "ドキュメント" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-aaea3198-36d2-441f-92f5-bb4c0f304fe2": { + "ast-str-13fc98fe-a961-4b16-a2f9-fbf4c3670cc0": { "string": "Session Replay" } }, "tag": { - "ast-str-ab6c252b-84b1-4b1e-aa85-73679522086b": { + "ast-str-856f47a5-5069-429c-a560-8082fbf32ae4": { "string": "ドキュメント" } } @@ -83,12 +83,12 @@ "5": { "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", "text": { - "ast-str-e7e182ec-27f5-4009-b3c2-4042ac233d91": { + "ast-str-c42c9b1d-9d9a-4622-89a1-e2f7dee5712e": { "string": "Web ビューのトラッキング" } }, "tag": { - "ast-str-d968d7e5-2c3c-426d-8969-9ffa2437cf80": { + "ast-str-130ec363-d662-4b11-b461-4d66edcce43d": { "string": "ドキュメント" } } diff --git a/content/ko/code_analysis/_index.md b/content/ko/code_analysis/_index.md new file mode 100644 index 0000000000000..7656c70698b06 --- /dev/null +++ b/content/ko/code_analysis/_index.md @@ -0,0 +1,177 @@ +--- +algolia: + tags: + - 코드 분석 + - Datadog 코드 분석 + - 정적 분석 + - 소프트웨어 구성 분석 + - SAST + - SCA +aliases: +- /ko/code_analysis/faq +description: Datadog 코드 분석으로 유지 관리 문제, 버그 및 보안 취약성을 해결하여 개발 시 고객에게 영향을 미치지 않는 방법을 + 알아봅니다. +further_reading: +- link: https://app.datadoghq.com/release-notes?category=Software%20Delivery + tag: 릴리스 노트 + text: 최신 소프트웨어 배포 릴리스를 확인하세요! (앱 로그인 필요) +- link: https://www.datadoghq.com/blog/monitor-ci-pipelines/ + tag: 블로그 + text: Datadog으로 모든 CI 파이프라인 모니터링 +- link: /integrations/guide/source-code-integration/ + tag: 설명서 + text: 소스 코드 통합에 대해 알아보기 +- link: /code_analysis/static_analysis + tag: 설명서 + text: 정적 분석에 대해 알아보기 +- link: /security/application_security/software_composition_analysis + tag: 설명서 + text: 소프트웨어 구성 요소 분석에 대해 알아보기 +is_beta: false +title: 코드 분석 +--- + +{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} +코드 분석은 미리 보기에 있습니다. +{{< /callout >}} + +{{% site-region region="gov" %}} +
+ {{< region-param key="dd_site_name" >}} 사이트에서는 Code Analysis 기능을 사용할 수 없습니다. +
+{{% /site-region %}} + +## 개요 + +
Datadog Software Composition Analysis으로 소프트웨어 개발 수명 주기(SDLC) 전반에서 취약한 라이브러리를 찾을 수 있습니다. Code Analysis는 리포지토리를 직접 스캔하여 찾은 결과를 요약합니다. 리포지토리와 런타임 동안 발견된 모든 취약점을 통합하여 확인하려면 자세한 내용은 Application Security를 참조하세요.
+ +Code Analysis는 리포지토리를 스캔하여 보안 취약점과 코드 품질 문제를 찾아냅니다. 여기에는 자사 코드의 [Static Analysis][1]과 코드베이스의 오픈 소스 종속성의 [Software Composition Analysis(SCA)][2] 두 가지 기능이 포함됩니다. + +정적 분석 +: 개발 수명 주기 초기에 유지 관리 문제, 버그, 성능 문제, 보안 취약성용 맞춤 코드를 점검하여 프로덕션 도달 전 문제를 파악하고, 가능한 경우 사용자에게 영향을 미치 전에 지원 엔지니어링 팀이 해당 문제를 해결할 수 있도록 제안 수정 사항을 제공해 드립니다. + +Software Composition Analysis +: 리포지토리로 불러온 오픈 소스 라이브러리에 알려진 취약성, 라이선스 위험, 서비스 종료 라이브러리가 있는지 스캔합니다. + + +## 리포지토리에서 코드 분석 설정하기 + +[**Code Analysis Repositories** 페이지][9]에서 **+ Add a Repository**를 클릭하고 Datadog에서 직접 또는 CI 파이프라인에서 스캔할지 선택합니다. + +{{< tabs >}} +{{% tab "Datadog" %}} + +
Datadog 호스팅 스캔은 Software Composition Analysis(SCA) 및 GitHub 리포지토리에서만 지원됩니다. Static Analysis를 사용하거나 다른 CI 공급자를 사용하려면 대신 CI 파이프라인에서 스캔을 실행하세요.
+ +Datadog 호스팅 스캔을 사용하면 CI pipeline이 아니라 Datadog의 인프라 내에서 코드를 스캔합니다 Datadog은 코드를 읽고 정적 분석기를 실행하여 Static Analysis 및/또는 Software Composition Analysis을 수행한 후 결과를 업로드합니다. + +Datadog 호스팅 스캔을 사용하면 Code Analysis를 사용할 수 있도록 CI pipeline를 구성하지 않아도 됩니다. + +GitHub 리포지토리에서 [Software Composition Analysis][101]를 사용하려면, 원하는 GitHub 계정에서 **Select Repositories**를 클릭하고 `Enable Software Composition Analysis (SCA)`를 토글하여 모든 리포지토리에 대해 활성화합니다. 목록에 GitHub 계정이 표시되지 않으면 [새 GitHub App 생성하기][102]로 시작합니다. + +{{< img src="code_analysis/setup/enable_account.png" alt="GitHub 계정의 모든 리포지토리에서 Software Composition Analysis 활성화" style="width:100%;">}} + +옵션으로 각 리포지토리를 토글하여 특정 GitHub 리포지토리를 선택해 SCA를 활성화할 수 있습니다. + +{{< img src="code_analysis/setup/enable_repository.png" alt="GitHub 리포지토리에서 Software Composition Analysis 활성화" style="width:100%;">}} + +[101]: /ko/code_analysis/software_composition_analysis +[102]: /ko/integrations/github/ + +{{% /tab %}} +{{% tab "CI Pipelines" %}} + +Datadog를 통해 직접 스캔하지 않으려면 실행할 스캔([Static Analysis][106] 및 [Software Composition Analysis][107])을 선택하고 그에 따라 CI 파이프라인 공급자를 구성합니다. + +## CI/CD 공급자 설정 + +Static Analysis 및 SCA 스캔을 실행하도록 CI/CD 공급자를 구성하려면 다음 문서를 참조합니다. + +- [Static Analysis 및 GitHub Actions][101] +- [Static Analysis 및 CircleCI Orbs][102] +- [Static Analysis 및 Generic CI Providers][103] +- [Software Composition Analysis 및 GitHub Actions][104] +- [Software Composition Analysis 및 Generic CI Providers][105] + +[101]: /ko/code_analysis/static_analysis/github_actions +[102]: /ko/code_analysis/static_analysis/circleci_orbs +[103]: /ko/code_analysis/static_analysis/generic_ci_providers +[104]: /ko/code_analysis/software_composition_analysis/github_actions +[105]: /ko/code_analysis/software_composition_analysis/generic_ci_providers +[106]: /ko/code_analysis/static_analysis +[107]: /ko/code_analysis/software_composition_analysis + +{{% /tab %}} +{{< /tabs >}} + +## GitHub 통합 설정 + +[GitHub 통합 타일][7]을 사용하고 [소스 코드 통합][8]을 설정하여 GitHub App을 구성하면 Datadog Static Analysis 결과의 일환으로 문제가 되는 코드 스니펫을 확인할 수 있습니다. + +{{< img src="code_analysis/source_code_integration.png" alt="Code Analysis 뷰에서 GitHub로 연결" style="width:100%;">}} + +자세한 내용은 [Source Code Integration 문서][10]를 참고하세요. + +## Static Analysis 통합 + +Static Analysis를 사용하면, [VS Code][3] 또는 [IntelliJ & PyCharm][4] 등의 [IDE로 직접][11] 작성한 코드의 잘못된 코드 관행 및 보안 취약성과 [GitHub 풀 요청][5]에 관한 자동 피드백을 받을 수 있습니다. + +{{< img src="developers/ide_plugins/vscode/static-analysis-issue.png" alt="Visual Studio Code에서 Static Analysis 결과" style="width:100%;">}} + +## 리포지토리 검색 및 관리 + +Code Analysis를 설정한 후에는 [**Code Analysis** 페이지][9]의 각 리포지토리의 Static Analysis 및 SCA 스캔 결과 요약을 확인할 수 있습니다. 기본적으로 요약 결과는 리포지토리 기본 브랜치의 최신 스캔 커밋을 표시하며, 이를 통해 분류 및 수정하려는 각 리포지토리의 기존 문제를 전부 확인할 수 있습니다. + +{{< img src="code_analysis/repositories.png" alt="Code Analysis 페이지의 코드 및 라이브러리 스캔 결과가 있는 리포지토리의 목록" style="width:100%;">}} + +목록에서 리포지토리를 선택하여 특정 리포지토리의 위반 사항을 검색 및 관리합니다. 기본적으로 결과 값에는 리포지토리 기본 브랜치의 최신 스캔 커밋이 표시되지만, 페이지 상단에서 브랜치 또는 커밋을 변경할 수 있습니다. 결과는 서비스 또는 팀 패싯으로도 필터링할 수 있습니다. 결과가 Datadog 서비스 및 팀과 어떻게 연결되는지에 대한 자세한 내용은 [Code Analysis 시작하기][12]를 참조하세요. + +선택한 브랜치 또는 커밋에 관계없이, 모든 결과는 다음과 뷰로 정리됩니다. + +{{< tabs >}} +{{% tab "Code Vulnerabilities" %}} + +{{< img src="code_analysis/shopist_code_vulnerabilities.png" alt="Datadog Shopist 서비스 및 리포지토리용 코드 분석 페이지의 코드 취약성" style="width:100%;">}} + +**코드 취약점** 보기에서 정적 분석이 탐지한 코드 보안 위험을 식별 및 해결하세요. + +{{% /tab %}} +{{% tab "Code Quality" %}} + +{{< img src="code_analysis/shopist_code_quality.png" alt="Datadog Shopist 서비스 및 리포지토리용 코드 분석 페이지의 코드 품질 취약성" style="width:100%;">}} + +**코드 품질** 보기에서 정적 분석이 탐지한 잘못된 코드를 식별 및 해결하세요. + +{{% /tab %}} +{{% tab "Library Vulnerabilities" %}} + +{{< img src="code_analysis/shopist_lib_vulnerabilities.png" alt="Datadog Shopist 서비스 및 리포지토리용 코드 분석 페이지의 라이브러리 취약성" style="width:100%;">}} + +**라이브러리 취약점** 보기에서 SCA가 탐지한 취약한 오픈 소스 라이브러리를 식별 및 해결하세요. + +{{% /tab %}} +{{% tab "Library Catalog" %}} + +{{< img src="code_analysis/shopist_lib_list.png" alt="Datadog Shopist 서비스 및 리포지토리용 코드 분석 페이지의 라이브러리 목록" style="width:100%;">}} + +**Library Catalog** 보기의 코드베이스로 불러온, SCA가 감지한 라이브러리의 전체 목록을 관리하세요. + +{{% /tab %}} +{{< /tabs >}} + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/code_analysis/static_analysis +[2]: /ko/code_analysis/software_composition_analysis +[3]: /ko/developers/ide_plugins/vscode/#static-analysis +[4]: /ko/developers/ide_plugins/idea/#static-analysis +[5]: /ko/code_analysis/github_pull_requests/ +[6]: /ko/code_analysis/static_analysis_rules +[7]: /ko/integrations/github/#link-a-repository-in-your-organization-or-personal-account +[8]: /ko/integrations/guide/source-code-integration +[9]: https://app.datadoghq.com/ci/code-analysis +[10]: /ko/integrations/guide/source-code-integration/?tab=codeanalysis +[11]: /ko/code_analysis/ide_plugins/ +[12]: /ko/getting_started/code_analysis/?tab=incipipelines#linking-services-to-code-violations-and-libraries \ No newline at end of file diff --git a/content/ko/code_analysis/static_analysis/_index.md b/content/ko/code_analysis/static_analysis/_index.md new file mode 100644 index 0000000000000..701cf01ebe722 --- /dev/null +++ b/content/ko/code_analysis/static_analysis/_index.md @@ -0,0 +1,162 @@ +--- +algolia: + tags: + - 정적 분석 + - Datadog 정적 분석 + - 코드 품질 + - SAST +aliases: +- /ko/continuous_integration/static_analysis +- /ko/static_analysis +description: 코드가 프로덕션 환경에 도달하기 전에 코드의 품질 문제와 보안 취약성을 검사하는 Datadog 정적 분석에 대해 알아보세요. +further_reading: +- link: https://www.datadoghq.com/blog/monitor-ci-pipelines/ + tag: 블로그 + text: Datadog으로 모든 CI 파이프라인 모니터링 +- link: /integrations/guide/source-code-integration/ + tag: 설명서 + text: Source Code Integration에 대해 알아보기 +is_beta: false +title: 정적 분석(SAST) +--- + +{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} +코드 분석은 미리 보기에 있습니다. +{{< /callout >}} + +{{% site-region region="gov" %}} +
+ Code Analysis는 {{< region-param key="dd_site_name" >}} 사이트에서 이용할 수 없습니다. +
+{{% /site-region %}} + + +## 개요 + +Static Analysis(SAST)는 프로그램을 실행하지 않고 프로그램 프리 프로덕션 코드를 분석하는 클리어 박스 소프트웨어 테스트 기법입니다. 즉, 프로그램이 실행되고 있지 않기에 '정적'이라는 뜻을 갖습니다. + +Static Analysis는 소프트웨어 개발 수명 주기(SDLC) 초기에 유지관리 문제와 보안 취약점을 식별하여, 최고 품질의 가장 안전한 코드만 프로덕션에 반영되도록 지원합니다. 보안 취약점을 스캔하는 Static Analysis 도구는 보통 Static Application Security Testing(SAST) 도구라고도 불립니다. + +Static Analysis를 활용하면 조직은 다음과 같은 장점이 있습니다. + +* Static Analysis는 개발 팀이 조직의 코드 규정 준수에 관해 어림짐작하는 일을 방지하므로 개발 팀은 개발 속도에 큰 영향을 미치지 않고 규정을 준수하는 코드를 게시할 수 있습니다. +* SAST 스캔으로 코드가 프로덕션에 적용되기 전에 새로운 취약점을 발견할 수 있어, 시간이 지남에 따라 조직 애플리케이션의 보안 침해 취약성이 감소합니다. +* 시간이 지남에 따라 조직은 Static Analysis를 활용하여 더 읽기 쉬운 코드베이스를 유지할 수 있으므로, 조직의 신규 개발자가 더 빠르게 온보딩할 수 있습니다. +* 개발자가 오류 코드를 작성할 위험이 최소화되므로, 조직의 소프트웨어는 시간이 지날수록 유지 관리가 용이한 코드로 인해 신뢰성이 높아집니다. + +## Static Analysis 설정 + +Static Analysis는 다음 언어 및 기술 환경에서 잘못된 코드 관행과 보안 취약성 스캔을 지원합니다. + +{{< partial name="code_analysis/languages-getting-started.html" >}} + +
+ +시작하려면 [**Code Analysis** 페이지][1]에서 Static Analysis를 설정하거나 또는 [설정 설명서][9]를 참고하세요. + +## 소프트웨어 개발 수명 주기에 Static Analysis 통합 + +### CI 공급자 +{{< whatsnext desc="원하는 CI 플랫폼 공급자에서 Static Analysis를 실행할 수 있습니다. 공급자별 설명서를 참조하여 CI 파이프라인에서 Static Analysis를 설정하세요.">}} + {{< nextlink href="code_analysis/static_analysis/circleci_orbs" >}}CircleCI Orb{{< /nextlink >}} + {{< nextlink href="code_analysis/static_analysis/github_actions" >}}GitHub 작업{{< /nextlink >}} + {{< nextlink href="code_analysis/static_analysis/generic_ci_providers" >}}기타 CI 공급자{{< /nextlink >}} +{{< /whatsnext >}} + +### 소스 코드 관리 +{{< whatsnext desc="GitHub에서 코드를 리뷰할 때 Datadog은 관련 코드 라인에 인라인 리뷰 코멘트를 추가하여 풀 요청의 Static Analysis 위반 사항을 자동으로 플래그 지정할 수 있습니다. Datadog은 해당되는 경우 풀 요청에서 바로 적용할 수 있는 수정안도 제공해 드립니다. 아울러, Datadog에서 직접 풀 요청을 생성하여 취약점 또는 품질 문제를 수정할 수 있습니다." >}} + {{< nextlink href="static_analysis/github_pull_requests" >}}GitHub 풀 요청{{< /nextlink >}} +{{< /whatsnext >}} + +### IDE +{{< whatsnext desc="정적 분석을 사용하면 Integrated Development Environment(IDE)에서 파일 편집 시 코드 취약점을 실시간으로 파악할 수 있습니다. 자세한 내용을 확인하려면 통합별 설명서를 참조하세요.">}} + {{< nextlink href="developers/ide_plugins/idea/" >}}JetBrains IDE용 Datadog 플러그인{{< /nextlink >}} + {{< nextlink href="developers/ide_plugins/vscode/#static-analysis" >}}Datadog Visual Studio 코드 확장{{< /nextlink >}} + {{< nextlink href="developers/ide_plugins/visual_studio/#static-analysis" >}}Datadog Visual Studio 확장{{< /nextlink >}} +{{< /whatsnext >}} + +## 검색 및 필터 결과 + +Datadog Static Analyzer를 실행하기 위해 CI 파이프라인을 설정하면 [**Code Analysis Repositories** 페이지][1]에 리포지토리별로 위반 사항이 요약됩니다. 리포지토리를 클릭하여 Static Analysis의 **Code Vulnerabilities** 및 **Code Quality** 결과를 분석합니다. + +* **Code Vulnerabilities** 탭에는 [Security 카테고리][2]에서 Datadog 규정이 식별한 위반 사항이 포함되어 있습니다. +* **Code Quality** 탭에는 [모범 사례, 코드 스타일, 오류 발생 가능성 또는 성능 카테고리][3]에서 Datadog의 규정이 식별한 위반 사항이 포함되어 있습니다. + +결과를 필터링하려면 목록 또는 검색 좌측 패싯을 사용하세요. 결과는 서비스 또는 팀 패싯별로 필터링할 수 있습니다. 결과와 Datadog 서비스 및 팀이 연관되는 방식에 대해 더 알아보려면 [Code Analysis 시작하기][11]를 참조하세요. + +각 행은 위반 사항을 나타냅니다. 각 위반 사항은 페이지 상단의 필터로 선택한 특정 커밋 및 브랜치(기본적으로 현재 보고 있는 리포지토리 기본 브랜치의 최신 커밋의 결과가 표시됨)와 연관되어 있습니다. + +위반 사항을 클릭하면 해당 위반 사항의 범위 및 위반 발생 위치에 관한 정보가 포함된 사이드 패널이 열립니다. +{{< img src="code_analysis/static_analysis/static-analysis-violation.png" alt="정적 분석 규정 위반용 사이드 패널" style="width:80%;">}} + +탭에 표시되는 위반 사항 + +- **세부 사항**: 위반 사항 및 위반의 원인이 된 코드 줄에 관한 설명입니다. 위반 코드 스니펫을 확인하려면 [Datadog GitHub App][4]을 설정하세요. +- **수정**: 위반 사항을 해결할 수 있는 하나 이상의 코드 수정안입니다. 복사하여 붙여넣을 수 있습니다. +- **이벤트**: 위반 사항 이벤트에 대한 JSON 메타데이터입니다. + +### 제안 수정 사용 +{{< img src="code_analysis/static_analysis/static-analysis-fixes.png" alt="정적 분석 규정 위반용 수정 탭" style="width:80%;">}} + +Datadog Static Analysis는 다음 두 가지 수정안을 제공합니다. + +1. **기본 수정안:** 린팅 문제 등 단순한 위반 사항의 경우, 규칙 분석기가 템플릿 형태의 수정안을 자동 제공합니다. +2. **AI 제안 수정안:** 복잡한 위반 사항의 경우 보통 사전 제공되는 수정안이 없습니다. 대신 OpenAI GPT-4를 활용한 AI 제안 수정안을 사용할 수 있습니다. 'Text' 및 'Unified Diff' 수정안 중에서 선택할 수 있으며, 각 위반 사항별로 이를 해결하기 위한 일반 텍스트 지침 또는 코드 변경 사항을 제공해 드립니다. + +두 가지 유형의 수정안은 서로 다른 라벨로 UI에서 시각적으로 구별됩니다. + +*기본 제안 수정안* +{{< img src="code_analysis/static_analysis/static-analysis-default-fix.png" alt="기본 정적 분석 제안 수정안의 시각적 표시자" style="width:60%;">}} + +*AI 제안 수정안* +{{< img src="code_analysis/static_analysis/static-analysis-ai-fix.png" alt="AI 제안 정적 분석 수정안의 시각적 표시자" style="width:60%;">}} + +
AI 제안 수정안은 평가판 버전입니다. 사용하려면 지원 팀에 문의하세요.
+ +### Datadog에서 취약점 또는 품질 문제를 직접 수정하기 +{{< img src="ci/sast_one_click_light.png" alt="Code Analysis 원 클릭 수정 예시" style="width:90%;" >}} + +Datadog의 결과에서 Code Analysis로 발견한 문제를 직접 해결하기 위해 코드 변경을 푸시하는 방법은 두 가지가 있습니다. + +#### 풀 요청 열기 +GitHub 앱의 **Pull Requests** 권한이 **Read & Write**로 설정되어 있는 경우, 모든 Static Analysis 결과에 사용 가능한 수정안이 포함된 원클릭 수정이 활성화됩니다. GitHub 통합 설정에 대한 자세한 내용은 [GitHub Pull Requests][10]를 참조하세요. + +다음 단계에 따라 취약점을 수정하고 풀 요청을 엽니다. +1. Code Analysis에서 특정 결과를 확인합니다. +2. 결과 사이드 패널의 **Fix Violation**을 클릭합니다. +3. **Open a Pull Request**를 선택합니다. +4. 풀 요청 타이틀과 커밋 메시지를 입력합니다. +5. **Create PR**을 클릭합니다. + +#### 현재 브랜치에 직접 커밋하기 +결과가 발견된 브랜치에 직접 커밋하여 취약점을 수정할 수도 있습니다. + +제안 수정안을 커밋하는 방법 + +1. Code Analysis에서 특정 결과를 확인합니다. +2. 결과 사이드 패널의 **Fix Violation**을 클릭합니다. +3. **Commit to current branch**를 클릭합니다. + +### 설정 커스텀하기 + +리포지토리에 어떤 Static Analysis 규칙을 설정할지 사용자 지정하려면 [설정 문서][8]를 참조하세요. + +### 오탐 보고하기 +특정 위반 사항이 오탐이라고 생각된다면, 해당 오탐을 사유와 함께 플래그 지정할 수 있습니다. 이렇게 하면 Datadog으로 신고가 전송됩니다. 신고 제출 내용은 규칙 세트 품질을 개선하기 위해 정기적으로 검토됩니다. + +{{< img src="code_analysis/static_analysis/flag-false-positive.png" alt="정적 분석 규정 위반을 오탐으로 신고 버튼" style="width:60%;">}} + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/ci/code-analysis +[2]: /ko/code_analysis/static_analysis_rules?categories=Security +[3]: /ko/code_analysis/static_analysis_rules?categories=Best+Practices&categories=Code+Style&categories=Error+Prone&categories=Performance +[4]: /ko/integrations/github/ +[6]: https://en.wikipedia.org/wiki/Camel_case +[7]: https://en.wikipedia.org/wiki/Snake_case +[8]: /ko/code_analysis/static_analysis/setup/#customize-your-configuration +[9]: /ko/code_analysis/static_analysis/setup +[10]: /ko/code_analysis/github_pull_requests/ +[11]: /ko/getting_started/code_analysis/?tab=datadoghosted#linking-services-to-code-violations-and-libraries \ No newline at end of file diff --git a/content/ko/containers/troubleshooting/_index.md b/content/ko/containers/troubleshooting/_index.md new file mode 100644 index 0000000000000..74ccca2345459 --- /dev/null +++ b/content/ko/containers/troubleshooting/_index.md @@ -0,0 +1,181 @@ +--- +description: 컨테이너 관련 문제 해결하기 +further_reading: +- link: /containers/troubleshooting/duplicate_hosts + tag: 설명서 + text: AWS에서 쿠버네티스를 사용해 호스트 복제 +title: 컨테이너 트러블슈팅 +--- + +본 페이지에서는 컨테이너 모니터에 관한 트러블슈팅 정보를 제공합니다. + + +다음은 Agent를 배포하는 세 가지 방법입니다. +1. [**런타임에서 컨테이너**][1]로 배포 + +2. [Amazon ECS][2], [Amazon ECS 환경 Fargate][3], 또는 [Amazon EKS][4] 같은 **클라우드 환경**에서 배포 + +3. [Kubernetes 환경][16]에서 배포 + +이러한 다양한 메서드에는 고유한 배포 문제가 있습니다. 본 페이지를 시작점으로 삼아 문제를 해결하세요. 계속해서 문제가 발생한다면 [Datadog 지원][6]에 문의하여 추가 지원을 받으세요. + +Agent 릴리스 업데이트 또는 변경 사항에 대한 자세한 내용은 Datadog [릴리스 노트][7]를 참조하세요. + +## 일반 문제 + +### 환경 변수가 설정되지 않고, 태그도 삽입되지 않음 + +[환경 변수][8]를 삽입하거나 DogStatsD 라이브러리를 구성하는 유용한 방법은 Cluster Agent에서 [Admission Controller][9] 기능을 구현하는 것입니다. **참고**: 애플리케이션을 배포하기 전에 Cluster Agent를 배포 및 실행해야 합니다. + +### 메트릭이 Datadog Web Platform에 표시되지 않음 + +다음 사항이 사실인지 확인합니다. + +- 메트릭 엔드포인트가 노출되어 있으며 Agent에 도달할 수 있도록 열려 있습니다. + +- Agent가 엔드포인트에 액세스하는 것을 방해할 수도 있는 프록시나 방화벽이 없습니다. + +- Agent의 [Autodiscovery][10]가 활성화되어 있습니다. + + +### 로그가 수집되지 않음 + +로그 수집 여부와 어떤 컨테이너에서 수집하는지에 영향을 미칠 수 있는 두 가지 [환경 변수][8]가 있습니다. + +- `DD_LOGS_ENABLED`를 `true`로 설정하여 로그를 수집합니다. +- 아울러, `DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL`을 `true`로 설정하여 모든 컨테이너의 모든 로그를 수집합니다. + +수집에서 로그(및 기타 기능)를 제외하려면 [Container Discovery Management 가이드][11]를 참조하세요. + +### Kubelet에 연결할 수 없음 + +Kubelet API 연결을 방해하는 가장 일반적인 오류는 Kubelet TLS 인증서 확인입니다. + +TLS 인증은 기본적으로 활성화되어 있으며, Agent가 HTTPS를 통해 Kubelet API에 연결하지 못하도록 방해할 수도 있습니다. 전용 파라미터를 사용하거나 Agent 매니페스트의 모든 컨테이너에 `DD_KUBELET_TLS_VERIFY` 변수를 설정하여 TLS 인증을 비활성화할 수 있습니다. + + - `TLS_VERIFY`를 `false`로 설정합니다. + +### HPA 메트릭이 표시되지 않거나 예상 값과 일치하지 않음 + +먼저, Agent 클러스터가 배포되었고 노드 Agent로 데이터를 전송할 수 있는지 확인합니다. + +그런 다음, Metrics Summary에서 외부 메트릭을 확장하는 데 사용된 쿼리를 검토합니다. 유효한 쿼리만 자동 확장됩니다. 쿼리가 여러 개 있는 경우, 쿼리 중 **아무것도** 유효하지 않으면 **모든** 쿼리는 무시됩니다. + +HPA 메트릭에 대한 추가 지원이 필요하다면 [Datadog 지원][6]에 다음 사항을 알려주세요. + - HPA 매니페스트의 `describe` 출력 + ``` + $ kubectl describe hpa > hpa.log + ``` + - DatadogMetric Custom Resource Definition의 `describe` 출력 + ``` + $ kubectl describe DatadogMetric > DatadogMetric.log + ``` + + +## 런타임 + + 로그의 경우 Agent 배포 명령에 `DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL` 및 `DD_LOGS_ENABLED`가 활성화되어 있는지 확인합니다. + +## 클라우드 + +IAM 정책이 업데이트되었는지 확인합니다. + +### Fargate에서 로그가 수집되지 않음 + + - [ECS][12]: 로그를 수집할 컨테이너에 로그 라우터가 연결되어 있는지 확인합니다. + + - [EKS][13]: EKS Fargate 환경에서 Agent가 로그를 수집하는 일반적인 방법 두 가지가 있습니다. CloudWatch 로그를 포워딩하는 방법과, [Amazon Data Firehose][14]를 통해 로그를 포워딩하는 방법입니다. Amazon Data Firehose를 사용하여 로그를 수집하려면 Amazon Data Firehose 전송 스트림 구현과 일부 명령줄 도구가 필요합니다. + + +## 쿠버네티스(Kubernetes) + +### 메트릭을 배포 또는 수집하지 않는 컨테이너 + +먼저, API 키가 유효한지 확인합니다. + +그런 다음, 노드 Agent 포드에서 `agent status` 명령을 실행하고 결과를 검토합니다. + +### `kubeapi_server`, `kube_controller_manager` 또는 `etcd` 메트릭을 받지 못함 + +Azure Kubernetes Service(AKS) 및 Google Kubernetes Engine(GKE)과 같은 관리형 서비스에서는 사용자가 컨트롤 플레인 컴포넌트에 액세스할 수 없습니다. 따라서, 이러한 환경에서는 `kube_apiserver`, `kube_controller_manager`, `kube_scheduler` 또는 `etcd` 검사를 실행할 수 없습니다. + +## ECS Fargate + +### Windows Agent 서비스 시작 중 타임아웃 + +```text +[ENTRYPOINT][ERROR] Could not start the service: The service did not respond to the start or control request in a timely fashion. +. Error: [1053 (0x41d)] +``` + +이러한 오류를 방지하려면, Datadog Agent의 **CPU 유닛** 예약을 최소 `512`로 설정했는지 확인합니다. + +# Datadog 지원 팀에서 요청하는 트러블슈팅 데이터 + +지원 티켓을 생성하면 다음과 같은 유형의 정보를 요청받을 수 있습니다. + +### Agent Flare + +[`flare`][15] 명령으로 Datadog 지원 팀에 트러블슈팅 정보를 보낼 수 있습니다. + +**Node Agent Flare** + +``` +$ kubectl exec -it agent flare +``` + +**Cluster Agent Flare** + +``` +$ kubectl exec -it agent flare +``` + + +### Describe 포드 출력 + +이를 통해 팀은 노드 또는Cluster Agent가 배포된 방법, 포드의 가장 최근 이벤트, 일부 특성(예: 사용자 정의 태그)이 삽입되고 호스트 메트릭에 적용되었는지에 대한 인사이트를 얻을 수 있습니다. 명령의 `> .yaml` 섹션은 Datadog 지원 팀에 첨부 파일로 보낼 수 있는 파일 출력을 생성합니다. + +``` +$ kubectl describe pod > .yaml +``` + +### Manifest/deployment + +본 파일은 사용자 환경에 Agent를 배포하는 데 사용됩니다. 해당 파일은 구성한 태그, 로그 활성화 여부, 특정 컨테이너가 무시되도록 정의되였는지 여부 등을 Datadog에 알려줍니다. + +런타임 환경에서 Agent를 배포하는 경우, Agent를 배포하는 데 사용된 명령줄을 지원 팀에 보냅니다. + +가장 일반적인 배포 메서드는 Helm Chart, DaemonSet, Operator 세 가지입니다. + +### cURL 출력 + +누락되거나 부정확한 메트릭이 있다면 Datadog 지원 팀이 메트릭 엔드포인트에 도달하는 노드 Agent의 cURL 출력을 요청할 수 있습니다. 해당 작업은 Agent 컨테이너 내에서 명령을 실행하여 진행하며, Agent가 메트릭에 액세스할 수 있는 경우 지원팀에 알립니다. **참고**: Fargate 또는 관리형 서비스에서는 이 작업이 불가능합니다. + +``` +$ kubectl exec -it curl -k -v """" +``` + +``` +$ docker exec -it curl -k -v "" +``` + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://docs.datadoghq.com/ko/containers/docker/?tab=standard +[2]: https://docs.datadoghq.com/ko/containers/amazon_ecs/?tab=awscli +[3]: https://docs.datadoghq.com/ko/integrations/ecs_fargate/?tab=webui# +[4]: https://docs.datadoghq.com/ko/integrations/eks_fargate +[5]: https://docs.datadoghq.com/ko/containers/kubernetes/ +[6]: https://docs.datadoghq.com/ko/help/ +[7]: https://app.datadoghq.com/release-notes +[8]: https://docs.datadoghq.com/ko/agent/guide/environment-variables/#overview +[9]: https://docs.datadoghq.com/ko/containers/cluster_agent/admission_controller/?tab=operator +[10]: https://docs.datadoghq.com/ko/getting_started/containers/autodiscovery/?tab=adannotationsv2agent736 +[11]: https://docs.datadoghq.com/ko/agent/guide/autodiscovery-management/?tab=containerizedagent +[12]: https://docs.datadoghq.com/ko/integrations/ecs_fargate/?tab=webui#log-collection +[13]: https://docs.datadoghq.com/ko/integrations/eks_fargate/#log-collection +[14]: https://docs.datadoghq.com/ko/logs/guide/aws-eks-fargate-logs-with-kinesis-data-firehose/#overview +[15]: https://docs.datadoghq.com/ko/agent/troubleshooting/send_a_flare +[16]: https://docs.datadoghq.com/ko/containers/kubernetes/installation/?tab=operator \ No newline at end of file diff --git a/content/ko/continuous_integration/explorer/_index.md b/content/ko/continuous_integration/explorer/_index.md new file mode 100644 index 0000000000000..f479a23337942 --- /dev/null +++ b/content/ko/continuous_integration/explorer/_index.md @@ -0,0 +1,102 @@ +--- +description: CI Visibility Explorer에서 파이프라인 실행을 검색 및 필터링하는 방법을 알아봅니다. +further_reading: +- link: /continuous_integration/pipelines/ + tag: 설명서 + text: 파이프라인 데이터를 탐색하여 빌드 문제 해결 +- link: https://www.datadoghq.com/blog/configure-pipeline-alerts-with-ci-monitors/ + tag: 블로그 + text: Datadog CI 모니터로 파이프라인 알림을 설정하세요 +title: Continuous Integration Visibility Explorer +--- + +## 개요 + +CI Visibility Explorer로 태그를 사용하여 여러 수준에서 파이프라인 실행을 [검색 및 필터링](#search-and-filter), [시각화](#visualize), [내보내기](#export)할 수 있습니다. + +[**Software Delivery** > **CI Visibility** > **Executions**][5]로 이동하여 **Pipeline**, **Stage**, **Job**, **Step**, **Command** 수준 전반의 CI 파이프라인 실행 결과를 확인합니다. + +{{< img src="/continuous_integration/pipeline_executions.png" text="CI Pipeline Executions page" style="width:100%" >}} + +## 기본 CI 패싯 + +**CI** 좌측 패널에서 파이프라인 실행을 검색하는 데 사용하는 기본 패싯 목록을 확인할 수 있습니다. + +| 패싯 | 설명 | +|---|---| +| CI 상태 | CI 실행 상태: `Success`, `Failure` 또는 `Canceled`. | +| CI 인스턴스 | CI 공급자의 인스턴스 이름입니다. | +| 기간 | 파이프라인 실행에 걸리는 시간입니다. | +| 파이프라인 ID | 파이프라인 ID입니다. | +| CI 제공업체 | CI 공급자의 이름입니다. | +| 노드 라벨 | 노드의 라벨입니다. | +| 노드 이름 | 노드의 이름입니다. | +| 부분 파이프라인 | 재시도, 수동 승인 또는 기타 미완료 시퀀스를 포함하는 CI 파이프라인 실행을 의미합니다. | +| 부분 재시도 | CI 실행이 이전 실행의 재시도인지를 나타냅니다. | +| 수동 트리거 | CI 실행이 수동으로 트리거되었는지를 나타냅니다. | +| 파라미터 | 파이프라인 또는 작업 트리거 시의 사용자 정의 파라미터입니다. | +| 파이프라인 번호 | 파이프라인의 수입니다. | +| 파이프라인 URL | 파이프라인의 URL입니다. | +| 대기열 시간 | 작업이나 태스크가 실행되기 전 CI 대기열에서 대기한 총 시간입니다. | +| 디플로이먼트 | CI 파이프라인으로 배포된 GitLab 환경입니다. | +| 배포 작업 | GitLab의 배포 환경에서 실행된 작업입니다. | +| 명령어 이름 | CI 파이프라인 내의 특정 명령어에 대한 사용자 정의 식별자입니다. | +| 명령어 | 커스텀 파이프라인 스팬을 생성하기 위해 실행한 명령줄입니다. | +| 다운스트림 파이프라인 | 이 파이프라인이 다른 파이프라인의 다운스트림인지 를 나타냅니다. | +| 업스트림 파이프라인 ID | 현재 파이프라인에 선행하고, 현재 파이프라인을 트리거하는 파이프라인 실행의 식별자입니다. | +| 단계 이름 | CI 파이프라인 내의 특정 단계에 할당된 이름입니다. | +| 오류 도메인 | 공급자, 사용자 또는 알 수 없음과 같은 CI 실행 오류 유형입니다. | +| 실행 시간 | CI 파이프라인을 실행하는 데 소요된 총 시간입니다. | +| 대기 시간 | CI 실행에서 수동 승인을 기다리는 데 소요된 총 시간입니다. | +| 배포 여부 | 파이프라인 내 작업이 배포를 시작했는지를 나타냅니다. | +| 배포 포함 | 파이프라인에 배포를 트리거하는 작업이 포함되어 있는지를 나타냅니다. | +| 중요 경로 | 작업이 CI 파이프라인 실행의 중요 경로에 있는지를 나타냅니다 | + +CI Visibility Explorer에서 검색 쿼리의 일부로 사용할 수 있는 일반 패싯에 대한 자세한 정보는 [파이프라인 실행 패싯][3]을 참조하세요. + +## 파이프라인 실행 상세 정보 및 트레이스 + +선택한 타임 프레임의 파이프라인 실행 집계 데이터를 확인할 수 있습니다. 검색 필드와 패싯을 사용하여 자세히 조사하려는 실행으로 목록 범위를 좁힙니다. 상단의 버튼으로 파이프라인, 스테이지 또는 작업을 표시하도록 목록을 변경합니다. + +다음 세 가지 그래프는 가장 활성화된 파이프라인의 기간, 시간 경과에 따라 실패한 파이프라인, 누적 시간으로 토글할 수 있는 옵션이 있는 파이프라인 실행을 각각 시각화한 것입니다. 그래프는 왼쪽 상단에서 선택한 레벨 (`Pipeline`, `Stage`, `Job` 등)로 범위가 지정됩니다. + +{{< img src="ci/pipeline_explorer_trends.png" alt="Duration, Errored, Executions에 대한 Explorer 뷰 트렌드 그래프" style="width:100%;">}} + +각 파이프라인 실행은 스테이지 및 작업 정보를 포함하는 트레이스로 보고됩니다. 목록에서 실행을 클릭하면 개별 파이프라인, 스테이지, 작업 실행 트레이스에 액세스할 수 있습니다(Pipeline Details 뷰에서 파이프라인 실행을 클릭하는 것과 유사함). + +CI 파이프라인 데이터는 [대시보드][6]와 [노트북][7]에서 사용할 수 있으므로, 빌드 엔지니어링 팀에서 우선순위가 높은 작업과 시간 경과에 따른 CI 트렌드에 따라 커뮤니케이션을 맞춤화할 수 있습니다. + +## 검색 및 필터링 + +왼쪽의 패싯을 클릭하거나 검색창에 사용자 지정 쿼리를 직접 작성하여 파이프라인 실행의 하위 집합으로 범위를 좁히거나, 넓히거나, 초점을 이동할 수 있습니다. 패싯을 선택하거나 선택 해제하면 검색창에 변경 사항이 자동으로 반영됩니다. 마찬가지로 검색창 쿼리를 수정하거나 검색창에 처음부터 쿼리를 작성하여 왼쪽의 패싯을 선택하거나 선택을 해제할 수 있습니다. + +- 파이프라인을 검색하는 방법을 알아보려면 [검색 및 관리][1]을 참조하세요. +- 쿼리를 만드는 방법을 알아보려면 [검색 구문][2]을 참조하세요. + +## 분석 + +쿼리한 파이프라인 실행을 필드, 패턴 및 트랜잭션과 같은 상위 엔터티로 그룹화하여 정보를 도출하거나 통합합니다. 속성을 검색하기 위해 만들 필요가 없는 [패싯][3]을 사용하면 다음과 같은 작업을 할 수 있습니다. + +- CI/CD에서 실행 중인 테스트의 진행 상황을 검색하고 추적할 수 있습니다. +- 모든 CI/CD 작업 실행을 조사하여 실패한 테스트 실행을 식별하고 문제를 해결하세요. + +## 시각화 + +시각화 유형을 선택하여 필터 및 집계 결과를 시각화하고 파이프라인 실행 결과를 더 잘 이해할 수 있습니다. 예를 들어, 파이프라인 실행을 목록으로 표시하여 파이프라인 데이터를 열로 구성하거나 [시계열 그래프][8]로 표시하여 시간 경과에 따른 파이프라인 데이터를 측정할 수 있습니다. + +## 내보내기 + +CI Visibility Explorer에서 [뷰 내보내기][4]를 실행하여 나중에 또는 다른 상황에서 재사용할 수 있습니다. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/continuous_integration/search +[2]: /ko/continuous_integration/explorer/search_syntax +[3]: /ko/continuous_integration/explorer/facets +[4]: /ko/continuous_integration/explorer/saved_views +[5]: https://app.datadoghq.com/ci/pipeline-executions +[6]: https://app.datadoghq.com/dashboard/lists +[7]: https://app.datadoghq.com/notebook/list +[8]: https://app.datadoghq.com/ci/pipeline-executions?viz=timeseries \ No newline at end of file diff --git a/content/ko/database_monitoring/setup_mongodb/selfhosted.md b/content/ko/database_monitoring/setup_mongodb/selfhosted.md new file mode 100644 index 0000000000000..907dd4cebbc15 --- /dev/null +++ b/content/ko/database_monitoring/setup_mongodb/selfhosted.md @@ -0,0 +1,199 @@ +--- +further_reading: +- link: /integrations/mongo/ + tag: 설명서 + text: 기본 MongoDB 통합 +title: 자체 호스팅 MongoDB에 Database Monitoring 설정 +--- + +Database Monitoring은 중요한 메트릭, 작업 지연, 작업 샘플, 실행 계획 및 복제 상태 변경 정보에 액세스할 수 있도록 지원하며, 이를 통해 MongoDB 데이터베이스에 관한 포괄적인 인사이트를 제공합니다. MongoDB용 Database Monitoring을 활용하려면 Datadog Agent가 설치되어 있고 MongoDB 인스턴스에 연결되도록 구성되어 있는지 확인하세요. 이 가이드에서는 자체 호스팅 MongoDB에 Database Monitoring을 설정하는 단계를 간략하게 설명합니다. + +## 시작 전 참고 사항 + +지원되는 MongoDB 주요 버전 +: 4.4, 5.0, 6.0, 7.0, 8.0 + +지원되는 MongoDB 에디션 +: Community, Enterprise + +{{% dbm-mongodb-before-you-begin %}} + +## 설정 + +데이터베이스에서 Database Monitoring을 활성화하려면, + +1. [MongoDB 인스턴트에 Agent 액세스 권한 부여](#grant-the-agent-access-to-your-mongodb-instances) +2. [에이전트를 설치 및 설정합니다](#install-and-configure-the-agent). + +### MongoDB 인스턴스에 Agent 액세스 권한 부여 + +Datadog Agent는 통계 및 쿼리 수집을 위해 MongoDB 인스턴스용 읽기 전용 액세스가 필요합니다. + +{{< tabs >}} +{{% tab "독립형" %}} + +Mongo shell에서 MongoDB 인스턴스를 인증하고, `admin` 데이터베이스에서 Datadog Agent용 읽기 전용 사용자를 생성하여 필수 권한을 부여합니다. + +{{< code-block lang="shell" >}} +# 관리자 사용자로서 인증 +use admin +db.auth("admin", "") + +# Datadog Agent에 대한 사용자를 생성합니다. +db.createUser({ + "user": "datadog", + "pwd": "", + "roles": [ + { role: "read", db: "admin" }, + { role: "read", db: "local" }, + { role: "clusterMonitor", db: "admin" } + ] +}) +{{< /code-block >}} + +모니터링하려는 데이터베이스에서 `datadog` 사용자에 대한 추가 권한을 부여합니다. + +{{< code-block lang="shell" >}} +db.grantRolesToUser("datadog", [ + { role: "read", db: "mydatabase" }, + { role: "read", db: "myotherdatabase" } +]) +{{< /code-block >}} + +대신, `admin` 데이터베이스에서 `datadog` 사용자에 `readAnyDatabase` 역할을 부여하여 모든 데이터베이스를 모니터링해야 합니다. + +{{< code-block lang="shell" >}} +db.grantRolesToUser("datadog", [ + { role: "readAnyDatabase", db: "admin" } +]) +{{< /code-block >}} + +{{% /tab %}} +{{% tab "Replica Set" %}} + +Mongo shell에서 복제 세트에 대한 일차 노드를 인증하고, `admin` 데이터베이스에서 Datadog Agent에 대한 읽기 전용 사용자를 생성하여 필수 권한을 부여합니다. + +{{< code-block lang="shell" >}} +# 관리자 사용자로서 인증 +use admin +db.auth("admin", "") + +# Datadog Agent에 대한 사용자를 생성합니다. +db.createUser({ + "user": "datadog", + "pwd": "", + "roles": [ + { role: "read", db: "admin" }, + { role: "read", db: "local" }, + { role: "clusterMonitor", db: "admin" } + ] +}) +{{< /code-block >}} + +모니터링하려는 데이터베이스에서 `datadog` 사용자에 대한 추가 권한을 부여합니다. + +{{< code-block lang="shell" >}} +db.grantRolesToUser("datadog", [ + { role: "read", db: "mydatabase" }, + { role: "read", db: "myotherdatabase" } +]) +{{< /code-block >}} + +대신, `admin` 데이터베이스에서 `datadog` 사용자에 `readAnyDatabase` 역할을 부여하여 모든 데이터베이스를 모니터링해야 합니다. + +{{< code-block lang="shell" >}} +db.grantRolesToUser("datadog", [ + { role: "readAnyDatabase", db: "admin" } +]) +{{< /code-block >}} + +{{% /tab %}} +{{% tab "Sharded Cluster" %}} + +1. 클러스터의 각 샤드당 샤드의 일차 노드를 연결하고, `admin` 데이터베이스에서 Datadog Agent용 읽기 전용 사용자를 생성하여 필수 권한을 부여합니다. + +{{< code-block lang="shell" >}} +# 관리자 사용자로서 인증 +use admin +db.auth("admin", "") + +# Datadog Agent에 대한 사용자를 생성합니다. +db.createUser({ + "user": "datadog", + "pwd": "", + "roles": [ + { role: "read", db: "admin" }, + { role: "read", db: "local" }, + { role: "clusterMonitor", db: "admin" } + ] +}) +{{< /code-block >}} + +모니터링하려는 데이터베이스에서 `datadog` 사용자에 대한 추가 권한을 부여합니다. + +{{< code-block lang="shell" >}} +db.grantRolesToUser("datadog", [ + { role: "read", db: "mydatabase" }, + { role: "read", db: "myotherdatabase" } +]) +{{< /code-block >}} + +대신, `admin` 데이터베이스에서 `datadog` 사용자에 `readAnyDatabase` 역할을 부여하여 모든 데이터베이스를 모니터링해야 합니다. + +{{< code-block lang="shell" >}} +db.grantRolesToUser("datadog", [ + { role: "readAnyDatabase", db: "admin" } +]) +{{< /code-block >}} + +2. 그런 다음 동일한 단계에 따라 `mongos` 프록시에서 동일한 사용자를 만듭니다. 이 작업을 수행하면 구성 서버에 로컬 사용자가 생성되고 직접 연결이 허용됩니다. + +{{% /tab %}} +{{< /tabs >}} + +### 비밀번호를 안전하게 저장하기 +{{% dbm-secret %}} + +### 에이전트 설치 및 구성 + +Datadog은 MongoDB 호스트에 직접 Agent를 설치할 것을 권장합니다. 이렇게 하면 Agent가 MongoDB 전용 텔레메트리 외에도 다양한 시스템 텔레메트리(CPU, 메모리, 디스크, 네트워크)을 수집할 수 있게 됩니다. + +#### 구성 파일 생성 + +{{< tabs >}} +{{% tab "Standalone" %}} +{{% dbm-mongodb-agent-config-standalone %}} +{{% /tab %}} +{{% tab "Replica Set" %}} +{{% dbm-mongodb-agent-config-replica-set %}} +{{% /tab %}} +{{% tab "Sharded Cluster" %}} +{{% dbm-mongodb-agent-config-sharded-cluster %}} +{{% /tab %}} +{{< /tabs >}} + +#### Agent 설정 + +{{< tabs >}} +{{% tab "Linux Host" %}} +{{% dbm-mongodb-agent-setup-linux %}} +{{% /tab %}} +{{% tab "Docker" %}} +{{% dbm-mongodb-agent-setup-docker %}} +{{% /tab %}} +{{% tab "Kubernetes" %}} +{{% dbm-mongodb-agent-setup-kubernetes %}} +{{% /tab %}} +{{< /tabs >}} + + +## 수집한 데이터 + +### 메트릭 + +MongoDB 통합으로 수집한 메트릭의 포괄적인 목록을 보려면 [MongoDB 통합 설명서][2]를 참조하세요. + +{{% dbm-mongodb-agent-data-collected %}} + +[1]: /ko/account_management/api-app-keys/ +[2]: /ko/integrations/mongo/?tab=standalone#metrics \ No newline at end of file diff --git a/content/ko/integrations/redis_cloud.md b/content/ko/integrations/redis_cloud.md new file mode 100644 index 0000000000000..18b4d34e6dc67 --- /dev/null +++ b/content/ko/integrations/redis_cloud.md @@ -0,0 +1,183 @@ +--- +app_id: redis-cloud +app_uuid: 0b59b80e-db72-44a6-8c2b-67475d10ad71 +assets: + dashboards: + redis-cloud-active-active: assets/dashboards/redis_cloud_active-active.json + redis-cloud-database: assets/dashboards/redis_cloud_database.json + redis-cloud-networking: assets/dashboards/redis_cloud_networking.json + redis-cloud-overview: assets/dashboards/redis_cloud_overview.json + redis-cloud-proxy: assets/dashboards/redis_cloud_proxy.json + redis-cloud-proxy-threads: assets/dashboards/redis_cloud_proxy-threads.json + integration: + auto_install: true + configuration: + spec: assets/configuration/spec.yaml + events: + creates_events: false + metrics: + check: rdsc.bdb_conns + metadata_path: metadata.csv + prefix: rdsc + service_checks: + metadata_path: assets/service_checks.json + source_type_id: 7769531 + source_type_name: Redis Cloud + logs: {} +author: + homepage: https://redis.com/cloud/overview/ + name: Redis, Inc. + sales_email: press@redis.com + support_email: support@redis.com +categories: +- ai/ml +- 캐싱 +- 데이터 저장소 +- 클라우드 +custom_kind: 통합 +dependencies: +- https://github.com/DataDog/integrations-extras/blob/master/redis_cloud/README.md +display_on_public_website: true +draft: false +git_integration_title: redis_cloud +integration_id: redis-cloud +integration_title: Redis Cloud +integration_version: 1.1.0 +is_public: true +manifest_version: 2.0.0 +name: redis_cloud +public_title: Redis Cloud +short_description: Redis Cloud 통합 +supported_os: +- linux +- 윈도우즈(Windows) +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Supported OS::Linux + - Supported OS::Windows + - Supported OS::macOS + - Category::AI/ML + - Category::Caching + - Category::Data Stores + - Category::Cloud + - Offering::Integration + - Submitted Data Type::Metrics + configuration: README.md#Setup + description: Redis Cloud 통합 + media: + - caption: Redis Cloud 개요 표시 + image_url: images/datadog-cloud-overview-dashboard.png + media_type: 이미지 + - caption: Redis Cloud 클러스터 세부 사항 + image_url: images/datadog-cloud-cluster-database.png + media_type: 이미지 + - caption: Redis Cloud 노드 세부 사항 + image_url: images/datadog-cloud-node-dashboard.png + media_type: 이미지 + overview: README.md#Overview + support: README.md#Support + title: Redis Cloud +--- + + + + +## 개요 + +Redis는 문자열, 해시, 목록, 집합, 스트림 등 다양한 데이터 구조를 지원하는 빠른 범용 데이터 저장소입니다. Redis의 특징은 프로그래밍 가능성, 확장성, 영속성, 클러스터링, 고가용성입니다. 커뮤니티 에디션에는 벡터 검색, 확률적 데이터 구조, JSON 지원, 전체 텍스트 검색 등의 추가 데이터 모델과 기능이 추가되었습니다. + +[Redis Cloud][1] 통합은 Redis 소프트웨어의 Redis Cloud 배포와 함께 사용하도록 설계되었습니다. Redis Enterprise 설치에는 사용할 수 없습니다. [Redis Enterprise][2]에 관한 정보는 [Datadog Redis Enterprise 통합][3]을 참조하세요. + +본 통합으로 Datadog Agent를 사용하여 세 가지 중요 클러스터 컴포넌트인 데이터베이스, 노드, 샤드에 대한 메트릭을 제공해 드립니다. 데이터베이스 처리량, 메모리 사용률, CPU 사용량, 연결 카운트, 복제 상태, Datadog 내의 다양한 추가 메트릭을 모니터할 수 있습니다. 해당 정보를 사용하여 Redis Cloud 클러스터의 전반적인 상태를 파악하고, 애플리케이션 성능 문제를 진단하고, 다운타임을 방지할 수 있습니다. + +지원하는 전체 메트릭 목록은 하단의 **Metrics** 섹션을 참조하세요. + +## 설정 + +### 설치 + +1. 다음 명령어를 실행해 에이전트 통합을 설치하세요. +- Datadog Agent v6: + ```shell + datadog-agent integration install -t datadog-redis_cloud==1.1.0 + ``` +- Datadog Agent v7: + ```shell + agent integration install -t datadog-redis_cloud==1.1.0 + ``` + +2. `openmetrics_endpoint`를 클러스터 마스터 노드로 설정하여 통합을 구성합니다. 자세한 내용은 [통합 시작하기][4]를 참조하세요. +3. Agent를 [재시작][5]합니다. + + +### 설정 + +`openmetrics_endpoint`가 클러스터를 포인팅하도록 설정합니다. [예시][4]를 참조하세요. `tls_verify`를 false로 설정합니다. + +예시 구성 파일에 명시된 대로 `extra_metrics`, `excluded_metrics`의 두 가지 옵션 파라미터가 있습니다. + +extra_metrics 파라미터는 메트릭 그룹 목록을 받습니다. 다음 그룹을 사용할 수 있습니다. RDSC.REPLICATION, +RDSC.NODE, RDSC.BIGSTORE, RDSC.FLASH, RDSC.SHARDREPL. 기본 메트릭 그룹 RDSC.DATABASE, +RDSC.PROXY, RDSC.LISTENER, RDSC.SHARD는 통합에 자동 삽입됩니다. + +`exclude_metrics` 파라미터는 제외할 개별 메트릭 목록을 가져옵니다. 이는 해당 정보가 +Datadog으로 전달되지 않는다는 것을 의미합니다. 개별 메트릭의 접두사를 제거해야 합니다. 즉, 'rdsc.bdb_up'은 +'bdb_up'이 됩니다. 전체 메트릭 목록은 통합 페이지의 'Data Collected' 탭과 [Metrics](#metrics) 섹션에서 사용할 수 있습니다. +다음 추가 그룹은 관련 접두사를 사용하여 Data Collected 페이지에서 +개별 메트릭을 검색하는 데 사용할 수 있습니다. + +| 그룹 | 접두사 | 참고 | +|------------------|---------------------------|-------------------------------------------------------| +| RDSC.NODE | rdsc.node_ | 이렇게 하면 Bigstore 및 Flash 메트릭도 반환됩니다. | +| RDSC.DATABASE | rdsc.bdb_ | 이렇게 하면 복제 메트릭도 반환됩니다. | +| RDSC.SHARD | rdsc.redis_ | 이렇게 하면 샤드 복제 메트릭도 반환됩니다. | +| RDSC.REPLICATION | rdsc.bdb_crdt_ | | +| RDSC.REPLICATION | rdsc.bdb_replicaof_ | | +| RDSC.SHARDREPL | rdsc.redis_crdt_ | | +| RDSC.PROXY | rdsc.dmcproxy_ | | +| RDSC.LISTENER | rdsc.listener_ | | +| RDSC.BIGSTORE | rdsc.node_bigstore_ | | +| RDSC.FLASH | rdsc.node_available_flash | 모든 Flash 메트릭의 형식은 rdsc.node_*_flash입니다. | + + +### 검증 + +1. 특히 클라우드 환경에서 해당 머신에 핑할 수 있는지 확인하세요. `wget --no-check-certificate ` 또는 `curl -k `를 실행하여 메트릭을 수신할 수 있는지 확인합니다. + +2. Datadog Agent의 [상태][6]를 확인합니다. + + +## 수집한 데이터 + +Redis Cloud 통합은 데이터베이스, 노드, 샤드의 모든 메트릭을 수집합니다. + + +### 메트릭 +{{< get-metrics-from-git "redis_cloud" >}} + + + +### 서비스 점검 + +Redis Cloud 통합은 서비스 점검을 포함하지 않습니다. + + +### 이벤트 + +Redis Cloud 통합은 이벤트를 포함하지 않습니다. + + +## 트러블슈팅 + +도움이 필요하신가요? [Redis Field Engineering][8]에 문의하세요. + +[1]: https://redis.io/docs/latest/operate/rc/ +[2]: https://redis.io/docs/latest/operate/rs/ +[3]: https://app.datadoghq.com/integrations?integrationId=redis-enterprise +[4]: https://docs.datadoghq.com/ko/getting_started/integrations/ +[5]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#start-stop-and-restart-the-agent +[6]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#agent-status-and-information +[7]: https://github.com/DataDog/integrations-extras/blob/master/redis_cloud/metadata.csv +[8]: mailto:support@redis.com \ No newline at end of file diff --git a/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json b/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json index 5a6a313a6d54b..f5a5e974af901 100644 --- a/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json +++ b/content/ko/product_analytics/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-d99877d8-715e-4487-94e7-253da6a3fcc3": { + "ast-str-ccbaa22a-5868-4366-8acf-f9786fe5cc64": { "string": "모바일 세션 리플레이 개인정보 보호 옵션" } }, "description": { - "ast-str-4c42a407-da36-4de3-b98c-b310d7ca15a5": { + "ast-str-cf658844-2097-43a1-a48c-fc3c6fd3f68f": { "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-3eb652ce-96b4-40b2-8255-2d04b7840875": { + "ast-str-40943a1a-edde-4589-8972-16cfd2af6d15": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-715f18f2-b07d-4c37-8060-9fddf27ea39a": { + "ast-str-d805da84-5bb4-41ee-8d1c-5dcaf2f57da4": { "string": "설명서" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-3dcad688-c0ec-4ce2-a4d4-6aa755c86ddb": { + "ast-str-acf142d0-cd75-453a-8fe2-eb485b9f213e": { "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } }, "tag": { - "ast-str-1781edad-2125-43bb-8a68-c8e611add905": { + "ast-str-4ac7c19e-67ac-44e9-aaa5-28780431795f": { "string": "설명서" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-0bccdca7-2ab8-4ce2-8dc0-b149e35c98bc": { + "ast-str-76195321-3f00-4b5a-a106-51ed78a73882": { "string": "모바일 세션 리플레이 설정 및 구성" } }, "tag": { - "ast-str-1cb3706b-3e56-4a7b-ba44-13366a28e5e8": { + "ast-str-6d14bdaf-653b-4949-a988-bd72160b6cd8": { "string": "설명서" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-d0f38e09-f640-4129-ad56-4597b2eeca29": { + "ast-str-85754c8c-58a4-448d-ae08-472723af4b84": { "string": "모바일 세션 리플레이 문제 해결" } }, "tag": { - "ast-str-d6aa91e3-beaf-4709-bc4c-fa48a8677e1f": { + "ast-str-d6a0ce74-4536-4173-a168-d57916978c0a": { "string": "설명서" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-dd5212b7-7eee-4399-8463-267cc0189b1f": { + "ast-str-a635174d-ef8d-4ab6-9834-e3507bcf410b": { "string": "Session Replay" } }, "tag": { - "ast-str-d3836ed8-23dd-4e60-9e62-d7edd17541fb": { + "ast-str-310cb21b-701c-4684-afb1-d449f8e564c7": { "string": "설명서" } } diff --git a/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json b/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json index f0be38ae26230..fc52e9e3d3e6e 100644 --- a/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ko/product_analytics/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-209f705e-d4b1-4890-ad80-6be194d8fc99": { + "ast-str-8bc75e14-52d8-47b9-8b37-7a1bd7f97881": { "string": "모바일 세션 리플레이 설치 및 설정" } }, "description": { - "ast-str-eacb40a8-910e-4fa5-a34f-1c13ea5b02db": { + "ast-str-c80d6782-5698-497d-b45e-0051e109783e": { "string": "모바일 세션 리플레이을 설치하고 설정합니다." } }, @@ -18,12 +18,12 @@ "0": { "link": "/product_analytics/session_replay/mobile", "text": { - "ast-str-223ce0a2-060a-47f2-ad20-b1b96b4918f0": { + "ast-str-e7d7a9db-512d-40eb-872f-1f1263d7e130": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-e23f3edb-4334-447e-b65a-b533378c2bfc": { + "ast-str-482967ed-742a-4cc5-bf08-a90707e49069": { "string": "설명서" } } @@ -31,12 +31,12 @@ "1": { "link": "/product_analytics/session_replay/mobile/app_performance", "text": { - "ast-str-dae9ced1-e49b-4d03-b084-8e0e2756874e": { + "ast-str-d01e28f2-29f5-49e3-8163-621edb676c8a": { "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } }, "tag": { - "ast-str-240a6e5a-af1c-432f-b5d0-61100ba56b35": { + "ast-str-a671d16d-fcc1-4d02-8c77-fcee81e7b188": { "string": "설명서" } } @@ -44,12 +44,12 @@ "2": { "link": "/product_analytics/session_replay/mobile/privacy_options", "text": { - "ast-str-d089e855-4841-473c-882d-1d9eaa0155d6": { + "ast-str-2c7c52b1-10f5-4302-a472-80f0d709b31e": { "string": "모바일 세션 리플레이 개인정보 보호 옵션" } }, "tag": { - "ast-str-881372cb-a4b9-44d6-9b14-86ead284f858": { + "ast-str-404bcf03-12a3-4f75-9b2b-b99828680e18": { "string": "설명서" } } @@ -57,12 +57,12 @@ "3": { "link": "/product_analytics/session_replay/mobile/troubleshooting", "text": { - "ast-str-ab371002-b6f3-4bbe-86db-f54d98a69f2a": { + "ast-str-4a42c626-16ea-4ea3-9e74-246746eb5068": { "string": "모바일 세션 리플레이 문제 해결" } }, "tag": { - "ast-str-ac779f5a-d0dc-4ab9-8774-7dfc3c1d4d95": { + "ast-str-5caa4848-2d0a-4973-a3be-f36a6d1ebad5": { "string": "설명서" } } @@ -70,12 +70,12 @@ "4": { "link": "/product_analytics/session_replay", "text": { - "ast-str-8a383d5b-df7f-42f1-a10b-f640f3cf7b40": { + "ast-str-606f1237-9b7f-453c-8ae7-49bbc3d2b75f": { "string": "Session Replay" } }, "tag": { - "ast-str-7c9ac9d0-5aa2-4864-b747-232082345ea5": { + "ast-str-b4299a90-07c0-4070-bf12-df4a07c7de82": { "string": "설명서" } } diff --git a/content/ko/real_user_monitoring/error_tracking/mobile/unity.md b/content/ko/real_user_monitoring/error_tracking/mobile/unity.md new file mode 100644 index 0000000000000..94b6a9b292ca7 --- /dev/null +++ b/content/ko/real_user_monitoring/error_tracking/mobile/unity.md @@ -0,0 +1,120 @@ +--- +aliases: +- /ko/real_user_monitoring/error_tracking/unity +code_lang: Unity +code_lang_weight: 50 +description: Error Tracking을 사용해 Unity 오류를 추적하는 방법을 알아보세요. +further_reading: +- link: https://github.com/DataDog/dd-sdk-unity + tag: 소스 코드 + text: dd-sdk-unity 소스 코드 +- link: real_user_monitoring/error_tracking/ + tag: 설명서 + text: 오류 추적 살펴보기 +title: Unity Crash Reporting 및 Error Tracking +type: multi-code-lang +--- +## 개요 + +Crash Reporting 및 Error Tracking을 활성화하고 Real User Monitoring으로 종합 충돌 보고서와 오류 트렌드를 확인하세요. + +[**오류 추적**][1]에 충돌 보고서가 표시됩니다. + +## 설정 + +Datadog Unity SDK를 설정하지 않은 경우 [인앱 설정 지침][2]을 따르거나 [Flutter 설정 설명서][3]를 따르세요. + +### Unity 로그에서 캡처되지 않은 예외 포워딩하기 + +Unity는 캡처되지 않은 모든 예외를 `Debug.LogException`를 사용하여 로거에 포워딩합니다. 해당 예외를 Datadog에 보고하려면 Datadog 프로젝트 설정에서 "Forward Unity Logs" 옵션을 선택하세요. + +### 네이티브 충돌 보고 + +모든 Datadog Unity SDK 프로젝트의 네이티브 충돌 보고가 활성화됩니다. + +애플리케이션에 치명적인 충돌이 발생한 경우, 애플리케이션을 다시 시작한 *후* Datadog Unity SDK가 Datadog에 충돌 보고서를 업로드합니다. 치명적이지 않은 오류나 예외의 경우, Datadog Unity SDK가 다른 RUM 데이터와 함께 해당 오류나 예외를 업로드합니다. + +## 난독화 해제 및 심볼화된 스택 트레이스 가져오기 + +매핑 파일은 스택 트레이스의 난독화를 해제하고 심볼화하는 데 사용되므로, 오류를 디버깅하는 데 도움이 됩니다. Datadog은 생성된 고유 빌드 ID를 사용하여 올바른 스택 트레이스를 해당 매핑 파일과 자동 매치시킵니다. 이렇게 하면 매핑 파일이 업로드된 시점(프리 프로덕션 또는 프로덕션 빌드 중)에 관계없이, Datadog에 보고된 충돌 및 오류를 검토할 때 효율적인 QA 프로세스를 위해 올바른 정보를 사용할 수 있습니다. + +### IL2CPP를 통한 파일 및 코드 라인 매핑 + +IL2CPP 백엔드(iOS 기본값)를 사용하는 경우 Unity의 C# 스택 트레이스에는 파일 또는 코드 라인 정보가 없습니다. 본 정보는 C# 스택 트레이스가 네이티브 스택에 매핑되어 있는 경우, 네이티브 심볼 파일과 IL2CPP 매핑 파일에서 검색할 수 있습니다. 활성화하려면 Unity 프로젝트 설정의 Datadog 섹션에서 'Perform Native Stack Mapping' 옵션을 선택하고, 하단에 설명된 대로 심볼 및 IL2CPP 매핑 파일을 업로드합니다. + +**참고**: 해당 옵션을 선택한 경우에도 Native Stack Mapping은 비개발 빌드에서만 활성화됩니다. + +### Datadog에 심볼 파일 업로드 + +네이티브 충돌 보고가 원시 형식으로 수집되며 대부분은 메모리 주소를 포함합니다. 이들 주소를 적격 심볼 정보에 매핑하기 위해서는 iOS `.dSYM` 파일, NDK `.so` 파일, Android Proguard Mapping 파일 및/또는 IL2CPP 매핑 파일을 업로드해야 하며, 해당 파일은 애플리케이션 빌드 프로세스에서 생성됩니다. + +[@datadog/datadog-ci][4] 명령줄 도구는 모든 필수 파일(dSYMs, sos, Android Proguard Mapping, IL2CPP Mapping 파일)을 하나의 명령으로 업로드할 수 있도록 지원합니다. + +먼저 위 지침에서 `datadog-ci` 도구를 설치하고 프로젝트 루트에 API 키 및 Datadog 사이트(선택 사항)를 포함하는 `datadog-ci.json` 파일을 생성합니다. +```json +{ + "apiKey": "", + "datadogSite": "datadoghq.eu" // Optional if you are using datadoghq.com +} +``` + +이러한 파일은 API 키를 포함하므로 버전 제어에 체크인해서는 안 됩니다. + +대신 `DATADOG_API_KEY` 및 `DATADOG_SITE` 환경 변수를 설정할 수 있습니다. + +그러면 다음 명령을 사용해 충돌 보고서 심볼화와 난독화 해제에 필요한 모든 필수 파일을 업로드할 수 있습니다. +```sh +# From your build output directory +datadog-ci unity-symbols upload --ios +``` + +Android의 경우 APK를 직접 빌드하는 대신 Android 프로젝트를 내보내고 내보낸 프로젝트를 사용하여 빌드합니다. 내보낸 프로젝트 디렉토리에서 datadog-ci를 실행할 수 있습니다. +```sh +# From your exported project directory +datadog-ci unity-symbols upload --android +``` + +**참고**: 소스 맵을 다시 업로드할 때 빌드 ID가 변경되지 않으면 기존 소스 맵을 다시 쓰지 않습니다. + +옵션 전체 목록의 경우 `datadog-ci` [Unity Symbol 설명서][5]를 참조하세요. + +### 업로드된 심볼 파일 목록 + +업로드된 모든 심볼을 보려면 [RUM Debug Symbol][6] 페이지를 참조하세요. + +## 한계 + +{{< site-region region="us,us3,us5,eu,gov" >}} +소스 맵과 dSYM 파일은 각각 **500**MB로 제한됩니다. +{{< /site-region >}} +{{< site-region region="ap1" >}} +소스 맵과 dSYM 파일은 각각 **500**MB로 제한됩니다. +{{< /site-region >}} + +## 구현 테스트 + +Unity Crash Reporting 및 Error Tracking 설정을 확인하려면, 애플리케이션에서 충돌 이슈를 만들고 Datadog에서 오류가 나타나는지 확인하세요. + +1. 개발 빌드를 실행하고 있지 않은지 확인합니다. Unity의 빌드 설정에서 'Development Build'란을 해제합니다. +2. 시뮬레이터, 에뮬레이터 또는 실제 기기에서 애플리케이션을 실행합니다. iOS에서 실행하는 경우 디버거가 포함되지 않도록 합니다. 그렇지 않으면 Datadog SDK가 충돌을 캡처하기 전에 Xcode가 먼저 충돌을 캡처합니다. +3. 오류 또는 충돌이 포함된 코드를 실행합니다. 예시: + + ```cs + void ThrowError() { + throw new Exception("My Exception") + } + ``` + +4. 충돌을 일으키지 않는 난독화된 오류 보고서의 경우 [**Error Tracking**][1]에서 심볼화 및 난독화 해제를 확인할 수 있습니다. +5. 충돌의 경우, 충돌이 발생한 후 애플리케이션을 다시 시작하고 Unity SDK가 충돌 보고서를 [**Error Tracking**][1]에 업로드할 때까지 기다립니다. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/rum/error-tracking +[2]: https://app.datadoghq.com/rum/application/create +[3]: /ko/real_user_monitoring/mobile_and_tv_monitoring/setup/unity#setup +[4]: https://www.npmjs.com/package/@datadog/datadog-ci +[5]: https://github.com/DataDog/datadog-ci/tree/master/src/commands/unity-symbols +[6]: https://app.datadoghq.com/source-code/setup/rum \ No newline at end of file diff --git a/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json b/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json index 61da020e4f73b..50859ba6d15a7 100644 --- a/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json +++ b/content/ko/real_user_monitoring/session_replay/mobile/privacy_options.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-1d6765ec-05f2-4061-b6eb-3491b6f860a1": { + "ast-str-53263dcc-c7ec-4d64-a139-4f00386ed868": { "string": "모바일 세션 리플레이 개인정보 보호 옵션" } }, "description": { - "ast-str-dca2dfce-1c6c-482e-bb94-2965f89d14fd": { + "ast-str-1cda96eb-ecc3-4897-a958-37bfd13a254e": { "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-8475c94d-f84d-4674-82fc-decb65d009e7": { + "ast-str-9153c32c-9f3b-4297-83b0-1d8e5e790aa9": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-c5645fe4-d05f-444f-a89d-adc8e96cb73b": { + "ast-str-f6f9bf61-8e2b-4e08-8258-4a4f9fda0063": { "string": "설명서" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-2362c5d7-1131-40ad-a000-fc28bb1491c8": { + "ast-str-265efd53-4f2a-45b4-95c8-613cf4db534a": { "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } }, "tag": { - "ast-str-bd194498-7095-4067-baee-d72654e0a6db": { + "ast-str-69973a7e-d10f-4fdf-998e-ea79bff3f2a9": { "string": "설명서" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/setup_and_configuration", "text": { - "ast-str-c951c01a-4c8a-4288-ad38-6807d8898605": { + "ast-str-40554c8e-ece6-416f-8da6-a827f00068b7": { "string": "모바일 세션 리플레이 설정 및 구성" } }, "tag": { - "ast-str-96c999f2-7bb9-4295-a6cd-066ab4e9530b": { + "ast-str-603bebb3-4f48-4845-ba62-f2ab83d78653": { "string": "설명서" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-d44ba4c0-7fd6-40eb-bd41-46219b2a7e4c": { + "ast-str-f450e1cc-9426-4b69-8253-3b46d4ff2361": { "string": "모바일 세션 리플레이 문제 해결" } }, "tag": { - "ast-str-9fe48841-97e2-4863-be00-00e71cbcc11b": { + "ast-str-f4b8f251-cae7-461d-becb-4ecc3874d1c6": { "string": "설명서" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-a5a66c70-f3e2-48a4-bcdd-aab5a769c6b1": { + "ast-str-15faaca3-c0f0-4f24-a51f-9a888f62f8d3": { "string": "Session Replay" } }, "tag": { - "ast-str-064c6aa0-3fef-4cfd-a91d-54bad56aab0e": { + "ast-str-4760f4f1-077d-46ab-af8d-ebced0cced6c": { "string": "설명서" } } diff --git a/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json b/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json index deaec3be332b7..48422163e7012 100644 --- a/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json +++ b/content/ko/real_user_monitoring/session_replay/mobile/setup_and_configuration.ast.json @@ -4,12 +4,12 @@ "attributes": { "frontmatter": { "title": { - "ast-str-7c124611-ecb3-4fa6-abe2-4a8158daaf75": { + "ast-str-e6058273-913f-46bb-9080-40f7dc9b34ae": { "string": "모바일 세션 리플레이 설치 및 설정" } }, "description": { - "ast-str-6e790010-0410-4bc8-8272-4a12fbf32d04": { + "ast-str-e1880e45-f1ca-40b8-b80d-7e13841e67dc": { "string": "모바일 세션 리플레이을 설치하고 설정합니다." } }, @@ -18,12 +18,12 @@ "0": { "link": "/real_user_monitoring/session_replay/mobile", "text": { - "ast-str-d16ef26e-381b-4eb8-b1de-70f969cd4eec": { + "ast-str-aeea9316-7851-464f-a0e5-908b6f1b7dd8": { "string": "Mobile Session Replay" } }, "tag": { - "ast-str-e12e54d4-5679-464d-8395-97238d1ae11b": { + "ast-str-3c9ae4ac-2195-4740-bcd3-a52fbb4cf619": { "string": "설명서" } } @@ -31,12 +31,12 @@ "1": { "link": "/real_user_monitoring/session_replay/mobile/app_performance", "text": { - "ast-str-59880ecd-7a93-4b65-be2c-3e312586a956": { + "ast-str-ac54f8ca-37b7-413f-b3d0-0a918b37b1b5": { "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" } }, "tag": { - "ast-str-f5de440d-94a8-4c72-b204-4ebad6ab4d53": { + "ast-str-3eecfad5-5996-44a4-85ed-994091673150": { "string": "설명서" } } @@ -44,12 +44,12 @@ "2": { "link": "/real_user_monitoring/session_replay/mobile/privacy_options", "text": { - "ast-str-22570d2d-e2c7-495b-894c-d503eaa47a6c": { + "ast-str-9476d72e-e89e-457c-832b-d1876d8154c2": { "string": "모바일 세션 리플레이 개인정보 보호 옵션" } }, "tag": { - "ast-str-71164fa2-9910-4173-8da0-c119c38df091": { + "ast-str-3023c936-fb3f-41c2-9765-9041533094fb": { "string": "설명서" } } @@ -57,12 +57,12 @@ "3": { "link": "/real_user_monitoring/session_replay/mobile/troubleshooting", "text": { - "ast-str-a966523b-1775-4b19-ab4c-5b1b1eb779bb": { + "ast-str-ca2c7ee9-4fe3-4bcd-9897-43ab42c7434b": { "string": "모바일 세션 리플레이 문제 해결" } }, "tag": { - "ast-str-2a4d546c-ef45-420a-bda3-eddb6f8b9e30": { + "ast-str-3977546e-a1bb-4526-bf38-ca1c391da8e6": { "string": "설명서" } } @@ -70,12 +70,12 @@ "4": { "link": "/real_user_monitoring/session_replay", "text": { - "ast-str-aaea3198-36d2-441f-92f5-bb4c0f304fe2": { + "ast-str-13fc98fe-a961-4b16-a2f9-fbf4c3670cc0": { "string": "Session Replay" } }, "tag": { - "ast-str-ab6c252b-84b1-4b1e-aa85-73679522086b": { + "ast-str-856f47a5-5069-429c-a560-8082fbf32ae4": { "string": "설명서" } } @@ -83,12 +83,12 @@ "5": { "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", "text": { - "ast-str-e7e182ec-27f5-4009-b3c2-4042ac233d91": { + "ast-str-c42c9b1d-9d9a-4622-89a1-e2f7dee5712e": { "string": "웹 보기 추적" } }, "tag": { - "ast-str-d968d7e5-2c3c-426d-8969-9ffa2437cf80": { + "ast-str-130ec363-d662-4b11-b461-4d66edcce43d": { "string": "설명서" } } diff --git a/content/ko/security/application_security/software_composition_analysis/setup/compatibility/nodejs.md b/content/ko/security/application_security/software_composition_analysis/setup/compatibility/nodejs.md new file mode 100644 index 0000000000000..62e31db01f872 --- /dev/null +++ b/content/ko/security/application_security/software_composition_analysis/setup/compatibility/nodejs.md @@ -0,0 +1,181 @@ +--- +code_lang: nodejs +code_lang_weight: 50 +title: Node.js 호환성 요구 사항 +type: multi-code-lang +--- + +## Application Security 기능 + +다음은 특정 트레이서 버전에 Node.js 라이브러리에서 지원되는 애플리케이션 보안 기능입니다. + +| 애플리케이션 보안 기능 | 최소 Node.js 트레이서 버전 | +|----------------------------------------|----------------------------------------------------| +| 위협 탐지 | 4.0.0 | +| Threat Protection | 4.0.0 | +| 차단된 요청에 대한 응답 사용자 지정 | 4.1.0 | +| 소프트웨어 구성 분석(SCA) | 4.0.0 | +| 코드 보안 | Node.js 16+용 4.18.0 또는 Node.js 18+용 5.0.0 | +| 자동 사용자 활동 이벤트 추적 | Node.js 16+용 4.4.0 | +| API Security | Node.js 16+용 4.30.0 또는 Node.js 18+용 5.6.0 | + +Node.js에서 지원되는 모든 애플리케이션 보안 기능을 사용하는 데 필요한 최소 트레이서 버전은 4.30.0입니다. + + +**참고**: +- Threat Protection를 사용하려면 명시된 트레이스 최소 버전에 포함된 [Remote Configuration][2]을 활성화해야 합니다. + +### 지원되는 배포 유형 +| 유형 | 위협 탐지 지원 | 소프트웨어 구성 분석 | +|-------------|--------------------------|-------------------------------| +| Docker | {{< X >}} | {{< X >}} | +| 쿠버네티스(Kubernetes) | {{< X >}} | {{< X >}} | +| Amazon ECS | {{< X >}} | {{< X >}} | +| AWS Fargate | {{< X >}} | {{< X >}} | +| AWS Lambda | {{< X >}} | {{< X >}} | + +## 언어 및 프레임워크 호환성 + +### Node.js 버전 지원 + +Node.js 프로젝트에서 LTS 메이저 릴리스 라인 지원을 중단(서비스 종료)하면, `dd-trace` 다음 메이저 버전에서 해당 릴리스의 지원이 중단됩니다. +`dd-trace` 라이브러리를 지원하는 마지막 메이저 릴리스 라인은 유지 관리 모드 기반으로 최소 1년 동안 Node.js EOL 버전을 지원합니다. + +일부 문제는 `dd-trace`에서 해결할 수 없으며, 대신 Node.js에서 해결해야 합니다. 이러한 문제가 발생하고, 문제가 있는 Node.js 릴리스가 EOL인 경우, 다른 비 EOL 릴리스로 전환하지 않고는 문제를 해결할 수 없습니다. +Datadog은 비 LTS Node.js 메이저 릴리스 라인(홀수 버전)에서 특정 지원을 제공하기 위해 `dd-trace`의 새 릴리스를 생성하지 않습니다. + +최적의 지원을 받으려면 항상 최신 Node.js LTS 릴리스와 `dd-trace`의 최신 메이저 버전을 실행합니다. 어떤 Node.js 릴리스 라인을 사용하든, 해당 릴리스 라인의 Node.js 최신 버전을 사용하여 최신 보안 수정 사항이 적용되도록 합니다. + +Node.js 릴리스에 관한 자세한 내용은 [공식 Node.js 문서][4]를 참조하세요. + + + +### 운영 체제 지원 + +다음 운영 체제가 `dd-trace`에서 공식적으로 지원됩니다. 목록에 없는 운영 체제에서도 작동할 수 있지만, 애플리케이션 보안 기능, 프로파일링 및 런타임 메트릭과 같은 일부 기능이 누락될 수 있습니다. 일반적으로 메이저 버전이 처음 릴리스될 때 활발하게 유지 관리되는 운영 체제가 지원됩니다. + + +| 운영 체제 | 아키텍처 | 최소 버전 | +|------------------|---------------|------------------------------------------| +| Linux (glibc) | arm64, x64 | CentOS 7, Debian 9, RHEL 7, Ubuntu 14.04 | +| Linux (musl) | arm64, x64 | Alpine 3.13 | +| macOS | arm64, x64 | Catalina (10.15) | +| 윈도우즈(Windows) | x64 | Windows 8.1, Windows Server 2012 | + + + + + +### 웹 프레임워크 호환성 + +- 공격자 소스 HTTP 요청 세부 정보 +- HTTP 요청 태그(상태 코드, 메소드 등) +- Distributed Tracing으로 애플리케이션을 통한 공격 플로 확인 + +##### Application Security 기능 노트 +- **Software Composition Analysis**는 모든 프레임워크에서 지원됩니다. +- 프레임워크가 하단에 명시되지 않은 경우에도 **Code Security**는 취약한 암호화, 취약한 해싱, 안전하지 않은 쿠키, HttpOnly Flag가 없는 쿠키, SameSite Flag가 없는 쿠키의 취약점을 탐지합니다. + + +| 프레임워크 | 버전 | Threat Detection이 지원되나요? | Threat Protection이 지원되나요? | Code Security? | +|-----------|----------|-----------------------------|------------------------------|----------------------------------------------------| +| express | >=4 | {{< X >}} | {{< X >}} | {{< X >}} | +| nextjs | >=11.1 | {{< X >}} | | | + + + + + + + + +### 네트워킹 프레임워크 호환성 + + +**네트워킹 추적은 다음을 제공합니다.** + +- 애플리케이션을 통한 Distributed Tracing +- 요청 기반 차단 + +##### Application Security 기능 노트 +- **Software Composition Analysis**는 모든 프레임워크에서 지원됩니다. + + + +| 프레임워크 | Threat Detection이 지원되나요? | Threat Protection이 지원되나요? | Code Security? | +|-----------|-----------------------------|------------------------------|----------------------------------------------------| +| http | {{< X >}} | {{< X >}} | {{< X >}} | +| https | {{< X >}} | {{< X >}} | {{< X >}} | + + +
원하는 프레임워크가 목록에 없다면 저희에게 알려주세요! 간단한 양식을 작성하여 자세한 내용을 보내주세요.
+ +### 데이터 스토어 호환성 + + +**Datastore 추적은 다음을 제공합니다.** + +- 요청에서 응답까지의 시간 측정 +- 쿼리 정보(예: 보안 처리된(sanitized) 쿼리 문자열) +- 오류 및 스택 트레이스 캡처 + +##### Application Security 기능 노트 +- **Software Composition Analysis**는 모든 프레임워크에서 지원됩니다. +- **Threat Protection**는 HTTP 요청(인풋) 레이어에서도 작동하므로, 아래 표에 명시되지 않은 데이터베이스를 포함한 모든 데이터베이스에서 기본적으로 작동합니다. + + +| 프레임워크 | 버전 | Threat Detection이 지원되나요? | Threat Protection이 지원되나요? | Code Security? | +|--------------------------|-----------|-----------------------------|------------------------------|----------------------------------------------------| +| [@apollo/server][43] | `>=4` | {{< X >}} | {{< X >}} | | +| [apollo-server-core][44] | `>=3` | {{< X >}} | {{< X >}} | | +| [cassandra-driver][28] | `>=3` | {{< X >}} | {{< X >}} | | +| [couchbase][29] | `^2.4.2` | {{< X >}} | {{< X >}} | | +| [elasticsearch][30] | `>=10` | {{< X >}} | {{< X >}} | | +| [ioredis][31] | `>=2` | {{< X >}} | {{< X >}} | | +| [knex][32] | `>=0.8` | {{< X >}} | {{< X >}} | | +| [mariadb][5] | `>=3` | {{< X >}} | {{< X >}} | | +| [memcached][33] | `>=2.2` | {{< X >}} | {{< X >}} | | +| [mongodb-core][34] | `>=2` | {{< X >}} | {{< X >}} | {{< X >}} | +| [mysql][35] | `>=2` | {{< X >}} | {{< X >}} | {{< X >}} | +| [mysql2][36] | `>=1` | {{< X >}} | {{< X >}} | {{< X >}} | +| [oracledb][37] | `>=5` | {{< X >}} | {{< X >}} | | +| [pg][38] | `>=4` | {{< X >}} | {{< X >}} | {{< X >}} | +| [redis][39] | `>=0.12` | {{< X >}} | {{< X >}} | | +| [sharedb][40] | `>=1` | {{< X >}} | {{< X >}} | | +| [tedious][41] | `>=1` | {{< X >}} | {{< X >}} | | +| [sequelize][42] | `>=4` | {{< X >}} | {{< X >}} | {{< X >}} | + + +### 사용자 Authentication Frameworks 호환성 + +**User Authentication Framework 통합은 다음을 제공합니다.** + +- 사용자 ID를 포함한 사용자 로그인 이벤트 +- Account Takeover 탐지 기능은 사용자 로그인 이벤트를 모니터링합니다. + +| 프레임워크 | 최소 Framework 버전 | +|-----------------|---------------------------| +| passport-local | 1.0.0 | +| passport-http | 0.3.0 | + +[1]: /ko/tracing/trace_collection/compatibility/nodejs/ +[2]: /ko/agent/remote_config/#enabling-remote-configuration +[4]: https://github.com/nodejs/release#release-schedule +[5]: https://github.com/mariadb-corporation/mariadb-connector-nodejs +[28]: https://github.com/datastax/nodejs-driver +[29]: https://github.com/couchbase/couchnode +[30]: https://github.com/elastic/elasticsearch-js +[31]: https://github.com/luin/ioredis +[32]: https://knexjs.org +[33]: https://github.com/3rd-Eden/memcached +[34]: http://mongodb.github.io/node-mongodb-native/core +[35]: https://github.com/mysqljs/mysql +[36]: https://github.com/sidorares/node-mysql2 +[37]: https://oracle.github.io/node-oracledb/ +[38]: https://node-postgres.com +[39]: https://github.com/NodeRedis/node_redis +[40]: https://share.github.io/sharedb/ +[41]: http://tediousjs.github.io/tedious +[42]: https://github.com/sequelize/sequelize +[43]: https://github.com/apollographql/apollo-server +[44]: https://www.npmjs.com/package/apollo-server-core \ No newline at end of file diff --git a/content/ko/tests/test_impact_analysis/how_it_works.md b/content/ko/tests/test_impact_analysis/how_it_works.md new file mode 100644 index 0000000000000..5873be59bb3dc --- /dev/null +++ b/content/ko/tests/test_impact_analysis/how_it_works.md @@ -0,0 +1,74 @@ +--- +aliases: +- /ko/intelligent_test_runner/how_it_works +further_reading: +- link: https://www.datadoghq.com/blog/streamline-ci-testing-with-datadog-intelligent-test-runner/ + tag: 블로그 + text: Datadog Intelligent Test Runner를 통해 CI 테스트 간소화 +- link: https://www.datadoghq.com/blog/monitor-ci-pipelines/ + tag: 블로그 + text: Datadog으로 모든 CI 파이프라인 모니터링 +- link: /intelligent_test_runner + tag: 설명서 + text: Test Impact Analysis에 대해 알아보기 +- link: /tests + tag: 설명서 + text: 테스트 최적화에 대해 알아보기 +title: Datadog Test Impact Analysis 작동 방법 +--- + +## 개요 + +Test Impact Analysis는 Datadog의 테스트 영향 분석 솔루션입니다. 테스트 영향 분석 기술은 지난 수십 년 동안 많이 사용되어 온 기술입니다. 그러나 해당 기술은 대개 구현하기 어렵고 시간도 많이 걸립니다. Test Impact Analysis로 이러한 복잡한 과정을 간소화할 수 있도록 도와드립니다. + +테스트 영향 분석 기술은 각 테스트를 테스트가 사용하는 리포지토리의 코드 파일 집합에 매핑합니다(테스트별로 코드 검사). 본 분석의 목표는 코드 변경의 영향을 받지 않는 테스트를 건너뛰는 것입니다. 이를 통해 CI에서 테스트에 소요되는 시간을 직접 줄일 수 있습니다. + +극단적인 예로, README 파일의 오타만 변경하는 풀 요청이 있습니다. 해당 PR의 경우, 모든 테스트를 실행하는 것은 전혀 이득이 되지 않습니다. 오히려 테스트가 불완전하다면 CI가 실패하여 병합 전에 파이프라인을 여러 번 다시 시도해야 할 수도 있습니다. 이는 개발자와 CI 모두의 시간을 낭비하는 일입니다. Test Impact Analysis를 사용하면 README 파일을 변경하는 PR이 모든 테스트를 건너뛸 수 있습니다. + +## 차별화 요소 + +일부 테스트 선택 솔루션은 코드 검사 데이터에 의존하지 않고 기계 학습을 사용하여 이를 보완합니다. 본 시스템은 확률 방식으로 관련된 테스트를 추론하므로, 관련된 테스트를 놓쳐 기본 브랜치의 빌드 실패를 초래할 수 있습니다. 기계 학습 기반 기술은 일반적으로 제대로 작동하기까지 보다 오랜 기간의 데이터 수집이 필요합니다. Test Impact Analysis는 코드 검사의 기준이 수집되는 즉시 작동을 시작합니다. + +다른 테스트 솔루션도 코드 검사를 활용하여 테스트 영향 분석을 산출하지만, 실행할 테스트를 평가할 때 마지막 커밋 차이값만 고려합니다. 예를 들어, 병합을 허용하는데 최신 커밋의 CI 상태만 고려하는 GitHub의 풀 리퀘스트 문제가 있습니다. 결과적으로 모든 커밋을 CI를 통해 실행해야 하거나 실행해야 할 테스트를 건너뛸 위험이 있습니다. + +Test Impact Analysis는 [Test Optimization][1] 데이터와 함께 테스트별 코드 검사 정보를 활용하여 모든 관련 기존 커밋에서 이전 테스트를 검색합니다. Test Impact Analysis 설정은 대부분의 언어에서 원클릭으로 작동하며, 다른 방법보다 정확하고 정밀한 결과를 제공해 드립니다. + +## 테스트 선택 작동법 + +Test Impact Analysis를 활성화하면 테스트별(또는 프레임워크에 따라 스위트별) 코드 검사 데이터가 투명하게 수집되어 Datadog으로 전송됩니다. + +Datadog 백엔드는 이전 테스트 실행 데이터 검색에 해당 정보를 활용하여 특정 테스트를 건너뛸 수 있는지 결정합니다. Datadog에 검사 및 [추적된 파일][2]이 현재 커밋과 동일한 커밋에서 테스트를 통과한 기록이 있다면 해당 테스트를 건너뜁니다. 이는 코드 변경이 테스트에 영향을 미치지 않았다는 증거로 활용됩니다. + +{{< img src="continuous_integration/itr_test_selection_diagram.png" alt="Test Impact Analysis 테스트 선택 프로세스에서 테스트를 건너뛸 수 있는 이유를 설명하는 벤 다이어그램" style="width:80%;">}} + +Datadog 라이브러리는 소스에서 건너뛸 수 없음으로 표시된 테스트를 건너뛸 수 있는 테스트 목록에서 삭제합니다. 이후에 테스트를 실행하나 테스트 프레임워크가 건너뛸 수 있는 테스트 목록에 있는 테스트를 건너뛰도록 합니다. + +{{< img src="continuous_integration/itr_skipped_test_run.png" alt="Test Impact Analysis가 건너뛴 테스트" style="width:80%;">}} + +구체적인 예시를 살펴보겠습니다. + +{{< img src="continuous_integration/itr_example_3.png" alt="메인 브랜치 및 기능 브랜치에 여러 개의 커밋이 존재하는 풀 요청이 추적한 파일로 어떻게 다른 결과를 산출할 수 있는지 설명하는 다이어그램" style="width:80%;">}} + +위의 다이어그램은 `main`에서 분기되어 여러 개의 커밋이 존재하는 개발자 브랜치를 보여줍니다. 각 커밋에서 CI는 서로 다른 결과를 산출하는 두 가지 테스트(A와 B)를 실행 중입니다. + +- **커밋 1**은 두 테스트를 모두 실행했습니다. 본 커밋에는 추적된 파일에 영향을 미치는 변경 사항과 A와 B의 검사 파일이 모두 포함되어 있습니다. +- 다음과 같이 **커밋 2**가 두 테스트를 다시 실행했습니다. + - 해당 커밋이 테스트 A에 영향을 미치지는 않았지만(추적된 파일이나 검사한 파일에 변경 사항이 없음), 테스트 A를 통과한 기존 테스트 실행이 존재하지 않기 때문에 테스트 A를 실행해야 합니다. Test Impact Analysis는 테스트가 실행된 경우 통과 여부를 보장할 수 없으므로 이를 건너뛰지 않습니다. 이번에는 테스트가 통과되었으므로 이는 비정상적 테스트(Flaky Test)가 됩니다. + - 테스트 B의 경우 해당 테스트에 관해 기존에 실행 성공한 테스트가 존재하지 않고, 커밋 2가 영향을 미치는 파일을 변경하기 때문에 두 가지 모두 실행되었습니다. +- 추적된 파일이 변경되었으므로 **커밋 3**은 모든 테스트를 실행합니다. +- **커밋 4**는 다음 테스트를 모두 실행합니다. + - 모든 기준을 충족하는 기존 테스트 실행이 존재하지 않기 때문에 테스트 A를 실행합니다. 커밋 1 및 3의 테스트 실행이 실패했기 때문에 이를 사용할 수 없고, 커밋 2의 테스트 실행은 커밋 2부터 커밋 4까지 추적한 파일이 변경되었기 때문에 사용할 수 없습니다. + - 모든 기준을 충족하는 기존 테스트 실행이 존재하지 않기 때문에 테스트 B를 실행합니다. 커밋 1 및 2의 테스트 실행이 실패했기 때문에 이를 사용할 수 없고, 커밋 2과 4 사이에 테스트 B 검사 파일이 변경되었으므로 커밋 3 테스트 실행은 사용할 수 없습니다. +- **커밋 5**는 다음 테스트 하나를 건너뛸 수 있었습니다. + - 커밋 4에서의 테스트 실행 덕분에 테스트 A를 건너뛸 수 있습니다. 본 테스트 실행의 경우, 커밋 4와 5 사이에 추적된 파일이 변경되지 않았고, 테스트 A의 영향을 받는 파일도 없으며, 테스트 A가 커밋 4에서 통과되었기 때문에 필요한 모든 기준을 충족합니다. 따라서, 테스트가 실행되면 커밋 4에서와 동일한 코드 경로를 실행하고 CI에 새로운 정보를 제공하지 않습니다. 이 경우 테스트 A를 건너뛰면 두 가지 이점이 있습니다. 테스트를 실행하지 않음으로써 성능/비용 측면에서 이점이 있습니다. 또한 테스트 A가 비정상적인 테스트이기에 CI의 안정성이 높아집니다. + - 커밋 5에서 검사 파일이 변경되었기 때문에 테스트 B를 실행해야 했습니다. +- **커밋 6**은 다음 두 가지 테스트를 모두 건너뛸 수 있었습니다. + - 커밋 4에서의 테스트 실행 덕분에 테스트 A를 건너뛸 수 있습니다. + - 커밋 5에서의 테스트 실행 덕분에 테스트 B를 건너뛸 수 있습니다. + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/tests/ +[2]: /ko/tests/test_impact_analysis/#tracked-files \ No newline at end of file diff --git a/content/ko/tracing/guide/tutorial-enable-java-host.md b/content/ko/tracing/guide/tutorial-enable-java-host.md new file mode 100644 index 0000000000000..cad586002ff7e --- /dev/null +++ b/content/ko/tracing/guide/tutorial-enable-java-host.md @@ -0,0 +1,450 @@ +--- +further_reading: +- link: /tracing/trace_collection/library_config/java/ + tag: 설명서 + text: 추가 추적 라이브러리 설정 옵션 +- link: /tracing/trace_collection/dd_libraries/java/ + tag: 설명서 + text: 상세한 추적 라이브러리 설정 지침 +- link: /tracing/trace_collection/compatibility/java/ + tag: 설명서 + text: 자동 계측을 위해 지원되는 자바(Java) 프레임워크 +- link: /tracing/trace_collection/custom_instrumentation/java/ + tag: 설명서 + text: 수동으로 트레이스와 스팬 설정하기 +- link: https://github.com/DataDog/dd-trace-java + tag: 소스 코드 + text: 추적 라이브러리 오픈 소스 리포지토리 +title: 튜토리얼 - Datadog Agent와 동일한 호스트에서 Java 애플리케이션 추적 활성화하기 +--- + +## 개요 + +본 튜토리얼에서는 호스트에 설치된 샘플 Java 애플리케이션에서 추적을 활성화하는 단계를 안내합니다. 이 시나리오에서는 Datadog Agent를 애플리케이션과 동일한 호스트에 설치합니다. + +컨테이너 또는 클라우드 인프라의 애플리케이션, 컨테이너의 Agent, 다른 언어로 작성된 애플리케이션을 포함하는 기타 시나리오의 경우, 다른 [추적 활성화 튜토리얼][1]을 참조하세요. + +자바(Java)에 대한 일반적인 종합 추적 설정 설명서의 경우 [자바 애플리케이션 추적][2]을 참조하세요. + +### 사전 필수 조건 + +- Datadog 계정과 [조직 API 키][3] +- Git +- Curl +- sudo를 사용할 수 있는 루트 권한이 있는 물리 또는 가상 Linux 호스트 +- 호스트에 JRE가 아닌 Java 11 호환 JDK가 필요합니다. 본 튜토리얼에서는 동일한 머신에서 빌드 및 배포합니다. + +## 에이전트 설치 + +시스템에 Datadog 에이전트를 설치하지 않은 경우, [**통합 > 에이전트**][5]로 이동하여 운영체제를 선택합니다. 예를 들어, 대부분의 Linux 플랫폼은 다음 스크립트를 실행하여 ``을 [Datadog API 키][3]로 대체하여 에이전트를 설치합니다. + +{{< code-block lang="shell" >}} +DD_AGENT_MAJOR_VERSION=7 DD_API_KEY= DD_SITE="datadoghq.com" bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)" +{{< /code-block >}} + +`datadoghq.com` 이외의 Datadog 사이트로 데이터를 전송하려면 `DD_SITE` 환경변수를 [Datadog 사이트][6]로 교체합니다. + +[**이벤트 > 탐색기**][8]로 이동하여 에이전트가 실행 중이며 Datadog로 데이터를 전송하는지 확인합니다. 옵션으로 `Datadog` 소스 패싯으로 필터링하여 호스트의 에이전트 설치를 확인하는 이벤트를 찾습니다. + +{{< img src="tracing/guide/tutorials/tutorial-python-host-agent-verify.png" alt="에이전트가 호스트에 설치되었음을 나타내는 Datadog 메시지가 표시된 이벤트 탐색기" style="width:70%;" >}} + +
몇 분이 지난 후에도 Datadog의 인프라스트럭처 > 호스트 맵 하단에 호스트가 표시되지 않는다면, 정확한 조직 API키를 사용했는지 확인하세요. 해당 키는 조직 설정 > API 키에서 사용할 수 있습니다.
+ + +## 샘플 Java 애플리케이션 설치 및 실행 + +다음으로 추적할 샘플 애플리케이션을 설치합니다. 본 튜토리얼의 코드 샘플은 [github.com/DataDog/apm-tutorial-java-host][9]에서 확인할 수 있습니다. 다음을 실행하여 git 리포지토리를 복제합니다. + +{{< code-block lang="shell" >}} +git clone https://github.com/DataDog/apm-tutorial-java-host.git +{{< /code-block >}} + +Maven 또는 Gradle 중 더 편하게 사용할 수 있는 것으로 샘플 앱을 빌드합니다. `apm-tutorial-java-host` 내의 `notes` 디렉터리로 이동하여 다음 중 하나를 실행합니다. + +{{< tabs >}} + +{{% tab "Maven" %}} + +```sh +./mvnw clean package +``` + +{{% /tab %}} + +{{% tab "Gradle" %}} + +```sh +./gradlew clean bootJar +``` + +이는 Spring Boot Jar 플러그인으로 Java 애플리케이션을 실행하는 데 필요한 모든 파일이 포함된 단일 Jar 파일을 생성합니다. + +{{% /tab %}} + +{{< /tabs >}} + +다음을 실행하여 애플리케이션을 시작합니다 + +{{< tabs >}} + +{{% tab "Maven" %}} + +```sh +java -jar target/notes-0.0.1-SNAPSHOT.jar +``` + +{{% /tab %}} + +{{% tab "Gradle" %}} + +```sh +java -jar build/libs/notes-0.0.1-SNAPSHOT.jar +``` + +{{% /tab %}} + +{{< /tabs >}} + +또는 운영 체제가 지원하는 경우 `scripts` 디렉터리에 제공된 다음 스크립트를 사용하여 애플리케이션을 빌드 및 실행할 수 있습니다. + +{{< tabs >}} + +{{% tab "Maven" %}} + +```sh +sh ./scripts/mvn_run.sh +``` + +{{% /tab %}} + +{{% tab "Gradle" %}} + +```sh +sh ./scripts/gradle_run.sh +``` + +{{% /tab %}} + +{{< /tabs >}} + +샘플 `notes_app` 애플리케이션은 기본 REST API로 메모리 내부 데이터베이스에 데이터를 보관합니다. 다음에 따라 다른 터미널을 열고 `curl`로 몇몇 API 요청을 전송합니다. + +`curl localhost:8080/notes` +: 아직 데이터베이스에 아무것도 없으므로 `[]`를 반환합니다. + +`curl -X POST 'localhost:8080/notes?desc=hello'` +: 설명 `hello`와 ID 값 `1`이 포함된 메모를 추가합니다. `{"id":1,"description":"hello"}`를 반환합니다. + +`curl localhost:8080/notes/1` +: `id` 값이 `1`인 메모를 반환합니다: `{"id":1,"description":"hello"}` + +`curl -X POST 'localhost:8080/notes?desc=otherNote'` +: 설명 `otherNote`와 ID 값 `2`이 포함된 메모를 추가합니다. `{"id":2,"description":"otherNote"}`를 반환합니다. + +`curl localhost:8080/notes` +: 데이터베이스의 내용을 반환합니다.`[{"id":1,"description":"hello"},{"id";2,"description":"otherNote"}]` + +API 호출을 더 실행하여 애플리케이션이 작동하는지 확인합니다. 해당 작업을 완료했으면 Ctrl+C를 입력하여 애플리케이션을 중지합니다. + +## Datadog 추적 설치 + +그런 다음 Java 추적 라이브러리(Java Agent)를 다운로드합니다. `apm-tutorial-java-host` 디렉터리에서 다음을 실행합니다. + +{{< code-block lang="sh" >}} +curl -Lo dd-java-agent.jar 'https://dtdg.co/latest-java-tracer' +{{< /code-block >}} + +운영 체제가 Curl을 지원하지 않는 경우 `'https://dtdg.co/latest-java-tracer' `로 직접 이동하여 `dd-java-agent.jar` 파일을 다운로드합니다. + +## Java 애플리케이션을 자동 계측으로 실행합니다. + +추적 생성 및 수집을 시작하려면, 추가 플래그를 사용해 샘플 애플리케이션을 재시작하여 Datadog에 추적 데이터가 전송되도록 합니다. + +
이 샘플 명령의 플래그, 특히 샘플 속도는 이 튜토리얼이 적용되지 않은 환경에는 적합하지 않을 수 있습니다. 실제 환경에서 어떤 플래그를 사용해야 하는지 살펴보려면 추적 설정을 참고하세요
. + + +{{< tabs >}} + +{{% tab "Maven" %}} + +`notes` 디렉터리에서 다음을 실행합니다. + +```sh +java -javaagent:../dd-java-agent.jar -Ddd.trace.sample.rate=1 -Ddd.service=notes -Ddd.env=dev -jar -Ddd.version=0.0.1 target/notes-0.0.1-SNAPSHOT.jar +``` + +또는 제공된 스크립트를 사용합니다. + +```sh +sh ./scripts/mvn_instrumented_run.sh +``` + +{{% /tab %}} + +{{% tab "Gradle" %}} + +`notes` 디렉토리에서 다음을 실행합니다. + +```sh +java -javaagent:../dd-java-agent.jar -Ddd.trace.sample.rate=1 -Ddd.service=notes -Ddd.env=dev -jar -Ddd.version=0.0.1 build/libs/notes-0.0.1-SNAPSHOT.jar +``` + +또는 제공된 스크립트를 사용합니다. + +```sh +sh ./scripts/gradle_instrumented_run.sh +``` + +{{% /tab %}} + +{{< /tabs >}} + + +`curl`을 다시 사용해 애플리케이션에 요청 전송: + +`curl localhost:8080/notes` +: `[]` + +`curl -X POST 'localhost:8080/notes?desc=hello'` +: `{"id":1,"description":"hello"}` + +`curl localhost:8080/notes/1` +: `{"id":1,"description":"hello"}` + +`curl localhost:8080/notes` +: `[{"id":1,"description":"hello"}]` + +잠시 기다린 다음 Datadog UI를 살펴보세요. [**APM > 트레이스**][11]로 이동합니다. 트레이스 목록은 다음과 같은 콘텐츠를 표시합니다. + +{{< img src="tracing/guide/tutorials/tutorial-java-host-traces_cropped.png" alt="호스트에서 들어오는 트레이스 데이터를 표시하는 트레이스 뷰" style="width:100%;" >}} + +`h2`는 이 튜토리얼에 대해 내장된 인메모리 데이터베이스이며, `notes`는 Spring Boot 애플리케이션입니다. 추적 목록에는 모든 스팬, 시작 시점, 스팬과 함께 추적된 리소스, 그리고 소요 시간이 표시됩니다. + +트레이스를 확인할 수 없는 경우, 트레이스 검색 필드의 모든 필터를 지웁니다(간혹 사용하지 않는 `ENV` 등 의 환경 변수로 필터링되는 경우가 있습니다.). + +### 트레이스 검사 + +트레이스 페이지에서 `POST /notes` 트레이스를 클릭하면 각 스팬 소요 시간 및 스팬 완료 전 발생한 기타 스팬을 표시하는 불꽃 그래프를 확인할 수 있습니다. 그래프 상단의 막대는 이전 화면에서 선택한 스팬입니다(이 경우 메모 애플리케이션에서 초기 입력 요소). + +바의 너비는 완료되는 데 소요된 시간을 나타냅니다. 낮은 깊이의 막대는 높은 깊이의 막대 수명 동안 완료된 스팬을 나타냅니다. + +`POST` 트레이스의 불꽃 그래프는 이와 비슷한 형태입니다. + +{{< img src="tracing/guide/tutorials/tutorial-java-host-post-flame.png" alt="POST 트레이스의 플레임 그래프." style="width:100%;" >}} + +`GET /notes` 트레이스는 이와 비슷한 형태입니다. + +{{< img src="tracing/guide/tutorials/tutorial-java-host-get-flame.png" alt="GET 트레이스의 플레임 그래프." style="width:100%;" >}} + + +### 추적 설정 + +Java 추적 라이브러리는 Java에 내장된 Agent 및 모니터링 지원을 사용합니다. 플래그 `-javaagent:../dd-java-agent.jar`는 JVM에 Java 추적 라이브러리의 위치를 ​​알려 Java Agent로 실행할 수 있도록 합니다. Java Agent에 관한 자세한 내용은 [https://www.baeldung.com/java-instrumentation][7]에서 확인하세요. + +시작 명령은 Java Agent를 활성화하는 `javaagent` 플래그 외에도 Datadog 내에서 애플리케이션을 고유 식별하는 세 가지 [통합 서비스 태깅][10] 설정을 지정합니다. 모니터링하는 모든 애플리케이션에 항상 `env`, `service`, `version` 태그를 지정합니다. + +마지막으로, `dd.trace.sample.rate` 플래그는 이 애플리케이션의 샘플링 속도를 설정합니다. 시작 명령은 값을 `1`로 설정합니다. 즉, `notes` 서비스의 모든 요청 100%가 분석 및 표시를 위해 Datadog 백엔드로 전송됩니다. 저용량 테스트 애플리케이션에는 적합하나 프로덕션 환경이나 고용량 환경에서는 데이터 양이 매우 많아질 수 있어 권장하지 않습니다. 대신 일부 요청을 샘플링할 수 있습니다. 0에서 1 사이의 값을 선택하세요. 예를 들어, `-Ddd.trace.sample.rate=0.1`는 요청의 10%에 대한 트레이스를 Datadog으로 전송합니다. 관련 정보는 [추적 설정 지정][14] 및 [샘플링 메커니즘][15]에서 자세히 살펴보세요. + +명령에서 해당 플래그가 `-jar` 플래그 _앞에_ 나타나는 것을 확인할 수 있습니다. 이는 이 플래그가 애플리케이션이 아닌 Java Virtual Machine의 파라미터이기 때문입니다. 애플리케이션에 Java Agent를 추가할 때 플래그를 올바른 위치에 지정해야 합니다. + + +## Java 애플리케이션에 수동 계측 추가 + +자동 계측은 편리하지만 때때로 더욱 세분화된 스팬을 원할 수 있습니다. Datadog의 Java DD 트레이스 API를 사용하면 주석이나 코드로 코드 내 스팬을 지정할 수 있습니다. + +다음 단계는 코드에 주석을 추가하여 일부 샘플 메서드를 추적하는 방법을 안내합니다. + +1. `/notes/src/main/java/com/datadog/example/notes/NotesHelper.java`를 엽니다. 이 예제에는 주석 처리된 코드가 포함되어 있으며, 코드에서 커스텀 추적을 설정하는 다양한 방법을 보여줍니다. + +2. 수동 추적을 지원하기 위해 라이브러리를 가져오는 줄의 주석 처리를 제거합니다. + + ```java + import datadog.trace.api.Trace; + import datadog.trace.api.DDTags; + import io.opentracing.Scope; + import io.opentracing.Span; + import io.opentracing.Tracer; + import io.opentracing.tag.Tags; + import io.opentracing.util.GlobalTracer; + import java.io.PrintWriter; + import java.io.StringWriter + ``` + +3. 두 개의 공개 프로세스를 수동으로 추적하는 줄의 주석 처리를 제거합니다. 이는 트레이스에서 `@Trace` 어노테이션을 사용하여 `operationName` 및 `resourceName`을 지정하는 방법을 보여줍니다. + ```java + @Trace(operationName = "traceMethod1", resourceName = "NotesHelper.doLongRunningProcess") + // ... + @Trace(operationName = "traceMethod2", resourceName = "NotesHelper.anotherProcess") + ``` + +4. 애플리케이션의 특정 코드 블록에 대해 별도의 스팬을 생성할 수도 있습니다. 스팬 내에 서비스 및 리소스 이름 태그와 오류 처리 태그를 추가합니다. 이러한 태그를 추가하면 Datadog 시각화에서 스팬과 메트릭을 보여주는 플레임 그래프가 생성됩니다. 프라이빗 메서드를 수동으로 추적하는 줄의 주석 처리를 제거합니다. + + ```java + Tracer tracer = GlobalTracer.get(); + // Tags can be set when creating the span + Span span = tracer.buildSpan("manualSpan1") + .withTag(DDTags.SERVICE_NAME, "NotesHelper") + .withTag(DDTags.RESOURCE_NAME, "privateMethod1") + .start(); + try (Scope scope = tracer.activateSpan(span)) { + // Tags can also be set after creation + span.setTag("postCreationTag", 1); + Thread.sleep(30); + Log.info("Hello from the custom privateMethod1"); + ``` + 그리고 오류에 태그를 설정하는 줄도 있습니다. + ```java + } catch (Exception e) { + // Set error on span + span.setTag(Tags.ERROR, true); + span.setTag(DDTags.ERROR_MSG, e.getMessage()); + span.setTag(DDTags.ERROR_TYPE, e.getClass().getName()); + + final StringWriter errorString = new StringWriter(); + e.printStackTrace(new PrintWriter(errorString)); + span.setTag(DDTags.ERROR_STACK, errorString.toString()); + Log.info(errorString.toString()); + } finally { + span.finish(); + } + ``` + +5. 빌드 스크립트 구성을 업데이트하고 애플리케이션을 빌드합니다. +{{< tabs >}} + +{{% tab "Maven" %}} + +a. `notes/pom.xml`를 열고 수동 추적 종속성을 구성하는 줄의 코멘트를 제거합니다. `dd-trace-api` 라이브러리는 `@Trace` 주석에 사용되며, `opentracing-util` 및 `opentracing-api`는 수동 스팬 생성에 사용됩니다. + +b. 다음을 실행합니다. + + ```sh + ./mvnw clean package + + java -javaagent:../dd-java-agent.jar -Ddd.trace.sample.rate=1 -Ddd.service=notes -Ddd.env=dev -jar -Ddd.version=0.0.1 target/notes-0.0.1-SNAPSHOT.jar + ``` + + 또는 다음 스크립트를 사용합니다. + + ```sh + sh ./scripts/mvn_instrumented_run.sh + ``` + +{{% /tab %}} + +{{% tab "Gradle" %}} + +a. `notes/build.gradle`를 열고 수동 추적을 위한 종속성을 구성하는 줄의 코멘트를 제거합니다. `dd-trace-api` 라이브러리는 `@Trace` 주석에 사용되며, `opentracing-util` 및 `opentracing-api`는 수동 스팬 생성에 사용됩니다. + +b. 다음을 실행합니다. + ```sh + ./gradlew clean bootJar + + java -javaagent:../dd-java-agent.jar -Ddd.trace.sample.rate=1 -Ddd.service=notes -Ddd.env=dev -jar -Ddd.version=0.0.1 build/libs/notes-0.0.1-SNAPSHOT.jar + ``` + + 또는 다음 스크립트를 사용합니다. + + ```sh + sh ./scripts/gradle_instrumented_run.sh + ``` + +{{% /tab %}} + +{{< /tabs >}} + +6. 일부 HTTP 요청, 특히 `GET` 요청을 다시 전송합니다. +7. 트레이스 탐색기에서 새로운 `GET` 요청 중 하나를 클릭한 다음 이와 같은 불꽃 그래프를 확인하세요. + + {{< img src="tracing/guide/tutorials/tutorial-java-host-custom-flame.png" alt="커스텀 계측을 활용한 GET 트레이스의 플레임 그래프." style="width:100%;" >}} + + `getAll` 함수가 커스텀 추적을 포함하므로 스택 트레이스(stack trace)에서 상위 수준의 상세 정보를 확인할 수 있습니다. + + 수동 스팬(span)을 생성한 `privateMethod`는 다른 호출과 별도의 블록으로 표시되며 다른 색상으로 강조 표시됩니다.`@Trace` 어노테이션을 사용한 다른 메서드는 `GET` 요청(`notes` 애플리케이션)과 동일한 서비스와 색상으로 표시됩니다. 커스텀 계측은 코드의 핵심 부분을 강조 표시하고 모니터링해야 할 때 유용합니다. + +자세한 정보는 [커스텀 계측][12]을 참조하세요. + +## 두 번째 애플리케이션을 추가해 분산된 트레이스를 확인하세요. + +단일 애플리케이션 추적은 좋은 시작이지만 추적의 진정한 가치는 서비스를 통한 요청의 흐름을 확인하는 데 있습니다. 이것을 _분산 추적_이라고 부릅니다. + +샘플 프로젝트에 `calendar`라는 두 번째 애플리케이션이 포함되어 있습니다. 이 애플리케이션은 호출 시 임의의 날짜를 반환합니다. 메모 애플리케이션의 `POST` 엔드포인트는 `add_date`라는 두 번째 쿼리 파라미터를 포함합니다. `y`로 설정되어 있는 경우 메모는 캘린더 애플리케이션을 호출하여 메모에 추가할 날짜를 가져옵니다. + +1. 샘플 리포지토리의 `/calendar` 디렉터리로 이동하여 캘린더 앱을 빌드 및 실행합니다. +{{< tabs >}} + +{{% tab "Maven" %}} + +실행: + +```sh +./mvnw clean package + +java -javaagent:../dd-java-agent.jar -Ddd.trace.sample.rate=1 -Ddd.service=calendar -Ddd.env=dev -jar -Ddd.version=0.0.1 target/calendar-0.0.1-SNAPSHOT.jar +``` + +또는 다음 스크립트를 사용합니다. + +```sh +sh ./scripts/mvn_instrumented_run.sh +``` + +{{% /tab %}} + +{{% tab "Gradle" %}} + +실행: +```sh +./gradlew bootJar + +java -javaagent:../dd-java-agent.jar -Ddd.trace.sample.rate=1 -Ddd.service=calendar -Ddd.env=dev -jar -Ddd.version=0.0.1 build/libs/calendar-0.0.1-SNAPSHOT.jar +``` + +또는 다음 스크립트를 사용합니다. + +```sh +sh ./scripts/gradle_instrumented_run.sh +``` + +{{% /tab %}} + +{{< /tabs >}} + + +2. `add_date` 파라미터를 사용하여 POST 요청을 보냅니다. + +`curl -X POST 'localhost:8080/notes?desc=hello_again&add_date=y'` +: `{"id":1,"description":"hello_again with date 2022-11-06"}` + + +3. 트레이스 탐색기에서 이 최신 `notes` 트레이스를 클릭해 두 서비스 간 분산된 트레이스를 확인합니다. + + {{< img src="tracing/guide/tutorials/tutorial-java-host-distributed.png" alt="분산 트레이스의 플레임 그래프." style="width:100%;" >}} + +`notes` 애플리케이션에서는 아무것도 변경하지 않았습니다. Datadog은 `notes`에서 `calendar`로의 HTTP 호출에 사용되는 `okHttp`라이브러리와 `notes` 및 `calendar`에서 HTTP 요청을 수신하는 데 사용되는 Jetty 라이브러리를 모두 자동으로 계측합니다. 이를 통해 트레이스 정보를 한 애플리케이션에서 다른 애플리케이션으로 전달하여 분산 트레이스를 캡처할 수 있습니다. + + +## 트러블슈팅 + +예상대로 트레이스를 수신하지 않으면 Java 트레이서의 디버그 모드를 설정합니다. 자세한 내용은 [디버그 모드 활성화][13]에서 확인하세요. + + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/tracing/guide/#enabling-tracing-tutorials +[2]: /ko/tracing/trace_collection/dd_libraries/java/ +[3]: /ko/account_management/api-app-keys/ +[4]: /ko/tracing/trace_collection/compatibility/java/ +[5]: https://app.datadoghq.com/account/settings/agent/latest?platform=overview +[6]: /ko/getting_started/site/ +[7]: https://www.baeldung.com/java-instrumentation +[8]: https://app.datadoghq.com/event/explorer +[9]: https://github.com/DataDog/apm-tutorial-java-host +[10]: /ko/getting_started/tagging/unified_service_tagging/#non-containerized-environment +[11]: https://app.datadoghq.com/apm/traces +[12]: /ko/tracing/trace_collection/custom_instrumentation/java/ +[13]: /ko/tracing/troubleshooting/tracer_debug_logs/#enable-debug-mode +[14]: /ko/tracing/trace_collection/library_config/java/ +[15]: /ko/tracing/trace_pipeline/ingestion_mechanisms/?tab=java \ No newline at end of file