Skip to content

@gluonjs/core / src/analytics / Analytics

Class: Analytics ​

Provider-independent analytics owned by an application. Server instances intentionally accept events but never deliver them to adapters.

Constructors ​

Constructor ​

new Analytics(options?): Analytics

Parameters ​

options? ​

AnalyticsOptions = {}

Returns ​

Analytics

Methods ​

clearImpressions() ​

clearImpressions(): void

Returns ​

void


dispatch() ​

dispatch<Payload>(name, payload, context?, options?): AnalyticsEvent<Payload> | undefined

Emits an event to every configured adapter when consent is available.

Type Parameters ​

Payload ​

Payload

Parameters ​

name ​

AnalyticsEventName

payload ​

Payload

context? ​

Readonly<Record<string, unknown>> = {}

options? ​

Pick<AnalyticsEventOptions, "dedupeKey"> = {}

Returns ​

AnalyticsEvent<Payload> | undefined


scope() ​

scope(context?): AnalyticsScope

Parameters ​

context? ​

Readonly<Record<string, unknown>> = {}

Returns ​

AnalyticsScope


withContext() ​

withContext<Result>(context, callback): Result

Type Parameters ​

Result ​

Result

Parameters ​

context ​

Readonly<Record<string, unknown>>

callback ​

(scope) => Result

Returns ​

Result

Example ​

Own provider-independent event delivery and consent policy:

ts
import { Analytics, createAnalytics, createGa4Adapter, createServerAnalytics, semanticAnalyticsEvents, trackEvent, trackImpression, type AnalyticsAdapter, type AnalyticsEvent, type AnalyticsEventName, type AnalyticsEventOptions, type AnalyticsOptions, type AnalyticsScope, type AnalyticsDirectiveOptions, type SemanticAnalyticsEvent } from '@gluonjs/core/analytics';
const adapter: AnalyticsAdapter = createGa4Adapter((event) => console.log(event));
const options: AnalyticsOptions = { adapters: [adapter], consent: () => 'granted' };
const analytics: Analytics = createAnalytics(options);
const scope: AnalyticsScope = analytics.scope({ locale: 'en-GB' });
const eventName: AnalyticsEventName = semanticAnalyticsEvents[0];
const semanticEvent: SemanticAnalyticsEvent = 'view_item';
const eventOptions: AnalyticsEventOptions = { context: { currency: 'EUR' } };
const event: AnalyticsEvent = scope.track(eventName, { item_id: 'lamp' }, eventOptions)!;
const directiveOptions: AnalyticsDirectiveOptions = { emitOnUpdate: true };
const server = createServerAnalytics();
console.log(event, semanticEvent, directiveOptions, server, trackEvent, trackImpression);

Version-matched documentation. Examples are checked against the public package contracts.