@lark-sentry/types 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,101 @@
1
+ 'use strict';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
6
+ class SentryPlugin {
7
+ constructor(type) {
8
+ __publicField(this, "type");
9
+ this.type = type;
10
+ }
11
+ }
12
+
13
+ var HttpStatus = /* @__PURE__ */ ((HttpStatus2) => {
14
+ HttpStatus2["OK"] = "OK";
15
+ HttpStatus2["BadRequest"] = "Bad Request";
16
+ HttpStatus2["Unauthorized"] = "Unauthorized";
17
+ HttpStatus2["Forbidden"] = "Forbidden";
18
+ HttpStatus2["NotFound"] = "NotFound";
19
+ HttpStatus2["Conflict"] = "Conflict";
20
+ HttpStatus2["PayloadTooLarge"] = "Payload Too Large";
21
+ HttpStatus2["TooManyRequests"] = "Too Many Requests";
22
+ HttpStatus2["InternalServerError"] = "Internal Server Error";
23
+ HttpStatus2["NotImplemented"] = "Not Implemented";
24
+ HttpStatus2["ServiceUnavailable"] = "Service Unavailable";
25
+ HttpStatus2["GatewayTimeout"] = "Gateway Timeout";
26
+ HttpStatus2["UnknownError"] = "Unknown Error";
27
+ return HttpStatus2;
28
+ })(HttpStatus || {});
29
+ var BreadcrumbType = /* @__PURE__ */ ((BreadcrumbType2) => {
30
+ BreadcrumbType2["Http"] = "Http";
31
+ BreadcrumbType2["Click"] = "Click";
32
+ BreadcrumbType2["Route"] = "Route";
33
+ BreadcrumbType2["Resource"] = "Resource";
34
+ BreadcrumbType2["CodeError"] = "Code Error";
35
+ BreadcrumbType2["Custom"] = "Custom";
36
+ return BreadcrumbType2;
37
+ })(BreadcrumbType || {});
38
+ var Status = /* @__PURE__ */ ((Status2) => {
39
+ Status2["Error"] = "Error";
40
+ Status2["OK"] = "OK";
41
+ return Status2;
42
+ })(Status || {});
43
+ var EventType = /* @__PURE__ */ ((EventType2) => {
44
+ EventType2["Xhr"] = "XMLHttpRequest";
45
+ EventType2["Fetch"] = "fetch";
46
+ EventType2["Click"] = "Click";
47
+ EventType2["HashChange"] = "Event hashchange";
48
+ EventType2["History"] = "History";
49
+ EventType2["Resource"] = "Resource";
50
+ EventType2["UnhandledRejection"] = "Event unhandledrejection";
51
+ EventType2["Error"] = "Error";
52
+ EventType2["Vue"] = "Vue";
53
+ EventType2["React"] = "React";
54
+ EventType2["Performance"] = "Performance";
55
+ EventType2["ScreenRecord"] = "ScreenRecord";
56
+ EventType2["WhiteScreen"] = "WhiteScreen";
57
+ EventType2["Custom"] = "Custom";
58
+ return EventType2;
59
+ })(EventType || {});
60
+ var HttpType = /* @__PURE__ */ ((HttpType2) => {
61
+ HttpType2["Xhr"] = "XMLHttpRequest";
62
+ HttpType2["Fetch"] = "fetch";
63
+ return HttpType2;
64
+ })(HttpType || {});
65
+ var HttpStatusCode = /* @__PURE__ */ ((HttpStatusCode2) => {
66
+ HttpStatusCode2[HttpStatusCode2["OK"] = 200] = "OK";
67
+ HttpStatusCode2[HttpStatusCode2["BadRequest"] = 400] = "BadRequest";
68
+ HttpStatusCode2[HttpStatusCode2["Unauthorized"] = 401] = "Unauthorized";
69
+ HttpStatusCode2[HttpStatusCode2["Forbidden"] = 403] = "Forbidden";
70
+ HttpStatusCode2[HttpStatusCode2["NotFound"] = 404] = "NotFound";
71
+ HttpStatusCode2[HttpStatusCode2["Conflict"] = 409] = "Conflict";
72
+ HttpStatusCode2[HttpStatusCode2["PayloadTooLarge"] = 413] = "PayloadTooLarge";
73
+ HttpStatusCode2[HttpStatusCode2["TooManyRequests"] = 429] = "TooManyRequests";
74
+ HttpStatusCode2[HttpStatusCode2["InternalServerError"] = 500] = "InternalServerError";
75
+ HttpStatusCode2[HttpStatusCode2["NotImplemented"] = 501] = "NotImplemented";
76
+ HttpStatusCode2[HttpStatusCode2["ServiceUnavailable"] = 503] = "ServiceUnavailable";
77
+ HttpStatusCode2[HttpStatusCode2["GatewayTimeout"] = 504] = "GatewayTimeout";
78
+ return HttpStatusCode2;
79
+ })(HttpStatusCode || {});
80
+ var HttpMethod = /* @__PURE__ */ ((HttpMethod2) => {
81
+ HttpMethod2["Get"] = "GET";
82
+ HttpMethod2["Head"] = "HEAD";
83
+ HttpMethod2["Post"] = "POST";
84
+ HttpMethod2["Put"] = "PUT";
85
+ HttpMethod2["Delete"] = "DELETE";
86
+ HttpMethod2["Connect"] = "CONNECT";
87
+ HttpMethod2["Options"] = "OPTIONS";
88
+ HttpMethod2["Trace"] = "TRACE";
89
+ HttpMethod2["Patch"] = "PATCH";
90
+ return HttpMethod2;
91
+ })(HttpMethod || {});
92
+
93
+ exports.BreadcrumbType = BreadcrumbType;
94
+ exports.EventType = EventType;
95
+ exports.HttpMethod = HttpMethod;
96
+ exports.HttpStatus = HttpStatus;
97
+ exports.HttpStatusCode = HttpStatusCode;
98
+ exports.HttpType = HttpType;
99
+ exports.SentryPlugin = SentryPlugin;
100
+ exports.Status = Status;
101
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/common.ts","../src/enums.ts"],"sourcesContent":["import type { BreadcrumbType, EventType, HttpMethod, Status } from \"./enums.js\";\n\nimport type { Metric } from \"web-vitals\";\nimport type { IOptions } from \"./options.js\";\n\nexport interface ISentry {\n codeErrors: Set<string>;\n whiteScreenTimer: number | null;\n options: IOptions;\n shouldRecordScreen: boolean;\n deviceInfo: IDeviceInfo;\n setOptions: (newOptions: Partial<IOptions>) => void;\n}\n\nexport interface IBreadcrumbItem extends IBaseData {\n userAction: BreadcrumbType;\n}\n\nexport interface IDeviceInfo {\n browserName: string; // 例如 chrome\n browserVersion: string; // 浏览器版本\n osName: string; // 操作系统\n osVersion: string; // 操作系统版本\n userAgent: string; // 用户代理\n deviceType: string; // 设备种类, 例如 PC\n deviceModel: string; // 设备描述\n}\n\nexport interface IBaseData<T = unknown> {\n id: string;\n type: EventType;\n name: string;\n time: string;\n timestamp: number;\n message: string;\n status: Status;\n payload?: T;\n}\n\nexport interface IHttpData<Req = unknown, Res = unknown> extends IBaseData {\n method: HttpMethod | string;\n // 接口地址\n api: string;\n // 请求时长\n elapsedTime: number;\n // http 状态码\n statusCode: number;\n requestData?: Req;\n responseData?: Res;\n}\n\nexport interface IResourceError extends IBaseData {\n src: string;\n href: string;\n}\n\ninterface IPerformanceMetricData extends IBaseData {\n value: Metric[\"value\"];\n rating?: Metric[\"rating\"]; // \"good\" | \"needs-improvement\" | \"poor\"\n}\n\ninterface IPerformanceResourceListData extends IBaseData {\n resourceList: (PerformanceResourceTiming & {\n fromCache: boolean;\n })[];\n}\ninterface IPerformanceLongTaskData extends IBaseData {\n longTasks: PerformanceEntry[];\n}\n\ninterface IPerformanceMemoryData extends IBaseData {\n memory: unknown;\n}\nexport type IPerformanceData =\n | IPerformanceMetricData\n | IPerformanceResourceListData\n | IPerformanceLongTaskData\n | IPerformanceMemoryData;\n\nexport interface ICodeError extends IBaseData {\n column: number;\n line: number;\n}\n\nexport interface IScreenRecordData extends IBaseData {\n event: string;\n}\n\nexport interface IRouteData extends IBaseData {\n from: string;\n to: string;\n}\n\nexport type TWhiteScreenData = IBaseData;\n\nexport type TReportPayload =\n | TWhiteScreenData\n | IHttpData\n | IResourceError\n | IPerformanceData\n | ICodeError\n | IScreenRecordData\n | IRouteData;\n\nexport type TOnReportWhiteScreenData = (data: TWhiteScreenData) => void;\n\nexport type TOnReportPerformanceData = (data: IPerformanceData) => void;\n\nexport interface IReportData<\n T extends TReportPayload = TReportPayload,\n> extends IBaseData {\n // 页面的地址\n url: string;\n // 用户 ID\n userId: string;\n // 前端项目的 ID\n projectId: string;\n // SDK 版本\n sdkVersion: string;\n breadcrumbs?: IBreadcrumbItem[];\n deviceInfo: IDeviceInfo;\n payload: T;\n}\n\nexport interface IDataReporter {\n send(payload: TReportPayload): Promise<void>;\n}\n\nexport interface IExtendedErrorEvent extends ErrorEvent {\n target: EventTarget & {\n src: string;\n href: string;\n localName: string;\n };\n}\n\nexport type TUnknownError = IExtendedErrorEvent | Error /** React */ | unknown;\n\nexport type WithSentry<T, S extends IBaseData = IBaseData> = T & {\n __sentry__: S;\n};\n\nexport abstract class SentryPlugin {\n public type: EventType;\n constructor(type: EventType) {\n this.type = type;\n }\n abstract init(): void;\n}\n","export enum HttpStatus {\n OK = \"OK\", // 200\n BadRequest = \"Bad Request\", // 400\n Unauthorized = \"Unauthorized\", // 401\n Forbidden = \"Forbidden\", // 403\n NotFound = \"NotFound\", // 404\n Conflict = \"Conflict\", // 409\n PayloadTooLarge = \"Payload Too Large\", // 413\n TooManyRequests = \"Too Many Requests\", // 429\n InternalServerError = \"Internal Server Error\", // 500\n NotImplemented = \"Not Implemented\", // 501\n ServiceUnavailable = \"Service Unavailable\", // 503\n GatewayTimeout = \"Gateway Timeout\", // 504\n UnknownError = \"Unknown Error\",\n}\n\nexport enum BreadcrumbType {\n // 网络请求\n Http = \"Http\",\n // 点击\n Click = \"Click\",\n // 路由导航\n Route = \"Route\",\n // 资源加载\n Resource = \"Resource\",\n // 代码报错\n CodeError = \"Code Error\",\n // 自定义\n Custom = \"Custom\",\n}\n\nexport enum Status {\n Error = \"Error\",\n OK = \"OK\",\n}\n\nexport enum EventType {\n Xhr = \"XMLHttpRequest\",\n Fetch = \"fetch\",\n Click = \"Click\",\n HashChange = \"Event hashchange\",\n History = \"History\",\n Resource = \"Resource\",\n UnhandledRejection = \"Event unhandledrejection\",\n Error = \"Error\",\n Vue = \"Vue\",\n React = \"React\",\n Performance = \"Performance\",\n ScreenRecord = \"ScreenRecord\",\n WhiteScreen = \"WhiteScreen\",\n Custom = \"Custom\",\n}\n\nexport enum HttpType {\n Xhr = \"XMLHttpRequest\",\n Fetch = \"fetch\",\n}\n\nexport enum HttpStatusCode {\n OK = 200,\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n Conflict = 409,\n PayloadTooLarge = 413,\n TooManyRequests = 429,\n InternalServerError = 500,\n NotImplemented = 501,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n}\n\nexport enum HttpMethod {\n Get = \"GET\",\n Head = \"HEAD\",\n Post = \"POST\",\n Put = \"PUT\",\n Delete = \"DELETE\",\n Connect = \"CONNECT\",\n Options = \"OPTIONS\",\n Trace = \"TRACE\",\n Patch = \"PATCH\",\n}\n"],"names":["HttpStatus","BreadcrumbType","Status","EventType","HttpType","HttpStatusCode","HttpMethod"],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ import { Metric } from 'web-vitals';
2
+
3
+ declare enum HttpStatus {
4
+ OK = "OK",// 200
5
+ BadRequest = "Bad Request",// 400
6
+ Unauthorized = "Unauthorized",// 401
7
+ Forbidden = "Forbidden",// 403
8
+ NotFound = "NotFound",// 404
9
+ Conflict = "Conflict",// 409
10
+ PayloadTooLarge = "Payload Too Large",// 413
11
+ TooManyRequests = "Too Many Requests",// 429
12
+ InternalServerError = "Internal Server Error",// 500
13
+ NotImplemented = "Not Implemented",// 501
14
+ ServiceUnavailable = "Service Unavailable",// 503
15
+ GatewayTimeout = "Gateway Timeout",// 504
16
+ UnknownError = "Unknown Error"
17
+ }
18
+ declare enum BreadcrumbType {
19
+ Http = "Http",
20
+ Click = "Click",
21
+ Route = "Route",
22
+ Resource = "Resource",
23
+ CodeError = "Code Error",
24
+ Custom = "Custom"
25
+ }
26
+ declare enum Status {
27
+ Error = "Error",
28
+ OK = "OK"
29
+ }
30
+ declare enum EventType {
31
+ Xhr = "XMLHttpRequest",
32
+ Fetch = "fetch",
33
+ Click = "Click",
34
+ HashChange = "Event hashchange",
35
+ History = "History",
36
+ Resource = "Resource",
37
+ UnhandledRejection = "Event unhandledrejection",
38
+ Error = "Error",
39
+ Vue = "Vue",
40
+ React = "React",
41
+ Performance = "Performance",
42
+ ScreenRecord = "ScreenRecord",
43
+ WhiteScreen = "WhiteScreen",
44
+ Custom = "Custom"
45
+ }
46
+ declare enum HttpType {
47
+ Xhr = "XMLHttpRequest",
48
+ Fetch = "fetch"
49
+ }
50
+ declare enum HttpStatusCode {
51
+ OK = 200,
52
+ BadRequest = 400,
53
+ Unauthorized = 401,
54
+ Forbidden = 403,
55
+ NotFound = 404,
56
+ Conflict = 409,
57
+ PayloadTooLarge = 413,
58
+ TooManyRequests = 429,
59
+ InternalServerError = 500,
60
+ NotImplemented = 501,
61
+ ServiceUnavailable = 503,
62
+ GatewayTimeout = 504
63
+ }
64
+ declare enum HttpMethod {
65
+ Get = "GET",
66
+ Head = "HEAD",
67
+ Post = "POST",
68
+ Put = "PUT",
69
+ Delete = "DELETE",
70
+ Connect = "CONNECT",
71
+ Options = "OPTIONS",
72
+ Trace = "TRACE",
73
+ Patch = "PATCH"
74
+ }
75
+
76
+ interface IOptions {
77
+ dsn: string;
78
+ projectId: string;
79
+ disabled: boolean;
80
+ userId: string;
81
+ enableXhr: boolean;
82
+ enableFetch: boolean;
83
+ enableClick: boolean;
84
+ enableError: boolean;
85
+ enableUnhandledRejection: boolean;
86
+ enableHashChange: boolean;
87
+ enableHistory: boolean;
88
+ enablePerformance: boolean;
89
+ enableScreenRecord: boolean;
90
+ enableWhiteScreen: boolean;
91
+ useImageReport: boolean;
92
+ screenRecordDurationMs: number;
93
+ screenRecordEventTypes: EventType[];
94
+ hasSkeleton: boolean;
95
+ rootCssSelectors: string[];
96
+ clickThrottleDelay: number;
97
+ requestTimeoutMilliseconds: number;
98
+ maxBreadcrumbs: number;
99
+ repeatCodeError: boolean;
100
+ excludeApis: (RegExp | string)[];
101
+ onBeforePushBreadcrumb?: (data: IBreadcrumbItem) => IBreadcrumbItem;
102
+ onBeforeReportData?: (data: IReportData) => Promise<IReportData>;
103
+ handleHttpError?: <T>(data: T) => boolean;
104
+ }
105
+
106
+ interface ISentry {
107
+ codeErrors: Set<string>;
108
+ whiteScreenTimer: number | null;
109
+ options: IOptions;
110
+ shouldRecordScreen: boolean;
111
+ deviceInfo: IDeviceInfo;
112
+ setOptions: (newOptions: Partial<IOptions>) => void;
113
+ }
114
+ interface IBreadcrumbItem extends IBaseData {
115
+ userAction: BreadcrumbType;
116
+ }
117
+ interface IDeviceInfo {
118
+ browserName: string;
119
+ browserVersion: string;
120
+ osName: string;
121
+ osVersion: string;
122
+ userAgent: string;
123
+ deviceType: string;
124
+ deviceModel: string;
125
+ }
126
+ interface IBaseData<T = unknown> {
127
+ id: string;
128
+ type: EventType;
129
+ name: string;
130
+ time: string;
131
+ timestamp: number;
132
+ message: string;
133
+ status: Status;
134
+ payload?: T;
135
+ }
136
+ interface IHttpData<Req = unknown, Res = unknown> extends IBaseData {
137
+ method: HttpMethod | string;
138
+ api: string;
139
+ elapsedTime: number;
140
+ statusCode: number;
141
+ requestData?: Req;
142
+ responseData?: Res;
143
+ }
144
+ interface IResourceError extends IBaseData {
145
+ src: string;
146
+ href: string;
147
+ }
148
+ interface IPerformanceMetricData extends IBaseData {
149
+ value: Metric["value"];
150
+ rating?: Metric["rating"];
151
+ }
152
+ interface IPerformanceResourceListData extends IBaseData {
153
+ resourceList: (PerformanceResourceTiming & {
154
+ fromCache: boolean;
155
+ })[];
156
+ }
157
+ interface IPerformanceLongTaskData extends IBaseData {
158
+ longTasks: PerformanceEntry[];
159
+ }
160
+ interface IPerformanceMemoryData extends IBaseData {
161
+ memory: unknown;
162
+ }
163
+ type IPerformanceData = IPerformanceMetricData | IPerformanceResourceListData | IPerformanceLongTaskData | IPerformanceMemoryData;
164
+ interface ICodeError extends IBaseData {
165
+ column: number;
166
+ line: number;
167
+ }
168
+ interface IScreenRecordData extends IBaseData {
169
+ event: string;
170
+ }
171
+ interface IRouteData extends IBaseData {
172
+ from: string;
173
+ to: string;
174
+ }
175
+ type TWhiteScreenData = IBaseData;
176
+ type TReportPayload = TWhiteScreenData | IHttpData | IResourceError | IPerformanceData | ICodeError | IScreenRecordData | IRouteData;
177
+ type TOnReportWhiteScreenData = (data: TWhiteScreenData) => void;
178
+ type TOnReportPerformanceData = (data: IPerformanceData) => void;
179
+ interface IReportData<T extends TReportPayload = TReportPayload> extends IBaseData {
180
+ url: string;
181
+ userId: string;
182
+ projectId: string;
183
+ sdkVersion: string;
184
+ breadcrumbs?: IBreadcrumbItem[];
185
+ deviceInfo: IDeviceInfo;
186
+ payload: T;
187
+ }
188
+ interface IDataReporter {
189
+ send(payload: TReportPayload): Promise<void>;
190
+ }
191
+ interface IExtendedErrorEvent extends ErrorEvent {
192
+ target: EventTarget & {
193
+ src: string;
194
+ href: string;
195
+ localName: string;
196
+ };
197
+ }
198
+ type TUnknownError = IExtendedErrorEvent | Error /** React */ | unknown;
199
+ type WithSentry<T, S extends IBaseData = IBaseData> = T & {
200
+ __sentry__: S;
201
+ };
202
+ declare abstract class SentryPlugin {
203
+ type: EventType;
204
+ constructor(type: EventType);
205
+ abstract init(): void;
206
+ }
207
+
208
+ interface IType2param {
209
+ [EventType.Xhr]: IHttpData;
210
+ [EventType.Fetch]: IHttpData;
211
+ [EventType.Error]: TUnknownError;
212
+ [EventType.History]: Pick<IRouteData, "from" | "to">;
213
+ [EventType.UnhandledRejection]: PromiseRejectionEvent;
214
+ [EventType.HashChange]: HashChangeEvent;
215
+ [EventType.Click]: PointerEvent;
216
+ [EventType.WhiteScreen]: unknown;
217
+ [EventType.Resource]: unknown;
218
+ [EventType.Vue]: unknown;
219
+ [EventType.React]: unknown;
220
+ [EventType.Performance]: unknown;
221
+ [EventType.ScreenRecord]: unknown;
222
+ [EventType.Custom]: unknown;
223
+ }
224
+ type TEventHandler<T extends EventType> = (data: IType2param[T]) => void;
225
+ type IPub = <T extends EventType>(type: T, param?: IType2param[T]) => void;
226
+ type ISub = <T extends EventType>(type: T, handler: TEventHandler<T>) => void;
227
+
228
+ export { BreadcrumbType, EventType, HttpMethod, HttpStatus, HttpStatusCode, HttpType, SentryPlugin, Status };
229
+ export type { IBaseData, IBreadcrumbItem, ICodeError, IDataReporter, IDeviceInfo, IExtendedErrorEvent, IHttpData, IOptions, IPerformanceData, IPub, IReportData, IResourceError, IRouteData, IScreenRecordData, ISentry, ISub, IType2param, TEventHandler, TOnReportPerformanceData, TOnReportWhiteScreenData, TReportPayload, TUnknownError, TWhiteScreenData, WithSentry };
@@ -0,0 +1,229 @@
1
+ import { Metric } from 'web-vitals';
2
+
3
+ declare enum HttpStatus {
4
+ OK = "OK",// 200
5
+ BadRequest = "Bad Request",// 400
6
+ Unauthorized = "Unauthorized",// 401
7
+ Forbidden = "Forbidden",// 403
8
+ NotFound = "NotFound",// 404
9
+ Conflict = "Conflict",// 409
10
+ PayloadTooLarge = "Payload Too Large",// 413
11
+ TooManyRequests = "Too Many Requests",// 429
12
+ InternalServerError = "Internal Server Error",// 500
13
+ NotImplemented = "Not Implemented",// 501
14
+ ServiceUnavailable = "Service Unavailable",// 503
15
+ GatewayTimeout = "Gateway Timeout",// 504
16
+ UnknownError = "Unknown Error"
17
+ }
18
+ declare enum BreadcrumbType {
19
+ Http = "Http",
20
+ Click = "Click",
21
+ Route = "Route",
22
+ Resource = "Resource",
23
+ CodeError = "Code Error",
24
+ Custom = "Custom"
25
+ }
26
+ declare enum Status {
27
+ Error = "Error",
28
+ OK = "OK"
29
+ }
30
+ declare enum EventType {
31
+ Xhr = "XMLHttpRequest",
32
+ Fetch = "fetch",
33
+ Click = "Click",
34
+ HashChange = "Event hashchange",
35
+ History = "History",
36
+ Resource = "Resource",
37
+ UnhandledRejection = "Event unhandledrejection",
38
+ Error = "Error",
39
+ Vue = "Vue",
40
+ React = "React",
41
+ Performance = "Performance",
42
+ ScreenRecord = "ScreenRecord",
43
+ WhiteScreen = "WhiteScreen",
44
+ Custom = "Custom"
45
+ }
46
+ declare enum HttpType {
47
+ Xhr = "XMLHttpRequest",
48
+ Fetch = "fetch"
49
+ }
50
+ declare enum HttpStatusCode {
51
+ OK = 200,
52
+ BadRequest = 400,
53
+ Unauthorized = 401,
54
+ Forbidden = 403,
55
+ NotFound = 404,
56
+ Conflict = 409,
57
+ PayloadTooLarge = 413,
58
+ TooManyRequests = 429,
59
+ InternalServerError = 500,
60
+ NotImplemented = 501,
61
+ ServiceUnavailable = 503,
62
+ GatewayTimeout = 504
63
+ }
64
+ declare enum HttpMethod {
65
+ Get = "GET",
66
+ Head = "HEAD",
67
+ Post = "POST",
68
+ Put = "PUT",
69
+ Delete = "DELETE",
70
+ Connect = "CONNECT",
71
+ Options = "OPTIONS",
72
+ Trace = "TRACE",
73
+ Patch = "PATCH"
74
+ }
75
+
76
+ interface IOptions {
77
+ dsn: string;
78
+ projectId: string;
79
+ disabled: boolean;
80
+ userId: string;
81
+ enableXhr: boolean;
82
+ enableFetch: boolean;
83
+ enableClick: boolean;
84
+ enableError: boolean;
85
+ enableUnhandledRejection: boolean;
86
+ enableHashChange: boolean;
87
+ enableHistory: boolean;
88
+ enablePerformance: boolean;
89
+ enableScreenRecord: boolean;
90
+ enableWhiteScreen: boolean;
91
+ useImageReport: boolean;
92
+ screenRecordDurationMs: number;
93
+ screenRecordEventTypes: EventType[];
94
+ hasSkeleton: boolean;
95
+ rootCssSelectors: string[];
96
+ clickThrottleDelay: number;
97
+ requestTimeoutMilliseconds: number;
98
+ maxBreadcrumbs: number;
99
+ repeatCodeError: boolean;
100
+ excludeApis: (RegExp | string)[];
101
+ onBeforePushBreadcrumb?: (data: IBreadcrumbItem) => IBreadcrumbItem;
102
+ onBeforeReportData?: (data: IReportData) => Promise<IReportData>;
103
+ handleHttpError?: <T>(data: T) => boolean;
104
+ }
105
+
106
+ interface ISentry {
107
+ codeErrors: Set<string>;
108
+ whiteScreenTimer: number | null;
109
+ options: IOptions;
110
+ shouldRecordScreen: boolean;
111
+ deviceInfo: IDeviceInfo;
112
+ setOptions: (newOptions: Partial<IOptions>) => void;
113
+ }
114
+ interface IBreadcrumbItem extends IBaseData {
115
+ userAction: BreadcrumbType;
116
+ }
117
+ interface IDeviceInfo {
118
+ browserName: string;
119
+ browserVersion: string;
120
+ osName: string;
121
+ osVersion: string;
122
+ userAgent: string;
123
+ deviceType: string;
124
+ deviceModel: string;
125
+ }
126
+ interface IBaseData<T = unknown> {
127
+ id: string;
128
+ type: EventType;
129
+ name: string;
130
+ time: string;
131
+ timestamp: number;
132
+ message: string;
133
+ status: Status;
134
+ payload?: T;
135
+ }
136
+ interface IHttpData<Req = unknown, Res = unknown> extends IBaseData {
137
+ method: HttpMethod | string;
138
+ api: string;
139
+ elapsedTime: number;
140
+ statusCode: number;
141
+ requestData?: Req;
142
+ responseData?: Res;
143
+ }
144
+ interface IResourceError extends IBaseData {
145
+ src: string;
146
+ href: string;
147
+ }
148
+ interface IPerformanceMetricData extends IBaseData {
149
+ value: Metric["value"];
150
+ rating?: Metric["rating"];
151
+ }
152
+ interface IPerformanceResourceListData extends IBaseData {
153
+ resourceList: (PerformanceResourceTiming & {
154
+ fromCache: boolean;
155
+ })[];
156
+ }
157
+ interface IPerformanceLongTaskData extends IBaseData {
158
+ longTasks: PerformanceEntry[];
159
+ }
160
+ interface IPerformanceMemoryData extends IBaseData {
161
+ memory: unknown;
162
+ }
163
+ type IPerformanceData = IPerformanceMetricData | IPerformanceResourceListData | IPerformanceLongTaskData | IPerformanceMemoryData;
164
+ interface ICodeError extends IBaseData {
165
+ column: number;
166
+ line: number;
167
+ }
168
+ interface IScreenRecordData extends IBaseData {
169
+ event: string;
170
+ }
171
+ interface IRouteData extends IBaseData {
172
+ from: string;
173
+ to: string;
174
+ }
175
+ type TWhiteScreenData = IBaseData;
176
+ type TReportPayload = TWhiteScreenData | IHttpData | IResourceError | IPerformanceData | ICodeError | IScreenRecordData | IRouteData;
177
+ type TOnReportWhiteScreenData = (data: TWhiteScreenData) => void;
178
+ type TOnReportPerformanceData = (data: IPerformanceData) => void;
179
+ interface IReportData<T extends TReportPayload = TReportPayload> extends IBaseData {
180
+ url: string;
181
+ userId: string;
182
+ projectId: string;
183
+ sdkVersion: string;
184
+ breadcrumbs?: IBreadcrumbItem[];
185
+ deviceInfo: IDeviceInfo;
186
+ payload: T;
187
+ }
188
+ interface IDataReporter {
189
+ send(payload: TReportPayload): Promise<void>;
190
+ }
191
+ interface IExtendedErrorEvent extends ErrorEvent {
192
+ target: EventTarget & {
193
+ src: string;
194
+ href: string;
195
+ localName: string;
196
+ };
197
+ }
198
+ type TUnknownError = IExtendedErrorEvent | Error /** React */ | unknown;
199
+ type WithSentry<T, S extends IBaseData = IBaseData> = T & {
200
+ __sentry__: S;
201
+ };
202
+ declare abstract class SentryPlugin {
203
+ type: EventType;
204
+ constructor(type: EventType);
205
+ abstract init(): void;
206
+ }
207
+
208
+ interface IType2param {
209
+ [EventType.Xhr]: IHttpData;
210
+ [EventType.Fetch]: IHttpData;
211
+ [EventType.Error]: TUnknownError;
212
+ [EventType.History]: Pick<IRouteData, "from" | "to">;
213
+ [EventType.UnhandledRejection]: PromiseRejectionEvent;
214
+ [EventType.HashChange]: HashChangeEvent;
215
+ [EventType.Click]: PointerEvent;
216
+ [EventType.WhiteScreen]: unknown;
217
+ [EventType.Resource]: unknown;
218
+ [EventType.Vue]: unknown;
219
+ [EventType.React]: unknown;
220
+ [EventType.Performance]: unknown;
221
+ [EventType.ScreenRecord]: unknown;
222
+ [EventType.Custom]: unknown;
223
+ }
224
+ type TEventHandler<T extends EventType> = (data: IType2param[T]) => void;
225
+ type IPub = <T extends EventType>(type: T, param?: IType2param[T]) => void;
226
+ type ISub = <T extends EventType>(type: T, handler: TEventHandler<T>) => void;
227
+
228
+ export { BreadcrumbType, EventType, HttpMethod, HttpStatus, HttpStatusCode, HttpType, SentryPlugin, Status };
229
+ export type { IBaseData, IBreadcrumbItem, ICodeError, IDataReporter, IDeviceInfo, IExtendedErrorEvent, IHttpData, IOptions, IPerformanceData, IPub, IReportData, IResourceError, IRouteData, IScreenRecordData, ISentry, ISub, IType2param, TEventHandler, TOnReportPerformanceData, TOnReportWhiteScreenData, TReportPayload, TUnknownError, TWhiteScreenData, WithSentry };
package/dist/index.js ADDED
@@ -0,0 +1,92 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
4
+ class SentryPlugin {
5
+ constructor(type) {
6
+ __publicField(this, "type");
7
+ this.type = type;
8
+ }
9
+ }
10
+
11
+ var HttpStatus = /* @__PURE__ */ ((HttpStatus2) => {
12
+ HttpStatus2["OK"] = "OK";
13
+ HttpStatus2["BadRequest"] = "Bad Request";
14
+ HttpStatus2["Unauthorized"] = "Unauthorized";
15
+ HttpStatus2["Forbidden"] = "Forbidden";
16
+ HttpStatus2["NotFound"] = "NotFound";
17
+ HttpStatus2["Conflict"] = "Conflict";
18
+ HttpStatus2["PayloadTooLarge"] = "Payload Too Large";
19
+ HttpStatus2["TooManyRequests"] = "Too Many Requests";
20
+ HttpStatus2["InternalServerError"] = "Internal Server Error";
21
+ HttpStatus2["NotImplemented"] = "Not Implemented";
22
+ HttpStatus2["ServiceUnavailable"] = "Service Unavailable";
23
+ HttpStatus2["GatewayTimeout"] = "Gateway Timeout";
24
+ HttpStatus2["UnknownError"] = "Unknown Error";
25
+ return HttpStatus2;
26
+ })(HttpStatus || {});
27
+ var BreadcrumbType = /* @__PURE__ */ ((BreadcrumbType2) => {
28
+ BreadcrumbType2["Http"] = "Http";
29
+ BreadcrumbType2["Click"] = "Click";
30
+ BreadcrumbType2["Route"] = "Route";
31
+ BreadcrumbType2["Resource"] = "Resource";
32
+ BreadcrumbType2["CodeError"] = "Code Error";
33
+ BreadcrumbType2["Custom"] = "Custom";
34
+ return BreadcrumbType2;
35
+ })(BreadcrumbType || {});
36
+ var Status = /* @__PURE__ */ ((Status2) => {
37
+ Status2["Error"] = "Error";
38
+ Status2["OK"] = "OK";
39
+ return Status2;
40
+ })(Status || {});
41
+ var EventType = /* @__PURE__ */ ((EventType2) => {
42
+ EventType2["Xhr"] = "XMLHttpRequest";
43
+ EventType2["Fetch"] = "fetch";
44
+ EventType2["Click"] = "Click";
45
+ EventType2["HashChange"] = "Event hashchange";
46
+ EventType2["History"] = "History";
47
+ EventType2["Resource"] = "Resource";
48
+ EventType2["UnhandledRejection"] = "Event unhandledrejection";
49
+ EventType2["Error"] = "Error";
50
+ EventType2["Vue"] = "Vue";
51
+ EventType2["React"] = "React";
52
+ EventType2["Performance"] = "Performance";
53
+ EventType2["ScreenRecord"] = "ScreenRecord";
54
+ EventType2["WhiteScreen"] = "WhiteScreen";
55
+ EventType2["Custom"] = "Custom";
56
+ return EventType2;
57
+ })(EventType || {});
58
+ var HttpType = /* @__PURE__ */ ((HttpType2) => {
59
+ HttpType2["Xhr"] = "XMLHttpRequest";
60
+ HttpType2["Fetch"] = "fetch";
61
+ return HttpType2;
62
+ })(HttpType || {});
63
+ var HttpStatusCode = /* @__PURE__ */ ((HttpStatusCode2) => {
64
+ HttpStatusCode2[HttpStatusCode2["OK"] = 200] = "OK";
65
+ HttpStatusCode2[HttpStatusCode2["BadRequest"] = 400] = "BadRequest";
66
+ HttpStatusCode2[HttpStatusCode2["Unauthorized"] = 401] = "Unauthorized";
67
+ HttpStatusCode2[HttpStatusCode2["Forbidden"] = 403] = "Forbidden";
68
+ HttpStatusCode2[HttpStatusCode2["NotFound"] = 404] = "NotFound";
69
+ HttpStatusCode2[HttpStatusCode2["Conflict"] = 409] = "Conflict";
70
+ HttpStatusCode2[HttpStatusCode2["PayloadTooLarge"] = 413] = "PayloadTooLarge";
71
+ HttpStatusCode2[HttpStatusCode2["TooManyRequests"] = 429] = "TooManyRequests";
72
+ HttpStatusCode2[HttpStatusCode2["InternalServerError"] = 500] = "InternalServerError";
73
+ HttpStatusCode2[HttpStatusCode2["NotImplemented"] = 501] = "NotImplemented";
74
+ HttpStatusCode2[HttpStatusCode2["ServiceUnavailable"] = 503] = "ServiceUnavailable";
75
+ HttpStatusCode2[HttpStatusCode2["GatewayTimeout"] = 504] = "GatewayTimeout";
76
+ return HttpStatusCode2;
77
+ })(HttpStatusCode || {});
78
+ var HttpMethod = /* @__PURE__ */ ((HttpMethod2) => {
79
+ HttpMethod2["Get"] = "GET";
80
+ HttpMethod2["Head"] = "HEAD";
81
+ HttpMethod2["Post"] = "POST";
82
+ HttpMethod2["Put"] = "PUT";
83
+ HttpMethod2["Delete"] = "DELETE";
84
+ HttpMethod2["Connect"] = "CONNECT";
85
+ HttpMethod2["Options"] = "OPTIONS";
86
+ HttpMethod2["Trace"] = "TRACE";
87
+ HttpMethod2["Patch"] = "PATCH";
88
+ return HttpMethod2;
89
+ })(HttpMethod || {});
90
+
91
+ export { BreadcrumbType, EventType, HttpMethod, HttpStatus, HttpStatusCode, HttpType, SentryPlugin, Status };
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/common.ts","../src/enums.ts"],"sourcesContent":["import type { BreadcrumbType, EventType, HttpMethod, Status } from \"./enums.js\";\n\nimport type { Metric } from \"web-vitals\";\nimport type { IOptions } from \"./options.js\";\n\nexport interface ISentry {\n codeErrors: Set<string>;\n whiteScreenTimer: number | null;\n options: IOptions;\n shouldRecordScreen: boolean;\n deviceInfo: IDeviceInfo;\n setOptions: (newOptions: Partial<IOptions>) => void;\n}\n\nexport interface IBreadcrumbItem extends IBaseData {\n userAction: BreadcrumbType;\n}\n\nexport interface IDeviceInfo {\n browserName: string; // 例如 chrome\n browserVersion: string; // 浏览器版本\n osName: string; // 操作系统\n osVersion: string; // 操作系统版本\n userAgent: string; // 用户代理\n deviceType: string; // 设备种类, 例如 PC\n deviceModel: string; // 设备描述\n}\n\nexport interface IBaseData<T = unknown> {\n id: string;\n type: EventType;\n name: string;\n time: string;\n timestamp: number;\n message: string;\n status: Status;\n payload?: T;\n}\n\nexport interface IHttpData<Req = unknown, Res = unknown> extends IBaseData {\n method: HttpMethod | string;\n // 接口地址\n api: string;\n // 请求时长\n elapsedTime: number;\n // http 状态码\n statusCode: number;\n requestData?: Req;\n responseData?: Res;\n}\n\nexport interface IResourceError extends IBaseData {\n src: string;\n href: string;\n}\n\ninterface IPerformanceMetricData extends IBaseData {\n value: Metric[\"value\"];\n rating?: Metric[\"rating\"]; // \"good\" | \"needs-improvement\" | \"poor\"\n}\n\ninterface IPerformanceResourceListData extends IBaseData {\n resourceList: (PerformanceResourceTiming & {\n fromCache: boolean;\n })[];\n}\ninterface IPerformanceLongTaskData extends IBaseData {\n longTasks: PerformanceEntry[];\n}\n\ninterface IPerformanceMemoryData extends IBaseData {\n memory: unknown;\n}\nexport type IPerformanceData =\n | IPerformanceMetricData\n | IPerformanceResourceListData\n | IPerformanceLongTaskData\n | IPerformanceMemoryData;\n\nexport interface ICodeError extends IBaseData {\n column: number;\n line: number;\n}\n\nexport interface IScreenRecordData extends IBaseData {\n event: string;\n}\n\nexport interface IRouteData extends IBaseData {\n from: string;\n to: string;\n}\n\nexport type TWhiteScreenData = IBaseData;\n\nexport type TReportPayload =\n | TWhiteScreenData\n | IHttpData\n | IResourceError\n | IPerformanceData\n | ICodeError\n | IScreenRecordData\n | IRouteData;\n\nexport type TOnReportWhiteScreenData = (data: TWhiteScreenData) => void;\n\nexport type TOnReportPerformanceData = (data: IPerformanceData) => void;\n\nexport interface IReportData<\n T extends TReportPayload = TReportPayload,\n> extends IBaseData {\n // 页面的地址\n url: string;\n // 用户 ID\n userId: string;\n // 前端项目的 ID\n projectId: string;\n // SDK 版本\n sdkVersion: string;\n breadcrumbs?: IBreadcrumbItem[];\n deviceInfo: IDeviceInfo;\n payload: T;\n}\n\nexport interface IDataReporter {\n send(payload: TReportPayload): Promise<void>;\n}\n\nexport interface IExtendedErrorEvent extends ErrorEvent {\n target: EventTarget & {\n src: string;\n href: string;\n localName: string;\n };\n}\n\nexport type TUnknownError = IExtendedErrorEvent | Error /** React */ | unknown;\n\nexport type WithSentry<T, S extends IBaseData = IBaseData> = T & {\n __sentry__: S;\n};\n\nexport abstract class SentryPlugin {\n public type: EventType;\n constructor(type: EventType) {\n this.type = type;\n }\n abstract init(): void;\n}\n","export enum HttpStatus {\n OK = \"OK\", // 200\n BadRequest = \"Bad Request\", // 400\n Unauthorized = \"Unauthorized\", // 401\n Forbidden = \"Forbidden\", // 403\n NotFound = \"NotFound\", // 404\n Conflict = \"Conflict\", // 409\n PayloadTooLarge = \"Payload Too Large\", // 413\n TooManyRequests = \"Too Many Requests\", // 429\n InternalServerError = \"Internal Server Error\", // 500\n NotImplemented = \"Not Implemented\", // 501\n ServiceUnavailable = \"Service Unavailable\", // 503\n GatewayTimeout = \"Gateway Timeout\", // 504\n UnknownError = \"Unknown Error\",\n}\n\nexport enum BreadcrumbType {\n // 网络请求\n Http = \"Http\",\n // 点击\n Click = \"Click\",\n // 路由导航\n Route = \"Route\",\n // 资源加载\n Resource = \"Resource\",\n // 代码报错\n CodeError = \"Code Error\",\n // 自定义\n Custom = \"Custom\",\n}\n\nexport enum Status {\n Error = \"Error\",\n OK = \"OK\",\n}\n\nexport enum EventType {\n Xhr = \"XMLHttpRequest\",\n Fetch = \"fetch\",\n Click = \"Click\",\n HashChange = \"Event hashchange\",\n History = \"History\",\n Resource = \"Resource\",\n UnhandledRejection = \"Event unhandledrejection\",\n Error = \"Error\",\n Vue = \"Vue\",\n React = \"React\",\n Performance = \"Performance\",\n ScreenRecord = \"ScreenRecord\",\n WhiteScreen = \"WhiteScreen\",\n Custom = \"Custom\",\n}\n\nexport enum HttpType {\n Xhr = \"XMLHttpRequest\",\n Fetch = \"fetch\",\n}\n\nexport enum HttpStatusCode {\n OK = 200,\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n Conflict = 409,\n PayloadTooLarge = 413,\n TooManyRequests = 429,\n InternalServerError = 500,\n NotImplemented = 501,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n}\n\nexport enum HttpMethod {\n Get = \"GET\",\n Head = \"HEAD\",\n Post = \"POST\",\n Put = \"PUT\",\n Delete = \"DELETE\",\n Connect = \"CONNECT\",\n Options = \"OPTIONS\",\n Trace = \"TRACE\",\n Patch = \"PATCH\",\n}\n"],"names":["HttpStatus","BreadcrumbType","Status","EventType","HttpType","HttpStatusCode","HttpMethod"],"mappings":";;;AA8IO,MAAe,YAAA,CAAa;AAAA,EAEjC,YAAY,IAAA,EAAiB;AAD7B,IAAA,aAAA,CAAA,IAAA,EAAO,MAAA,CAAA;AAEL,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AAEF;;ACpJO,IAAK,UAAA,qBAAAA,WAAAA,KAAL;AACL,EAAAA,YAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,YAAA,YAAA,CAAA,GAAa,aAAA;AACb,EAAAA,YAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,YAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,YAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,YAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,YAAA,iBAAA,CAAA,GAAkB,mBAAA;AAClB,EAAAA,YAAA,iBAAA,CAAA,GAAkB,mBAAA;AAClB,EAAAA,YAAA,qBAAA,CAAA,GAAsB,uBAAA;AACtB,EAAAA,YAAA,gBAAA,CAAA,GAAiB,iBAAA;AACjB,EAAAA,YAAA,oBAAA,CAAA,GAAqB,qBAAA;AACrB,EAAAA,YAAA,gBAAA,CAAA,GAAiB,iBAAA;AACjB,EAAAA,YAAA,cAAA,CAAA,GAAe,eAAA;AAbL,EAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA;AAgBL,IAAK,cAAA,qBAAAC,eAAAA,KAAL;AAEL,EAAAA,gBAAA,MAAA,CAAA,GAAO,MAAA;AAEP,EAAAA,gBAAA,OAAA,CAAA,GAAQ,OAAA;AAER,EAAAA,gBAAA,OAAA,CAAA,GAAQ,OAAA;AAER,EAAAA,gBAAA,UAAA,CAAA,GAAW,UAAA;AAEX,EAAAA,gBAAA,WAAA,CAAA,GAAY,YAAA;AAEZ,EAAAA,gBAAA,QAAA,CAAA,GAAS,QAAA;AAZC,EAAA,OAAAA,eAAAA;AAAA,CAAA,EAAA,cAAA,IAAA,EAAA;AAeL,IAAK,MAAA,qBAAAC,OAAAA,KAAL;AACL,EAAAA,QAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AAFK,EAAA,OAAAA,OAAAA;AAAA,CAAA,EAAA,MAAA,IAAA,EAAA;AAKL,IAAK,SAAA,qBAAAC,UAAAA,KAAL;AACL,EAAAA,WAAA,KAAA,CAAA,GAAM,gBAAA;AACN,EAAAA,WAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,WAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,WAAA,YAAA,CAAA,GAAa,kBAAA;AACb,EAAAA,WAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,WAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,WAAA,oBAAA,CAAA,GAAqB,0BAAA;AACrB,EAAAA,WAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,WAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,WAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,WAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,WAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,WAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AAdC,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAiBL,IAAK,QAAA,qBAAAC,SAAAA,KAAL;AACL,EAAAA,UAAA,KAAA,CAAA,GAAM,gBAAA;AACN,EAAAA,UAAA,OAAA,CAAA,GAAQ,OAAA;AAFE,EAAA,OAAAA,SAAAA;AAAA,CAAA,EAAA,QAAA,IAAA,EAAA;AAKL,IAAK,cAAA,qBAAAC,eAAAA,KAAL;AACL,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,QAAK,GAAA,CAAA,GAAL,IAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,gBAAa,GAAA,CAAA,GAAb,YAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,kBAAe,GAAA,CAAA,GAAf,cAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,eAAY,GAAA,CAAA,GAAZ,WAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,cAAW,GAAA,CAAA,GAAX,UAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,cAAW,GAAA,CAAA,GAAX,UAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,qBAAkB,GAAA,CAAA,GAAlB,iBAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,qBAAkB,GAAA,CAAA,GAAlB,iBAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,yBAAsB,GAAA,CAAA,GAAtB,qBAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,oBAAiB,GAAA,CAAA,GAAjB,gBAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,wBAAqB,GAAA,CAAA,GAArB,oBAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,oBAAiB,GAAA,CAAA,GAAjB,gBAAA;AAZU,EAAA,OAAAA,eAAAA;AAAA,CAAA,EAAA,cAAA,IAAA,EAAA;AAeL,IAAK,UAAA,qBAAAC,WAAAA,KAAL;AACL,EAAAA,YAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,YAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,YAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,YAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,YAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,YAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,YAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,YAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,YAAA,OAAA,CAAA,GAAQ,OAAA;AATE,EAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=Object.defineProperty,t=(t,r,o)=>((t,r,o)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[r]=o)(t,r+"",o);var r=(e=>(e.OK="OK",e.BadRequest="Bad Request",e.Unauthorized="Unauthorized",e.Forbidden="Forbidden",e.NotFound="NotFound",e.Conflict="Conflict",e.PayloadTooLarge="Payload Too Large",e.TooManyRequests="Too Many Requests",e.InternalServerError="Internal Server Error",e.NotImplemented="Not Implemented",e.ServiceUnavailable="Service Unavailable",e.GatewayTimeout="Gateway Timeout",e.UnknownError="Unknown Error",e))(r||{}),o=(e=>(e.Http="Http",e.Click="Click",e.Route="Route",e.Resource="Resource",e.CodeError="Code Error",e.Custom="Custom",e))(o||{}),a=(e=>(e.Error="Error",e.OK="OK",e))(a||{}),n=(e=>(e.Xhr="XMLHttpRequest",e.Fetch="fetch",e.Click="Click",e.HashChange="Event hashchange",e.History="History",e.Resource="Resource",e.UnhandledRejection="Event unhandledrejection",e.Error="Error",e.Vue="Vue",e.React="React",e.Performance="Performance",e.ScreenRecord="ScreenRecord",e.WhiteScreen="WhiteScreen",e.Custom="Custom",e))(n||{}),s=(e=>(e.Xhr="XMLHttpRequest",e.Fetch="fetch",e))(s||{}),u=(e=>(e[e.OK=200]="OK",e[e.BadRequest=400]="BadRequest",e[e.Unauthorized=401]="Unauthorized",e[e.Forbidden=403]="Forbidden",e[e.NotFound=404]="NotFound",e[e.Conflict=409]="Conflict",e[e.PayloadTooLarge=413]="PayloadTooLarge",e[e.TooManyRequests=429]="TooManyRequests",e[e.InternalServerError=500]="InternalServerError",e[e.NotImplemented=501]="NotImplemented",e[e.ServiceUnavailable=503]="ServiceUnavailable",e[e.GatewayTimeout=504]="GatewayTimeout",e))(u||{}),c=(e=>(e.Get="GET",e.Head="HEAD",e.Post="POST",e.Put="PUT",e.Delete="DELETE",e.Connect="CONNECT",e.Options="OPTIONS",e.Trace="TRACE",e.Patch="PATCH",e))(c||{});exports.BreadcrumbType=o,exports.EventType=n,exports.HttpMethod=c,exports.HttpStatus=r,exports.HttpStatusCode=u,exports.HttpType=s,exports.SentryPlugin=class{constructor(e){t(this,"type"),this.type=e}},exports.Status=a;
2
+ //# sourceMappingURL=index.min.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.min.cjs","sources":["../src/enums.ts","../src/common.ts"],"sourcesContent":["export enum HttpStatus {\n OK = \"OK\", // 200\n BadRequest = \"Bad Request\", // 400\n Unauthorized = \"Unauthorized\", // 401\n Forbidden = \"Forbidden\", // 403\n NotFound = \"NotFound\", // 404\n Conflict = \"Conflict\", // 409\n PayloadTooLarge = \"Payload Too Large\", // 413\n TooManyRequests = \"Too Many Requests\", // 429\n InternalServerError = \"Internal Server Error\", // 500\n NotImplemented = \"Not Implemented\", // 501\n ServiceUnavailable = \"Service Unavailable\", // 503\n GatewayTimeout = \"Gateway Timeout\", // 504\n UnknownError = \"Unknown Error\",\n}\n\nexport enum BreadcrumbType {\n // 网络请求\n Http = \"Http\",\n // 点击\n Click = \"Click\",\n // 路由导航\n Route = \"Route\",\n // 资源加载\n Resource = \"Resource\",\n // 代码报错\n CodeError = \"Code Error\",\n // 自定义\n Custom = \"Custom\",\n}\n\nexport enum Status {\n Error = \"Error\",\n OK = \"OK\",\n}\n\nexport enum EventType {\n Xhr = \"XMLHttpRequest\",\n Fetch = \"fetch\",\n Click = \"Click\",\n HashChange = \"Event hashchange\",\n History = \"History\",\n Resource = \"Resource\",\n UnhandledRejection = \"Event unhandledrejection\",\n Error = \"Error\",\n Vue = \"Vue\",\n React = \"React\",\n Performance = \"Performance\",\n ScreenRecord = \"ScreenRecord\",\n WhiteScreen = \"WhiteScreen\",\n Custom = \"Custom\",\n}\n\nexport enum HttpType {\n Xhr = \"XMLHttpRequest\",\n Fetch = \"fetch\",\n}\n\nexport enum HttpStatusCode {\n OK = 200,\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n Conflict = 409,\n PayloadTooLarge = 413,\n TooManyRequests = 429,\n InternalServerError = 500,\n NotImplemented = 501,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n}\n\nexport enum HttpMethod {\n Get = \"GET\",\n Head = \"HEAD\",\n Post = \"POST\",\n Put = \"PUT\",\n Delete = \"DELETE\",\n Connect = \"CONNECT\",\n Options = \"OPTIONS\",\n Trace = \"TRACE\",\n Patch = \"PATCH\",\n}\n","import type { BreadcrumbType, EventType, HttpMethod, Status } from \"./enums.js\";\n\nimport type { Metric } from \"web-vitals\";\nimport type { IOptions } from \"./options.js\";\n\nexport interface ISentry {\n codeErrors: Set<string>;\n whiteScreenTimer: number | null;\n options: IOptions;\n shouldRecordScreen: boolean;\n deviceInfo: IDeviceInfo;\n setOptions: (newOptions: Partial<IOptions>) => void;\n}\n\nexport interface IBreadcrumbItem extends IBaseData {\n userAction: BreadcrumbType;\n}\n\nexport interface IDeviceInfo {\n browserName: string; // 例如 chrome\n browserVersion: string; // 浏览器版本\n osName: string; // 操作系统\n osVersion: string; // 操作系统版本\n userAgent: string; // 用户代理\n deviceType: string; // 设备种类, 例如 PC\n deviceModel: string; // 设备描述\n}\n\nexport interface IBaseData<T = unknown> {\n id: string;\n type: EventType;\n name: string;\n time: string;\n timestamp: number;\n message: string;\n status: Status;\n payload?: T;\n}\n\nexport interface IHttpData<Req = unknown, Res = unknown> extends IBaseData {\n method: HttpMethod | string;\n // 接口地址\n api: string;\n // 请求时长\n elapsedTime: number;\n // http 状态码\n statusCode: number;\n requestData?: Req;\n responseData?: Res;\n}\n\nexport interface IResourceError extends IBaseData {\n src: string;\n href: string;\n}\n\ninterface IPerformanceMetricData extends IBaseData {\n value: Metric[\"value\"];\n rating?: Metric[\"rating\"]; // \"good\" | \"needs-improvement\" | \"poor\"\n}\n\ninterface IPerformanceResourceListData extends IBaseData {\n resourceList: (PerformanceResourceTiming & {\n fromCache: boolean;\n })[];\n}\ninterface IPerformanceLongTaskData extends IBaseData {\n longTasks: PerformanceEntry[];\n}\n\ninterface IPerformanceMemoryData extends IBaseData {\n memory: unknown;\n}\nexport type IPerformanceData =\n | IPerformanceMetricData\n | IPerformanceResourceListData\n | IPerformanceLongTaskData\n | IPerformanceMemoryData;\n\nexport interface ICodeError extends IBaseData {\n column: number;\n line: number;\n}\n\nexport interface IScreenRecordData extends IBaseData {\n event: string;\n}\n\nexport interface IRouteData extends IBaseData {\n from: string;\n to: string;\n}\n\nexport type TWhiteScreenData = IBaseData;\n\nexport type TReportPayload =\n | TWhiteScreenData\n | IHttpData\n | IResourceError\n | IPerformanceData\n | ICodeError\n | IScreenRecordData\n | IRouteData;\n\nexport type TOnReportWhiteScreenData = (data: TWhiteScreenData) => void;\n\nexport type TOnReportPerformanceData = (data: IPerformanceData) => void;\n\nexport interface IReportData<\n T extends TReportPayload = TReportPayload,\n> extends IBaseData {\n // 页面的地址\n url: string;\n // 用户 ID\n userId: string;\n // 前端项目的 ID\n projectId: string;\n // SDK 版本\n sdkVersion: string;\n breadcrumbs?: IBreadcrumbItem[];\n deviceInfo: IDeviceInfo;\n payload: T;\n}\n\nexport interface IDataReporter {\n send(payload: TReportPayload): Promise<void>;\n}\n\nexport interface IExtendedErrorEvent extends ErrorEvent {\n target: EventTarget & {\n src: string;\n href: string;\n localName: string;\n };\n}\n\nexport type TUnknownError = IExtendedErrorEvent | Error /** React */ | unknown;\n\nexport type WithSentry<T, S extends IBaseData = IBaseData> = T & {\n __sentry__: S;\n};\n\nexport abstract class SentryPlugin {\n public type: EventType;\n constructor(type: EventType) {\n this.type = type;\n }\n abstract init(): void;\n}\n"],"names":["HttpStatus","BreadcrumbType","Status","EventType","HttpType","HttpStatusCode","HttpMethod","constructor","type","__publicField","this"],"mappings":"kJAAO,IAAKA,GAAAA,IACVA,EAAA,GAAK,KACLA,EAAA,WAAa,cACbA,EAAA,aAAe,eACfA,EAAA,UAAY,YACZA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,gBAAkB,oBAClBA,EAAA,gBAAkB,oBAClBA,EAAA,oBAAsB,wBACtBA,EAAA,eAAiB,kBACjBA,EAAA,mBAAqB,sBACrBA,EAAA,eAAiB,kBACjBA,EAAA,aAAe,gBAbLA,IAAAA,GAAA,CAAA,GAgBAC,GAAAA,IAEVA,EAAA,KAAO,OAEPA,EAAA,MAAQ,QAERA,EAAA,MAAQ,QAERA,EAAA,SAAW,WAEXA,EAAA,UAAY,aAEZA,EAAA,OAAS,SAZCA,IAAAA,GAAA,CAAA,GAeAC,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,GAAK,KAFKA,IAAAA,GAAA,CAAA,GAKAC,GAAAA,IACVA,EAAA,IAAM,iBACNA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QACRA,EAAA,WAAa,mBACbA,EAAA,QAAU,UACVA,EAAA,SAAW,WACXA,EAAA,mBAAqB,2BACrBA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,MAAQ,QACRA,EAAA,YAAc,cACdA,EAAA,aAAe,eACfA,EAAA,YAAc,cACdA,EAAA,OAAS,SAdCA,IAAAA,GAAA,CAAA,GAiBAC,GAAAA,IACVA,EAAA,IAAM,iBACNA,EAAA,MAAQ,QAFEA,IAAAA,GAAA,CAAA,GAKAC,GAAAA,IACVA,EAAAA,KAAK,KAAL,KACAA,EAAAA,aAAa,KAAb,aACAA,EAAAA,eAAe,KAAf,eACAA,EAAAA,YAAY,KAAZ,YACAA,EAAAA,WAAW,KAAX,WACAA,EAAAA,WAAW,KAAX,WACAA,EAAAA,kBAAkB,KAAlB,kBACAA,EAAAA,kBAAkB,KAAlB,kBACAA,EAAAA,sBAAsB,KAAtB,sBACAA,EAAAA,iBAAiB,KAAjB,iBACAA,EAAAA,qBAAqB,KAArB,qBACAA,EAAAA,iBAAiB,KAAjB,iBAZUA,IAAAA,GAAA,CAAA,GAeAC,GAAAA,IACVA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,IAAM,MACNA,EAAA,OAAS,SACTA,EAAA,QAAU,UACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QATEA,IAAAA,GAAA,CAAA,2JCqEL,MAEL,WAAAC,CAAYC,GADZC,EAAAC,KAAO,QAELA,KAAKF,KAAOA,CACd"}
@@ -0,0 +1,2 @@
1
+ var e=Object.defineProperty,r=(r,o,t)=>((r,o,t)=>o in r?e(r,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[o]=t)(r,o+"",t);class o{constructor(e){r(this,"type"),this.type=e}}var t=(e=>(e.OK="OK",e.BadRequest="Bad Request",e.Unauthorized="Unauthorized",e.Forbidden="Forbidden",e.NotFound="NotFound",e.Conflict="Conflict",e.PayloadTooLarge="Payload Too Large",e.TooManyRequests="Too Many Requests",e.InternalServerError="Internal Server Error",e.NotImplemented="Not Implemented",e.ServiceUnavailable="Service Unavailable",e.GatewayTimeout="Gateway Timeout",e.UnknownError="Unknown Error",e))(t||{}),a=(e=>(e.Http="Http",e.Click="Click",e.Route="Route",e.Resource="Resource",e.CodeError="Code Error",e.Custom="Custom",e))(a||{}),n=(e=>(e.Error="Error",e.OK="OK",e))(n||{}),c=(e=>(e.Xhr="XMLHttpRequest",e.Fetch="fetch",e.Click="Click",e.HashChange="Event hashchange",e.History="History",e.Resource="Resource",e.UnhandledRejection="Event unhandledrejection",e.Error="Error",e.Vue="Vue",e.React="React",e.Performance="Performance",e.ScreenRecord="ScreenRecord",e.WhiteScreen="WhiteScreen",e.Custom="Custom",e))(c||{}),i=(e=>(e.Xhr="XMLHttpRequest",e.Fetch="fetch",e))(i||{}),u=(e=>(e[e.OK=200]="OK",e[e.BadRequest=400]="BadRequest",e[e.Unauthorized=401]="Unauthorized",e[e.Forbidden=403]="Forbidden",e[e.NotFound=404]="NotFound",e[e.Conflict=409]="Conflict",e[e.PayloadTooLarge=413]="PayloadTooLarge",e[e.TooManyRequests=429]="TooManyRequests",e[e.InternalServerError=500]="InternalServerError",e[e.NotImplemented=501]="NotImplemented",e[e.ServiceUnavailable=503]="ServiceUnavailable",e[e.GatewayTimeout=504]="GatewayTimeout",e))(u||{}),d=(e=>(e.Get="GET",e.Head="HEAD",e.Post="POST",e.Put="PUT",e.Delete="DELETE",e.Connect="CONNECT",e.Options="OPTIONS",e.Trace="TRACE",e.Patch="PATCH",e))(d||{});export{a as BreadcrumbType,c as EventType,d as HttpMethod,t as HttpStatus,u as HttpStatusCode,i as HttpType,o as SentryPlugin,n as Status};
2
+ //# sourceMappingURL=index.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.min.js","sources":["../src/common.ts","../src/enums.ts"],"sourcesContent":["import type { BreadcrumbType, EventType, HttpMethod, Status } from \"./enums.js\";\n\nimport type { Metric } from \"web-vitals\";\nimport type { IOptions } from \"./options.js\";\n\nexport interface ISentry {\n codeErrors: Set<string>;\n whiteScreenTimer: number | null;\n options: IOptions;\n shouldRecordScreen: boolean;\n deviceInfo: IDeviceInfo;\n setOptions: (newOptions: Partial<IOptions>) => void;\n}\n\nexport interface IBreadcrumbItem extends IBaseData {\n userAction: BreadcrumbType;\n}\n\nexport interface IDeviceInfo {\n browserName: string; // 例如 chrome\n browserVersion: string; // 浏览器版本\n osName: string; // 操作系统\n osVersion: string; // 操作系统版本\n userAgent: string; // 用户代理\n deviceType: string; // 设备种类, 例如 PC\n deviceModel: string; // 设备描述\n}\n\nexport interface IBaseData<T = unknown> {\n id: string;\n type: EventType;\n name: string;\n time: string;\n timestamp: number;\n message: string;\n status: Status;\n payload?: T;\n}\n\nexport interface IHttpData<Req = unknown, Res = unknown> extends IBaseData {\n method: HttpMethod | string;\n // 接口地址\n api: string;\n // 请求时长\n elapsedTime: number;\n // http 状态码\n statusCode: number;\n requestData?: Req;\n responseData?: Res;\n}\n\nexport interface IResourceError extends IBaseData {\n src: string;\n href: string;\n}\n\ninterface IPerformanceMetricData extends IBaseData {\n value: Metric[\"value\"];\n rating?: Metric[\"rating\"]; // \"good\" | \"needs-improvement\" | \"poor\"\n}\n\ninterface IPerformanceResourceListData extends IBaseData {\n resourceList: (PerformanceResourceTiming & {\n fromCache: boolean;\n })[];\n}\ninterface IPerformanceLongTaskData extends IBaseData {\n longTasks: PerformanceEntry[];\n}\n\ninterface IPerformanceMemoryData extends IBaseData {\n memory: unknown;\n}\nexport type IPerformanceData =\n | IPerformanceMetricData\n | IPerformanceResourceListData\n | IPerformanceLongTaskData\n | IPerformanceMemoryData;\n\nexport interface ICodeError extends IBaseData {\n column: number;\n line: number;\n}\n\nexport interface IScreenRecordData extends IBaseData {\n event: string;\n}\n\nexport interface IRouteData extends IBaseData {\n from: string;\n to: string;\n}\n\nexport type TWhiteScreenData = IBaseData;\n\nexport type TReportPayload =\n | TWhiteScreenData\n | IHttpData\n | IResourceError\n | IPerformanceData\n | ICodeError\n | IScreenRecordData\n | IRouteData;\n\nexport type TOnReportWhiteScreenData = (data: TWhiteScreenData) => void;\n\nexport type TOnReportPerformanceData = (data: IPerformanceData) => void;\n\nexport interface IReportData<\n T extends TReportPayload = TReportPayload,\n> extends IBaseData {\n // 页面的地址\n url: string;\n // 用户 ID\n userId: string;\n // 前端项目的 ID\n projectId: string;\n // SDK 版本\n sdkVersion: string;\n breadcrumbs?: IBreadcrumbItem[];\n deviceInfo: IDeviceInfo;\n payload: T;\n}\n\nexport interface IDataReporter {\n send(payload: TReportPayload): Promise<void>;\n}\n\nexport interface IExtendedErrorEvent extends ErrorEvent {\n target: EventTarget & {\n src: string;\n href: string;\n localName: string;\n };\n}\n\nexport type TUnknownError = IExtendedErrorEvent | Error /** React */ | unknown;\n\nexport type WithSentry<T, S extends IBaseData = IBaseData> = T & {\n __sentry__: S;\n};\n\nexport abstract class SentryPlugin {\n public type: EventType;\n constructor(type: EventType) {\n this.type = type;\n }\n abstract init(): void;\n}\n","export enum HttpStatus {\n OK = \"OK\", // 200\n BadRequest = \"Bad Request\", // 400\n Unauthorized = \"Unauthorized\", // 401\n Forbidden = \"Forbidden\", // 403\n NotFound = \"NotFound\", // 404\n Conflict = \"Conflict\", // 409\n PayloadTooLarge = \"Payload Too Large\", // 413\n TooManyRequests = \"Too Many Requests\", // 429\n InternalServerError = \"Internal Server Error\", // 500\n NotImplemented = \"Not Implemented\", // 501\n ServiceUnavailable = \"Service Unavailable\", // 503\n GatewayTimeout = \"Gateway Timeout\", // 504\n UnknownError = \"Unknown Error\",\n}\n\nexport enum BreadcrumbType {\n // 网络请求\n Http = \"Http\",\n // 点击\n Click = \"Click\",\n // 路由导航\n Route = \"Route\",\n // 资源加载\n Resource = \"Resource\",\n // 代码报错\n CodeError = \"Code Error\",\n // 自定义\n Custom = \"Custom\",\n}\n\nexport enum Status {\n Error = \"Error\",\n OK = \"OK\",\n}\n\nexport enum EventType {\n Xhr = \"XMLHttpRequest\",\n Fetch = \"fetch\",\n Click = \"Click\",\n HashChange = \"Event hashchange\",\n History = \"History\",\n Resource = \"Resource\",\n UnhandledRejection = \"Event unhandledrejection\",\n Error = \"Error\",\n Vue = \"Vue\",\n React = \"React\",\n Performance = \"Performance\",\n ScreenRecord = \"ScreenRecord\",\n WhiteScreen = \"WhiteScreen\",\n Custom = \"Custom\",\n}\n\nexport enum HttpType {\n Xhr = \"XMLHttpRequest\",\n Fetch = \"fetch\",\n}\n\nexport enum HttpStatusCode {\n OK = 200,\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n Conflict = 409,\n PayloadTooLarge = 413,\n TooManyRequests = 429,\n InternalServerError = 500,\n NotImplemented = 501,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n}\n\nexport enum HttpMethod {\n Get = \"GET\",\n Head = \"HEAD\",\n Post = \"POST\",\n Put = \"PUT\",\n Delete = \"DELETE\",\n Connect = \"CONNECT\",\n Options = \"OPTIONS\",\n Trace = \"TRACE\",\n Patch = \"PATCH\",\n}\n"],"names":["SentryPlugin","constructor","type","__publicField","this","HttpStatus","BreadcrumbType","Status","EventType","HttpType","HttpStatusCode","HttpMethod"],"mappings":"qIA8IO,MAAeA,EAEpB,WAAAC,CAAYC,GADZC,EAAAC,KAAO,QAELA,KAAKF,KAAOA,CACd,EClJK,IAAKG,GAAAA,IACVA,EAAA,GAAK,KACLA,EAAA,WAAa,cACbA,EAAA,aAAe,eACfA,EAAA,UAAY,YACZA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,gBAAkB,oBAClBA,EAAA,gBAAkB,oBAClBA,EAAA,oBAAsB,wBACtBA,EAAA,eAAiB,kBACjBA,EAAA,mBAAqB,sBACrBA,EAAA,eAAiB,kBACjBA,EAAA,aAAe,gBAbLA,IAAAA,GAAA,CAAA,GAgBAC,GAAAA,IAEVA,EAAA,KAAO,OAEPA,EAAA,MAAQ,QAERA,EAAA,MAAQ,QAERA,EAAA,SAAW,WAEXA,EAAA,UAAY,aAEZA,EAAA,OAAS,SAZCA,IAAAA,GAAA,CAAA,GAeAC,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,GAAK,KAFKA,IAAAA,GAAA,CAAA,GAKAC,GAAAA,IACVA,EAAA,IAAM,iBACNA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QACRA,EAAA,WAAa,mBACbA,EAAA,QAAU,UACVA,EAAA,SAAW,WACXA,EAAA,mBAAqB,2BACrBA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,MAAQ,QACRA,EAAA,YAAc,cACdA,EAAA,aAAe,eACfA,EAAA,YAAc,cACdA,EAAA,OAAS,SAdCA,IAAAA,GAAA,CAAA,GAiBAC,GAAAA,IACVA,EAAA,IAAM,iBACNA,EAAA,MAAQ,QAFEA,IAAAA,GAAA,CAAA,GAKAC,GAAAA,IACVA,EAAAA,KAAK,KAAL,KACAA,EAAAA,aAAa,KAAb,aACAA,EAAAA,eAAe,KAAf,eACAA,EAAAA,YAAY,KAAZ,YACAA,EAAAA,WAAW,KAAX,WACAA,EAAAA,WAAW,KAAX,WACAA,EAAAA,kBAAkB,KAAlB,kBACAA,EAAAA,kBAAkB,KAAlB,kBACAA,EAAAA,sBAAsB,KAAtB,sBACAA,EAAAA,iBAAiB,KAAjB,iBACAA,EAAAA,qBAAqB,KAArB,qBACAA,EAAAA,iBAAiB,KAAjB,iBAZUA,IAAAA,GAAA,CAAA,GAeAC,GAAAA,IACVA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,IAAM,MACNA,EAAA,OAAS,SACTA,EAAA,QAAU,UACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QATEA,IAAAA,GAAA,CAAA"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@lark-sentry/types",
3
+ "version": "1.0.0",
4
+ "description": "Sentry sdk types",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "keywords": [
23
+ "sentry",
24
+ "sdk",
25
+ "types"
26
+ ],
27
+ "author": "github.com/161043261",
28
+ "license": "MIT",
29
+ "dependencies": {
30
+ "web-vitals": "^5.1.0"
31
+ }
32
+ }