highlight.run
Version:
Open source, fullstack monitoring. Capture frontend errors, record server side logs, and visualize what broke with session replay.
150 lines (138 loc) • 5.68 kB
TypeScript
import { EvaluationSeriesContext } from '@launchdarkly/js-client-sdk';
import { EvaluationSeriesData } from '@launchdarkly/js-client-sdk';
import { Hook as Hook_2 } from '@launchdarkly/js-client-sdk';
import { LDEvaluationReason } from '@launchdarkly/js-client-sdk';
import { LDFlagValue } from '@launchdarkly/js-client-sdk';
import { LDPluginEnvironmentMetadata } from '@launchdarkly/js-client-sdk';
declare class BufferedClass<T extends object> {
protected _sdk: T;
protected _isLoaded: boolean;
protected _callBuffer: Array<Event_2>;
protected _capacity: number;
protected _droppedEvents: number;
protected _exceededCapacity: boolean;
protected _logger: Logger;
protected _bufferCall(method: string, args: any[]): any;
protected _enqueue(event: Event_2): void;
load(sdk: T): void;
}
declare type Event_2 = {
method: string;
args: any[];
};
/**
* Interface for extending SDK functionality via hooks.
*/
declare type Hook = Omit<Hook_2, 'afterEvaluation'> & {
/**
* This method is called during the execution of the variation method
* after the flag value has been determined. The method is executed synchronously.
*
* @param hookContext Contains read-only information about the evaluation
* being performed.
* @param data A record associated with each stage of hook invocations. Each
* stage is called with the data of the previous stage for a series.
* @param detail The result of the evaluation. This value should not be
* modified.
* @returns Data to use when executing the next state of the hook in the evaluation series. It is
* recommended to expand the previous input into the return. This helps ensure your stage remains
* compatible moving forward as more stages are added.
* ```js
* return {...data, "my-new-field": /*my data/*}
* ```
*/
afterEvaluation?(hookContext: EvaluationSeriesContext, data: EvaluationSeriesData, detail: {
/**
* The result of the flag evaluation. This will be either one of the flag's variations or
* the default value that was passed to `LDClient.variationDetail`.
*/
value: LDFlagValue;
/**
* The index of the returned value within the flag's list of variations, e.g. 0 for the
* first variation-- or `null` if the default value was returned.
*/
variationIndex?: number | null;
/**
* An object describing the main factor that influenced the flag evaluation value.
*/
reason?: LDEvaluationReason | null;
}): EvaluationSeriesData;
};
declare interface LDClientMin {
track(key: string, data?: any, metricValue?: number): void;
identify(ctx: any): void;
addHook(hook: Hook): void;
}
export declare let LDRecord: _LDRecord;
declare class _LDRecord extends BufferedClass<Record_2> implements Record_2 {
getSession(): SessionDetails | null;
start(options?: StartOptions): Promise<void>;
stop(): void;
addSessionProperties(properties: {
[key: string]: any;
}): any;
getRecordingState(): any;
snapshot(element: HTMLCanvasElement): any;
register(client: LDClientMin, environmentMetadata: LDPluginEnvironmentMetadata): any;
}
declare class Logger {
debug: boolean | undefined;
name: string | undefined;
constructor(debug?: boolean, name?: string);
log(...data: any[]): void;
warn(...data: any[]): void;
}
declare interface Record_2 {
/**
* Start the session when running in `manualStart` mode.
* Can be used to force start a new session.
* @param options the session start options.
*/
start: (options?: StartOptions) => Promise<void>;
/**
* Stop the session recording.
*/
stop: () => void;
/**
* Add custom session-level properties. These are attached to the current session
* and are searchable, but do not create timeline Track events.
*/
addSessionProperties: (properties: {
[key: string]: any;
}) => void;
/**
* Snapshot an HTML <canvas> element in WebGL manual snapshotting mode.
* See {@link https://www.highlight.io/docs/getting-started/browser/replay-configuration/canvas#manual-snapshotting}
* for more information.
*/
snapshot: (element: HTMLCanvasElement) => Promise<void>;
getSession: () => SessionDetails | null;
getRecordingState: () => 'NotRecording' | 'Recording';
register(client: LDClientMin, environmentMetadata: LDPluginEnvironmentMetadata): void;
getHooks?(metadata: LDPluginEnvironmentMetadata): Hook[];
}
declare interface SessionDetails {
/** The URL to view the session. */
url: string;
/** The URL to view the session at the time getSessionDetails was called during the session recording. */
urlWithTimestamp: string;
/** The secure ID of the session. */
sessionSecureID: string;
}
declare interface StartOptions {
/**
* Specifies whether console warn messages should not be created.
*/
silent?: boolean;
/**
* Starts a new recording session even if one was stopped recently.
*/
forceNew?: boolean;
/**
* Key to use to determine the sessionSecureID in order to override session generation logic.
* If a sessionKey is provided, the session will be combined with the previous session with the same key.
* Otherwise, the current session logic will be used to generate a sessionSecureID.
*/
sessionKey?: string;
}
export { }