@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
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
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:
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);