@atxm/metrics
TypeScript icon, indicating that this package has built-in type declarations

0.14.0 • Public • Published

@atxm/metrics

npm npm CircleCI David

Event tracking for your Atom packages made easy. Supports Google Analytics and Matomo.

Installation

npm install @atxm/metrics -S

Usage

Tracking of commands provided by your package and configuration changes is enabled by default. Additionally, custom events can be fired from anywhere in your package.

Keep in mind that you need to initialize the metrics provider after adding your Atom commands!

Examples:

Google Analytics
import { Analytics as Metrics } from '@atxm/metrics';

export async function activate() {
  // Initialize metrics provider
  await Metrics.init('UA-XXXXXX-Y');

  // Dispatch custom event
  Metrics.emit({
    category: 'Demo',
    action: 'Package activated!'
  });
};
Matomo
import { Matomo as Metrics } from '@atxm/metrics';

export async function activate() {
  // Initialize metrics provider
  const trackingUrl = 'https://url.to/matomo.php';
  const siteId = '123';
  await Metrics.init(trackingUrl, siteId)

  // Dispatch custom event
  Metrics.emit({
    category: 'Demo',
    action: 'Package activated!'
  });
}

Note: In order to make your Atom package compliant with the GDPR or the CCPA, you need to provide a privacy policy and a consent setting!

Providers

This modules currently exposes two providers: Google Analytics and Matomo. Both share the same methods but differ in their initialization.

Methods

init

Google Analytics: init(trackingID: string, options: object)
Matomo: init(trackingURL: string, siteID: string | number = 1, options: object)

Initializes module, unless option.muted is used

listen

Usage: listen()

Manually add event listener, e.g. for when option.muted is true

mute

Usage: mute()

Removes event listener

emit

Usage: emit({ category: string, action: string, label?: string, value?: number })

Dispatches an event to Google Analystics

Options

cacheBuster

Type: boolean
Default: false

Used to send a random number in GET requests to ensure browsers and proxies don't cache hits.

categories

Type: object

categories.commands

Type: string
Default: Package Commands

Specifies event category name for package commands

categories.configuration

Type: string
Default: Package Configuration

Specifies event category name for package configuration

consentSetting

Type: string

Specifies a package setting in which the user can deny tracking, e.g. in compliance with the GDPR or the CCPA.

dryRun

Type: boolean
Default: false

Skips sending the actual data request.

ipOverride

Type: boolean | string
Default: false

Allows overriding the user IP address. Uses 127.0.0.1 when true.

Note: This option only works with Google Analytics

muted

Type: boolean
Default: false

Skips adding event listeners when the module is initialized.

randomClientID

Type: boolean
Default: false

Uses a random UUID as client ID for each tracking event.

tracking

Type: object

Enables/disables automatic tracking

tracking.commands

Type: boolean
Default: true

Dispatches an event whenever a command provided by your package is invoked. Requires the metrics provider to initialize after your commands were added!

Example
import { Analytics as Metrics } from '@atxm/metrics';

export async function activate() {
  // First, register commands
  subscriptions.add(
    atom.commands.add('atom-workspace', {
      'demo:log-to-console': () => {
        console.log('Demo time');
      }
    })
  );

  // Next, initialize metrics provider
  await Metrics.init('UA-XXXXXX-Y');
};

tracking.configuration

Type: boolean
Default: true

Dispatches an event whenever the configuration for a package has been changed.

Note: The configuration types string and array will be ignored for privacy reasons!

trackInDevMode

Type: boolean
Default: false

Enables tracking if the current window is in development mode.

trackInSpecMode

Type: boolean
Default: false

Enables tracking if current window is running specs.

Debugging

Running Atom in developer mode will log useful message to the console.

License

This work is dual-licensed under The MIT License and the GNU General Public License, version 2.0

Package Sidebar

Install

npm i @atxm/metrics

Weekly Downloads

1

Version

0.14.0

License

MIT OR GPL-2.0

Unpacked Size

227 kB

Total Files

6

Last publish

Collaborators

  • idleberg