# Deno

### Installation <a href="#installation" id="installation"></a>

```javascript
// Deno's Node.js compatibility mode
import { LogSnag } from 'npm:@logsnag/node';
```

```javascript
// Directly from the CDN.
import { LogSnag } from 'https://dev.jspm.io/@logsnag/node';
```

### Usage <a href="#user-content-usage" id="user-content-usage"></a>

```javascript
const logsnag = new LogSnag({
  token: '<TOKEN>',
  project: '<PROJECT_NAME>'
});

// Track an event
await logsnag.track({
  channel: "payments",
  event: "New Subscription",
  user_id: "user-123",
  icon: "💰",
  notify: true,
  tags: {
    plan: "premium",
    cycle: "monthly",
    trial: false
  }
});

// Identify user traits (e.g. name, email, plan, etc.)
await logsnag.identify({
  user_id: "user-123",
  properties: {
    name: "John Doe",
    email: "john@doe.com",
    plan: "premium",
  }
});

// Track an insight
await logsnag.insight.track({
  title: "User Count",
  value: "100",
  icon: "👨",
});

// Increment an insight value
await logsnag.insight.increment({
  title: "User Count",
  value: 1,
  icon: "👨",
});
```

### Disabling Tracking <a href="#user-content-disabling-tracking" id="user-content-disabling-tracking"></a>

You can disable tracking for development purposes by using the `disableTracking` method:

```
logsnag.disableTracking();
```

And enable it back with:

```
logsnag.enableTracking();
```

You can check if tracking is disabled with:

```
logsnag.isTrackingDisabled();
```

### Methods <a href="#user-content-methods" id="user-content-methods"></a>

* `track(options: TrackOptions): Promise<boolean>`: Track custom events.
* `identify(options: IdentifyOptions): Promise<boolean>`: Identify user traits.
* `group(options: GroupOptions): Promise<boolean>`: Group users.
* `insightTrack(options: InsightTrackOptions): Promise<boolean>`: Track insights.
* `insightIncrement(options: InsightIncrementOptions): Promise<boolean>`: Increment insight values.
