Files
DefinitelyTyped/types/amplitude-js/index.d.ts
Artur Gekalo 97f47faf75 🤖 Merge PR #61244 [@types/amplitude-js] Change type of sessionId field in interface Config by @maylorsan
* Change type of `sessionId` in `interface Config`

* [amplitude-js] Added test for changed type
2022-07-14 03:17:17 -07:00

275 lines
10 KiB
TypeScript

// Type definitions for Amplitude SDK 8.16
// Project: https://github.com/amplitude/Amplitude-Javascript
// Definitions by: Dan Manastireanu <https://github.com/danmana>
// Kimmo Hintikka <https://github.com/HintikkaKimmo>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
export as namespace amplitude;
export type Callback = (responseCode: number, responseBody: string, details?: { reason: string }) => void;
export type LogReturn = number | undefined;
export type Transport = 'http' | 'beacon';
// https://github.com/amplitude/Amplitude-JavaScript/blob/v8.9.0/src/server-zone.js#L9
export type ServerZone = 'EU' | 'US';
// https://amplitude.github.io/Amplitude-JavaScript/Options
export interface Config {
apiEndpoint?: string | undefined;
batchEvents?: boolean | undefined;
cookieExpiration?: number | undefined;
cookieForceUpgrade?: boolean | undefined;
cookieName?: string | undefined;
userId?: string | undefined;
deferInitialization?: boolean | undefined;
deviceId?: string | undefined;
deviceIdFromUrlParam?: boolean | undefined;
disableCookies?: boolean | undefined;
domain?: string | undefined;
eventUploadPeriodMillis?: number | undefined;
eventUploadThreshold?: number | undefined;
forceHttps?: boolean | undefined;
includeFbclid?: boolean | undefined;
includeGclid?: boolean | undefined;
includeReferrer?: boolean | undefined;
includeUtm?: boolean | undefined;
language?: string | undefined;
logLevel?: 'DISABLE' | 'ERROR' | 'WARN' | 'INFO' | undefined;
optOut?: boolean | undefined;
onError?: (() => void) | undefined;
onExitPage?: (() => void) | undefined;
platform?: string | undefined;
sameSiteCookie?: 'Lax' | 'Strict' | 'None' | undefined;
saveEvents?: boolean | undefined;
savedMaxCount?: number | undefined;
saveParamsReferrerOncePerSession?: boolean | undefined;
secureCookie?: boolean | undefined;
sessionTimeout?: number | undefined;
sessionId?: number | null;
storage?: '' | 'cookies' | 'localStorage' | 'sessionStorage' | 'none';
trackingOptions?: {
city?: boolean | undefined;
country?: boolean | undefined;
carrier?: boolean | undefined;
device_manufacturer?: boolean | undefined;
device_model?: boolean | undefined;
dma?: boolean | undefined;
ip_address?: boolean | undefined;
language?: boolean | undefined;
os_name?: boolean | undefined;
os_version?: boolean | undefined;
platform?: boolean | undefined;
region?: boolean | undefined;
version_name?: boolean | undefined;
} | undefined;
unsetParamsReferrerOnNewSession?: boolean | undefined;
unsentKey?: string | undefined;
unsentIdentifyKey?: string | undefined;
uploadBatchSize?: number | undefined;
useNativeDeviceInfo?: boolean | undefined;
transport?: Transport | undefined;
serverZone?: ServerZone | undefined;
serverZoneBasedApi?: boolean | undefined;
useDynamicConfig?: boolean | undefined;
logAttributionCapturedEvent?: boolean | undefined;
plan?: {
branch?: string;
source?: string;
version?: string;
} | undefined;
headers?: Record<string, string>;
library?: {
name?: string;
version?: string;
} | undefined;
}
export class Identify {
/** increment a user property by a given value (can also be negative to decrement). */
add(key: string, value: number | string): Identify;
/** Append a value or values to a user property */
append(key: string, value: number | string | any[] | object): Identify;
/** Prepend a value or values to a user property */
prepend(key: string, value: boolean | number | string | any[] | object): Identify;
/** Preinsert a value or values to a user property */
preInsert(key: string, value: number | string | any[] | object): Identify;
/** Sets the value of a given user property */
set(key: string, value: boolean | number | string | any[] | object): Identify;
/** Sets the value of a given user property only once */
setOnce(key: string, value: boolean | number | string | any[] | object): Identify;
/** Unset and remove a user property */
unset(key: string): Identify;
}
export class Revenue {
setProductId(productId: string): Revenue;
setQuantity(quantity: number): Revenue;
setPrice(price: number): Revenue;
setRevenueType(revenueType: string): Revenue;
setEventProperties(eventProperties: any): Revenue;
}
export class AmplitudeClient {
constructor(instanceName?: string);
options: Config;
cookieStorage: CookieStorage;
init(apiKey: string, userId?: string, config?: Config, callback?: (client: AmplitudeClient) => void): void;
onInit(callback: (client: AmplitudeClient) => void): void;
setLibrary(name?: string, version?: string): void;
setVersionName(versionName: string): void;
onNewSessionStart(callback: (client: AmplitudeClient) => void): void;
isNewSession(): boolean;
setSessionId(sessionId: number): void;
getSessionId(): number;
resetSessionId(): void;
setMinTimeBetweenSessionsMillis(timeInMillis: number): void;
setDomain(domain: string): void;
setUserId(userId: string | null, startNewSession?: boolean): void;
getUserId(): string;
enableTracking(): void;
setDeviceId(id: string): void;
getDeviceId(): string;
regenerateDeviceId(): void;
identify(identify: Identify, callback?: Callback, errorCallback?: Callback, outOfSession?: boolean): void;
groupIdentify(groupType: string, groupName: string | string[], identify: Identify, callback?: Callback, errorCallback?: Callback, outOfSession?: boolean): void;
setUserProperties(properties: any): void;
/**
* @deprecated Use `setUserProperties` instead
*/
setGlobalUserProperties(properties: any): void;
clearUserProperties(): void;
clearStorage(): boolean;
setUseDynamicConfig(useDynamicConfig: boolean): void;
setOptOut(enable: boolean): void;
setGroup(groupType: string, groupName: string | string[]): void;
setTransport(transport: Transport): void;
setServerUrl(serverUrl: string): void;
setServerZone(serverZone: ServerZone, serverZoneBasedApi?: boolean): void;
setEventUploadThreshold(eventUploadThreshold: number): void;
logEvent(event: string, data?: any, callback?: Callback, errorCallback?: Callback, outOfSession?: boolean): LogReturn;
logEventWithGroups(event: string, data?: any, groups?: any, callback?: Callback, errorCallback?: Callback, outOfSession?: boolean): LogReturn;
logRevenueV2(revenue_obj: Revenue): LogReturn;
/**
* @deprecated Use `logRevenueV2` instead
*/
logRevenue(price: number, quantity: number, product: string): LogReturn;
logEventWithTimestamp(event: string, data?: any, timestamp?: number, callback?: Callback, errorCallback?: Callback, outOfSession?: boolean): LogReturn;
Identify: typeof Identify;
Revenue: typeof Revenue;
}
export interface CookieStorageOptions {
expirationDays?: number | undefined;
domain?: string | undefined;
secure?: boolean | undefined;
sameSite?: 'Lax' | 'Strict' | 'None' | undefined;
}
export interface CookieStorage {
reset(): void;
options(): CookieStorageOptions;
options(opts: CookieStorageOptions): void;
get(name: string): any;
set(name: string, value: any): boolean;
remove(name: string): boolean;
}
// Proxy methods that get executed on the default AmplitudeClient instance (not all client methods are proxied)
/**
*
* @deprecated Please use amplitude.getInstance().init(apiKey, opt_userId, opt_config, opt_callback);
*/
export function init(
apiKey: string,
userId?: string,
options?: Config,
callback?: (client: AmplitudeClient) => void,
): void;
/**
* @deprecated Please use amplitude.getInstance().setVersionName(versionName)
*/
export function setVersionName(version: string): void;
/**
* @deprecated Please use amplitude.getInstance().isNewSession();
*/
export function isNewSession(): boolean;
/**
* Returns the id of the current session.
* @deprecated Please use amplitude.getInstance().getSessionId();
*/
export function getSessionId(): number;
export function setDomain(domain: string): void;
export function setUserId(userId: string | null): void;
/**
* @deprecated Please use amplitude.getInstance().setDeviceId(deviceId)
*/
export function setDeviceId(id: string): void;
/**
* @deprecated Please use amplitude.getInstance().regenerateDeviceId()
*/
export function regenerateDeviceId(): void;
/** Send an identify call containing user property operations to Amplitude servers */
export function identify(identify: Identify, callback?: Callback): void;
/**
* @deprecated Please use amplitude.getInstance.setUserProperties(userProperties)
*/
export function setUserProperties(properties: any): void;
/**
* @deprecated Note this is deprecated, and we recommend using setUserProperties
*/
export function setGlobalUserProperties(properties: any): void;
export function clearUserProperties(): void;
/**
* @deprecated Please use amplitude.getInstance().setUserId(userId)
*/
export function setOptOut(optOut: boolean): void;
/**
* @deprecated Please use amplitude.getInstance().setGroup(groupType, groupName)
*/
export function setGroup(groupType: string, groupName: string | string[]): void;
/**
* @deprecated Please use amplitude.getInstance().logEvent(eventType, eventProperties, opt_callback);
*/
export function logEvent(event: string, data?: any, callback?: Callback): LogReturn;
/**
* Log an event with eventType, eventProperties, and groups
*/
export function logEventWithGroups(event: string, data?: any, groups?: any, callback?: Callback): LogReturn;
/**
* @deprecated Please use amplitude.getInstance().logRevenueV2(revenue_obj);
*/
export function logRevenueV2(revenue_obj: Revenue): LogReturn;
/**
* @deprecated Please use amplitude.getInstance().logRevenueV2(revenue_obj);
*/
export function logRevenue(pric: number, quantity: number, product: string): LogReturn;
export function logEventWithTimestamp(event: string, data?: any, timestamp?: number, callback?: Callback): LogReturn;
export function getInstance(instanceName?: string): AmplitudeClient;
export const __VERSION__: string;
export const options: Config;