@tmsfe/tms-core 0.0.53 → 0.0.54
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/package.json +1 -1
- package/src/report/formatV1.ts +5 -5
- package/src/report/formatV2.ts +6 -6
- package/src/report/helper.ts +23 -26
- package/src/report/sender.ts +3 -1
- package/src/report/types.ts +1 -1
package/package.json
CHANGED
package/src/report/formatV1.ts
CHANGED
|
@@ -12,7 +12,7 @@ function getBaseData(deviceData: IDeviceData): DataItem[] {
|
|
|
12
12
|
const { networkType, location } = deviceData;
|
|
13
13
|
const { appVersion, client } = helper.getInitOptions();
|
|
14
14
|
const { host } = helper.getSystemInfo();
|
|
15
|
-
const arr = new Array<
|
|
15
|
+
const arr = new Array<DataItem>(helper.dataArrLen);
|
|
16
16
|
// todo: 如何区分新旧埋点?新:f20不为空,旧:f20为空
|
|
17
17
|
// ++++++++++++++++++++++++++字段列表++++++++++++++++++++++++++
|
|
18
18
|
// 0: log_time,日志入库时间
|
|
@@ -44,15 +44,15 @@ function getBaseData(deviceData: IDeviceData): DataItem[] {
|
|
|
44
44
|
// 18: f18,city - 城市
|
|
45
45
|
arr[18] = location.cityName;
|
|
46
46
|
// 19: f19,当前小程序运行的宿主环境
|
|
47
|
-
arr[19] =
|
|
47
|
+
arr[19] = host;
|
|
48
48
|
// 28: f28,sinan、mycar等
|
|
49
49
|
arr[28] = client;
|
|
50
50
|
// 29: f29,小程序场景值
|
|
51
51
|
arr[29] = helper.getAppScene();
|
|
52
52
|
// 33: f33,系统信息
|
|
53
|
-
arr[33] = helper.
|
|
53
|
+
arr[33] = helper.getSystemInfo();
|
|
54
54
|
// 36: f36,小程序启动时的url和参数
|
|
55
|
-
arr[36] = helper.
|
|
55
|
+
arr[36] = helper.getLaunchOptions();
|
|
56
56
|
// --------------------------字段列表--------------------------
|
|
57
57
|
return arr;
|
|
58
58
|
}
|
|
@@ -64,7 +64,7 @@ function jointData(data: IOldParams, deviceData: IDeviceData): DataItem[] {
|
|
|
64
64
|
const arr = getBaseData(deviceData);
|
|
65
65
|
const keys = Object.keys(data) as any as number[];
|
|
66
66
|
for (const key of keys) {
|
|
67
|
-
arr[key] =
|
|
67
|
+
arr[key] = data[key];
|
|
68
68
|
}
|
|
69
69
|
return arr;
|
|
70
70
|
}
|
package/src/report/formatV2.ts
CHANGED
|
@@ -12,7 +12,7 @@ function getBaseData(deviceData: IDeviceData): { arr: DataItem[], nextIndex: num
|
|
|
12
12
|
const { page, pageDepth } = helper.getPageInfo();
|
|
13
13
|
const { networkType, location } = deviceData;
|
|
14
14
|
const { appVersion, client } = helper.getInitOptions();
|
|
15
|
-
const arr = new Array<
|
|
15
|
+
const arr = new Array<DataItem>(helper.dataArrLen);
|
|
16
16
|
// todo: 如何区分新旧埋点?新:f20不为空,旧:f20为空
|
|
17
17
|
// ++++++++++++++++++++++++++字段列表++++++++++++++++++++++++++
|
|
18
18
|
// 0: log_time,日志入库时间
|
|
@@ -43,19 +43,19 @@ function getBaseData(deviceData: IDeviceData): { arr: DataItem[], nextIndex: num
|
|
|
43
43
|
// 18: f18,city - 城市
|
|
44
44
|
arr[18] = location.cityName;
|
|
45
45
|
// 19: f19,系统信息
|
|
46
|
-
arr[19] = helper.
|
|
46
|
+
arr[19] = helper.getSystemInfo();
|
|
47
47
|
// 20: f20,sinan、mycar等
|
|
48
48
|
arr[20] = client;
|
|
49
49
|
// 21: f21,小程序场景值
|
|
50
50
|
arr[21] = helper.getAppScene();
|
|
51
51
|
// 22: f22,小程序启动时的url和参数
|
|
52
|
-
arr[22] = helper.
|
|
52
|
+
arr[22] = helper.getLaunchOptions();
|
|
53
53
|
// 23: f23,当前页面的url
|
|
54
54
|
arr[23] = page?.route;
|
|
55
55
|
// 24: f24,当前页面的query
|
|
56
|
-
arr[24] =
|
|
56
|
+
arr[24] = page?.options;
|
|
57
57
|
// 25: f25,当前页面深度
|
|
58
|
-
arr[25] = pageDepth
|
|
58
|
+
arr[25] = pageDepth;
|
|
59
59
|
// 26: f26,一次小程序生命周期中的埋点统一标记
|
|
60
60
|
arr[26] = helper.getLifeReportKey();
|
|
61
61
|
// 27 ~ 30: 预留字段给后续扩展使用
|
|
@@ -75,7 +75,7 @@ function jointData(data: any[], deviceData: IDeviceData): DataItem[] {
|
|
|
75
75
|
console.error('埋点参数个数超出上限而被截断', data);
|
|
76
76
|
break;
|
|
77
77
|
}
|
|
78
|
-
arr[index] =
|
|
78
|
+
arr[index] = item;
|
|
79
79
|
index += 1;
|
|
80
80
|
}
|
|
81
81
|
return arr;
|
package/src/report/helper.ts
CHANGED
|
@@ -53,25 +53,13 @@ function getSystemInfo(): ISystemInfo {
|
|
|
53
53
|
return systemInfo;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
let systemString: string | null = null;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* 获取系统信息并格式化成字符串
|
|
60
|
-
*/
|
|
61
|
-
function getSystemInfoString(): string {
|
|
62
|
-
if (systemString === null) {
|
|
63
|
-
systemString = JSON.stringify(getSystemInfo());
|
|
64
|
-
}
|
|
65
|
-
return systemString;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
56
|
/**
|
|
69
|
-
*
|
|
57
|
+
* 把值或对象转成字符串
|
|
70
58
|
* @param value
|
|
71
59
|
*/
|
|
72
|
-
function convert2String(value: any): string {
|
|
60
|
+
function convert2String(value: any): string | null {
|
|
73
61
|
if (value === null || value === undefined) {
|
|
74
|
-
return
|
|
62
|
+
return null;
|
|
75
63
|
}
|
|
76
64
|
const type = typeof value;
|
|
77
65
|
if (type === 'string') {
|
|
@@ -83,6 +71,17 @@ function convert2String(value: any): string {
|
|
|
83
71
|
return String(value);
|
|
84
72
|
}
|
|
85
73
|
|
|
74
|
+
/**
|
|
75
|
+
* 转成字符串数据
|
|
76
|
+
* @param arr
|
|
77
|
+
*/
|
|
78
|
+
function convert2StringArray(arr: DataItem[]) {
|
|
79
|
+
for (let i = 0; i < arr.length; i++) {
|
|
80
|
+
// eslint-disable-next-line no-param-reassign
|
|
81
|
+
arr[i] = convert2String(arr[i]);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
86
85
|
function num2Str(num: number, maxLength = 2): string {
|
|
87
86
|
return num.toString().padStart(maxLength, '0');
|
|
88
87
|
}
|
|
@@ -92,7 +91,7 @@ function num2Str(num: number, maxLength = 2): string {
|
|
|
92
91
|
*/
|
|
93
92
|
function getNowString(): string {
|
|
94
93
|
const date = new Date();
|
|
95
|
-
const year = date.getFullYear()
|
|
94
|
+
const year = date.getFullYear();
|
|
96
95
|
const month = num2Str(date.getMonth() + 1);
|
|
97
96
|
const day = num2Str(date.getDate());
|
|
98
97
|
const hours = num2Str(date.getHours());
|
|
@@ -133,15 +132,14 @@ function getPageInfo(): { page: IPage, pageDepth: number } {
|
|
|
133
132
|
return { page, pageDepth };
|
|
134
133
|
}
|
|
135
134
|
|
|
136
|
-
let launchOptions:
|
|
135
|
+
let launchOptions: object | null = null;
|
|
137
136
|
|
|
138
137
|
/**
|
|
139
138
|
* 获取小程序启动参数
|
|
140
139
|
*/
|
|
141
|
-
function
|
|
140
|
+
function getLaunchOptions(): object {
|
|
142
141
|
if (launchOptions === null) {
|
|
143
|
-
|
|
144
|
-
launchOptions = JSON.stringify(obj);
|
|
142
|
+
launchOptions = syncApi.getLaunchOptionsSync();
|
|
145
143
|
}
|
|
146
144
|
return launchOptions;
|
|
147
145
|
}
|
|
@@ -157,9 +155,9 @@ function getLaunchFrom(): string {
|
|
|
157
155
|
/**
|
|
158
156
|
* 获取小程序启动场景值
|
|
159
157
|
*/
|
|
160
|
-
function getAppScene():
|
|
158
|
+
function getAppScene(): number {
|
|
161
159
|
const { scene = -1 } = syncApi.getLaunchOptionsSync() as any;
|
|
162
|
-
return scene
|
|
160
|
+
return scene;
|
|
163
161
|
}
|
|
164
162
|
|
|
165
163
|
// 是否爬虫
|
|
@@ -171,7 +169,7 @@ let isCrawler: boolean | null = null;
|
|
|
171
169
|
function canReport(): boolean {
|
|
172
170
|
if (isCrawler === null) {
|
|
173
171
|
const scene = getAppScene();
|
|
174
|
-
isCrawler = scene ===
|
|
172
|
+
isCrawler = scene === 1129 || scene === 1030;
|
|
175
173
|
}
|
|
176
174
|
// 小程序爬虫,不上报
|
|
177
175
|
return !isCrawler;
|
|
@@ -237,12 +235,11 @@ export default {
|
|
|
237
235
|
getTms,
|
|
238
236
|
getInitOptions,
|
|
239
237
|
getSystemInfo,
|
|
240
|
-
|
|
241
|
-
convert2String,
|
|
238
|
+
convert2StringArray,
|
|
242
239
|
getNowString,
|
|
243
240
|
getLifeReportKey,
|
|
244
241
|
getPageInfo,
|
|
245
|
-
|
|
242
|
+
getLaunchOptions,
|
|
246
243
|
getLaunchFrom,
|
|
247
244
|
getAppScene,
|
|
248
245
|
canReport,
|
package/src/report/sender.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import helper from './helper';
|
|
7
7
|
|
|
8
8
|
// 缓存队列
|
|
9
|
-
const cacheArr = new Array<
|
|
9
|
+
const cacheArr = new Array<string[]>();
|
|
10
10
|
const max = 50; // 超过最大限制就马上发送
|
|
11
11
|
const delay = 3000; // 延迟N毫秒再聚合发送
|
|
12
12
|
let timer = 0; // 计时器
|
|
@@ -73,6 +73,7 @@ function requestFail(batch: DataItem[][]): void {
|
|
|
73
73
|
*/
|
|
74
74
|
function send(arr: DataItem[]): void {
|
|
75
75
|
stopTimer();
|
|
76
|
+
helper.convert2StringArray(arr);
|
|
76
77
|
cacheArr.unshift(arr); // 如果队列中很多,排前面比较稳妥
|
|
77
78
|
batchSendData();
|
|
78
79
|
}
|
|
@@ -82,6 +83,7 @@ function send(arr: DataItem[]): void {
|
|
|
82
83
|
* @param arr
|
|
83
84
|
*/
|
|
84
85
|
function queue(arr: DataItem[]): void {
|
|
86
|
+
helper.convert2StringArray(arr);
|
|
85
87
|
cacheArr.push(arr);
|
|
86
88
|
checkQueue(false);
|
|
87
89
|
}
|