npm package: @ridi/ridi-event-tracker
Description: [![npm](https://img.shields.io/npm/v/@ridi/ridi-event-tracker.svg)](https://www.npmjs.com/package/@ridi/ridi-event-tracker)
Author: sblee@ridi.com
Latest version: 0.1.3

# @ridi/ridi-event-tracker

[![npm](https://img.shields.io/npm/v/@ridi/ridi-event-tracker.svg)](https://www.npmjs.com/package/@ridi/ridi-event-tracker)

Provides tracking API that helps to send events to various logging services like Google Analytics, RIDI beacon system

## Install

### NPM

```bash
$ npm install @ridi/ridi-event-tracker
```

### Browser

```html
# local
<script src="./node_modules/@ridi/event-tracker/dist/umd/bundle.min.js"></script>

# In GTM
<script src="https://unpkg.com/@ridi/ridi-event-tracker@{{EVENT_TRACKER_VERSION}}/dist/umd/bundle.min.js"></script>
<script>
  var beaconSrc = 'https://s3.ap-northeast-2.amazonaws.com/beacon-ridibooks-2/beacon_ridibooks_2.gif';
  window.ret = new Tracker({
    deviceType: '{{DeviceType}}',
    uId: '{{UserID}}',
    beaconOptions: {
      beaconSrc: beaconSrc
    }
  });
  window.ret.initialize();
</script>
```

## Usage

```javascript
import { Tracker, DeviceType } from "@ridi/event-tracker";

const tracker = new Tracker({
  deviceType: DeviceType.PC,
  uId: 123456,
  debug: false,
  throttleWait: 1000,
  beaconOptions: {
    beaconSrc: "http://beacon.com",
  },

});

tracker.initialize();

tracker.sendPageView(location.href);

tracker.sendEvent("Purchased", {
  t_id: "201808180210135",
  value: 29000
});
```

## API

### `new Tracker(MainTrackerOptions)`

#### MainTrackerOptions

| Key                            | Required | Type                                                                                  | Description                                                                                                                     |
| ------------------------------ | -------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `debug`                        | false    | `boolean`                                                                             | Defaults to `false` If set to `true`, All fired events are logged to browser via `console.log`                                  |
| `uId`                       | false    | `number`                                                                              | Logged user's identifier.                                                                                                       |
| `deviceType`                   | true     | `DeviceType`                                                                          | Type of connected user's device. Please refer `DeviceType` type                                                                 |                                                             | Additional properties related to specific service. Please refer `ServiceProp` type, which is `Record<string, string>`           |
| `beaconOptions`                | false    | `BeaconOptions`                                                                       | Options related with Beacon tracking module                                                                                     |
| `beaconOptions.beaconSrc`      | false    | `string`                                                                              | Source of the image to be used as a beacon                                                                                      |                                                                        | ID of `impression` event tag

### `Tracker.initialize()`

To use this library correctly, you need to call this method least once either before calling other methods or after.

written event records before calling `initialize`, this records flush after initialized.


## Develop

```bash
$ git clone https://github.com/ridi/event-tracker && cd tracking
$ npm install
$ npm run build
```

## Test

```bash
$ npm run test
```

## Publish

```bash
$ npm login
$ npm run deploy
$ # or
$ npm run build && npm publish --access public
```

## LICENSE

MIT