open-index/open-npm huggingface dataset:
npm package: @james-surfside/browser-sdk
Description: Browser SDK for Surfside Digital Analytics
Author: Michael Blanche
Latest version: 3.5.0

# Surfside Browser Tracker
### Setup repository

```bash
npm install -g @microsoft/rush 
git clone repo
rush update
```

## Package Installation

With npm:

```bash
npm install @james-surfside/browser-sdk
```

## Usage

Initialize your tracker with your desired configuration and optional plugins:

```js
import { newTracker } from '@james-surfside/browser-sdk';
import { SiteTrackingPlugin } from '@snowplow/browser-plugin-site-tracking';
import { PerformanceTimingPlugin } from '@snowplow/browser-plugin-performance-timing';
import { ClientHintsPlugin } from '@snowplow/browser-plugin-client-hints';
import { FormTrackingPlugin, enableFormTracking } from '@snowplow/browser-plugin-form-tracking';

newTracker('sp1', '{{collector}}', { plugins: [ PerformanceTimingPlugin(), SiteTrackingPlugin(), ClientHintsPlugin(), FormTrackingPlugin() ] }); // Also stores reference at module level
newTracker('sp2', '{{collector}}', { plugins: [ PerformanceTimingPlugin(), SiteTrackingPlugin() ] }); // You can have multiple trackers with different configs!

enableFormTracking() // Switch on form tracking

```

Then use the `trackX` functions from this package and your plugins to track to all trackers which have been initialized, or select just some trackers:

```js
import { trackPageView } from '@james-surfside/browser-sdk';
import { trackSocialInteraction } from '@snowplow/browser-plugin-site-tracking';

trackPageView({}, ['sp1']); // Just to `sp1`

// OR to all trackers with some extra context!
trackPageView({
  title: 'My Title',
  context: [
    {
      schema: 'iglu:org.schema/WebPage/jsonschema/1-0-0',
      data: {
        keywords: ['tester'],
      },
    },
  ],
});

// Use your plugin track methods too
trackSocialInteraction({
  action: 'retweet',
  network: 'twitter',
  target: '1234',
});


```

## Copyright and license

Licensed and distributed under the [BSD 3-Clause License](LICENSE) ([An OSI Approved License][osi]).

Copyright (c) 2022 Surfside Solutions Inc, Snowplow Analytics Ltd, 2010 Anthon Pang.

All rights reserved.

[osi]: https://opensource.org/licenses/BSD-3-Clause
[license-image]: https://img.shields.io/npm/l/@snowplow/browser-tracker
npm package: @james-surfside/digital-core
Description: Core functionality for Surfside JavaScript trackers
Author: Michael Blanche
Latest version: 3.5.0

# Surfside Tracker Core

### Setup repository

```bash
npm install -g @microsoft/rush 
git clone repo
rush update
```

### Building Tracker Core

```bash
cd libraries/tracker-core
rushx build
```

### Running tests

```bash
rushx test
```

## Package Installation

With npm:

```bash
npm install @james-surfside/digital-core
```

## Usage

### CommonJS Example

```js
const trackerCore = require('@james-surfside/digital-core').trackerCore;

// Create an instance with base 64 encoding set to false (it defaults to true)
const core = trackerCore(false);
```

### ES Module Example

```js
import { trackerCore } from '@james-surfside/digital-core';

// Create an instance with base 64 encoding set to false (it defaults to true)
const core = trackerCore(false)
```

### Example

```js
// Add a name-value pair to all payloads
core.addPayloadPair('vid', 2);

// Add each name-value pair in a dictionary to all payloads
core.addPayloadDict({
    'ds': '1160x620',
    'fp': 4070134789
});

// Add name-value pairs to all payloads using convenience methods
core.setTrackerVersion('js-3.0.0');
core.setPlatform('web');
core.setUserId('user-321');
core.setColorDepth(24);
core.setViewport(600, 400);
core.setUseragent('Surfside/0.0.1');

// Track a page view with URL and title
const pageViewPayload = core.track(buildPageView({ pageUrl: 'http://www.example.com', pageTitle: 'landing page'});

console.log(pageViewPayload.build());
/*
{
    'e': 'pv',
    'url': 'http://www.example.com',
    'page': 'landing page',
    'uid': 'user-321',
    'vd': 2,
    'ds': '1160x620',
    'fp': 4070134789
    'tv': 'js-3.0.0',
    'p': 'web',
    'cd': 24,
    'vp': '600x400',
    'ua': 'Surfside/0.0.1',
    'dtm': 1406879959702,                          // timestamp
    'eid': '0718a85a-45dc-4f71-a949-27870442ed7d'  // UUID
}
*/

// Stop automatically adding tv, p, and dtm to the payload
core.resetPayloadPairs();


## Other features

Core instances can be initialized with three parameters. The first is a boolean and determines whether custom contexts and unstructured events will be base 64 encoded. The second are optional Core Plugins, these can be used to intercept payload creation and add contexts on every event. The third is an optional callback function which gets applied to every payload created by the instance.

```js
const core = trackerCore(true, [], console.log);
```

The above example would base 64 encode all unstructured events and custom contexts and would log each payload to the console.

Use the `setBase64Encoding` method to turn base 64 encoding on or off after initializing a core instance:

```js
const core = trackerCore(); // Base 64 encoding on by default

core.setBase64Encoding(false); // Base 64 encoding is now off
```


## Copyright and license

Licensed and distributed under the BSD 3-Clause License

Copyright (c) 2022 Surfside Solutions Inc, Snowplow Analytics Ltd, 2010 Anthon Pang.

All rights reserved.