@datadog/mobile-react-native-code-push
Version:
A client-side React Native module to interact with Appcenter Codepush and Datadog
79 lines (77 loc) • 3.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DatadogCodepushProvider = exports.DatadogCodepush = void 0;
var _mobileReactNative = require("@datadog/mobile-react-native");
var _reactNativeCodePush = _interopRequireDefault(require("react-native-code-push"));
var _utils = require("./utils");
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.
*/
/**
* Use this class instead of DdSdkReactNative to initialize the Datadog SDK when using AppCenter CodePush.
*/
const DatadogCodepush = exports.DatadogCodepush = {
async initialize(configuration) {
const codePushUpdateMetadata = await _reactNativeCodePush.default.getUpdateMetadata();
if (codePushUpdateMetadata) {
configuration.versionSuffix = `codepush.${codePushUpdateMetadata.label}`;
}
return _mobileReactNative.DdSdkReactNative.initialize(configuration);
}
};
const initializeWithCodepushVersion = async configuration => {
const codePushUpdateMetadata = await _reactNativeCodePush.default.getUpdateMetadata();
if (codePushUpdateMetadata) {
configuration.versionSuffix = `codepush.${codePushUpdateMetadata.label}`;
}
_mobileReactNative.DatadogProvider.initialize(configuration);
};
const buildPartialConfiguration = configuration => {
const partialConfiguration = {
trackErrors: configuration.trackErrors,
trackResources: configuration.trackResources,
trackInteractions: configuration.trackInteractions,
firstPartyHosts: configuration.firstPartyHosts,
logEventMapper: configuration.logEventMapper,
errorEventMapper: configuration.errorEventMapper,
resourceEventMapper: configuration.resourceEventMapper,
actionEventMapper: configuration.actionEventMapper,
useAccessibilityLabel: configuration.useAccessibilityLabel,
resourceTracingSamplingRate: configuration.resourceTracingSamplingRate,
actionNameAttribute: configuration.actionNameAttribute ?? _utils.DISCARD_PROPERTY
};
return (0, _utils.removeDiscardProperties)(partialConfiguration);
};
const DatadogCodepushProvider = ({
configuration,
...rest
}) => {
// We cannot use SYNC or ASYNC initialization modes as we need to asynchronously get the CodePush version.
// We turn it to partial initialization, while in parallel we get the CodePush version and initialize the SDK.
if (configuration instanceof _mobileReactNative.DatadogProviderConfiguration) {
initializeWithCodepushVersion(configuration);
return (0, _mobileReactNative.DatadogProvider)({
configuration: buildPartialConfiguration(configuration),
...rest
});
} else {
return (0, _mobileReactNative.DatadogProvider)({
configuration,
...rest
});
}
};
exports.DatadogCodepushProvider = DatadogCodepushProvider;
DatadogCodepushProvider.initialize = async configuration => {
const codePushUpdateMetadata = await _reactNativeCodePush.default.getUpdateMetadata();
if (codePushUpdateMetadata) {
configuration.versionSuffix = `codepush.${codePushUpdateMetadata.label}`;
}
_mobileReactNative.DatadogProvider.initialize(configuration);
};
//# sourceMappingURL=index.js.map