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.

253 lines (218 loc) 6.31 kB
# Aard Recorder-js A JavaScript tracking library for the Aard analytics platform at [InYourArea.co.uk](https://inyourarea.co.uk). Record and track activity across the different services of the platform. ## Quick Start `yarn` to install dependencies `yarn build` to build the project `yarn watch` to build the project and watch for file changes `yarn check:lint` to check the code with tslint `yarn test` to run unit tests `yarn test:watch` to run unit tests and watch for file changes `yarn test:ui` to run and explore unit tests in a web interface `yarn docs` to generate docs in docs/ folder ### Project Name & API Keys You will need to provide an API Key and a Project Name to record events to the platform. ## Concepts ### What is an event? ... ### What is a fragment? ... ### What is a transformer? ... ## Usage ... ### UMD standalone version ```html <!-- development version --> <script src="https://unpkg.com/aard-client-js/umd/aard-client-recorder.development.js"></script> <!-- production version --> <script src="https://unpkg.com/aard-client-js/umd/aard-client-recorder.production.js"></script> ``` ... ### Initialization ... #### Initialize the recorder ```javascript import { Recorder } from 'aard-client-js/recorder' const recorder = new Recorder({ apiKey: 'API_KEY', projectName: 'project-name', environment: 'prod', }) ``` #### Initialize the recorder with a custom aard server endpoint ```javascript import { Recorder } from 'aard-client-js/recorder' const recorder = new Recorder({ apiKey: 'API_KEY', projectName: 'project-name', environment: 'prod', baseUrlCreator: env => `https://custom-aard-endpoint-${env}/` }) ``` #### Initialize the recorder with debug messages ```javascript import { Recorder } from 'aard-client-js/recorder' const recorder = new Recorder({ apiKey: 'API_KEY', projectName: 'project-name', environment: 'prod', debug: true, }) ``` #### Initialize the recorder with a custom fetch function ```javascript import { Recorder } from 'aard-client-js/recorder' const recorder = new Recorder({ apiKey: 'API_KEY', projectName: 'project-name', environment: 'prod', fetchFn: fetch, }) ``` #### Initialize the recorder without session cookie ```javascript import { Recorder } from 'aard-client-js/recorder' const recorder = new Recorder({ apiKey: 'API_KEY', projectName: 'project-name', environment: 'prod', session: false, }) ``` #### Initialize the recorder with a custom number or retries ```javascript import { Recorder } from 'aard-client-js/recorder' const recorder = new Recorder({ apiKey: 'API_KEY', projectName: 'project-name', environment: 'prod', maxRetries: 10, }) ``` #### Initialize the recorder with specific transformers ```javascript import { Recorder }, { transformers } from 'aard-client-js/recorder' const recorder = new Recorder({ apiKey: 'API_KEY', projectName: 'project-name', environment: 'prod', maxRetries: 10, transformers: [ transformers.addBrowserLanguage, transformers.addCurrentPageDetails, transformers.addPageReferrer, transformers.addUserAgent ] }) ``` #### Initialize the recorder with custom transformers ```javascript import { Recorder } from 'aard-client-js/recorder' const addTwitterAccount = event => ({ ...event, dimensions: { ...event.dimensions, twitter: { name: user.twitterAccount, url: user.twitterAccountUrl } }, plugins: [ plugins.parseUrl('twitter.url') ] }) const recorder = new Recorder({ apiKey: 'API_KEY', projectName: 'project-name', environment: 'prod', maxRetries: 10, transformers: [ addTwitterAccount ] }) ``` ### Sending Events ... #### Send normal event ```javascript recorder.sendEvent('contentplus', { dimensions: { advertIid: 'iid', version: '1.3.1', category: 'event-category' } }) ``` #### Send event with a custom trasformer ```javascript import { transformers } from 'aard-client-js/recorder' recorder.sendEvent('contentplus', { dimensions: { advertIid: 'iid', version: '1.3.1', category: 'event-category' } }, [ transformers.addBrowserLanguage ]) ``` #### Send event with a custom plugin ```javascript import { plugins } from 'aard-client-js/recorder' recorder.sendEvent('contentplus', { dimensions: { advertIid: 'iid', version: '1.3.1', category: 'event-category' }, plugins: [ plugins.remoteJoin('adverts', 'advertIid', 'advert'), plugins.restoreFragment('hash') ] }) ``` or ```javascript import { transformers } from 'aard-client-js/recorder' recorder.sendEvent('contentplus', { dimensions: { advertIid: 'iid', version: '1.3.1', category: 'event-category' }, }, [ transformers.addRemoteJoinPlugin('adverts', 'advertIid', 'advert'), transformers.addRestoreFragmentPlugin('hash') ]) ``` ### Fragments ... #### Register a fragment in the recorder ```javascript recorder.registerFragment('app', { app: { version: '1.3.1' } }) ``` #### Add a fragment hash to the recorder ```javascript recorder.addFragmentHash('app', 'hash') ``` #### Remove a fragment hash from the recorder ```javascript recorder.removeFragment('app', 'hash') ``` ### Dynamically add global transformers Other then adding global transformers during the recorder initialization or adding transformers for a specific event, you can dynamically add/remove global transformers to the recorder. ```javascript import { transformers } from 'aard-client-js/recorder' recorder.addTransformer(transformers.addBrowserLanguage) recorder.removeTransformer(transformers.addBrowserLanguage) ``` #### Custom transformers A trasformer is simply a function that takes an event (AardEvent interface) and return an event. ### Advanced Usage If you want fine control you can get access the low level functions used by the recorder to communicate with the Aard server. These function will not automatically add any fragment plugin or transformer, as well as will not handle the fragment hashes for you. #### Get the client ```javascript recorder.getClient() ```