diff --git a/content/en/real_user_monitoring/application_monitoring/browser/advanced_configuration.md b/content/en/real_user_monitoring/application_monitoring/browser/advanced_configuration.md index 211c191bafc15..dd9e0e3b65879 100644 --- a/content/en/real_user_monitoring/application_monitoring/browser/advanced_configuration.md +++ b/content/en/real_user_monitoring/application_monitoring/browser/advanced_configuration.md @@ -57,7 +57,8 @@ Starting with [version 2.17.0][3], you can add view names and assign them to a d ``` {{% /tab %}} - {{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -70,7 +71,8 @@ Starting with [version 2.17.0][3], you can add view names and assign them to a d ``` {{% /tab %}} - {{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && @@ -112,7 +114,8 @@ Starting with [version 2.17.0][3], you can add view names and assign them to a d ``` {{% /tab %}} - {{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -128,7 +131,8 @@ Starting with [version 2.17.0][3], you can add view names and assign them to a d ``` {{% /tab %}} - {{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.startView({ @@ -163,6 +167,7 @@ datadogRum.startView({ {{% /tab %}} {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { window.DD_RUM.startView({ @@ -176,6 +181,7 @@ window.DD_RUM.onReady(function() { {{% /tab %}} {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.startView({ name: 'checkout', @@ -199,8 +205,9 @@ window.DD_RUM && window.DD_RUM.startView({ datadogRum.startView('checkout') ``` - {{% /tab %}} - {{% tab "CDN async" %}} + {{% /tab %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -208,8 +215,9 @@ window.DD_RUM && window.DD_RUM.startView({ }) ``` - {{% /tab %}} - {{% tab "CDN sync" %}} + {{% /tab %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.startView('checkout') @@ -280,7 +288,8 @@ To override default RUM view names so that they are aligned with how you've defi ``` {{% /tab %}} - {{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript import { matchRoutes, useLocation } from 'react-router-dom'; @@ -328,7 +337,8 @@ To override default RUM view names so that they are aligned with how you've defi ``` {{% /tab %}} - {{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript import { matchRoutes, useLocation } from 'react-router-dom'; @@ -394,7 +404,8 @@ datadogRum.setViewName('Checkout'); ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -408,7 +419,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.setViewName(''); @@ -476,7 +488,8 @@ datadogRum.init({ ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -495,7 +508,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && @@ -544,7 +558,8 @@ datadogRum.init({ ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -560,7 +575,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && @@ -633,7 +649,8 @@ datadogRum.init({ ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -651,7 +668,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && @@ -683,7 +701,7 @@ Adding user information to your RUM sessions helps you: {{< img src="real_user_monitoring/browser/advanced_configuration/user-api.png" alt="User API in RUM UI" >}} {{< tabs >}} -{{% tab "6.4.0 and above" %}} +{{% tab "v6.4.0 y posterior" %}} The following attributes are available: @@ -694,7 +712,7 @@ The following attributes are available: | `usr.email` | String | No | User email, displayed in the RUM UI if the user name is not present. It is also used to fetch Gravatars. | {{% /tab %}} -{{% tab "Before 6.4.0" %}} +{{% tab "Anterior a v6.4.0" %}} The below attributes are optional but Datadog strongly recommends providing at least one of them. For example, you should set the user ID on your sessions to see relevant data on some default RUM dashboards, which rely on `usr.id` as part of the query. @@ -731,7 +749,8 @@ datadogRum.setUser({ ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -746,7 +765,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.setUser({ @@ -773,7 +793,8 @@ datadogRum.getUser() ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -782,7 +803,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.getUser() @@ -803,7 +825,8 @@ datadogRum.setUserProperty('name', 'John Doe') ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -812,7 +835,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.setUserProperty('name', 'John Doe') @@ -833,7 +857,8 @@ datadogRum.removeUserProperty('name') ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -842,7 +867,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.removeUserProperty('name') @@ -863,7 +889,8 @@ datadogRum.clearUser() ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -872,7 +899,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.clearUser() @@ -908,7 +936,8 @@ datadogRum.setAccount({ ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -921,7 +950,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.setAccount({ @@ -946,7 +976,8 @@ datadogRum.getAccount() ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -955,7 +986,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.getAccount() @@ -976,7 +1008,8 @@ datadogRum.setAccountProperty('name', 'My Company Name') ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -985,7 +1018,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.setAccountProperty('name', 'My Company Name') @@ -1006,7 +1040,8 @@ datadogRum.removeAccountProperty('name') ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1015,7 +1050,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.removeAccountProperty('name') @@ -1036,7 +1072,8 @@ datadogRum.clearAccount() ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1045,7 +1082,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.clearAccount() @@ -1075,7 +1113,8 @@ datadogRum.init({ ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1089,7 +1128,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && @@ -1141,7 +1181,8 @@ acceptCookieBannerButton.addEventListener('click', function() { ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1159,7 +1200,8 @@ acceptCookieBannerButton.addEventListener('click', () => { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.init({ @@ -1203,7 +1245,8 @@ datadogRum.setViewContextProperty('activity', { ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1220,7 +1263,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.setViewContextProperty('', ''); @@ -1253,7 +1297,8 @@ datadogRum.setViewContext({ ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1319,7 +1364,8 @@ datadogRum.setGlobalContextProperty('activity', { ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1336,7 +1382,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript window.DD_RUM && window.DD_RUM.setGlobalContextProperty('', ''); @@ -1459,7 +1506,8 @@ datadogRum.clearGlobalContext(); ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1491,7 +1539,8 @@ const context = datadogRum.getGlobalContext(); ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript window.DD_RUM.onReady(function() { @@ -1604,7 +1653,6 @@ In the `beforeSend` property, you can override the service and version propertie {{< tabs >}} {{% tab "NPM" %}} - ```javascript import { datadogRum } from '@datadog/browser-rum'; @@ -1627,7 +1675,8 @@ datadogRum.init({ ``` {{% /tab %}} -{{% tab "CDN async" %}} + {{% tab "CDN async" %}} + ```javascript const SERVICE_REGEX = /some-pathname\/(?\w+)\/(?\w+)\//; @@ -1651,7 +1700,8 @@ window.DD_RUM.onReady(function() { ``` {{% /tab %}} -{{% tab "CDN sync" %}} + {{% tab "CDN sync" %}} + ```javascript const SERVICE_REGEX = /some-pathname\/(?\w+)\/(?\w+)\//; diff --git a/content/es/integrations/guide/azure-portal.md b/content/es/integrations/guide/azure-portal.md new file mode 100644 index 0000000000000..8d68cfe05ee78 --- /dev/null +++ b/content/es/integrations/guide/azure-portal.md @@ -0,0 +1,323 @@ +--- +further_reading: +- link: /integrations/azure/ + tag: Documentación + text: Integración de Azure +- link: https://www.datadoghq.com/blog/azure-datadog-partnership + tag: Blog + text: La asociación con Microsoft integra Datadog de forma nativa en el portal de + Azure +- link: https://www.datadoghq.com/blog/monitor-enterprise-azure-environments-with-datadog/ + tag: Blog + text: Habilita la monitorización de entornos de Azure a escala empresarial en minutos + con Datadog +title: Gestión de la integración nativa de Azure +--- + +
+ 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. + +Con el recurso de Datadog, puedes gestionar lo siguiente dentro de la suscripción de Azure asociada: +- Ver o modificar el contexto del recurso de Datadog para incluir las suscripciones que se monitorizarán +- Configurar la recopilación de métricas de Azure y logs de la plataforma +- Verificar los recursos de Azure que envían métricas y logs +- Ver las claves de API y configurar la clave predeterminada para los despliegues del Agent del recurso de Datadog +- Desplegar el Agent de la máquina virtual de Datadog en tus máquinas virtuales de Azure y consultar los detalles sobre los Agents en ejecución +- Desplegar la extensión .NET de Datadog en tus aplicaciones web de Azure y consultar los detalles sobre las extensiones instaladas +- Volver a configurar el inicio de sesión único +- Cambiar el plan de facturación para tu organización de Datadog (solo para Azure Marketplace) +- Habilitar o deshabilitar la integración de Azure +- Eliminar el recurso de Datadog + +En esta página se describe la experiencia del portal de Azure. Si prefieres utilizar la CLI, consulta [CLI de Azure para Datadog][2]. + +## Información general + +Selecciona **Overview** en la barra lateral izquierda para ver la información de tu recurso de Datadog. + +{{< img src="integrations/guide/azure_portal/resource-overview.png" alt="El portal de Azure con Overview resaltado en la barra de navegación izquierda" responsive="true" style="width:100%;">}} + +### Esenciales + +La página de información general muestra información esencial sobre tu recurso de Datadog, incluidos el nombre del grupo de recursos, la ubicación (región), las suscripciones, las etiquetas (tags), el enlace de la organización de Datadog, el estado, el plan de precios y el periodo de facturación. + +**Nota**: El enlace de la organización de Datadog es un enlace SAML si SSO está habilitado. Si la organización de Datadog se creó con Azure Marketplace, establece una contraseña la primera vez que uses este enlace. + +### Enlaces + +La página de información general contiene enlaces para ver dashboards, logs y mapas de host de Datadog. + +### Resumen de recursos + +La página de información general ofrece una tabla de resumen con los recursos que envían logs y métricas a Datadog. Esta tabla incluye las siguientes columnas: + +| Columna | Descripción | +|--------------------|---------------------------------------------------------------------------| +| Resource type | El tipo de recurso de Azure | +| Total resources | El recuento de todos los recursos para el tipo de recurso | +| Logs to Datadog | El recuento de recursos que envían logs a Datadog a través de la integración | +| Metrics to Datadog | El recuento de recursos que envían métricas a Datadog a través de la integración | + +### Deshabilitar + +Para dejar de enviar logs y métricas de Azure a Datadog, selecciona **Disable** en la página de información general y luego haz clic en **OK**. + +{{< img src="integrations/guide/azure_portal/disable.png" alt="La página de recursos de Datadog dentro del portal de Azure con Overview seleccionado en la barra de navegación izquierda, la pestaña Disable resaltada y el botón OK resaltado" responsive="true" style="width:100%;">}} + +**Nota**: Al deshabilitar el recurso de Datadog, se detiene el envío de métricas y logs de la plataforma a Datadog para las suscripciones asociadas. Los recursos de las suscripciones que envían datos directamente a Datadog a través del Agent o la extensión no se ven afectados. + +### Habilitar + +Para comenzar a enviar logs y métricas desde Azure a Datadog, selecciona **Enable** en la página de información general y luego haz clic en **OK**. Se recuperará y habilitará cualquier configuración previa de logs y métricas. + +{{< img src="integrations/guide/azure_portal/enable.png" alt="La página de recursos de Datadog dentro del portal de Azure, con Overview seleccionado en la barra de navegación izquierda, la pestaña Enable resaltada y el botón OK resaltado" responsive="true" style="width:100%;">}} + +### Borrar + +Para borrar el recurso de Datadog, selecciona **Delete** en la página de información general. Escribe `yes` para confirmar la eliminación y haz clic en **Delete**. + +{{< img src="integrations/guide/azure_portal/delete.png" alt="La página de recursos de Datadog dentro del portal de Azure, con Overview seleccionado en la barra de navegación izquierda, la pestaña Delete resaltada y un campo para confirmar la eliminación" responsive="true" style="width:100%;">}} + +Para las organizaciones de Datadog que se facturan a través de Azure Marketplace: +- Si el recurso de Datadog eliminado es el único recurso de Datadog asignado a su organización de Datadog asociada, los logs y las métricas ya no se enviarán a Datadog y se detiene la facturación de Datadog a través de Azure. El soporte de Datadog se comunicará contigo para confirmar los próximos pasos para tu cuenta. +- Si hay recursos de Datadog adicionales asignados a la organización de Datadog asociada, eliminar un recurso de Datadog solo detiene el envío de logs y métricas para su suscripción de Azure asociada. + +Si tu organización de Datadog **no** se factura a través de Azure Marketplace, eliminar un recurso de Datadog solo elimina la integración para esa suscripción de Azure. + +### Cambiar plan + +Selecciona **Change plan** en la página de información general para cambiar tu plan de facturación de Datadog. + +{{< img src="integrations/guide/azure_portal/change-plan1.png" alt="La página de recursos de Datadog dentro del portal de Azure, con Overview seleccionado en la barra de navegación izquierda y la pestaña Change Plan resaltada" responsive="true" style="width:100%;">}} + +El portal recupera todos los planes de Datadog disponibles para tu inquilino, incluidas las ofertas privadas. Selecciona el plan adecuado y haz clic en **Change Plan**. + +## Configuraciones de la organización de Datadog + +### Suscripciones monitorizadas + +Selecciona **Monitored Subscriptions** en la barra lateral izquierda para ver o modificar el contexto del recurso de Datadog. Aparecerá una lista de las suscripciones monitorizadas actualmente. Usa esta vista para configurar el contexto del recurso de Datadog a fin de monitorizar tantas suscripciones como desees. La suscripción con el recurso de Datadog debe estar incluida en el contexto. + +{{< img src="integrations/guide/azure_portal/azure-portal-multiple-subscriptions.png" alt="El recurso de Datadog en el portal de Azure con suscripciones monitorizadas seleccionadas en la sección de configuraciones de la organización de Datadog; se muestran dos suscripciones" responsive="true" style="width:100%;">}} + + - Para añadir suscripciones a monitorizar, haz clic en `+ Add Subscriptions`. La lista de suscripciones disponibles solo incluye las suscripciones para las que tienes asignado el rol `Owner`. Selecciona las suscripciones que desees monitorizar y haz clic en `Add`. + - Para eliminar la monitorización de suscripciones con Datadog, selecciona las suscripciones cuya monitorización deseas eliminar y haz clic en `Remove Subscriptions`. Solo los usuarios con el rol `Owner` pueden eliminar suscripciones. + +**Nota**: Los mismos parámetros (como filtros de host y reglas de recopilación de logs) se aplican en todas las suscripciones incluidas en el contexto. Para aplicar diferentes parámetros a diferentes suscripciones, crea diferentes recursos de Datadog. + +### Métricas y logs + +Selecciona **Metrics and logs** en la barra lateral izquierda para cambiar las reglas de configuración de métricas y logs. Todas las reglas se aplican de forma dinámica en toda la suscripción a medida que se añaden recursos o cambian las etiquetas. + +Los cambios en los parámetros de configuración de métricas o logs deberían tener efecto en unos minutos. + +#### Recopilación de métricas +Por defecto, Datadog recopila automáticamente métricas para todos los recursos de Azure dentro de cualquier suscripción vinculada. + +De manera opcional, limita la recopilación de métricas para las máquinas virtuales de Azure y los planes de App Service mediante el uso de etiquetas de Azure que se adjuntan a tus recursos. + +##### Reglas de etiquetas para enviar métricas + + * Las máquinas virtuales, los conjuntos de escala de máquinas virtuales y los planes de App Service con etiquetas `include` envían métricas a Datadog. + * Las máquinas virtuales, los conjuntos de escala de máquinas virtuales y los planes de App Service con etiquetas `exclude` no envían métricas a Datadog. + * Si hay un conflicto entre las reglas de inclusión y exclusión, la exclusión tiene prioridad. + * No existe ninguna opción para limitar la recopilación de métricas para otros tipos de recursos. + +#### Recopilación de logs + +Existen tres tipos de logs que pueden emitirse desde Azure a Datadog utilizando el recurso de Datadog. + +1. [Logs de actividades](#activity-logs) +2. [Logs de recursos](#resource-logs) +3. [Microsoft Entra ID](#microsoft-entra-id-logs) + +##### Logs de actividades + +Los logs de nivel de suscripción brindan información sobre las operaciones en tus recursos en el [plano de control][3]. También se incluyen actualizaciones sobre eventos de estado del servicio. Usa el log de actividad para determinar qué, quién y cuándo se realizan las operaciones de escritura (`PUT`, `POST` y `DELETE`). + +Para enviar logs de nivel de suscripción a Datadog, selecciona **Send subscription activity logs**. Si esta opción no está marcada, no se enviará ninguno de los logs de nivel de suscripción a Datadog. + +##### Logs de recursos + +Los logs de recursos de Azure brindan información sobre las operaciones que se realizan en los recursos de Azure en el [plano de datos][3]. Por ejemplo, obtener un secreto de un almacén de claves o realizar una solicitud a una base de datos son operaciones del plano de datos. El contenido de los logs de recursos varía según el servicio de Azure y el tipo de recurso. + +Para enviar logs de recursos de Azure a Datadog, selecciona **Send Azure resource logs for all defined resources**. Los tipos de logs de recursos de Azure se enumeran en las [categorías de logs de recursos de Azure Monitor][4]. Cuando se selecciona esta opción, todos los logs de recursos se envían a Datadog, incluidos los recursos nuevos creados en las suscripciones vinculadas. + +Opcionalmente, puedes filtrar el conjunto de recursos de Azure al enviar logs a Datadog utilizando las etiquetas de recurso de Azure. + +###### Reglas de etiqueta para el envío de logs + +* Los recursos de Azure con etiquetas `include` envían logs a Datadog. +* Los recursos de Azure con etiquetas `exclude` no envían logs a Datadog. +* Si hay un conflicto entre las normas de inclusión y exclusión, la exclusión tiene prioridad. + +Por ejemplo, la captura de pantalla a continuación muestra una regla de etiqueta donde solo las máquinas virtuales, los conjuntos de escala de máquinas virtuales y los planes de App Service etiquetados con `Datadog = True` envían métricas a Datadog. Los recursos (de todos los tipos) etiquetados con `Datadog = True` envían logs a Datadog. + +{{< img src="integrations/guide/azure_portal/metrics-and-logs-tag-rules.png" alt="Una captura de pantalla que muestra una regla de etiqueta de métrica de Datadog=true establecida para máquinas virtuales, conjuntos de escala de máquinas virtuales y planes de App Service. La sección de logs también está configurada con la regla de etiqueta de Datadog=true" responsive="true" style="width:100%;">}} + +##### Logs de Microsoft Entra ID + +Los logs de Microsoft Entra ID contienen el historial de la actividad de inicio de sesión y un seguimiento de auditoría de los cambios realizados en Microsoft Entra ID para un arrendatario concreto. Para enviar logs de Microsoft Entra ID: + +1. Navega a Microsoft Entra ID y selecciona **Diagnostic Settings** (Configuración de diagnóstico) en **Monitoring** (Monitorización) en la barra de navegación izquierda. +2. Haz clic en **Add diagnostic setting** (Añadir parámetro de diagnóstico). +3. Selecciona las categorías de logs que deseas enviar a Datadog. Datadog recomienda enviar todas las categorías. +4. En **Destination details**, selecciona **Send to a partner solution**. +5. Selecciona una suscripción. Escoge un recurso de Datadog del menú desplegable **Destination**. + +Todos los logs de Microsoft Entra ID del inquilino se envían a la organización de Datadog vinculada al recurso de Datadog seleccionado. En los casos en los que tienes más de un recurso de Datadog que vincula suscripciones a la misma organización de Datadog, no importa qué recurso de Datadog esté seleccionado. Solo necesitas configurar esto una vez para cada inquilino de Azure. + +### Recursos monitorizados + +Selecciona **Monitored Resources** en la barra lateral izquierda para ver una lista de recursos que emiten logs y métricas para Datadog. Usa la búsqueda para filtrar la lista por nombre de recurso, tipo, grupo, ubicación, logs para Datadog o métricas para Datadog. + +{{< img src="integrations/guide/azure_portal/monitored-resources.png" alt="La página de recursos de Datadog en el portal de Azure con Monitored Resources ​​resaltado en las configuraciones de la organización de Datadog" responsive="true" style="width:100%;">}} + +La columna **Logs to Datadog** muestra `Sending` si el recurso está enviando logs a Datadog. En caso contrario, este campo indica por qué no se están enviando logs. Estas son los posibles motivos: + +| Motivo | Descripción | +|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| Resource doesn't support sending logs | Solo los tipos de recursos con categorías de logs de monitorización se pueden configurar para enviar logs a Datadog. | +| Limit of five diagnostic settings reached | Cada recurso de Azure puede tener un máximo de cinco parámetros de diagnóstico. Para obtener más información, consulte [Parámetros de diagnóstico][5]. | +| Error | El recurso está configurado para enviar logs a Datadog, pero está bloqueado por un error. | +| Logs not configured | Solo los recursos de Azure con etiquetas de recursos adecuadas están configurados para enviar logs a Datadog. | +| Region not supported | El recurso de Azure se encuentra en una región que no admite el envío de logs a Datadog. | +| Datadog Agent not configured | Las máquinas virtuales sin el Datadog Agent instalado no emiten logs para Datadog. | + +### Extensiones del Datadog Agent + +{{< tabs >}} +{{% tab "Extensión de máquinas virtuales" %}} + +Para ver una lista de máquinas virtuales (VMs) en la suscripción, selecciona **Virtual machine agent** en la barra lateral izquierda. En esta página, puedes instalar el Datadog Agent en una máquina virtual como una extensión. + +{{< img src="integrations/guide/azure_native_manual_setup/azure_native_vm_extension.png" alt="El recurso de Datadog en Azure con Virtual machine agent seleccionado y la opción Install extension resaltada" responsive="true" style="width:90%;">}} + +Para cada máquina virtual, se muestra la siguiente información: + +| Columna | Descripción | +|----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Resource name | El nombre de la máquina virtual | +| Resource status | Ya sea que la máquina virtual esté detenida o en ejecución. El Datadog Agent solo se puede instalar en una máquina virtual en ejecución. Si la máquina virtual está detenida, la instalación del Datadog Agent se deshabilita. | +| Agent version | El número de versión del Datadog Agent | +| Agent status | Si el Datadog Agent se está ejecutando en la máquina virtual. | +| Integrations enabled | Las métricas clave que recopilan las integraciones habilitadas en el Datadog Agent. | +| Install method | La herramienta específica utilizada para instalar Datadog Agent , como Chef, la extensión de máquinas virtuales de Azure, etc. | +| Sending logs | Si el Datadog Agent está enviando logs a Datadog. | + +#### Instalación + +Puedes instalar el Datadog Agent directamente en Azure con la extensión de máquinas virtuales. Para instalar el Datadog Agent: + +1. Selecciona la máquina virtual adecuada. +2. Haz clic en **Install Extension**. +3. El portal solicita confirmación para instalar el Agent con la clave predeterminada. Selecciona **OK** para comenzar la instalación. Azure muestra el estado como `Installing` hasta que el Agent esté instalado y aprovisionado. Una vez instalado el Datadog Agent, el estado cambia a `Installed`. + +##### Desinstalar + +Si el Datadog Agent se instaló con la extensión de máquinas virtuales de Azure: + +1. Selecciona la máquina virtual adecuada. +2. Haz clic en **Uninstall Agent**. + +Si el Agent se instaló utilizando un método diferente, no puedes usar el recurso de Datadog para desplegar o eliminar el Agent, pero la información sobre el Agent seguirá reflejada en esta página. + +{{% /tab %}} +{{% tab "Extensión del clúster de AKS" %}} + +La extensión del clúster de Datadog AKS te permite desplegar el Datadog Agent de forma nativa dentro de Azure AKS, lo que evita la complejidad de las herramientas de gestión de terceros. + +#### Instalación + +Para instalar el Datadog Agent con la extensión del clúster de AKS: + +1. Haz clic en tu clúster de AKS en la sección **Monitored Resources** en la barra lateral izquierda. +2. En la barra lateral izquierda del clúster de AKS, selecciona **Extensions + applications** en **Settings**. +3. Busca y selecciona `Datadog AKS Cluster Extension`. +4. Haz clic en **Create** y sigue las instrucciones del cuadro utilizando tus [credenciales de Datadog][1] y el [sitio de Datadog][2]. + +#### Desinstalar + +1. Haz clic en tu clúster de AKS en la sección **Monitored Resources** de la barra lateral izquierda. +2. En la barra lateral izquierda del clúster de AKS, selecciona **Extensions + applications** en **Settings**. +3. Selecciona la extensión del clúster de Datadog AKS (el valor de **Type** es `Datadog.AKSExtension`). +4. Haz clic en **Uninstall**. + +[1]: /es/account_management/api-app-keys/ +[2]: /es/getting_started/site/ +{{% /tab %}} +{{< /tabs >}} + +### Extensión de App Service + +Selecciona **App Service extension** en la barra lateral izquierda para ver una lista de servicios de aplicaciones en la suscripción. En esta página, puedes instalar la extensión de Datadog en Azure App Service para habilitar el rastreo de APM y las métricas personalizadas. + +Para cada servicio de aplicaciones, se muestra la siguiente información: + +| Columna | Descripción | +|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Resource name | El nombre de la aplicación | +| Resource status | Si el servicio de aplicaciones está detenido o en ejecución. El servicio de aplicaciones debe estar en ejecución para iniciar la instalación. Si el servicio de aplicaciones está detenido, la instalación del Datadog Agent se deshabilita. | +| App service plan | El plan específico configurado para el servicio de aplicaciones | +| Extension version | El número de versión de la extensión de Datadog | + +#### Instalación + +Para instalar la [extensión de Datadog][6], selecciona la aplicación adecuada y, a continuación, haz clic en **Install Extension**. El portal solicita confirmación para instalar la extensión. Selecciona **OK** para comenzar la instalación. Esto reinicia la aplicación y añade los siguientes parámetros: + +- `DD_API_KEY:` +- `DD_SITE:us3.datadoghq.com` + +Azure muestra el estado `Installing` hasta que el Agent esté instalado y aprovisionado. Una vez instalado el Datadog Agent, el estado cambia a `Installed`. + +**Nota**: Asegúrese de añadir la extensión a las aplicaciones con [tiempos de ejecución compatibles][7]. El recurso de Datadog no limita ni filtra la lista de aplicaciones. + +#### Desinstalar + +Para desinstalar la extensión de Datadog, selecciona la aplicación correspondiente y haz clic en **Uninstall Extension**. + +## 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. + +Para activar el inicio de sesión único a través de Microsoft Entra ID, selecciona **Enable single sign-on** (Activar inicio de sesión único). El portal recupera la aplicación de Datadog correspondiente de Microsoft Entra ID. El nombre de la aplicación es el nombre de la aplicación empresarial que elegiste al configurar la integración. Selecciona el nombre de la aplicación de Datadog como se muestra a continuación. + +{{< img src="integrations/guide/azure_portal/sso.png" alt="El portal de Azure con Habilitar inicio de sesión único a través de Microsoft Entra ID activado" responsive="true" style="width:100%;">}} + +### Claves de API + +Selecciona **Keys** en la barra lateral izquierda para ver una lista de claves de API para tu recurso de Datadog. + +{{< img src="integrations/guide/azure_portal/api-keys.png" alt="La vista Keys dentro del portal de Azure que muestra una clave de API" responsive="true" style="width:100%;">}} + +El portal de Azure ofrece una vista de solo lectura de las claves de API. Para gestionar las claves, selecciona el enlace "Datadog portal". Después de realizar cambios en Datadog, actualiza la vista del portal de Azure. + +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. + +### Cloud Security Misconfigurations + +Selecciona `Cloud Security Posture Management` en la barra lateral izquierda para configurar [Errores de configuración de Cloud Security][8]. + +Por defecto, los errores de configuración de Cloud Security no están activado. Para activar los errores de configuración de Cloud Security, selecciona `Enable Datadog Cloud Security Posture Management` y haz clic en **Save** (Guardar). Esto habilita los errores de configuración de Datadog Cloud Security para cualquier suscripción asociada con el recurso de Datadog. + +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%;">}} + +## Referencias adicionales + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: https://docs.datadoghq.com/es/integrations/azure/?tab=link&site=us3#create-datadog-resource +[2]: https://docs.microsoft.com/en-us/cli/azure/datadog?view=azure-cli-latest +[3]: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/control-plane-and-data-plane +[4]: https://docs.microsoft.com/en-us/azure/azure-monitor/essentials/resource-logs-categories +[5]: https://docs.microsoft.com/en-us/azure/azure-monitor/essentials/diagnostic-settings +[6]: /es/serverless/azure_app_services +[7]: /es/serverless/azure_app_services/#requirements +[8]: /es/security/cloud_security_management/misconfigurations/ \ No newline at end of file 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..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,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "Opciones de privacidad de Mobile Session Replay" + "ast-str-ccbaa22a-5868-4366-8acf-f9786fe5cc64": { + "string": "Opciones de privacidad de Mobile Session Replay" + } }, "description": { - "string": "Configura opciones de privacidad para Mobile Session Replay." + "ast-str-cf658844-2097-43a1-a48c-fc3c6fd3f68f": { + "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-40943a1a-edde-4589-8972-16cfd2af6d15": { + "string": "Session Replay para móviles" + } + }, + "tag": { + "ast-str-d805da84-5bb4-41ee-8d1c-5dcaf2f57da4": { + "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-acf142d0-cd75-453a-8fe2-eb485b9f213e": { + "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" + } + }, + "tag": { + "ast-str-4ac7c19e-67ac-44e9-aaa5-28780431795f": { + "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-76195321-3f00-4b5a-a106-51ed78a73882": { + "string": "Configuración de Mobile Session Replay" + } + }, + "tag": { + "ast-str-6d14bdaf-653b-4949-a988-bd72160b6cd8": { + "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-85754c8c-58a4-448d-ae08-472723af4b84": { + "string": "Solución de problemas de Mobile Session Replay" + } + }, + "tag": { + "ast-str-d6a0ce74-4536-4173-a168-d57916978c0a": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-a635174d-ef8d-4ab6-9834-e3507bcf410b": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-310cb21b-701c-4684-afb1-d449f8e564c7": { + "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..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,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "Instalación y configuración de Session Replay para móviles" + "ast-str-8bc75e14-52d8-47b9-8b37-7a1bd7f97881": { + "string": "Instalación y configuración de Session Replay para móviles" + } }, "description": { - "string": "Instala y configura Session Replay para móviles." + "ast-str-c80d6782-5698-497d-b45e-0051e109783e": { + "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-e7d7a9db-512d-40eb-872f-1f1263d7e130": { + "string": "Session Replay para móviles" + } + }, + "tag": { + "ast-str-482967ed-742a-4cc5-bf08-a90707e49069": { + "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-d01e28f2-29f5-49e3-8163-621edb676c8a": { + "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" + } + }, + "tag": { + "ast-str-a671d16d-fcc1-4d02-8c77-fcee81e7b188": { + "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-2c7c52b1-10f5-4302-a472-80f0d709b31e": { + "string": "Opciones de privacidad de Mobile Session Replay" + } + }, + "tag": { + "ast-str-404bcf03-12a3-4f75-9b2b-b99828680e18": { + "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-4a42c626-16ea-4ea3-9e74-246746eb5068": { + "string": "Solución de problemas de Mobile Session Replay" + } + }, + "tag": { + "ast-str-5caa4848-2d0a-4973-a3be-f36a6d1ebad5": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/product_analytics/session_replay", + "text": { + "ast-str-606f1237-9b7f-453c-8ae7-49bbc3d2b75f": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-b4299a90-07c0-4070-bf12-df4a07c7de82": { + "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/browser/collecting_browser_errors.md b/content/es/real_user_monitoring/browser/collecting_browser_errors.md new file mode 100644 index 0000000000000..38b9b88ad74a3 --- /dev/null +++ b/content/es/real_user_monitoring/browser/collecting_browser_errors.md @@ -0,0 +1,263 @@ +--- +aliases: +- /error_tracking/standalone_frontend/collecting_browser_errors +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: +- 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 + text: Medir el rendimiento y el impacto en el usuario +title: Recopilación de errores del navegador +--- +## Información general + +Los errores del front-end se recopilan con el SDK del navegador. El mensaje de error y la traza (trace) del stack tecnológico se incluyen cuando están disponibles. + +## Fuentes de errores +Los errores de front-end proceden de diversas fuentes: + +- **Agent**: De la ejecución del SDK +- **consola**: De las llamadas a la API `console.error()` +- **personalizado**: Enviado con la [API`addError`](#collect-errors-manually) +- **informe**: Desde la API `ReportingObserver` +- **Fuente**: De excepciones no manejadas o rechazos de promesas no manejadas en el código fuente. + +## Atributos de errores + +Para obtener información sobre los atributos por defecto para todos los tipos de eventos, consulta [Datos recopilados][1]. Para obtener información sobre la configuración para el muestreo o el contexto global, consulta [Modificación de datos y contexto][2]. + +| Atributo | Tipo | Descripción | +|-----------------|--------|-------------------------------------------------------------------| +| `error.source` | cadena | Donde se origina el error (por ejemplo, `console`). | +| `error.type` | cadena | El tipo de error (o código de error en algunos casos). | +| `error.message` | cadena | Un mensaje conciso, legible, de una línea, en el cual se explica el evento. | +| `error.stack` | cadena | El stack trace o información complementaria sobre el error. | +| `error.causes` | [Matriz][12] | Una lista de errores opcional que proporciona contexto adicional. Este atributo se utiliza para mostrar los errores por separado y mejorar el formato. Para más información, consulta la [documentación de MDN][13]. | + +### Errores de origen + +Los errores de origen incluyen información a nivel de código sobre el error. Puedes encontrar más información sobre los distintos tipos de errores en [la documentación de MDN][3]. + +| Atributo | Tipo | Descripción | +|-----------------|--------|-------------------------------------------------------------------| +| `error.type` | cadena | El tipo de error (o código de error en algunos casos). | + +## Recopilación manual de errores + +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" >}} +addError( + error: unknown, + context?: Context +); +{{< /code-block >}} + +**Nota**: [Error Tracking][4] procesa errores que se envían con la fuente establecida en `custom`, `source`, `report` o `console` y contienen un stack trace. Los errores enviados con cualquier otra fuente (como `network`) o enviados desde extensiones del navegador no son procesados por Error Tracking. + +{{< tabs >}} +{{% tab "NPM" %}} + +```javascript +import { datadogRum } from '@datadog/browser-rum'; + +// Enviar un error personalizado con contexto +const error = new Error('Something wrong occurred.'); + +datadogRum.addError(error, { + pageStatus: 'beta', +}); + +// Enviar un error de red +fetch('').catch(function(error) { + datadogRum.addError(error); +}) + +// Enviar un error de excepción gestionada +try { + //Some code logic +} catch (error) { + datadogRum.addError(error); +} +``` +{{% /tab %}} +{{% tab "CDN asíncrono" %}} + +```JavaScript +// Enviar un error personalizado con contexto +const error = nuevo Error('Something wrong occurred.'); + +window.DD_RUM.onReady(function() { + window.DD_RUM.addError(error, { + pageStatus: 'beta', + }); +}); + +// Enviar un error de red +fetch('').catch(function(error) { + window.DD_RUM.onReady(function() { + window.DD_RUM.addError(error); + }); +}) + +// Enviar un error de excepción manejado +probar { + //Alguna lógica de código +} capturar (error) { + window.DD_RUM.onReady(function() { + window.DD_RUM.addError(error); + }) +} +``` +{{% /tab %}} +{{% tab "CDN síncrono" %}} + +```JavaScript +// Enviar un error personalizado con contexto +const error = nuevo Error('Something wrong occurred.'); + +window.DD_RUM && window.DD_RUM.addError(error, { + pageStatus: 'beta', +}); + +// Enviar un error de red +fetch('').catch(function(error) { + window.DD_RUM && window.DD_RUM.addError(error); +}) + +// Enviar un error de excepción manejado +probar { + //Alguna lógica de código +} capturar (error) { + window.DD_RUM && window.DD_RUM.addError(error); +} +``` +{{% /tab %}} +{{< /tabs >}} + +### Instrumentación de límites de error de React + +Puedes instrumentar los [límites de error][5] de React para monitorizar errores de representación de React utilizando la API `addError()` del RUM Browser SDK. + +Los errores de representación recopilados contienen un stak tecnológico de componentes, que está desminificado como cualquier otra traza de stack de errores después de [cargar mapas de origen][6]. + +Para instrumentar límites de errores de React para la monitorización, utiliza lo siguiente: + +{{< tabs >}} +{{% tab "NPM" %}} + +```JavaScript +importar { datadogRum } desde '@Datadog/browser-rum'; + +clase ErrorBoundary extends React.Component { + ... + + componentDidCatch(error, info) { + const renderingError = new Error(error.message); + renderingError.name = `ReactRenderingError`; + renderingError.stack = info.componentStack; + renderingError.cause = error; + + datadogRum.addError(renderingError); + } + + ... +} +``` + +{{% /tab %}} +{{% tab "CDN asíncrono" %}} + +```JavaScript +clase ErrorBoundary extends React.Component { + ... + + componentDidCatch(error, info) { + const renderingError = new Error(error.message); + renderingError.name = `ReactRenderingError`; + renderingError.stack = info.componentStack; + renderingError.cause = error; + + DD_RUM.onReady(función() { + DD_RUM.addError(renderingError); + }); + } + + ... +} +``` + +{{% /tab %}} +{{% tab "CDN síncrono" %}} + +```JavaScript +clase ErrorBoundary extends React.Component { + ... + + componentDidCatch(error, info) { + const renderingError = new Error(error.message); + renderingError.name = `ReactRenderingError`; + renderingError.stack = info.componentStack; + renderingError.cause = error; + + window.DD_RUM && + window.DD_RUM.addError(renderingError); + + } + + ... +} +``` + +{{% /tab %}} +{{< /tabs >}} + + +## Solucionar problemas + +### Error de script + +Por motivos de seguridad, los navegadores ocultan los detalles de los errores provocados por scripts de origen cruzado. Cuando esto ocurre, la pestaña Detalles del error muestra un error con el mensaje mínimo "Error de script". + +{{< img src="real_user_monitoring/browser/script-error.png" alt="Ejemplo de error de script de Real User Monitoring" style="width:75%;" >}} + +Para más información sobre scripts de origen cruzado y por qué se ocultan los detalles, consulta [CORS][7] y [esta Nota sobre Global Event Handlers][8]. Algunos posibles motivos de este error incluyen: +- Tus archivos JavaScript están alojados en un nombre de host diferente (por ejemplo, `example.com` incluye activos de `static.example.com`). +- Tu sitio web incluye bibliotecas JavaScript alojadas en una CDN. +- Tu sitio web incluye bibliotecas JavaScript de terceros alojadas en los servidores del proveedor. + +Obtén visibilidad de los scripts de origen cruzado siguiendo estos dos pasos: +1. Llama a las bibliotecas JavaScript con [`crossorigin="anonymous"`][9]. + + Con `crossorigin="anonymous"`, la solicitud para acceder al script se realiza de forma segura. No se transmiten datos sensibles a través de cookies ni autenticación HTTP. + +2. Configura el encabezado de respuesta HTTP [`Access-Control-Allow-Origin`][10]: + + - `Access-Control-Allow-Origin: *` para permitir que todos los orígenes obtengan el recurso. + - `Access-Control-Allow-Origin: example.com` para especificar un único origen permitido. Si el servidor admite clientes de varios orígenes, debe devolver el origen del cliente específico que realiza la solicitud. + +## Referencias adicionales + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: /es/real_user_monitoring/browser/data_collected/ +[2]: /es/real_user_monitoring/browser/advanced_configuration/ +[3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error +[4]: /es/real_user_monitoring/error_tracking +[5]: https://legacy.reactjs.org/docs/error-boundaries.html +[6]: /es/real_user_monitoring/guide/upload-javascript-source-maps/?tab=webpackjs#upload-your-source-maps +[7]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS +[8]: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#notes +[9]: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin +[10]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin +[11]: /es/real_user_monitoring/guide/upload-javascript-source-maps/?tab=webpackjs +[12]: https://github.com/DataDog/rum-events-format/blob/69147431d689b3e59bff87e15bb0088a9bb319a9/lib/esm/generated/rum.d.ts#L185-L203 +[13]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause \ No newline at end of file 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..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,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "Opciones de privacidad de Mobile Session Replay" + "ast-str-53263dcc-c7ec-4d64-a139-4f00386ed868": { + "string": "Opciones de privacidad de Mobile Session Replay" + } }, "description": { - "string": "Configura opciones de privacidad para Mobile Session Replay." + "ast-str-1cda96eb-ecc3-4897-a958-37bfd13a254e": { + "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-9153c32c-9f3b-4297-83b0-1d8e5e790aa9": { + "string": "Session Replay para móviles" + } + }, + "tag": { + "ast-str-f6f9bf61-8e2b-4e08-8258-4a4f9fda0063": { + "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-265efd53-4f2a-45b4-95c8-613cf4db534a": { + "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" + } + }, + "tag": { + "ast-str-69973a7e-d10f-4fdf-998e-ea79bff3f2a9": { + "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-40554c8e-ece6-416f-8da6-a827f00068b7": { + "string": "Configuración de Mobile Session Replay" + } + }, + "tag": { + "ast-str-603bebb3-4f48-4845-ba62-f2ab83d78653": { + "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-f450e1cc-9426-4b69-8253-3b46d4ff2361": { + "string": "Solución de problemas de Mobile Session Replay" + } + }, + "tag": { + "ast-str-f4b8f251-cae7-461d-becb-4ecc3874d1c6": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-15faaca3-c0f0-4f24-a51f-9a888f62f8d3": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-4760f4f1-077d-46ab-af8d-ebced0cced6c": { + "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..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,67 +4,97 @@ "attributes": { "frontmatter": { "title": { - "string": "Instalación y configuración de Session Replay para móviles" + "ast-str-e6058273-913f-46bb-9080-40f7dc9b34ae": { + "string": "Instalación y configuración de Session Replay para móviles" + } }, "description": { - "string": "Instala y configura Session Replay para móviles." + "ast-str-e1880e45-f1ca-40b8-b80d-7e13841e67dc": { + "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-aeea9316-7851-464f-a0e5-908b6f1b7dd8": { + "string": "Session Replay para móviles" + } + }, + "tag": { + "ast-str-3c9ae4ac-2195-4740-bcd3-a52fbb4cf619": { + "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-ac54f8ca-37b7-413f-b3d0-0a918b37b1b5": { + "string": "Cómo afecta Mobile Session Replay al rendimiento de las aplicaciones" + } + }, + "tag": { + "ast-str-3eecfad5-5996-44a4-85ed-994091673150": { + "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-9476d72e-e89e-457c-832b-d1876d8154c2": { + "string": "Opciones de privacidad de Mobile Session Replay" + } + }, + "tag": { + "ast-str-3023c936-fb3f-41c2-9765-9041533094fb": { + "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-ca2c7ee9-4fe3-4bcd-9897-43ab42c7434b": { + "string": "Solución de problemas de Mobile Session Replay" + } + }, + "tag": { + "ast-str-3977546e-a1bb-4526-bf38-ca1c391da8e6": { + "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-13fc98fe-a961-4b16-a2f9-fbf4c3670cc0": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-856f47a5-5069-429c-a560-8082fbf32ae4": { + "string": "Documentación" + } + } }, - "tag": { - "string": "Documentation" + "5": { + "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", + "text": { + "ast-str-c42c9b1d-9d9a-4622-89a1-e2f7dee5712e": { + "string": "Web View Tracking" + } + }, + "tag": { + "ast-str-130ec363-d662-4b11-b461-4d66edcce43d": { + "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/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/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/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/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/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/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/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/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..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,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "Options de confidentialité de Mobile Session Replay" + "ast-str-ccbaa22a-5868-4366-8acf-f9786fe5cc64": { + "string": "Options de confidentialité de Mobile Session Replay" + } }, "description": { - "string": "Configurer des options de confidentialité pour Mobile Session Replay." + "ast-str-cf658844-2097-43a1-a48c-fc3c6fd3f68f": { + "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-40943a1a-edde-4589-8972-16cfd2af6d15": { + "string": "Session Replay sur mobile" + } + }, + "tag": { + "ast-str-d805da84-5bb4-41ee-8d1c-5dcaf2f57da4": { + "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-acf142d0-cd75-453a-8fe2-eb485b9f213e": { + "string": "Impact de Mobile Session Replay sur les performances des applications" + } + }, + "tag": { + "ast-str-4ac7c19e-67ac-44e9-aaa5-28780431795f": { + "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-76195321-3f00-4b5a-a106-51ed78a73882": { + "string": "Installer et configurer Mobile Session Replay" + } + }, + "tag": { + "ast-str-6d14bdaf-653b-4949-a988-bd72160b6cd8": { + "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-85754c8c-58a4-448d-ae08-472723af4b84": { + "string": "Dépanner Mobile Session Replay" + } + }, + "tag": { + "ast-str-d6a0ce74-4536-4173-a168-d57916978c0a": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-a635174d-ef8d-4ab6-9834-e3507bcf410b": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-310cb21b-701c-4684-afb1-d449f8e564c7": { + "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..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 @@ -1,99 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "Installer et configurer Mobile Session Replay" + "ast-str-8bc75e14-52d8-47b9-8b37-7a1bd7f97881": { + "string": "Installer et configurer Mobile Session Replay" + } }, "description": { - "string": "Installer et configurer Mobile Session Replay." + "ast-str-c80d6782-5698-497d-b45e-0051e109783e": { + "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-e7d7a9db-512d-40eb-872f-1f1263d7e130": { + "string": "Session Replay sur mobile" + } + }, + "tag": { + "ast-str-482967ed-742a-4cc5-bf08-a90707e49069": { + "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-d01e28f2-29f5-49e3-8163-621edb676c8a": { + "string": "Impact de Mobile Session Replay sur les performances des applications" + } + }, + "tag": { + "ast-str-a671d16d-fcc1-4d02-8c77-fcee81e7b188": { + "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-2c7c52b1-10f5-4302-a472-80f0d709b31e": { + "string": "Options de confidentialité de Mobile Session Replay" + } + }, + "tag": { + "ast-str-404bcf03-12a3-4f75-9b2b-b99828680e18": { + "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-4a42c626-16ea-4ea3-9e74-246746eb5068": { + "string": "Dépanner Mobile Session Replay" + } + }, + "tag": { + "ast-str-5caa4848-2d0a-4973-a3be-f36a6d1ebad5": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/product_analytics/session_replay", + "text": { + "ast-str-606f1237-9b7f-453c-8ae7-49bbc3d2b75f": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-b4299a90-07c0-4070-bf12-df4a07c7de82": { + "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..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 @@ -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-53263dcc-c7ec-4d64-a139-4f00386ed868": { + "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-1cda96eb-ecc3-4897-a958-37bfd13a254e": { + "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-9153c32c-9f3b-4297-83b0-1d8e5e790aa9": { + "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-f6f9bf61-8e2b-4e08-8258-4a4f9fda0063": { + "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-265efd53-4f2a-45b4-95c8-613cf4db534a": { + "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-69973a7e-d10f-4fdf-998e-ea79bff3f2a9": { + "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-40554c8e-ece6-416f-8da6-a827f00068b7": { + "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-603bebb3-4f48-4845-ba62-f2ab83d78653": { + "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-f450e1cc-9426-4b69-8253-3b46d4ff2361": { + "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-f4b8f251-cae7-461d-becb-4ecc3874d1c6": { + "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-15faaca3-c0f0-4f24-a51f-9a888f62f8d3": { + "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-4760f4f1-077d-46ab-af8d-ebced0cced6c": { + "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..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 @@ -1,108 +1,132 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "Installer et configurer Mobile Session Replay" + "ast-str-e6058273-913f-46bb-9080-40f7dc9b34ae": { + "string": "Installer et configurer Mobile Session Replay" + } }, "description": { - "string": "Installer et configurer Mobile Session Replay." + "ast-str-e1880e45-f1ca-40b8-b80d-7e13841e67dc": { + "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-aeea9316-7851-464f-a0e5-908b6f1b7dd8": { + "string": "Session Replay sur mobile" + } + }, + "tag": { + "ast-str-3c9ae4ac-2195-4740-bcd3-a52fbb4cf619": { + "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-ac54f8ca-37b7-413f-b3d0-0a918b37b1b5": { + "string": "Impact de Mobile Session Replay sur les performances des applications" + } + }, + "tag": { + "ast-str-3eecfad5-5996-44a4-85ed-994091673150": { + "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-9476d72e-e89e-457c-832b-d1876d8154c2": { + "string": "Options de confidentialité de Mobile Session Replay" + } + }, + "tag": { + "ast-str-3023c936-fb3f-41c2-9765-9041533094fb": { + "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-ca2c7ee9-4fe3-4bcd-9897-43ab42c7434b": { + "string": "Dépanner Mobile Session Replay" + } + }, + "tag": { + "ast-str-3977546e-a1bb-4526-bf38-ca1c391da8e6": { + "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-13fc98fe-a961-4b16-a2f9-fbf4c3670cc0": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-856f47a5-5069-429c-a560-8082fbf32ae4": { + "string": "Documentation" + } + } }, - "tag": { - "string": "Documentation" + "5": { + "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", + "text": { + "ast-str-c42c9b1d-9d9a-4622-89a1-e2f7dee5712e": { + "string": "Suivi des vues Web" + } + }, + "tag": { + "ast-str-130ec363-d662-4b11-b461-4d66edcce43d": { + "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..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,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "モバイルセッションリプレイのプライバシーオプション" + "ast-str-ccbaa22a-5868-4366-8acf-f9786fe5cc64": { + "string": "モバイルセッションリプレイのプライバシーオプション" + } }, "description": { - "string": "モバイルセッションリプレイのプライバシーオプションの構成" + "ast-str-cf658844-2097-43a1-a48c-fc3c6fd3f68f": { + "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-40943a1a-edde-4589-8972-16cfd2af6d15": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-d805da84-5bb4-41ee-8d1c-5dcaf2f57da4": { + "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-acf142d0-cd75-453a-8fe2-eb485b9f213e": { + "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" + } + }, + "tag": { + "ast-str-4ac7c19e-67ac-44e9-aaa5-28780431795f": { + "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-76195321-3f00-4b5a-a106-51ed78a73882": { + "string": "モバイルセッションリプレイの設定と構成" + } + }, + "tag": { + "ast-str-6d14bdaf-653b-4949-a988-bd72160b6cd8": { + "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-85754c8c-58a4-448d-ae08-472723af4b84": { + "string": "モバイルセッションリプレイのトラブルシューティング" + } + }, + "tag": { + "ast-str-d6a0ce74-4536-4173-a168-d57916978c0a": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-a635174d-ef8d-4ab6-9834-e3507bcf410b": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-310cb21b-701c-4684-afb1-d449f8e564c7": { + "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..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 @@ -1,99 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "モバイルセッションリプレイの設定と構成" + "ast-str-8bc75e14-52d8-47b9-8b37-7a1bd7f97881": { + "string": "モバイルセッションリプレイの設定と構成" + } }, "description": { - "string": "モバイルセッションリプレイの設定と構成" + "ast-str-c80d6782-5698-497d-b45e-0051e109783e": { + "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-e7d7a9db-512d-40eb-872f-1f1263d7e130": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-482967ed-742a-4cc5-bf08-a90707e49069": { + "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-d01e28f2-29f5-49e3-8163-621edb676c8a": { + "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" + } + }, + "tag": { + "ast-str-a671d16d-fcc1-4d02-8c77-fcee81e7b188": { + "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-2c7c52b1-10f5-4302-a472-80f0d709b31e": { + "string": "モバイルセッションリプレイのプライバシーオプション" + } + }, + "tag": { + "ast-str-404bcf03-12a3-4f75-9b2b-b99828680e18": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/product_analytics/session_replay/mobile/troubleshooting", + "text": { + "ast-str-4a42c626-16ea-4ea3-9e74-246746eb5068": { + "string": "モバイルセッションリプレイのトラブルシューティング" + } + }, + "tag": { + "ast-str-5caa4848-2d0a-4973-a3be-f36a6d1ebad5": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/product_analytics/session_replay", + "text": { + "ast-str-606f1237-9b7f-453c-8ae7-49bbc3d2b75f": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-b4299a90-07c0-4070-bf12-df4a07c7de82": { + "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..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 @@ -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-53263dcc-c7ec-4d64-a139-4f00386ed868": { + "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-1cda96eb-ecc3-4897-a958-37bfd13a254e": { + "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-9153c32c-9f3b-4297-83b0-1d8e5e790aa9": { + "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-f6f9bf61-8e2b-4e08-8258-4a4f9fda0063": { + "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-265efd53-4f2a-45b4-95c8-613cf4db534a": { + "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-69973a7e-d10f-4fdf-998e-ea79bff3f2a9": { + "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-40554c8e-ece6-416f-8da6-a827f00068b7": { + "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-603bebb3-4f48-4845-ba62-f2ab83d78653": { + "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-f450e1cc-9426-4b69-8253-3b46d4ff2361": { + "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-f4b8f251-cae7-461d-becb-4ecc3874d1c6": { + "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-15faaca3-c0f0-4f24-a51f-9a888f62f8d3": { + "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-4760f4f1-077d-46ab-af8d-ebced0cced6c": { + "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..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 @@ -1,108 +1,132 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "モバイルセッションリプレイの設定と構成" + "ast-str-e6058273-913f-46bb-9080-40f7dc9b34ae": { + "string": "モバイルセッションリプレイの設定と構成" + } }, "description": { - "string": "モバイルセッションリプレイの設定と構成" + "ast-str-e1880e45-f1ca-40b8-b80d-7e13841e67dc": { + "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-aeea9316-7851-464f-a0e5-908b6f1b7dd8": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-3c9ae4ac-2195-4740-bcd3-a52fbb4cf619": { + "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-ac54f8ca-37b7-413f-b3d0-0a918b37b1b5": { + "string": "モバイルセッションリプレイがアプリのパフォーマンスに与える影響" + } + }, + "tag": { + "ast-str-3eecfad5-5996-44a4-85ed-994091673150": { + "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-9476d72e-e89e-457c-832b-d1876d8154c2": { + "string": "モバイルセッションリプレイのプライバシーオプション" + } + }, + "tag": { + "ast-str-3023c936-fb3f-41c2-9765-9041533094fb": { + "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-ca2c7ee9-4fe3-4bcd-9897-43ab42c7434b": { + "string": "モバイルセッションリプレイのトラブルシューティング" + } + }, + "tag": { + "ast-str-3977546e-a1bb-4526-bf38-ca1c391da8e6": { + "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-13fc98fe-a961-4b16-a2f9-fbf4c3670cc0": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-856f47a5-5069-429c-a560-8082fbf32ae4": { + "string": "ドキュメント" + } + } }, - "tag": { - "string": "Documentation" + "5": { + "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", + "text": { + "ast-str-c42c9b1d-9d9a-4622-89a1-e2f7dee5712e": { + "string": "Web ビューのトラッキング" + } + }, + "tag": { + "ast-str-130ec363-d662-4b11-b461-4d66edcce43d": { + "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/_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/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/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/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/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 업로드 이슈 + + + +타사 정적 분석 도구에서 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/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/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/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/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/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/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/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/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/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/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..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,58 +4,84 @@ "attributes": { "frontmatter": { "title": { - "string": "모바일 세션 리플레이 개인정보 보호 옵션" + "ast-str-ccbaa22a-5868-4366-8acf-f9786fe5cc64": { + "string": "모바일 세션 리플레이 개인정보 보호 옵션" + } }, "description": { - "string": "모바일 세션 재생을 위한 개인정보 보호 옵션을 설정합니다." + "ast-str-cf658844-2097-43a1-a48c-fc3c6fd3f68f": { + "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-40943a1a-edde-4589-8972-16cfd2af6d15": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-d805da84-5bb4-41ee-8d1c-5dcaf2f57da4": { + "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-acf142d0-cd75-453a-8fe2-eb485b9f213e": { + "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" + } + }, + "tag": { + "ast-str-4ac7c19e-67ac-44e9-aaa5-28780431795f": { + "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-76195321-3f00-4b5a-a106-51ed78a73882": { + "string": "모바일 세션 리플레이 설정 및 구성" + } + }, + "tag": { + "ast-str-6d14bdaf-653b-4949-a988-bd72160b6cd8": { + "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-85754c8c-58a4-448d-ae08-472723af4b84": { + "string": "모바일 세션 리플레이 문제 해결" + } + }, + "tag": { + "ast-str-d6a0ce74-4536-4173-a168-d57916978c0a": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/real_user_monitoring/session_replay", + "text": { + "ast-str-a635174d-ef8d-4ab6-9834-e3507bcf410b": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-310cb21b-701c-4684-afb1-d449f8e564c7": { + "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..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 @@ -1,99 +1,119 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "모바일 세션 리플레이 설치 및 설정" + "ast-str-8bc75e14-52d8-47b9-8b37-7a1bd7f97881": { + "string": "모바일 세션 리플레이 설치 및 설정" + } }, "description": { - "string": "모바일 세션 리플레이을 설치하고 설정합니다." + "ast-str-c80d6782-5698-497d-b45e-0051e109783e": { + "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-e7d7a9db-512d-40eb-872f-1f1263d7e130": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-482967ed-742a-4cc5-bf08-a90707e49069": { + "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-d01e28f2-29f5-49e3-8163-621edb676c8a": { + "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" + } + }, + "tag": { + "ast-str-a671d16d-fcc1-4d02-8c77-fcee81e7b188": { + "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-2c7c52b1-10f5-4302-a472-80f0d709b31e": { + "string": "모바일 세션 리플레이 개인정보 보호 옵션" + } + }, + "tag": { + "ast-str-404bcf03-12a3-4f75-9b2b-b99828680e18": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" - } - }, - { - "link": "/product_analytics/session_replay", - "text": { - "string": "Session Replay" + "3": { + "link": "/product_analytics/session_replay/mobile/troubleshooting", + "text": { + "ast-str-4a42c626-16ea-4ea3-9e74-246746eb5068": { + "string": "모바일 세션 리플레이 문제 해결" + } + }, + "tag": { + "ast-str-5caa4848-2d0a-4973-a3be-f36a6d1ebad5": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" + "4": { + "link": "/product_analytics/session_replay", + "text": { + "ast-str-606f1237-9b7f-453c-8ae7-49bbc3d2b75f": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-b4299a90-07c0-4070-bf12-df4a07c7de82": { + "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/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/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 e7d5a6d9eddc7..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 @@ -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-53263dcc-c7ec-4d64-a139-4f00386ed868": { + "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-1cda96eb-ecc3-4897-a958-37bfd13a254e": { + "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-9153c32c-9f3b-4297-83b0-1d8e5e790aa9": { + "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-f6f9bf61-8e2b-4e08-8258-4a4f9fda0063": { + "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-265efd53-4f2a-45b4-95c8-613cf4db534a": { + "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-69973a7e-d10f-4fdf-998e-ea79bff3f2a9": { + "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-40554c8e-ece6-416f-8da6-a827f00068b7": { + "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-603bebb3-4f48-4845-ba62-f2ab83d78653": { + "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-f450e1cc-9426-4b69-8253-3b46d4ff2361": { + "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-f4b8f251-cae7-461d-becb-4ecc3874d1c6": { + "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-15faaca3-c0f0-4f24-a51f-9a888f62f8d3": { + "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-4760f4f1-077d-46ab-af8d-ebced0cced6c": { + "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..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 @@ -1,108 +1,132 @@ { "$$mdtype": "Node", - "errors": [], - "lines": [], "inline": false, "attributes": { "frontmatter": { "title": { - "string": "모바일 세션 리플레이 설치 및 설정" + "ast-str-e6058273-913f-46bb-9080-40f7dc9b34ae": { + "string": "모바일 세션 리플레이 설치 및 설정" + } }, "description": { - "string": "모바일 세션 리플레이을 설치하고 설정합니다." + "ast-str-e1880e45-f1ca-40b8-b80d-7e13841e67dc": { + "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-aeea9316-7851-464f-a0e5-908b6f1b7dd8": { + "string": "Mobile Session Replay" + } + }, + "tag": { + "ast-str-3c9ae4ac-2195-4740-bcd3-a52fbb4cf619": { + "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-ac54f8ca-37b7-413f-b3d0-0a918b37b1b5": { + "string": "모바일 세션 리플레이이 앱 성능에 미치는 영향" + } + }, + "tag": { + "ast-str-3eecfad5-5996-44a4-85ed-994091673150": { + "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-9476d72e-e89e-457c-832b-d1876d8154c2": { + "string": "모바일 세션 리플레이 개인정보 보호 옵션" + } + }, + "tag": { + "ast-str-3023c936-fb3f-41c2-9765-9041533094fb": { + "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-ca2c7ee9-4fe3-4bcd-9897-43ab42c7434b": { + "string": "모바일 세션 리플레이 문제 해결" + } + }, + "tag": { + "ast-str-3977546e-a1bb-4526-bf38-ca1c391da8e6": { + "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-13fc98fe-a961-4b16-a2f9-fbf4c3670cc0": { + "string": "Session Replay" + } + }, + "tag": { + "ast-str-856f47a5-5069-429c-a560-8082fbf32ae4": { + "string": "설명서" + } + } }, - "tag": { - "string": "Documentation" + "5": { + "link": "/real_user_monitoring/application_monitoring/android/web_view_tracking", + "text": { + "ast-str-c42c9b1d-9d9a-4622-89a1-e2f7dee5712e": { + "string": "웹 보기 추적" + } + }, + "tag": { + "ast-str-130ec363-d662-4b11-b461-4d66edcce43d": { + "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/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 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..c2bb6a463e67d --- /dev/null +++ b/content/ko/security/application_security/code_security/setup/java.md @@ -0,0 +1,113 @@ +--- +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" %}} + +```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..aa1d74eeac9ee --- /dev/null +++ b/content/ko/security/application_security/code_security/setup/nodejs.md @@ -0,0 +1,112 @@ +--- +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" %}} + +```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/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 >}} | | | + + + + + +
지원하지 않는 기능이나 Node.js 프레임워크와 관련해 추가 지원이 필요할 경우 문의해 주세요. 간단한 양식을 작성하여 세부 사항을 전송해 주시기 바랍니다.
+ + +### 네트워킹 프레임워크 호환성 + + +**네트워킹 추적은 다음을 제공합니다.** + +- 애플리케이션을 통한 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 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