UNPKG

@inyourarea/aard-client-js

Version:

A JavaScript tracking library for the Aard Platform at InYourArea.co.uk. Record and track activity across the different services of the platform.

89 lines (88 loc) 3.5 kB
import { Dimensions, EventTransformer, AardEvent, SimpleAardEvent } from './recorder.types'; interface RecorderConfig { projectName: string; apiKey: string; session?: boolean; fetchFn?: typeof fetch; maxRetries?: number; environment?: string; baseUrlCreator?: (env: string) => string; transformers?: EventTransformer[]; debug?: boolean; } export default class AardRecorder { projectName: string; session: boolean; private client; private fragments; private transformers; private eventQueue; private busyCount; constructor({ projectName, apiKey, session, fetchFn, maxRetries, environment, baseUrlCreator, transformers, debug, }: RecorderConfig); /** * Register a fragmet on Aard server and store its hash with the provided arbitrary name * The hash will be added to every event, in order to have the fragment merged to the event server side. */ registerFragment(name: string, dimensionsObject: Dimensions): Promise<void>; /** * Adds a fragment hash to the recorder without registering any fragment on the server */ addFragmentHash(name: string, hash: string): void; /** * Returns a map of fragment names and their hash */ getFragments(): Map<string, string>; /** * Returns a the fragment hash stored with the provided name */ getFragment(name: string): string | undefined; /** * Returns an array with all the fragment hashes stored in the recoder */ getFragmentsHashes(): string[]; /** * Removes the fragment hash stored with the provided name */ removeFragment(name: string): void; /** * Adds a transformer to the recorder. * This transformer will be applied to every event. */ addTransformer(transformer: EventTransformer): void; /** * Removes a transformer from the recorder. */ removeTransformer(transformer: EventTransformer): void; /** * Returns a list of all the stored transformers. */ getTransformersList(): EventTransformer[]; /** * Returns the internal client used to communicate with the Aard client. * The client is an object that expose the following functions: * - trasnformEvent(event, transformers) transforms an event with the provided transformers * - saveFragment(dimensions) saves the provided dimensions as a fragment on the Aard server and returns its hash * - sendEvent(dimensions) sends an event to the Aard server */ getClient: () => { transformEvent: (event: AardEvent, transformers: EventTransformer[]) => AardEvent; saveFragment: (dimensions: Dimensions) => Promise<unknown>; sendEvent: (event: AardEvent) => Promise<unknown>; }; /** * Sends an event to the Aard server. * It applies the following modifications to the event: * - applies all the transformer provided to this method * - applies all the transformer stored in the recoder * - adds the restore fragment plugin for every fragment hash stored in the recorder */ sendEvent(name: string, { dimensions, plugins, unit, value, }: SimpleAardEvent, transformers?: EventTransformer[]): void; /** * Same as sendEvent, but specifically for the pageview event. */ sendPageView({ dimensions, plugins, }: SimpleAardEvent, transformers?: EventTransformer[]): void; private transformEvent; private addEventToQueue; private tryConsumeQueue; } export {};