sentry-javascript
Version:
A generic Javascript SDK based on Self-Hosted Sentry.
217 lines (216 loc) • 7.82 kB
text/typescript
/** log level */
export type LogLevel = 'fatal' | 'error' | 'warning' | 'info' | 'debug'
/** string value object */
export type StringValueObject = Record<string, string>
/** any value object */
type AnyValueObject = Record<string, any>
/** Required initialization configuration */
interface RequiredInitOptions {
/** Sentry log service DSN. */
dsn: string
}
/** Optional initialization configuration */
interface OptionalInitOptions {
/** Whether to allow data to be reported. */
enabled: boolean
/** Whether to use the envelope interface to report data. */
envelope: boolean
/** Whether to enable debug mode. */
debug: boolean
/** Environments that send log data, default value is "production". */
environment: string
/** Version number, suggested format my-project-name@1.0.0. */
release: string
}
/** SDK basic initialization configuration */
export interface BasicInitOptions extends RequiredInitOptions, OptionalInitOptions {
/** A string representing the platform the SDK is submitting from. */
platform: string
/** Log level, the available values are "fatal" | "error" | "warning" | "info" | "debug". */
level: LogLevel
/** Identifies the host from which the event was recorded. */
serverName: string
}
/** SDK initialization configuration */
export type SentryInitOptions = RequiredInitOptions & Partial<OptionalInitOptions>
/** The object returned after parsing the DSN is completed. */
export interface ApiOptions {
/** API address */
uri: string
/** Public Key */
publicKey: string
/** Project ID */
projectId: string
}
/** tag parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/#optional-attributes" for details. */
export type TagOptions = StringValueObject
/** http-header field parameter configuration */
export type HttpHeader = StringValueObject
/** extra parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/#optional-attributes" for details. */
export type ExtraOptions = AnyValueObject
/** request parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/request/" for details. */
export interface RequestOptions {
headers?: HttpHeader
method?: string
url?: string
query_string?: string
data?: AnyValueObject
cookies?: string
env?: AnyValueObject
}
/** user parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/user/" for details. */
export interface UserOptions {
ip_address?: string
id?: string | number
username?: string
email?: string
}
/** sdk parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/sdk/" for details. */
interface SDKOptions {
name: string
version: string
}
/** message parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/message/" for details. */
export interface MessageOptions {
message?: string
params?: string[]
}
/** statcktrace frames parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/stacktrace/#frame-attributes" for details. */
export interface StackTraceFrameItem {
in_app?: boolean
function: string
filename: string
lineno?: number
colno?: number
abs_path?: string
}
/** statcktrace parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/stacktrace/#attributes" for details. */
export interface StackTraceOptions {
frames: StackTraceFrameItem[]
}
/** exception values parameter configuration */
export interface ExceptionItem {
type: string
value: string
module?: string
stacktrace?: StackTraceOptions
}
/** exception parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/exception/" for details. */
export interface ExceptionOptions {
values: ExceptionItem[]
}
/** breadcrumbs parameter configuration, see the document "https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/" for details. */
export interface BreadcrumbItem {
type?: 'default' | 'debug' | 'error' | 'navigation' | 'http' | 'info' | 'query' | 'user'
category?: string
message?: string
data?: StringValueObject | null
level?: LogLevel
timestamp?: string | number
}
/** Optional base configuration */
interface OptionalBaseOptions {
/** A string representing the platform the SDK is submitting from. */
platform: string
/** Log level, the available values are "fatal" | "error" | "warning" | "info" | "debug". */
level: LogLevel
/** Identifies the host from which the event was recorded. */
server_name: string
/** Environments that send log data, default value is "production". */
environment: string
/** Version number, suggested format my-project-name@1.0.0. */
release: string
}
/** Optional interface configuration */
interface OptionalInterfaceOptions {
user: UserOptions
request: RequestOptions
tags?: TagOptions
extra?: ExtraOptions
breadcrumbs?: BreadcrumbItem[]
}
/** API basic parameter */
export type BasicApiOptions = OptionalBaseOptions & OptionalInterfaceOptions
/** Store interface basic parameter, see the document "https://develop.sentry.dev/sdk/store/" for details. */
export interface StoreApiOptions extends BasicApiOptions {
timestamp: string
sdk: SDKOptions
}
/** Envelope interface basic parameter, see the document "https://develop.sentry.dev/sdk/envelopes/" for details. */
export interface EnvelopeApiOptions extends BasicApiOptions {
type: string
sent_at?: string
}
/** The header object of Envelope interface data, see the document "https://develop.sentry.dev/sdk/envelopes/#envelope-headers" for details. */
export interface EnvelopePayloadHeaderOptions {
sent_at: string
sdk: SDKOptions
event_id?: string
dsn?: string
}
/** The item object of Envelope interface data, see the document "https://develop.sentry.dev/sdk/envelopes/#items" for details. */
export interface EnvelopePayloadItemOptions {
type: string
}
/** The configuration of Sentry log capture method */
export interface SentryCaptureOptions extends Partial<OptionalInterfaceOptions & Pick<OptionalBaseOptions, 'level'>> {
message?: string | MessageOptions
type?: string
event_id?: string
exception?: ExceptionOptions
}
/** Request configuration for log upload */
export interface UploadRequestOptions {
url: string
headers: HttpHeader
payload: string
}
/** Sentry-related API interface response object */
interface SentryAPIResponse {
id: string
}
/** Sentry SDK default return envelope */
export interface SentrySDKResponse {
/** Error code */
code: number
/** Communication data */
data: SentryAPIResponse | null
/** Tip message */
message: string
}
/** Http request extension configuration*/
export interface RequestExternalOptions {
/** Maximum number of retry requests */
maxRetries?: number
/** Retry request delay time */
retryDelay?: number
}
/** Custom Http response error object */
export interface CustomResponseError extends Error {
status?: number
}
/** The global scope object */
export interface SentryScope {
/** set user information */
setUser: (options: UserOptions | null) => void
/** set tags */
setTag: (key: string, value: string) => void
/** remove tag */
removeTag: (key: string) => void
/** set extra information */
setExtra: (key: string, value: any) => void
/** remove extra information */
removeExtra: (key: string) => void
/** set log level */
setLevel: (level: LogLevel) => void
/** add breadcrumb record */
addBreadcrumb: (breadcrumb: BreadcrumbItem) => void
/** clear breadcrumb records */
clearBreadcrumbs: () => void
/** clear all scope configurations */
clear: () => void
}
/** Callback function of global scope method */
export interface ConfigureScopeCallback extends Function {
(scope: SentryScope): void
}