@rudderstack/rudder-sdk-react-native
Version:
Rudder React Native SDK
50 lines (45 loc) • 2.01 kB
text/typescript
import type { TurboModule } from 'react-native';
import { TurboModuleRegistry } from 'react-native';
import IRudderContext from './IRudderContext';
type dictionary = { [key: string]: unknown } | null;
export interface Configuration {
dataPlaneUrl?: string;
controlPlaneUrl?: string;
flushQueueSize?: number;
dbCountThreshold?: number;
sleepTimeOut?: number;
configRefreshInterval?: number;
autoCollectAdvertId?: boolean;
trackAppLifecycleEvents?: boolean;
recordScreenViews?: boolean;
logLevel?: number;
autoSessionTracking?: boolean;
sessionTimeout?: number;
enableBackgroundMode?: boolean;
collectDeviceId?: boolean;
enableGzip?: boolean;
dbEncryption?: unknown;
// eslint-disable-next-line @typescript-eslint/ban-types
withFactories?: Array<Record<string, unknown> | Function>;
}
export interface Spec extends TurboModule {
setup(configuration: dictionary, options: dictionary): Promise<void>;
track(event: string, properties: dictionary, options: dictionary | null): Promise<void>;
screen(name: string, properties: dictionary, options: dictionary): Promise<void>;
identify(userId: string, traits: dictionary, options: dictionary): Promise<void>;
alias(newId: string, previousId: string | null, options: dictionary): Promise<void>;
group(groupId: string, traits: dictionary, options: dictionary): Promise<void>;
reset(clearAnonymousId: boolean): Promise<void>;
flush(): Promise<void>;
optOut(optOut: boolean): Promise<void>;
putDeviceToken(token: string): Promise<void>;
putAdvertisingId(id: string): Promise<void>;
clearAdvertisingId(): Promise<void>;
putAnonymousId(id: string): Promise<void>;
registerCallback(integrationName: string, callback: (data: unknown) => void): void;
getRudderContext(): Promise<IRudderContext | null>;
startSession(sessionId?: string): Promise<void>;
endSession(): Promise<void>;
getSessionId(): Promise<number | null>;
}
export default TurboModuleRegistry.getEnforcing<Spec>('RNRudderSdkModule');