@eldrion/analytics-client (1.3.1)

Published 2026-04-12 03:54:14 +00:00 by Eldrion

Installation

@eldrion:registry=
npm install @eldrion/analytics-client@1.3.1
"@eldrion/analytics-client": "1.3.1"

About this package

@eldrion/analytics-client

Analytics client SDK for Eldrion Studio applications. Supports batch event tracking with automatic buffering and flush.

Пакет приватный (restricted), registry — Forgejo https://npm.eldrion.ru/api/packages/Eldrion/npm/. Перед установкой в .npmrc или ~/.npmrc:

@eldrion:registry=https://npm.eldrion.ru/api/packages/Eldrion/npm/
//npm.eldrion.ru/api/packages/Eldrion/npm/:_authToken=FORGEJO_TOKEN

Токен Forgejo с доступом к пакетам владельца. Подробнее: packages/eldrion-npm/README.md, Forgejo npm registry.

Installation

npm install @eldrion/analytics-client
# or
pnpm add @eldrion/analytics-client
# or
yarn add @eldrion/analytics-client

Quick Start

import { AnalyticsClient } from '@eldrion/analytics-client'

// Initialize the client
const analytics = new AnalyticsClient({
  clientId: 'user-uuid-here',
  channel: 'eldrion-studio',
})

// Track token usage
analytics.trackTokenUsage({
  provider: 'openai',
  model: 'gpt-4',
  input_tokens: 100,
  output_tokens: 200,
})

// Flush before app exit
await analytics.flush()

API

Constructor Options

interface AnalyticsClientOptions {
  /** Analytics service base URL (default: https://analytics.eldrion.ru) */
  baseUrl?: string
  /** Client unique identifier (UUID) */
  clientId: string
  /** Channel/application name */
  channel: string
  /** Enable automatic batching (default: true) */
  autoBatch?: boolean
  /** Batch size before auto-flush (default: 10) */
  batchSize?: number
  /** Batch flush interval in milliseconds (default: 5000) */
  flushInterval?: number
  /** Request timeout in milliseconds (default: 10000) */
  timeout?: number
  /** Custom fetch function (for Node.js or custom implementations) */
  fetch?: typeof fetch
  /** Called when an error occurs */
  onError?: (error: Error) => void
}

Methods

trackTokenUsage(data, timestamp?)

Track AI token usage.

analytics.trackTokenUsage({
  provider: 'openai',      // AI provider name
  model: 'gpt-4',          // Model name
  input_tokens: 100,       // Input token count
  output_tokens: 200,      // Output token count
})

// With custom timestamp (for offline tracking)
analytics.trackTokenUsage(data, new Date('2025-01-15T10:30:00Z'))

track(eventType, data, timestamp?)

Track a generic event. Useful for custom event types.

analytics.track('custom_event', {
  action: 'button_click',
  value: 42,
})

flush()

Flush all pending events to the server. Returns null if queue is empty.

const result = await analytics.flush()
// { success: true, count: 5 }

sendImmediate(eventType, data, timestamp?)

Send an event immediately without batching.

await analytics.sendImmediate('token_usage', {
  provider: 'anthropic',
  model: 'claude-3',
  input_tokens: 50,
  output_tokens: 150,
})

setClientId(clientId)

Update the client ID (e.g., after user login).

analytics.setClientId('new-user-uuid')

getQueueSize()

Get the current number of pending events in the queue.

const pending = analytics.getQueueSize()

destroy()

Clean up the client. Flushes remaining events and stops timers.

await analytics.destroy()

Examples

Electron App

import { AnalyticsClient } from '@eldrion/analytics-client'
import { app } from 'electron'

const analytics = new AnalyticsClient({
  clientId: getMachineId(),
  channel: 'eldrion-studio',
  onError: (error) => console.error('Analytics error:', error),
})

// Track usage
analytics.trackTokenUsage({
  provider: 'openai',
  model: 'gpt-4',
  input_tokens: 100,
  output_tokens: 200,
})

// Flush on app quit
app.on('before-quit', async (event) => {
  event.preventDefault()
  await analytics.destroy()
  app.exit()
})

Node.js with node-fetch

import { AnalyticsClient } from '@eldrion/analytics-client'
import fetch from 'node-fetch'

const analytics = new AnalyticsClient({
  clientId: 'server-instance-id',
  channel: 'eldrion-backend',
  fetch: fetch as unknown as typeof globalThis.fetch,
})

Disable Auto Batching

const analytics = new AnalyticsClient({
  clientId: 'user-uuid',
  channel: 'eldrion-studio',
  autoBatch: false, // Disable auto batching
})

// Manually send each event
await analytics.sendImmediate('token_usage', { ... })

Custom Batch Settings

const analytics = new AnalyticsClient({
  clientId: 'user-uuid',
  channel: 'eldrion-studio',
  batchSize: 50,        // Flush when 50 events accumulated
  flushInterval: 10000, // Or every 10 seconds
})

License

MIT

Dependencies

Development Dependencies

ID Version
@types/node ^20.0.0
tsup ^8.0.0
typescript ^5.0.0

Peer Dependencies

ID Version
typescript >=4.7.0

Keywords

analytics eldrion-studio tracking token-usage eldrion
Details
npm
2026-04-12 03:54:14 +00:00
6
Eldrion Studio
MIT
latest
16 KiB
Assets (1)
Versions (1) View all
1.3.1 2026-04-12