@dynatrace/react-native-plugin
Version:
This plugin gives you the ability to use the Dynatrace Mobile agent in your react native application.
179 lines (137 loc) • 4.52 kB
text/typescript
import type { TurboModule } from 'react-native';
// eslint-disable-next-line no-duplicate-imports
import { TurboModuleRegistry } from 'react-native';
// eslint-disable-next-line import/no-internal-modules
import { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
export interface Spec extends TurboModule {
// Event Listener for AppStart
addListener: (eventName: string) => void;
removeListeners: (count: number) => void;
getConstants: () => {
DATA_COLLECTION_OFF: string;
DATA_COLLECTION_PERFORMANCE: string;
DATA_COLLECTION_USERBEHAVIOR: string;
PLATFORM_ANDROID: string;
PLATFORM_IOS: string;
};
start(configuration: UnsafeObject): Promise<boolean>;
enterAction(name: string, key: string, platform?: string): void;
enterManualAction(name: string, key: string, platform?: string): void;
enterManualActionWithParent(
name: string,
key: string,
parentKey: string,
platform?: string,
): void;
leaveAction(key: string, leave: boolean, platform?: string): void;
cancelAction(key: string, platfrom?: string): void;
endVisit(platform?: string): void;
reportErrorWithoutStacktrace(
errorName: string,
errorCode: number,
platform?: string,
): void;
reportError(
errorName: string,
errorValue: string,
reason: string,
stacktrace: string,
platform?: string,
): void;
// eslint-disable-next-line max-len
reportCrash(
errorName: string,
reason: string,
stacktrace: string,
isRealError: boolean,
platform?: string,
): void;
storeCrash(errorName: string, reason: string, stacktrace: string): void;
reportErrorInAction(
key: string,
errorName: string,
errorCode: number,
platform?: string,
): void;
reportValue(
key: string,
valueName: string,
value: string,
platform?: string,
): void;
getRequestTag(key: string, url: string): Promise<string>;
identifyUser(user: string, plaform?: string): void;
reportEventInAction(
actionKey: string,
name: string,
platform?: string,
): void;
reportStringValueInAction(
actionKey: string,
name: string,
value: string,
platform?: string,
): void;
reportIntValueInAction(
actionKey: string,
name: string,
value: number,
platform?: string,
): void;
reportDoubleValueInAction(
actionKey: string,
name: string,
value: number,
platform?: string,
): void;
sendBizEvent(
type: string,
attributes: UnsafeObject,
plaform?: string,
): void;
forwardEvent(attributes: UnsafeObject): void;
forwardAppStartEvent(
attributes: UnsafeObject,
appStartKeys: string[],
): void;
setGPSLocation(
latitude: number,
longitude: number,
platform?: string,
): void;
flushEvents(platform?: string): void;
isCrashReportingOptedIn(platform?: string): Promise<boolean>;
setCrashReportingOptedIn(crashReporting: boolean, platform?: string): void;
setDataCollectionLevel(collectionLevel: string, platform?: string): void;
getDataCollectionLevel(platform?: string): Promise<string>;
// eslint-disable-next-line @typescript-eslint/ban-types
setBeaconHeaders(headers?: Object | null, platform?: string): void;
getUserPrivacyOptions(platform?: string): Promise<NativeUserPrivacyOptions>;
applyUserPrivacyOptions(
userPrivacyOptions: UnsafeObject,
platform?: string,
): void;
startWebRequestTiming(requestTag: string, url: string): void;
stopWebRequestTiming(
requestTag: string,
url: string,
responseCode: number,
responseMessage: string,
): void;
stopWebRequestTimingWithSize(
requestTag: string,
url: string,
responseCode: number,
responseMessage: string,
requestSize: number,
responseSize: number,
): void;
startView(name: string): void;
stopView(): void;
}
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
export type NativeUserPrivacyOptions = {
dataCollectionLevel: string;
crashReportingOptedIn: boolean;
};
export default TurboModuleRegistry.getEnforcing<Spec>('DynatraceBridge');