@datadog/mobile-react-native
Version:
A client-side React Native module to interact with Datadog
61 lines (56 loc) • 1.91 kB
JavaScript
/*
* 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.
*/
import { createDatadogMetroSerializer, unstable_beforeAssetSerializationPlugin } from './metroSerializer';
import { getDefaultExpoConfig } from './utils';
/**
* Custom Datadog Metro Configuration.
*/
/**
* Extends the Metro bundler configuration to integrate with Datadog.
*
* *Note: If a custom serializer is used and `config.useDebugId` is set to `true` (as it is by default),
* you must manually invoke `options.datadogBundleCallback` within the serializer.*
*/
export function withDatadogMetroConfig(config) {
let newConfig = config;
if (config.useDebugId ?? true) {
newConfig = withDatadogDebugId(config);
}
return {
...newConfig,
transformer: {
...newConfig.transformer
}
};
}
/**
* Extends the Expo configuration to integrate with Datadog.
* @param config
* @returns
*/
export function getDatadogExpoConfig(projectRoot, options = {}) {
const plugins = options.unstable_beforeAssetSerializationPlugins ?? [];
const datadogOptions = {
...options,
unstable_beforeAssetSerializationPlugins: [...plugins, unstable_beforeAssetSerializationPlugin]
};
return (options.getDefaultConfig ?? getDefaultExpoConfig)(projectRoot, datadogOptions);
}
/**
* Extends the Metro bundler configuration by enabling Debug ID injection.
* Ref: https://github.com/tc39/ecma426/blob/main/proposals/debug-id.md
*/
export function withDatadogDebugId(config) {
const customSerializer = createDatadogMetroSerializer(config.serializer?.customSerializer || undefined);
return {
...config,
serializer: {
...config.serializer,
customSerializer
}
};
}
//# sourceMappingURL=metroConfig.js.map