Implement scribe cat analytics

Reviewed By: bolinfest

Differential Revision: D42700062

fbshipit-source-id: 198855b8bc82a8d28a37bba392c39ea6c16069d1
This commit is contained in:
Evan Krause 2023-01-25 15:10:27 -08:00 committed by Facebook GitHub Bot
parent b846c10463
commit 7c0e193985

View File

@ -11,6 +11,7 @@ import type {ServerPlatform} from '../serverPlatform';
import type {ApplicationInfo, TrackDataWithEventName} from './types';
import {generateAnalyticsInfo} from './environment';
// @fb-only
import {Tracker} from './tracker';
export type ServerSideTracker = Tracker<ServerSideContext>;
@ -23,6 +24,10 @@ class ServerSideContext {
}
}
const noOp = () => {
/* In open source builds, analytics tracking is completely disabled/removed. */
};
/**
* Creates a Tracker which includes server-side-only cached application data like platform, username, etc,
* and sends data to the underlying analytics engine outside of ISL.
@ -32,6 +37,10 @@ export function makeServerSideTracker(
logger: Logger,
platform: ServerPlatform,
version: string,
// prettier-ignore
writeToServer =
// @fb-only
noOp,
): ServerSideTracker {
return new Tracker((data: TrackDataWithEventName, context: ServerSideContext) => {
const {logger} = context;
@ -42,5 +51,6 @@ export function makeServerSideTracker(
data.errorName ?? '',
data.extras != null ? JSON.stringify(data.extras) : '',
);
writeToServer({...data, ...context.data}, logger);
}, new ServerSideContext(logger, generateAnalyticsInfo(platform.platformName, version)));
}