@datadog/mobile-react-native
Version:
A client-side React Native module to interact with Datadog
84 lines (80 loc) • 3.22 kB
JavaScript
;
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