3.2.0 • Published 8 years ago

bloody-snowplow-tracker v3.2.0

Weekly downloads
-
License
MIT
Repository
-
Last release
8 years ago

Snowplow tracker

Install

$ npm install --save bloody-snowplow-tracker

Import

import { createTracker } from "bloody-snowplow-tracker"

API

createTracker(config): tracker

config

  • config.appName: string, your app's name
  • config.trackerName: string, the tracker's name
  • config.networkLayer: networkLayer, the network layer object

Creates a new tracker.

defaultNetworkLayer(url: string)

The default network layer relies on loading a pixel. In order for this to work, the url you provide to the default network layer must be an image.

import

In order for custom configurations not to bring an extra network layer, you have to require defaultNetworkLayer alone:

import { defaultNetworkLayer } from "bloody-snowplow-tracker/lib/NetworkLayer"

url

The URL of the collector.

tracker.trackPageView(?config): Promise

config

If not provided, these parameters are set automatically.

  • config.pageURL: string
  • config.pageTitle: string
  • config.pageReferrer: string
  • config.middleware: ?function

tracker.trackStructuredEvent(config): Promise

config

  • config.structuredEventCategory: string
  • config.structuredEventAction: string
  • config.structuredEventLabel: string
  • config.structuredEventProperty: string
  • config.structuredEventValue: string

tracker.trackSocialAction(config): Promise

config

  • config.socialAction: string
  • config.socialNetwork: string
  • config.socialTarget: string
  • config.socialPagePath: string

compose(...functions): function

In order to use multiple middlewares, you can use the compose utility provided by the tracker:

import { createTracker } from "bloody-snowplow-tracker"
import { compose } from "bloody-snowplow-tracker/lib/compose"

const postfixFingerprint = (event) => {
  return {
    ...event,
    fingerprint: event.fingerpring.then((item) => item + cookie.get("foo"))
  }
}

const postfixAppName = (event) => {
  return {
    ...event,
    appName: event.appName + ".ok"
  }
}

const tracker = createTracker({
  appName: "foo",
  trackerName: "bar",
  // … networkLayer
  middleware: compose(
    postfixFingerprint,
    postfixAppName
  ),
})

Implementing your own networkLayer

Your networkLayer must contain a send method, taking a single event object argument, and return a promise reflecting the state of the request.

If you want to transform human-readable events to the snowplow format, you can use the transformEvent module.

import { transformEvent } from "bloody-snowplow-tracker/lib/transformEvent"

const myCustomNetworkLayer = {
  send: (event) => {
    return fetch("/collector", {
      method: "POST",
      body: JSON.stringify(transformEvent(event)),
    })
      .then((res) => {
        if(res.status !== 200) {
          throw new Error()
        }
      })
  },
}
3.2.0

8 years ago

3.1.0

8 years ago

3.0.0

8 years ago

2.0.0

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago