@mtn-ui-z/monitor 0.0.1
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/README.md +344 -0
- package/dist/index.js +962 -0
- package/dist/src/api.d.ts +40 -0
- package/dist/src/behavior.d.ts +46 -0
- package/dist/src/custom.d.ts +29 -0
- package/dist/src/error.d.ts +72 -0
- package/dist/src/index.d.ts +122 -0
- package/dist/src/longtask.d.ts +42 -0
- package/dist/src/performance.d.ts +64 -0
- package/dist/src/pv.d.ts +55 -0
- package/dist/src/report.d.ts +31 -0
- package/dist/src/types.d.ts +219 -0
- package/dist/vite.config.d.ts +2 -0
- package/package.json +46 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @mtn-ui-z/monitor - 前端监控 SDK 类型定义
|
|
3
|
+
* @description 定义监控 SDK 的配置选项和数据类型
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 监控 SDK 初始化配置选项
|
|
7
|
+
*/
|
|
8
|
+
export interface MonitorOptions {
|
|
9
|
+
/** 上报数据的目标 URL */
|
|
10
|
+
reportUrl?: string;
|
|
11
|
+
/** 应用唯一标识,用于区分不同应用(与部分管理台的项目 sdkKey 对应) */
|
|
12
|
+
appId?: string;
|
|
13
|
+
/** 项目密钥,与 appId 二选一或一致;部分管理台用 sdkKey 做项目识别 */
|
|
14
|
+
sdkKey?: string;
|
|
15
|
+
/** 运行环境 */
|
|
16
|
+
env?: 'development' | 'production' | 'test';
|
|
17
|
+
/** 是否启用错误监控(JS 错误、Promise 异常等) */
|
|
18
|
+
errorEnabled?: boolean;
|
|
19
|
+
/** 是否启用性能监控(FP、FCP、LCP 等) */
|
|
20
|
+
performanceEnabled?: boolean;
|
|
21
|
+
/** 是否启用页面访问监控(PV/UV) */
|
|
22
|
+
pvEnabled?: boolean;
|
|
23
|
+
/** 是否启用 API 请求监控(fetch/XHR) */
|
|
24
|
+
apiEnabled?: boolean;
|
|
25
|
+
/** 是否启用用户行为监控(点击、滚动等) */
|
|
26
|
+
behaviorEnabled?: boolean;
|
|
27
|
+
/** 是否启用长任务监控(Long Task、内存) */
|
|
28
|
+
longTaskEnabled?: boolean;
|
|
29
|
+
/** 数据上报采样率,范围 0-1,1 表示 100% 上报 */
|
|
30
|
+
sampleRate?: number;
|
|
31
|
+
/** 自定义数据上报函数,优先级高于 reportUrl */
|
|
32
|
+
report?: (data: MonitorData) => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 监控数据的联合类型
|
|
36
|
+
*/
|
|
37
|
+
export type MonitorData = ErrorData | PerformanceData | PvData | ApiData | BehaviorData | CustomData | LongTaskData;
|
|
38
|
+
/**
|
|
39
|
+
* 错误监控数据类型
|
|
40
|
+
*/
|
|
41
|
+
export interface ErrorData {
|
|
42
|
+
/** 数据类型,固定为 'error' */
|
|
43
|
+
type: 'error';
|
|
44
|
+
/** 错误发生的具体类型 */
|
|
45
|
+
errorType: 'js' | 'resource' | 'promise' | 'vue';
|
|
46
|
+
/** 错误信息文本 */
|
|
47
|
+
message: string;
|
|
48
|
+
/** 错误堆栈信息(可选) */
|
|
49
|
+
stack?: string;
|
|
50
|
+
/** 错误发生的页面 URL */
|
|
51
|
+
url: string;
|
|
52
|
+
/** 错误发生的行号(JS 错误时) */
|
|
53
|
+
line?: number;
|
|
54
|
+
/** 错误发生的列号(JS 错误时) */
|
|
55
|
+
column?: number;
|
|
56
|
+
/** 当前用户 ID(如果已设置) */
|
|
57
|
+
userId?: string;
|
|
58
|
+
/** 错误发生的时间戳 */
|
|
59
|
+
timestamp: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 性能监控数据类型
|
|
63
|
+
*/
|
|
64
|
+
export interface PerformanceData {
|
|
65
|
+
/** 数据类型,固定为 'performance' */
|
|
66
|
+
type: 'performance';
|
|
67
|
+
/** 性能指标类型 */
|
|
68
|
+
metric: 'page' | 'resource' | 'fcp' | 'fp' | 'lcp' | 'fid' | 'cls' | 'tti' | 'ttfb' | 'dns' | 'tcp' | 'download';
|
|
69
|
+
/** 指标值,单位毫秒 */
|
|
70
|
+
value: number;
|
|
71
|
+
/** 性能数据采集的页面 URL */
|
|
72
|
+
url: string;
|
|
73
|
+
/** 采集时间的时间戳 */
|
|
74
|
+
timestamp: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 页面访问(PV)数据类型
|
|
78
|
+
*/
|
|
79
|
+
export interface PvData {
|
|
80
|
+
/** 数据类型,固定为 'pv' */
|
|
81
|
+
type: 'pv';
|
|
82
|
+
/** 当前页面 URL */
|
|
83
|
+
url: string;
|
|
84
|
+
/** 来源页面 URL(可选) */
|
|
85
|
+
referrer?: string;
|
|
86
|
+
/** 当前用户 ID(如果已设置) */
|
|
87
|
+
userId?: string;
|
|
88
|
+
/** 访问时间戳 */
|
|
89
|
+
timestamp: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* API 请求监控数据类型
|
|
93
|
+
*/
|
|
94
|
+
export interface ApiData {
|
|
95
|
+
/** 数据类型,固定为 'api' */
|
|
96
|
+
type: 'api';
|
|
97
|
+
/** 请求 URL */
|
|
98
|
+
url: string;
|
|
99
|
+
/** 请求方法 */
|
|
100
|
+
method: string;
|
|
101
|
+
/** HTTP 状态码 */
|
|
102
|
+
status: number;
|
|
103
|
+
/** 请求耗时(毫秒) */
|
|
104
|
+
duration: number;
|
|
105
|
+
/** 请求是否成功 */
|
|
106
|
+
success: boolean;
|
|
107
|
+
/** 错误信息(如果有) */
|
|
108
|
+
error?: string;
|
|
109
|
+
/** 时间戳 */
|
|
110
|
+
timestamp: number;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 用户行为监控数据类型
|
|
114
|
+
*/
|
|
115
|
+
export interface BehaviorData {
|
|
116
|
+
/** 数据类型,固定为 'behavior' */
|
|
117
|
+
type: 'behavior';
|
|
118
|
+
/** 行为类型 */
|
|
119
|
+
behaviorType: 'click' | 'scroll' | 'pageShow' | 'pageHide';
|
|
120
|
+
/** 点击元素标签名 */
|
|
121
|
+
element?: string;
|
|
122
|
+
/** 点击元素文本内容 */
|
|
123
|
+
text?: string;
|
|
124
|
+
/** 点击元素路径 */
|
|
125
|
+
path?: string;
|
|
126
|
+
/** 自定义监控 ID */
|
|
127
|
+
monitorId?: string;
|
|
128
|
+
/** 自定义监控标签 */
|
|
129
|
+
monitorLabel?: string;
|
|
130
|
+
/** 点击坐标 X */
|
|
131
|
+
x?: number;
|
|
132
|
+
/** 点击坐标 Y */
|
|
133
|
+
y?: number;
|
|
134
|
+
/** 滚动位置 */
|
|
135
|
+
scrollTop?: number;
|
|
136
|
+
/** 滚动百分比 */
|
|
137
|
+
scrollPercent?: number;
|
|
138
|
+
/** 时间戳 */
|
|
139
|
+
timestamp: number;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* 自定义事件数据类型
|
|
143
|
+
*/
|
|
144
|
+
export interface CustomData {
|
|
145
|
+
/** 数据类型,固定为 'custom' */
|
|
146
|
+
type: 'custom';
|
|
147
|
+
/** 事件名称 */
|
|
148
|
+
eventName: string;
|
|
149
|
+
/** 事件数据 */
|
|
150
|
+
data?: Record<string, unknown>;
|
|
151
|
+
/** 页面 URL */
|
|
152
|
+
url: string;
|
|
153
|
+
/** 时间戳 */
|
|
154
|
+
timestamp: number;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* 长任务监控数据类型
|
|
158
|
+
*/
|
|
159
|
+
export interface LongTaskData {
|
|
160
|
+
/** 数据类型,固定为 'longtask' */
|
|
161
|
+
type: 'longtask';
|
|
162
|
+
/** 任务类型 */
|
|
163
|
+
taskType: 'longTask' | 'memory';
|
|
164
|
+
/** 任务耗时(毫秒) */
|
|
165
|
+
duration?: number;
|
|
166
|
+
/** 任务归因 */
|
|
167
|
+
attribution?: string;
|
|
168
|
+
/** 内存使用(MB) */
|
|
169
|
+
usedMemory?: number;
|
|
170
|
+
/** 内存总量(MB) */
|
|
171
|
+
totalMemory?: number;
|
|
172
|
+
/** 内存使用百分比 */
|
|
173
|
+
memoryPercent?: number;
|
|
174
|
+
/** 页面 URL */
|
|
175
|
+
url: string;
|
|
176
|
+
/** 时间戳 */
|
|
177
|
+
timestamp: number;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* 监控 SDK 实例接口
|
|
181
|
+
*/
|
|
182
|
+
export interface MonitorInstance {
|
|
183
|
+
/**
|
|
184
|
+
* 初始化监控 SDK
|
|
185
|
+
* @param options - 监控配置选项
|
|
186
|
+
*/
|
|
187
|
+
init: (options: MonitorOptions) => void;
|
|
188
|
+
/**
|
|
189
|
+
* 手动上报错误
|
|
190
|
+
* @param error - Error 对象
|
|
191
|
+
* @param errorType - 错误类型
|
|
192
|
+
*/
|
|
193
|
+
reportError: (error: Error, errorType?: ErrorData['errorType']) => void;
|
|
194
|
+
/**
|
|
195
|
+
* 手动上报性能数据
|
|
196
|
+
* @param metric - 性能指标类型
|
|
197
|
+
* @param value - 指标值(毫秒)
|
|
198
|
+
*/
|
|
199
|
+
reportPerformance: (metric: PerformanceData['metric'], value: number) => void;
|
|
200
|
+
/**
|
|
201
|
+
* 手动上报页面访问
|
|
202
|
+
*/
|
|
203
|
+
reportPv: () => void;
|
|
204
|
+
/**
|
|
205
|
+
* 手动上报自定义事件
|
|
206
|
+
* @param eventName - 事件名称
|
|
207
|
+
* @param eventData - 事件数据
|
|
208
|
+
*/
|
|
209
|
+
reportCustomEvent: (eventName: string, eventData?: Record<string, unknown>) => void;
|
|
210
|
+
/**
|
|
211
|
+
* 设置用户 ID
|
|
212
|
+
* @param userId - 用户唯一标识
|
|
213
|
+
*/
|
|
214
|
+
setUserId: (userId: string) => void;
|
|
215
|
+
/**
|
|
216
|
+
* 销毁监控实例,停止所有监控
|
|
217
|
+
*/
|
|
218
|
+
destroy: () => void;
|
|
219
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mtn-ui-z/monitor",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "MTN UI Frontend Monitor SDK",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.js",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./package.json": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"monitor",
|
|
25
|
+
"sdk",
|
|
26
|
+
"frontend",
|
|
27
|
+
"performance",
|
|
28
|
+
"error-tracking"
|
|
29
|
+
],
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@vitejs/plugin-vue": "^5.0.0",
|
|
33
|
+
"typescript": "^5.3.3",
|
|
34
|
+
"vite": "^6.0.0",
|
|
35
|
+
"vite-plugin-dts": "^3.9.0",
|
|
36
|
+
"vue": "^3.5.0",
|
|
37
|
+
"vue-tsc": "^2.0.0"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"vue": "^3.5.0"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "vite build",
|
|
44
|
+
"type-check": "vue-tsc --noEmit"
|
|
45
|
+
}
|
|
46
|
+
}
|