UNPKG

@datadog/mobile-react-native

Version:

A client-side React Native module to interact with Datadog

61 lines (59 loc) 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerNativeBridge = exports.hasNativeBridge = exports.DdSdkInternalNativeBridge = void 0; var _InternalLog = require("../../InternalLog"); var _SdkVerbosity = require("../../SdkVerbosity"); var _sessionIdHelper = require("../../rum/sessionId/sessionIdHelper"); var _DatadogDefaultEventEmitter = require("../DatadogEventEmitter/DatadogDefaultEventEmitter"); var _DdSdkInternalNativeBridgeEvent = require("./DdSdkInternalNativeBridgeEvent"); /* * 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. */ const DEFAULT_EVENTS = [new _DdSdkInternalNativeBridgeEvent.DdSdkInternalNativeBridgeEvent('RUMSessionStarted', sessionId => { (0, _sessionIdHelper.setCachedSessionId)(sessionId); })]; const defaultErrorHandler = err => { _InternalLog.InternalLog.log(err, _SdkVerbosity.SdkVerbosity.DEBUG); }; class DdSdkInternalNativeBridge { _isInitialized = false; static get isInitialized() { return this._instance?._isInitialized ?? false; } static initialize(eventEmitter, errorHandler = defaultErrorHandler) { this._instance = new DdSdkInternalNativeBridge(eventEmitter, errorHandler); this._instance._isInitialized = eventEmitter.initialize() && this._instance.registerDefaultListeners(); return this._instance; } constructor(eventEmitter, errorHandler) { this.eventEmitter = eventEmitter; this.errorHandler = errorHandler; } registerDefaultListeners() { try { DEFAULT_EVENTS.forEach(event => { this.eventEmitter.addListener(event.eventName, event.callback); }); return true; } catch (err) { this.errorHandler(`An error occured while registering default listeners for event emitter: ${err}`); return false; } } } exports.DdSdkInternalNativeBridge = DdSdkInternalNativeBridge; const registerNativeBridge = (eventEmitter, errorHandler = defaultErrorHandler) => { const nativeEventEmitter = eventEmitter ?? new _DatadogDefaultEventEmitter.DatadogDefaultEventEmitter(errorHandler); DdSdkInternalNativeBridge.initialize(nativeEventEmitter); if (!DdSdkInternalNativeBridge.isInitialized) { errorHandler('ERROR: Native Bridge initialization failed.'); } }; exports.registerNativeBridge = registerNativeBridge; const hasNativeBridge = () => DdSdkInternalNativeBridge.isInitialized; exports.hasNativeBridge = hasNativeBridge; //# sourceMappingURL=DdSdkInternalNativeBridge.js.map