@be-link/cls-logger 1.0.1-beta.2 → 1.0.1-beta.20
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 +144 -32
- package/dist/ClsLogger.d.ts +15 -96
- package/dist/ClsLogger.d.ts.map +1 -1
- package/dist/ClsLoggerCore.d.ts +177 -0
- package/dist/ClsLoggerCore.d.ts.map +1 -0
- package/dist/behaviorMonitor.d.ts.map +1 -1
- package/dist/clsSdkTypes.d.ts +18 -0
- package/dist/clsSdkTypes.d.ts.map +1 -0
- package/dist/deviceInfo.d.ts.map +1 -1
- package/dist/errorMonitor.d.ts.map +1 -1
- package/dist/index.esm.js +2148 -1275
- package/dist/index.js +2148 -1275
- package/dist/index.umd.js +2153 -1278
- package/dist/mini/ClsLogger.d.ts +14 -0
- package/dist/mini/ClsLogger.d.ts.map +1 -0
- package/dist/mini/behaviorMonitor.d.ts +5 -0
- package/dist/mini/behaviorMonitor.d.ts.map +1 -0
- package/dist/mini/deviceInfo.d.ts +3 -0
- package/dist/mini/deviceInfo.d.ts.map +1 -0
- package/dist/mini/errorMonitor.d.ts +5 -0
- package/dist/mini/errorMonitor.d.ts.map +1 -0
- package/dist/mini/performanceMonitor.d.ts +5 -0
- package/dist/mini/performanceMonitor.d.ts.map +1 -0
- package/dist/mini/requestMonitor.d.ts +9 -0
- package/dist/mini/requestMonitor.d.ts.map +1 -0
- package/dist/mini.d.ts +6 -0
- package/dist/mini.d.ts.map +1 -0
- package/dist/mini.esm.js +1946 -0
- package/dist/mini.js +1971 -0
- package/dist/performanceMonitor.d.ts.map +1 -1
- package/dist/requestMonitor.d.ts +1 -5
- package/dist/requestMonitor.d.ts.map +1 -1
- package/dist/sdkUtils.d.ts +3 -0
- package/dist/sdkUtils.d.ts.map +1 -0
- package/dist/types.d.ts +90 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/web/ClsLogger.d.ts +14 -0
- package/dist/web/ClsLogger.d.ts.map +1 -0
- package/dist/web/behaviorMonitor.d.ts +5 -0
- package/dist/web/behaviorMonitor.d.ts.map +1 -0
- package/dist/web/deviceInfo.d.ts +3 -0
- package/dist/web/deviceInfo.d.ts.map +1 -0
- package/dist/web/errorMonitor.d.ts +5 -0
- package/dist/web/errorMonitor.d.ts.map +1 -0
- package/dist/web/performanceMonitor.d.ts +5 -0
- package/dist/web/performanceMonitor.d.ts.map +1 -0
- package/dist/web/requestMonitor.d.ts +5 -0
- package/dist/web/requestMonitor.d.ts.map +1 -0
- package/dist/web.d.ts +6 -0
- package/dist/web.d.ts.map +1 -0
- package/dist/web.esm.js +2117 -0
- package/dist/web.js +2142 -0
- package/package.json +35 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @be-link/cls-logger
|
|
2
2
|
|
|
3
|
-
腾讯云 CLS(`tencentcloud-cls-sdk-js-web
|
|
3
|
+
腾讯云 CLS(`tencentcloud-cls-sdk-js-web` / `tencentcloud-cls-sdk-js-mini`)日志上报封装,支持 Web、H5 和小程序环境,提供统一的调用方式。
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
@@ -8,58 +8,170 @@
|
|
|
8
8
|
pnpm add @be-link/cls-logger
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
> **注意**:
|
|
12
|
+
>
|
|
13
|
+
> 1. SDK 内部会自动根据运行环境加载对应的腾讯云 SDK(Web 或小程序),无需手动安装额外依赖。
|
|
14
|
+
> 2. 如果业务对包体积有极致要求,建议使用**分环境引入方式**(见下文)。
|
|
15
|
+
|
|
11
16
|
## 使用
|
|
12
17
|
|
|
18
|
+
### 1. 统一引入方式(推荐快速接入)
|
|
19
|
+
|
|
20
|
+
无需关心运行环境(Web 或 小程序),SDK 内部会自动识别并适配。此方式包含全量逻辑,支持动态加载 SDK。
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
import clsLogger from '@be-link/cls-logger';
|
|
24
|
+
|
|
25
|
+
// 初始化(建议在应用入口处调用)
|
|
26
|
+
clsLogger.init({
|
|
27
|
+
projectId: 'my-project',
|
|
28
|
+
appId: 'my-app-id',
|
|
29
|
+
// 默认配置可不传
|
|
30
|
+
// tencentCloud: {
|
|
31
|
+
// endpoint: 'https://ap-shanghai.cls.tencentcs.com',
|
|
32
|
+
// topicID: '17475bcd-6315-4b20-859c-e7b087fb3683',
|
|
33
|
+
// },
|
|
34
|
+
source: 'my-source',
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. 分环境引入方式(推荐生产环境使用)
|
|
39
|
+
|
|
40
|
+
为了获得更小的包体积(Tree Shaking)和更清晰的逻辑,建议根据项目类型引入不同的入口。此方式将物理隔离 Web 和小程序的特有逻辑(如 Web 的 `fetch` 拦截 vs 小程序的 `wx.request` 拦截)。
|
|
41
|
+
|
|
42
|
+
#### Web / H5 项目:
|
|
43
|
+
|
|
13
44
|
```ts
|
|
14
|
-
|
|
45
|
+
// 仅包含 Web 相关逻辑,不再包含小程序代码
|
|
46
|
+
import { clsLogger } from '@be-link/cls-logger/web';
|
|
15
47
|
|
|
16
48
|
clsLogger.init({
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
49
|
+
projectId: 'my-web-project',
|
|
50
|
+
// tencentCloud: { ... }, // 可选
|
|
51
|
+
source: 'web-source',
|
|
20
52
|
});
|
|
53
|
+
```
|
|
21
54
|
|
|
22
|
-
|
|
23
|
-
clsLogger.put({ event: 'login', ok: true });
|
|
55
|
+
#### 小程序项目:
|
|
24
56
|
|
|
25
|
-
|
|
26
|
-
|
|
57
|
+
```ts
|
|
58
|
+
// 仅包含小程序相关逻辑,不再包含 Web 代码
|
|
59
|
+
import { clsLogger } from '@be-link/cls-logger/mini';
|
|
27
60
|
|
|
28
|
-
|
|
29
|
-
|
|
61
|
+
clsLogger.init({
|
|
62
|
+
projectId: 'my-mini-project',
|
|
63
|
+
appId: 'wx123456789', // 小程序建议传入 appId
|
|
64
|
+
// tencentCloud: { ... }, // 可选
|
|
65
|
+
source: 'mini-source',
|
|
66
|
+
});
|
|
30
67
|
```
|
|
31
68
|
|
|
32
|
-
##
|
|
69
|
+
## 常用 API
|
|
33
70
|
|
|
34
|
-
|
|
71
|
+
### 开发日志
|
|
35
72
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
73
|
+
```ts
|
|
74
|
+
// info / warn / error
|
|
75
|
+
clsLogger.info('应用启动', { startUpTime: 120 });
|
|
76
|
+
|
|
77
|
+
// Error 日志(支持直接传入 Error 对象,自动解析堆栈)
|
|
78
|
+
try {
|
|
79
|
+
doSomething();
|
|
80
|
+
} catch (err) {
|
|
81
|
+
clsLogger.error(err, { module: 'payment' });
|
|
82
|
+
}
|
|
83
|
+
```
|
|
39
84
|
|
|
40
|
-
|
|
85
|
+
### 自定义埋点 (Track)
|
|
41
86
|
|
|
42
|
-
|
|
87
|
+
```ts
|
|
88
|
+
clsLogger.track('click_event', {
|
|
89
|
+
button: 'submit',
|
|
90
|
+
page: '/home',
|
|
91
|
+
});
|
|
92
|
+
```
|
|
43
93
|
|
|
44
|
-
|
|
45
|
-
- **Navigation Timing**:TTFB 等
|
|
46
|
-
- **Resource Timing**:资源加载耗时(`PerformanceObserver({ type: 'resource', buffered: true })`,首屏会比较多)
|
|
94
|
+
### 统计埋点 (Stat)
|
|
47
95
|
|
|
48
|
-
|
|
96
|
+
用于简单的计数/分布统计。
|
|
49
97
|
|
|
50
98
|
```ts
|
|
51
|
-
|
|
99
|
+
clsLogger.stat({
|
|
100
|
+
pageName: '首页',
|
|
101
|
+
scene: '入口',
|
|
102
|
+
subScene: '活动弹窗',
|
|
103
|
+
data: 1,
|
|
104
|
+
});
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 功能特性
|
|
52
108
|
|
|
109
|
+
### 1. 自动环境适配
|
|
110
|
+
|
|
111
|
+
- **Web / H5**: 自动采集浏览器环境信息(UserAgent、屏幕尺寸、网络状态等)。
|
|
112
|
+
- **小程序**: 自动采集小程序环境信息(系统信息、微信版本、网络类型等)。
|
|
113
|
+
|
|
114
|
+
### 2. 请求监控 (Request Monitor)
|
|
115
|
+
|
|
116
|
+
默认开启。
|
|
117
|
+
|
|
118
|
+
- **Web**: 拦截 `fetch` / `XMLHttpRequest`。
|
|
119
|
+
- **小程序**: 拦截 `wx.request` / `wx.cloud.callFunction`。
|
|
120
|
+
|
|
121
|
+
### 3. 性能监控 (Performance Monitor)
|
|
122
|
+
|
|
123
|
+
默认开启。
|
|
124
|
+
|
|
125
|
+
- **Web**: 采集 FCP, LCP, CLS, FID 等 Core Web Vitals 及资源加载耗时。
|
|
126
|
+
- **小程序**: 支持采集页面首屏渲染耗时 (`firstRender`)、路由切换耗时 (`route`) 及启动耗时 (`appLaunch`)。
|
|
127
|
+
|
|
128
|
+
### 4. 行为埋点 (Behavior Monitor)
|
|
129
|
+
|
|
130
|
+
默认开启,支持 PV (Page View) 和 UV (User View) 自动上报。
|
|
131
|
+
|
|
132
|
+
- **UV ID**: 自动生成并持久化。小程序环境下优先尝试使用 `openid`。
|
|
133
|
+
- **点击追踪**: 自动监听点击事件。
|
|
134
|
+
- **Web**: 识别带 `data-track-id` 的元素。
|
|
135
|
+
```html
|
|
136
|
+
<!-- HTML -->
|
|
137
|
+
<button data-track-id="submit_btn">提交</button>
|
|
138
|
+
```
|
|
139
|
+
- **小程序**: 识别带 `data-track-id` 的组件(需在 `dataset` 中)。
|
|
140
|
+
```html
|
|
141
|
+
<!-- WXML -->
|
|
142
|
+
<button data-track-id="submit_btn" bindtap="handleClick">提交</button>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## 高级用法
|
|
146
|
+
|
|
147
|
+
### 内存队列与批量发送
|
|
148
|
+
|
|
149
|
+
SDK 默认开启内存队列,每 500ms 或达到 20 条日志时自动批量上报,以减少网络请求次数。可通过 `batch` 参数配置:
|
|
150
|
+
|
|
151
|
+
```ts
|
|
53
152
|
clsLogger.init({
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
//
|
|
58
|
-
sampleRate: 0.1,
|
|
59
|
-
// 忽略本地开发资源 & sourcemap(按你的资源特征调整)
|
|
60
|
-
ignoreUrls: ['localhost:8080', /\\.map$/],
|
|
153
|
+
batch: {
|
|
154
|
+
maxSize: 20,
|
|
155
|
+
intervalMs: 500,
|
|
156
|
+
startupDelayMs: 1000, // 启动阶段合并窗口
|
|
61
157
|
},
|
|
62
|
-
|
|
63
|
-
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### 失败重试与本地缓存
|
|
162
|
+
|
|
163
|
+
上报失败的日志会自动进入重试流程(指数退避算法)。若多次重试仍失败,日志会落盘到本地缓存(`localStorage` 或小程序 `Storage`),在下次应用启动时尝试重新上报。
|
|
164
|
+
|
|
165
|
+
### 手动注入 SDK
|
|
166
|
+
|
|
167
|
+
在某些特殊构建环境(如某些不允许动态 require 的小程序框架)下,可以手动注入:
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
import { clsLogger } from '@be-link/cls-logger/mini';
|
|
171
|
+
import * as MiniSdk from 'tencentcloud-cls-sdk-js-mini';
|
|
172
|
+
|
|
173
|
+
clsLogger.init({
|
|
174
|
+
tencentCloud: { topicID: 'xxx', endpoint: 'xxx' },
|
|
175
|
+
sdk: MiniSdk, // 手动传入 SDK 实例
|
|
64
176
|
});
|
|
65
177
|
```
|
package/dist/ClsLogger.d.ts
CHANGED
|
@@ -1,98 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
private storageKey;
|
|
17
|
-
private batchSize;
|
|
18
|
-
private memoryQueue;
|
|
19
|
-
private batchMaxSize;
|
|
20
|
-
private batchIntervalMs;
|
|
21
|
-
private batchTimer;
|
|
22
|
-
private batchTimerDueAt;
|
|
23
|
-
private initTs;
|
|
24
|
-
private startupDelayMs;
|
|
25
|
-
private failedCacheKey;
|
|
26
|
-
private failedCacheMax;
|
|
27
|
-
private requestMonitorStarted;
|
|
28
|
-
private errorMonitorStarted;
|
|
29
|
-
private performanceMonitorStarted;
|
|
30
|
-
private behaviorMonitorStarted;
|
|
31
|
-
private behaviorMonitorCleanup;
|
|
32
|
-
userId: unknown;
|
|
33
|
-
userName: unknown;
|
|
34
|
-
init(options: ClsLoggerInitOptions): void;
|
|
35
|
-
private getBaseFields;
|
|
36
|
-
private startRequestMonitor;
|
|
37
|
-
private startErrorMonitor;
|
|
38
|
-
private startPerformanceMonitor;
|
|
39
|
-
private startBehaviorMonitor;
|
|
40
|
-
/**
|
|
41
|
-
* 停止行为埋点监听(PV/UV/点击)
|
|
42
|
-
* - 如需重启:可再次调用 init(或自行调用 init 后的默认启动逻辑)
|
|
43
|
-
*/
|
|
44
|
-
stopBehaviorMonitor(): void;
|
|
45
|
-
getInstance(): AsyncClient;
|
|
46
|
-
private detectEnvType;
|
|
47
|
-
/**
|
|
48
|
-
* 直接上报:埋点入参必须是一维(扁平)Object
|
|
49
|
-
* - 非原始值(对象/数组等)会被自动 stringify 成 string
|
|
50
|
-
* - 最终会把 fields 展开成 CLS 的 content(key/value 都会转成 string)
|
|
51
|
-
*/
|
|
52
|
-
put(fields: FlatFields, options?: PutOptions): void;
|
|
53
|
-
/**
|
|
54
|
-
* 直接上报:把 data 序列化后放入指定 key(默认 “日志内容”)
|
|
55
|
-
*/
|
|
56
|
-
putJson(data: unknown, clsLoggerKey?: string, options?: PutOptions): void;
|
|
57
|
-
/**
|
|
58
|
-
* 入队:写入 localStorage 队列;达到 batchSize 自动 flush
|
|
59
|
-
* - 埋点入参必须是一维(扁平)Object,非原始值会被 stringify
|
|
60
|
-
*/
|
|
61
|
-
enqueue(fields: FlatFields, options?: PutOptions): void;
|
|
62
|
-
/**
|
|
63
|
-
* 从 localStorage 读取队列并批量上报
|
|
64
|
-
*/
|
|
65
|
-
flush(): void;
|
|
66
|
-
/**
|
|
67
|
-
* 批量上报(每条 item.data 展开为 log content)
|
|
68
|
-
*/
|
|
69
|
-
putBatch(queue: QueueItem[]): void;
|
|
70
|
-
/**
|
|
71
|
-
* 参考《一、概述》:统一上报入口(内存队列 + 批量发送)
|
|
72
|
-
*/
|
|
73
|
-
report(log: ReportLog): void;
|
|
74
|
-
private getDesiredBatchFlushDueAt;
|
|
75
|
-
info(message: string, data?: FlatFields): void;
|
|
76
|
-
warn(message: string, data?: FlatFields): void;
|
|
77
|
-
error(message: string, data?: FlatFields): void;
|
|
78
|
-
track(trackType: string, data?: FlatFields): void;
|
|
79
|
-
/**
|
|
80
|
-
* 立即发送内存队列
|
|
81
|
-
*/
|
|
82
|
-
flushBatch(): Promise<void>;
|
|
83
|
-
private buildReportFields;
|
|
84
|
-
private sendReportLogs;
|
|
85
|
-
private retrySendReportLogs;
|
|
86
|
-
private cacheFailedReportLogs;
|
|
87
|
-
flushFailed(): void;
|
|
88
|
-
/**
|
|
89
|
-
* 统计/计数类日志:按字段展开上报(若 data 为空默认 1)
|
|
90
|
-
*/
|
|
91
|
-
stat(param: {
|
|
92
|
-
pageName: string;
|
|
93
|
-
scene: string;
|
|
94
|
-
subScene: string;
|
|
95
|
-
data?: number | string;
|
|
96
|
-
}): void;
|
|
1
|
+
import { ClsLoggerCore } from './ClsLoggerCore';
|
|
2
|
+
import type { ClsSdkModule } from './clsSdkTypes';
|
|
3
|
+
import type { FlatFields, RequestMonitorOptions, ErrorMonitorOptions, PerformanceMonitorOptions, BehaviorMonitorOptions, DeviceInfoOptions } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* 兼容版 ClsLogger(默认入口)
|
|
6
|
+
* - 保留了自动识别环境 + 动态 import 的逻辑
|
|
7
|
+
* - 如果业务想瘦身,建议改用 @be-link/cls-logger/web 或 /mini
|
|
8
|
+
*/
|
|
9
|
+
export declare class ClsLogger extends ClsLoggerCore {
|
|
10
|
+
protected loadSdk(): Promise<ClsSdkModule>;
|
|
11
|
+
protected installRequestMonitor(report: (type: string, data: FlatFields) => void, options: RequestMonitorOptions): void;
|
|
12
|
+
protected installErrorMonitor(report: (type: string, data: FlatFields) => void, options: boolean | ErrorMonitorOptions): void;
|
|
13
|
+
protected installPerformanceMonitor(report: (type: string, data: FlatFields) => void, options: boolean | PerformanceMonitorOptions): void;
|
|
14
|
+
protected installBehaviorMonitor(report: (type: string, data: FlatFields) => void, options: boolean | BehaviorMonitorOptions): () => void;
|
|
15
|
+
protected createDeviceInfoBaseFields(options: boolean | DeviceInfoOptions | undefined): (() => FlatFields) | null;
|
|
97
16
|
}
|
|
98
17
|
//# sourceMappingURL=ClsLogger.d.ts.map
|
package/dist/ClsLogger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClsLogger.d.ts","sourceRoot":"","sources":["../src/ClsLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ClsLogger.d.ts","sourceRoot":"","sources":["../src/ClsLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAOlD,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,aAAa;cAC1B,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAgGhD,SAAS,CAAC,qBAAqB,CAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,EAChD,OAAO,EAAE,qBAAqB,GAC7B,IAAI;IAIP,SAAS,CAAC,mBAAmB,CAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,EAChD,OAAO,EAAE,OAAO,GAAG,mBAAmB,GACrC,IAAI;IAIP,SAAS,CAAC,yBAAyB,CACjC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,EAChD,OAAO,EAAE,OAAO,GAAG,yBAAyB,GAC3C,IAAI;IAIP,SAAS,CAAC,sBAAsB,CAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,EAChD,OAAO,EAAE,OAAO,GAAG,sBAAsB,GACxC,MAAM,IAAI;IAIb,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI;CAGlH"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import type { ClsLoggerInitOptions, ErrorMonitorOptions, EnvType, FlatFields, PerformanceMonitorOptions, PutOptions, QueueItem, ReportLog, ReportOptions, RequestMonitorOptions, BehaviorMonitorOptions, DeviceInfoOptions } from './types';
|
|
2
|
+
import type { ClsSdkModule } from './clsSdkTypes';
|
|
3
|
+
/**
|
|
4
|
+
* CLS Logger 核心基类
|
|
5
|
+
* - 负责所有上报、队列、监控逻辑
|
|
6
|
+
* - 不包含具体的 SDK 加载实现(由子类负责)
|
|
7
|
+
* - 这样可以把 web/mini 的 SDK 依赖彻底解耦到子入口
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class ClsLoggerCore {
|
|
10
|
+
protected sdk: ClsSdkModule | null;
|
|
11
|
+
protected sdkPromise: Promise<ClsSdkModule> | null;
|
|
12
|
+
protected sdkOverride: unknown | null;
|
|
13
|
+
protected sdkLoaderOverride: (() => unknown | Promise<unknown>) | null;
|
|
14
|
+
protected client: {
|
|
15
|
+
PutLogs: (request: unknown) => Promise<unknown> | unknown;
|
|
16
|
+
} | null;
|
|
17
|
+
protected clientPromise: Promise<{
|
|
18
|
+
PutLogs: (request: unknown) => Promise<unknown> | unknown;
|
|
19
|
+
}> | null;
|
|
20
|
+
protected topicId: string | null;
|
|
21
|
+
protected endpoint: string;
|
|
22
|
+
protected retryTimes: number;
|
|
23
|
+
protected source: string;
|
|
24
|
+
protected enabled: boolean;
|
|
25
|
+
protected projectId: string;
|
|
26
|
+
protected projectName: string;
|
|
27
|
+
protected appId: string;
|
|
28
|
+
protected appVersion: string;
|
|
29
|
+
protected envType: EnvType;
|
|
30
|
+
protected userGenerateBaseFields: (() => FlatFields) | null;
|
|
31
|
+
protected autoGenerateBaseFields: (() => FlatFields) | null;
|
|
32
|
+
protected storageKey: string;
|
|
33
|
+
protected batchSize: number;
|
|
34
|
+
protected memoryQueue: ReportLog[];
|
|
35
|
+
protected batchMaxSize: number;
|
|
36
|
+
protected batchIntervalMs: number;
|
|
37
|
+
protected batchTimer: ReturnType<typeof setTimeout> | null;
|
|
38
|
+
protected batchTimerDueAt: number | null;
|
|
39
|
+
protected initTs: number;
|
|
40
|
+
protected startupDelayMs: number;
|
|
41
|
+
protected useIdleCallback: boolean;
|
|
42
|
+
protected idleTimeout: number;
|
|
43
|
+
protected visibilityCleanup: (() => void) | null;
|
|
44
|
+
protected failedCacheKey: string;
|
|
45
|
+
protected failedCacheMax: number;
|
|
46
|
+
protected requestMonitorStarted: boolean;
|
|
47
|
+
protected errorMonitorStarted: boolean;
|
|
48
|
+
protected performanceMonitorStarted: boolean;
|
|
49
|
+
protected behaviorMonitorStarted: boolean;
|
|
50
|
+
protected behaviorMonitorCleanup: (() => void) | null;
|
|
51
|
+
userId: unknown;
|
|
52
|
+
userName: unknown;
|
|
53
|
+
/**
|
|
54
|
+
* 子类必须实现此方法来加载 SDK
|
|
55
|
+
*/
|
|
56
|
+
protected abstract loadSdk(): Promise<ClsSdkModule>;
|
|
57
|
+
/**
|
|
58
|
+
* 子类必须实现:安装请求监听
|
|
59
|
+
*/
|
|
60
|
+
protected abstract installRequestMonitor(report: (type: string, data: FlatFields) => void, options: RequestMonitorOptions): void;
|
|
61
|
+
/**
|
|
62
|
+
* 子类必须实现:安装错误监控
|
|
63
|
+
*/
|
|
64
|
+
protected abstract installErrorMonitor(report: (type: string, data: FlatFields) => void, options: boolean | ErrorMonitorOptions): void;
|
|
65
|
+
/**
|
|
66
|
+
* 子类必须实现:安装性能监控
|
|
67
|
+
*/
|
|
68
|
+
protected abstract installPerformanceMonitor(report: (type: string, data: FlatFields) => void, options: boolean | PerformanceMonitorOptions): void;
|
|
69
|
+
/**
|
|
70
|
+
* 子类必须实现:安装行为埋点
|
|
71
|
+
*/
|
|
72
|
+
protected abstract installBehaviorMonitor(report: (type: string, data: FlatFields) => void, options: boolean | BehaviorMonitorOptions): () => void;
|
|
73
|
+
/**
|
|
74
|
+
* 子类必须实现:创建设备信息获取器
|
|
75
|
+
*/
|
|
76
|
+
protected abstract createDeviceInfoBaseFields(options: boolean | DeviceInfoOptions | undefined): (() => FlatFields) | null;
|
|
77
|
+
/**
|
|
78
|
+
* 子类可按需重写(默认检测 wx)
|
|
79
|
+
*/
|
|
80
|
+
protected detectEnvType(): EnvType;
|
|
81
|
+
init(options: ClsLoggerInitOptions): void;
|
|
82
|
+
private getBaseFields;
|
|
83
|
+
/**
|
|
84
|
+
* 设置页面可见性监听
|
|
85
|
+
* - visibilitychange: 页面隐藏时使用 sendBeacon 发送队列
|
|
86
|
+
* - pagehide: 作为移动端 fallback
|
|
87
|
+
*/
|
|
88
|
+
private setupVisibilityListener;
|
|
89
|
+
/**
|
|
90
|
+
* 同步发送内存队列(使用 sendBeacon)
|
|
91
|
+
* - 用于页面关闭时确保数据发送
|
|
92
|
+
* - sendBeacon 不可用时降级为缓存到 localStorage
|
|
93
|
+
*/
|
|
94
|
+
private flushBatchSync;
|
|
95
|
+
/**
|
|
96
|
+
* 构建 sendBeacon 的 payload
|
|
97
|
+
*/
|
|
98
|
+
private buildSendBeaconPayload;
|
|
99
|
+
private startRequestMonitor;
|
|
100
|
+
private startErrorMonitor;
|
|
101
|
+
private startPerformanceMonitor;
|
|
102
|
+
private startBehaviorMonitor;
|
|
103
|
+
/**
|
|
104
|
+
* 停止行为埋点监听(PV/UV/点击)
|
|
105
|
+
* - 如需重启:可再次调用 init(或自行调用 init 后的默认启动逻辑)
|
|
106
|
+
*/
|
|
107
|
+
stopBehaviorMonitor(): void;
|
|
108
|
+
/**
|
|
109
|
+
* 获取 CLS client(按环境懒加载 SDK)
|
|
110
|
+
*/
|
|
111
|
+
getInstance(): Promise<{
|
|
112
|
+
PutLogs: (request: unknown) => Promise<unknown> | unknown;
|
|
113
|
+
}>;
|
|
114
|
+
/**
|
|
115
|
+
* 直接上报:埋点入参必须是一维(扁平)Object
|
|
116
|
+
* - 非原始值(对象/数组等)会被自动 stringify 成 string
|
|
117
|
+
* - 最终会把 fields 展开成 CLS 的 content(key/value 都会转成 string)
|
|
118
|
+
*/
|
|
119
|
+
put(fields: FlatFields, options?: PutOptions): void;
|
|
120
|
+
private putAsync;
|
|
121
|
+
/**
|
|
122
|
+
* 直接上报:把 data 序列化后放入指定 key(默认 “日志内容”)
|
|
123
|
+
*/
|
|
124
|
+
putJson(data: unknown, clsLoggerKey?: string, options?: PutOptions): void;
|
|
125
|
+
/**
|
|
126
|
+
* 入队:写入 localStorage 队列;达到 batchSize 自动 flush
|
|
127
|
+
* - 埋点入参必须是一维(扁平)Object,非原始值会被 stringify
|
|
128
|
+
*/
|
|
129
|
+
enqueue(fields: FlatFields, options?: PutOptions): void;
|
|
130
|
+
/**
|
|
131
|
+
* 从 localStorage 读取队列并批量上报
|
|
132
|
+
*/
|
|
133
|
+
flush(): void;
|
|
134
|
+
/**
|
|
135
|
+
* 批量上报(每条 item.data 展开为 log content)
|
|
136
|
+
*/
|
|
137
|
+
putBatch(queue: QueueItem[]): void;
|
|
138
|
+
private putBatchAsync;
|
|
139
|
+
/**
|
|
140
|
+
* 参考《一、概述》:统一上报入口(内存队列 + 批量发送)
|
|
141
|
+
*/
|
|
142
|
+
report(log: ReportLog): void;
|
|
143
|
+
/**
|
|
144
|
+
* 调度批量发送
|
|
145
|
+
* - 支持 requestIdleCallback(浏览器空闲时执行)
|
|
146
|
+
* - 降级为 setTimeout
|
|
147
|
+
*/
|
|
148
|
+
private scheduleFlush;
|
|
149
|
+
/**
|
|
150
|
+
* 取消已调度的批量发送
|
|
151
|
+
*/
|
|
152
|
+
private cancelScheduledFlush;
|
|
153
|
+
private getDesiredBatchFlushDueAt;
|
|
154
|
+
info(message: string | Error, data?: FlatFields, options?: ReportOptions): void;
|
|
155
|
+
warn(message: string | Error, data?: FlatFields, options?: ReportOptions): void;
|
|
156
|
+
error(message: string | Error, data?: FlatFields, options?: ReportOptions): void;
|
|
157
|
+
track(trackType: string, data?: FlatFields): void;
|
|
158
|
+
/**
|
|
159
|
+
* 立即发送内存队列
|
|
160
|
+
*/
|
|
161
|
+
flushBatch(): Promise<void>;
|
|
162
|
+
private buildReportFields;
|
|
163
|
+
private sendReportLogs;
|
|
164
|
+
private retrySendReportLogs;
|
|
165
|
+
private cacheFailedReportLogs;
|
|
166
|
+
flushFailed(): void;
|
|
167
|
+
/**
|
|
168
|
+
* 统计/计数类日志:按字段展开上报(若 data 为空默认 1)
|
|
169
|
+
*/
|
|
170
|
+
stat(param: {
|
|
171
|
+
pageName: string;
|
|
172
|
+
scene: string;
|
|
173
|
+
subScene: string;
|
|
174
|
+
data?: number | string;
|
|
175
|
+
}): void;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=ClsLoggerCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClsLoggerCore.d.ts","sourceRoot":"","sources":["../src/ClsLoggerCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behaviorMonitor.d.ts","sourceRoot":"","sources":["../src/behaviorMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"behaviorMonitor.d.ts","sourceRoot":"","sources":["../src/behaviorMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK3E,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AAEzD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,sBAA2B,GACnC,MAAM,IAAI,CAKZ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type ClsSdkModule = {
|
|
2
|
+
AsyncClient: new (options: {
|
|
3
|
+
endpoint: string;
|
|
4
|
+
retry_times?: number;
|
|
5
|
+
}) => {
|
|
6
|
+
PutLogs: (request: unknown) => Promise<unknown> | unknown;
|
|
7
|
+
};
|
|
8
|
+
Log: new (time: number) => {
|
|
9
|
+
addContent: (k: string, v: string) => void;
|
|
10
|
+
};
|
|
11
|
+
LogGroup: new (source: string) => {
|
|
12
|
+
setSource: (source: string) => void;
|
|
13
|
+
addLog: (log: unknown) => void;
|
|
14
|
+
getLogs: () => unknown[];
|
|
15
|
+
};
|
|
16
|
+
PutLogsRequest: new (topicId: string, logGroup: unknown) => unknown;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=clsSdkTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clsSdkTypes.d.ts","sourceRoot":"","sources":["../src/clsSdkTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,KAAK,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK;QACxE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;KAC3D,CAAC;IACF,GAAG,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK;QAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IAC1E,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,KAAK;QAChC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;QAC/B,OAAO,EAAE,MAAM,OAAO,EAAE,CAAC;KAC1B,CAAC;IACF,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;CACrE,CAAC"}
|
package/dist/deviceInfo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deviceInfo.d.ts","sourceRoot":"","sources":["../src/deviceInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"deviceInfo.d.ts","sourceRoot":"","sources":["../src/deviceInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKtE,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,GAC5C,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAK3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorMonitor.d.ts","sourceRoot":"","sources":["../src/errorMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"errorMonitor.d.ts","sourceRoot":"","sources":["../src/errorMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK/D,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AAEzD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAE,OAAO,GAAG,mBAAmB,GAAG,SAAc,GAAG,IAAI,CAKhH"}
|