UNPKG

@datadog/mobile-react-native

Version:

A client-side React Native module to interact with Datadog

84 lines (80 loc) 3.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.__internalResetIsInitializedForTesting = exports.DatadogProvider = void 0; var _react = _interopRequireDefault(require("react")); var _DdSdkReactNativeConfiguration = require("../../DdSdkReactNativeConfiguration"); var _DdSdkReactNative = require("../../DdSdkReactNative"); var _InternalLog = require("../../InternalLog"); var _SdkVerbosity = require("../../SdkVerbosity"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /* * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. * This product includes software developed at Datadog (https://www.datadoghq.com/). * Copyright 2016-Present Datadog, Inc. */ let isInitialized = false; const isConfigurationPartial = configuration => { if (configuration instanceof _DdSdkReactNativeConfiguration.DatadogProviderConfiguration) { return false; } if (configuration instanceof _DdSdkReactNativeConfiguration.DdSdkReactNativeConfiguration) { // Not using InternalLog here as it is not yet instantiated console.warn('A DdSdkReactNativeConfiguration was passed to DatadogProvider. Please use DatadogProviderConfiguration instead.'); return false; } return true; }; const initializeDatadog = async (configuration, onInitialization) => { await _DdSdkReactNative.DdSdkReactNative._initializeFromDatadogProvider(configuration); if (onInitialization) { try { onInitialization(); } catch (error) { _InternalLog.InternalLog.log(`Error running onInitialization callback ${error}`, _SdkVerbosity.SdkVerbosity.WARN); } } }; /** * Set up the Datadog React Native SDK. */ const DatadogProvider = ({ children, configuration, onInitialization }) => { if (!isInitialized) { // Here we cannot use a useEffect hook since it would be called after // the first render. Thus, we wouldn't enable auto-instrumentation on // the elements rendered in this first render and what happens during // the first render. if (isConfigurationPartial(configuration)) { _DdSdkReactNative.DdSdkReactNative._enableFeaturesFromDatadogProvider(configuration); DatadogProvider.onInitialization = onInitialization; } else { initializeDatadog(configuration, onInitialization); } isInitialized = true; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, { children: children }); }; /** * Initialize the Datadog SDK to start sending RUM events, logs and traces, * then execute onInitialization callback if any was provided. */ exports.DatadogProvider = DatadogProvider; DatadogProvider.initialize = async configuration => { await _DdSdkReactNative.DdSdkReactNative._initializeFromDatadogProviderWithConfigurationAsync(configuration); if (DatadogProvider.onInitialization) { DatadogProvider.onInitialization(); } }; const __internalResetIsInitializedForTesting = () => { isInitialized = false; }; exports.__internalResetIsInitializedForTesting = __internalResetIsInitializedForTesting; //# sourceMappingURL=DatadogProvider.js.map