@logsnag/next
Version:
LogSnag client for Next applications
227 lines (221 loc) • 4.91 kB
TypeScript
interface InsightBase {
/**
* Insight title
* example: "User Count"
*/
title: string;
/**
* Event icon (emoji)
* must be a single emoji
* example: "👨"
*/
icon?: string;
}
/**
* Options for publishing LogSnag insight
*/
interface InsightTrackOptions extends InsightBase {
/**
* Insight value
* example: 100
*/
value: string | boolean | number;
}
interface InsightIncrementOptions extends InsightBase {
/**
* Insight value
* example: 1
*/
value: number;
}
type TagKey = Lowercase<string>;
/** Tag Type **/
type Tags = Record<TagKey, string | number | boolean>;
type Parser = 'markdown' | 'text';
/**
* Options for publishing LogSnag events
*/
interface TrackOptions {
/**
* Channel name
* example: "waitlist"
*/
channel: string;
/**
* Event name
* example: "User Joined"
*/
event: string;
/**
* Event description
* example: "joe@example.com joined waitlist"
*/
description?: string;
/**
* User ID
* example: "user-123"
*/
user_id?: string;
/**
* Event icon (emoji)
* must be a single emoji
* example: "🎉"
*/
icon?: string;
/**
* Event tags
* example: { username: "mattie" }
*/
tags?: Tags;
/**
* Send push notification
*/
notify?: boolean;
/**
* Parser for description
*/
parser?: Parser;
/**
* Event timestamp
*/
timestamp?: number | Date;
}
/** Properties Type **/
type IdentifyProperties = Record<TagKey, string | number | boolean>;
/**
* Options for publishing LogSnag identify
*/
interface IdentifyOptions {
/**
* User ID
* example: "user-123"
*/
user_id: string;
/**
* User properties
* example: { username: "mattie" }
*/
properties: IdentifyProperties;
}
/** Properties Type **/
type GroupProperties = Record<TagKey, string | number | boolean>;
interface GroupWithUserOptions {
/**
* Group ID
* example: "group_123"
*/
group_id: string;
/**
* User ID
* example: "user-123"
*/
user_id: string;
}
interface GroupWithPropertiesOptions {
/**
* Group ID
* example: "group_123"
*/
group_id: string;
/**
* User ID
* example: "user-123"
*/
user_id: string | undefined;
/**
* Group properties
* example: { username: "mattie" }
*/
properties: GroupProperties;
}
/**
* Options for publishing LogSnag group
*/
type GroupOptions = GroupWithUserOptions | GroupWithPropertiesOptions;
/**
* LogSnag Client
*/
declare class LogSnag {
private readonly token;
private readonly project;
private disabled;
/**
* Construct a new LogSnag instance
* @param token LogSnag API token
* @param project LogSnag project name
* @param disableTracking Disable tracking
* for more information, see: docs.logsnag.com
*/
constructor({ token, project, disableTracking }: {
token: string;
project: string;
disableTracking?: boolean;
});
/**
* Disable tracking for this instance
* (this is useful for development)
*/
disableTracking(): void;
/**
* Enable tracking for this instance
* (this is useful for development)
*/
enableTracking(): void;
/**
* Check if tracking is disabled
*/
isTrackingDisabled(): boolean;
/**
* Get project name
* @returns project name
*/
getProject(): string;
/**
* Creates authorization header
* @returns Authorization header value
*/
protected createAuthorizationHeader(): string;
/**
* Creates headers for requests
* @private
*/
private createHeaders;
/**
* Get insight methods
*/
get insight(): {
track: any;
increment: any;
};
/**
* Publish a new event to LogSnag
* @param options
* @returns true when successfully published
*/
track(options: TrackOptions): Promise<boolean>;
/**
* Identify a user
* @param options
* @returns true when successfully published
*/
identify(options: IdentifyOptions): Promise<boolean>;
/**
* Group a user or update group properties
* @param options
* @returns true when successfully published
*/
group(options: GroupOptions): Promise<boolean>;
/**
* Publish a new insight to LogSnag
* @param options
* @returns true when successfully published
*/
protected insightTrack(options: InsightTrackOptions): Promise<boolean>;
/**
* Increment an insight value
* @param options
* @returns true when successfully published
*/
protected insightIncrement(options: InsightIncrementOptions): Promise<boolean>;
}
export { LogSnag };