Add four stub analytics adapters (metrica, ctm, variocube, dynatrace)
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
import type { AnalyticsAdapter, AnalyticsProps } from "../types.js";
|
||||||
|
import { emitEvent } from "../sink.js";
|
||||||
|
|
||||||
|
export class CtmAdapter implements AnalyticsAdapter {
|
||||||
|
readonly name = "ctm" as const;
|
||||||
|
|
||||||
|
async load(): Promise<void> {
|
||||||
|
// Stub: real CTM script loads in Phase 2A
|
||||||
|
}
|
||||||
|
|
||||||
|
track(event: string, props: AnalyticsProps = {}): void {
|
||||||
|
emitEvent({ kind: "track", name: event, props, provider: this.name, ts: new Date().toISOString() });
|
||||||
|
}
|
||||||
|
|
||||||
|
page(url: string, props: AnalyticsProps = {}): void {
|
||||||
|
emitEvent({ kind: "page", name: url, props, provider: this.name, ts: new Date().toISOString() });
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import type { AnalyticsAdapter, AnalyticsProps } from "../types.js";
|
||||||
|
import { emitEvent } from "../sink.js";
|
||||||
|
|
||||||
|
export class DynatraceAdapter implements AnalyticsAdapter {
|
||||||
|
readonly name = "dynatrace" as const;
|
||||||
|
|
||||||
|
async load(): Promise<void> {
|
||||||
|
// Stub: real Dynatrace (Key-Astrom) script loads in Phase 2A
|
||||||
|
}
|
||||||
|
|
||||||
|
track(event: string, props: AnalyticsProps = {}): void {
|
||||||
|
emitEvent({ kind: "track", name: event, props, provider: this.name, ts: new Date().toISOString() });
|
||||||
|
}
|
||||||
|
|
||||||
|
page(url: string, props: AnalyticsProps = {}): void {
|
||||||
|
emitEvent({ kind: "page", name: url, props, provider: this.name, ts: new Date().toISOString() });
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import type { AnalyticsAdapter, AnalyticsProps } from "../types.js";
|
||||||
|
import { emitEvent } from "../sink.js";
|
||||||
|
|
||||||
|
export class MetricaAdapter implements AnalyticsAdapter {
|
||||||
|
readonly name = "metrica" as const;
|
||||||
|
|
||||||
|
async load(): Promise<void> {
|
||||||
|
// Stub: real Yandex.Metrica script loads in Phase 2A (after A7 resolves)
|
||||||
|
}
|
||||||
|
|
||||||
|
track(event: string, props: AnalyticsProps = {}): void {
|
||||||
|
emitEvent({ kind: "track", name: event, props, provider: this.name, ts: new Date().toISOString() });
|
||||||
|
}
|
||||||
|
|
||||||
|
page(url: string, props: AnalyticsProps = {}): void {
|
||||||
|
emitEvent({ kind: "page", name: url, props, provider: this.name, ts: new Date().toISOString() });
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import type { AnalyticsAdapter, AnalyticsProps } from "../types.js";
|
||||||
|
import { emitEvent } from "../sink.js";
|
||||||
|
|
||||||
|
export class VariocubeAdapter implements AnalyticsAdapter {
|
||||||
|
readonly name = "variocube" as const;
|
||||||
|
|
||||||
|
async load(): Promise<void> {
|
||||||
|
// Stub: real Variocube script loads in Phase 2A
|
||||||
|
}
|
||||||
|
|
||||||
|
track(event: string, props: AnalyticsProps = {}): void {
|
||||||
|
emitEvent({ kind: "track", name: event, props, provider: this.name, ts: new Date().toISOString() });
|
||||||
|
}
|
||||||
|
|
||||||
|
page(url: string, props: AnalyticsProps = {}): void {
|
||||||
|
emitEvent({ kind: "page", name: url, props, provider: this.name, ts: new Date().toISOString() });
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user