@amplitude/analytics-core
Version:
166 lines • 5.33 kB
TypeScript
import { OfflineDisabled } from './types/offline';
import { ServerZoneType } from './types/server-zone';
import { Transport } from './types/transport';
import { Event } from './types/event/event';
import { Plan } from './types/event/plan';
import { IngestionMetadata } from './types/event/ingestion-metadata';
import { Storage } from './types/storage';
import { Logger, ILogger } from './logger';
import { LogLevel } from './types/loglevel';
export declare const getDefaultConfig: () => {
flushMaxRetries: number;
flushQueueSize: number;
flushIntervalMillis: number;
instanceName: string;
logLevel: LogLevel;
loggerProvider: Logger;
offline: boolean;
optOut: boolean;
serverUrl: string;
serverZone: ServerZoneType;
useBatch: boolean;
};
export interface IConfig {
/**
* Your Amplitude Project API key.
*/
apiKey: string;
/**
* The interval of uploading events to Amplitude in milliseconds.
*/
flushIntervalMillis: number;
/**
* The maximum number of retries for failed upload attempts. This is only applicable to retryable errors.
*/
flushMaxRetries: number;
/**
* The maximum number of events that are batched in a single upload attempt.
*/
flushQueueSize: number;
/**
* The instance name. For tracking events to multiple Amplitude projects in your application.
*/
instanceName?: string;
/**
* Level of logs to be printed in the developer console.
* Valid values are `LogLevel.None`, `LogLevel.Error`, `LogLevel.Warn`, `LogLevel.Verbose`, `LogLevel.Debug`
*/
logLevel: LogLevel;
/**
* A custom Logger class to emit log messages to desired destination.
*/
loggerProvider: ILogger;
/**
* The minimum length for the value of userId and deviceId properties.
*/
minIdLength?: number;
/**
* Whether the SDK is connected to network.
*/
offline?: boolean | typeof OfflineDisabled;
/**
* The flag to opt this device out of Amplitude tracking.
* If this flag is set, no additional information will be stored for the user.
*/
optOut: boolean;
/**
* Tracking plan properties.
* Amplitude internal use.
*/
plan?: Plan;
/**
* Ingestion metadata.
* Amplitude internal use.
*/
ingestionMetadata?: IngestionMetadata;
/**
* The URL where events are upload to.
*/
serverUrl?: string;
/**
* The Amplitude server zone.
* Set this to EU for Amplitude projects created in EU data center.
*/
serverZone?: ServerZoneType;
/**
* The storage provider to persist unsent events.
*/
storageProvider?: Storage<Event[]>;
/**
* A customer Transport Class for sending data to a server.
*/
transportProvider: Transport;
/**
* The flag of whether to upload events to Batch API instead of the default HTTP V2 API.
*/
useBatch: boolean;
/**
* Metrics of the SDK.
*/
requestMetadata?: IRequestMetadata;
}
export interface IRequestMetadata {
sdk: {
metrics: {
histogram: IHistogramOptions;
};
};
recordHistogram<T extends HistogramKey>(key: T, value: IHistogramOptions[T]): void;
}
export interface IHistogramOptions {
remote_config_fetch_time_IDB?: number;
remote_config_fetch_time_API_success?: number;
remote_config_fetch_time_API_fail?: number;
}
export type HistogramKey = keyof IHistogramOptions;
export interface ConfigOptions extends Partial<IConfig> {
apiKey: string;
transportProvider: Transport;
}
export declare class Config implements IConfig {
apiKey: string;
flushIntervalMillis: number;
flushMaxRetries: number;
flushQueueSize: number;
instanceName?: string;
loggerProvider: ILogger;
logLevel: LogLevel;
minIdLength?: number;
offline?: boolean | typeof OfflineDisabled;
plan?: Plan;
ingestionMetadata?: IngestionMetadata;
serverUrl: string | undefined;
serverZone?: ServerZoneType;
transportProvider: Transport;
storageProvider?: Storage<Event[]>;
useBatch: boolean;
requestMetadata?: RequestMetadata;
protected _optOut: boolean;
get optOut(): boolean;
set optOut(optOut: boolean);
constructor(options: ConfigOptions);
}
export declare const getServerUrl: (serverZone: ServerZoneType, useBatch: boolean) => "https://api2.amplitude.com/2/httpapi" | "https://api.eu.amplitude.com/2/httpapi" | "https://api2.amplitude.com/batch" | "https://api.eu.amplitude.com/batch";
export declare const createServerConfig: (serverUrl?: string, serverZone?: ServerZoneType, useBatch?: boolean) => {
serverUrl: string;
serverZone: undefined;
} | {
serverZone: ServerZoneType;
serverUrl: string;
};
export declare class RequestMetadata implements IRequestMetadata {
sdk: {
metrics: {
histogram: HistogramOptions;
};
};
constructor();
recordHistogram<T extends HistogramKey>(key: T, value: HistogramOptions[T]): void;
}
declare class HistogramOptions implements IHistogramOptions {
remote_config_fetch_time_IDB?: number;
remote_config_fetch_time_API_success?: number;
remote_config_fetch_time_API_fail?: number;
}
export {};
//# sourceMappingURL=config.d.ts.map