gio-miniprogram-sdk 4.4.2 → 4.5.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.
Files changed (100) hide show
  1. package/README.md +13 -11
  2. package/dist/alipay.js +1 -1
  3. package/dist/baidu.js +1 -1
  4. package/dist/bytedance.js +1 -1
  5. package/dist/jingdong.js +1 -1
  6. package/dist/kuaishou.js +1 -1
  7. package/dist/mpx.js +1 -0
  8. package/dist/plugins/gioABTest.js +1 -1
  9. package/dist/plugins/gioCompress.js +1 -1
  10. package/dist/plugins/gioEventAutoTracking.js +1 -1
  11. package/dist/plugins/gioImpressionTracking.js +1 -1
  12. package/dist/plugins/gioMultipleInstances.js +1 -1
  13. package/dist/plugins/gioPerformance.js +1 -1
  14. package/dist/qq.js +1 -1
  15. package/dist/quickapp.js +1 -1
  16. package/dist/taobao.js +1 -1
  17. package/dist/taro.js +1 -1
  18. package/dist/uniapp.js +1 -1
  19. package/dist/wechat.js +1 -1
  20. package/dist/xiaohongshu.js +1 -1
  21. package/package.json +13 -2
  22. package/.eslintignore +0 -11
  23. package/.eslintrc.js +0 -120
  24. package/.github/workflows/greetings.yml +0 -13
  25. package/.github/workflows/publish.yml +0 -45
  26. package/.prettierignore +0 -19
  27. package/.prettierrc.js +0 -9
  28. package/babel.config.js +0 -6
  29. package/rollup.config.js +0 -100
  30. package/rollup.plugins.config.js +0 -84
  31. package/src/adapters/gioTaobaoAdapter.ts +0 -202
  32. package/src/adapters/gioTaroAdapter.ts +0 -467
  33. package/src/adapters/gioUniAppAdapter.ts +0 -431
  34. package/src/constants/config.ts +0 -170
  35. package/src/constants/emitMsg.ts +0 -24
  36. package/src/constants/regex.ts +0 -18
  37. package/src/core/dataStore/eventContextBuilder.ts +0 -95
  38. package/src/core/dataStore/eventHooks/appEffects.ts +0 -218
  39. package/src/core/dataStore/eventHooks/index.ts +0 -468
  40. package/src/core/dataStore/eventHooks/minipPage.ts +0 -221
  41. package/src/core/dataStore/eventHooks/pageEffects.ts +0 -189
  42. package/src/core/dataStore/index.ts +0 -661
  43. package/src/core/growingIO.ts +0 -637
  44. package/src/core/pluginsInstance/base.ts +0 -157
  45. package/src/core/pluginsInstance/taro.ts +0 -15
  46. package/src/core/pluginsInstance/tb.ts +0 -15
  47. package/src/core/pluginsInstance/uniapp.ts +0 -15
  48. package/src/core/uploader.ts +0 -272
  49. package/src/core/userStore.ts +0 -267
  50. package/src/index.ts +0 -77
  51. package/src/minipInstance/base.ts +0 -352
  52. package/src/minipInstance/framework.ts +0 -24
  53. package/src/minipInstance/jd.ts +0 -11
  54. package/src/minipInstance/ks.ts +0 -12
  55. package/src/minipInstance/my.ts +0 -131
  56. package/src/minipInstance/qq.ts +0 -12
  57. package/src/minipInstance/quickapp.ts +0 -233
  58. package/src/minipInstance/swan.ts +0 -20
  59. package/src/minipInstance/tb.ts +0 -58
  60. package/src/minipInstance/tt.ts +0 -12
  61. package/src/minipInstance/wx.ts +0 -27
  62. package/src/minipInstance/xhs.ts +0 -20
  63. package/src/platformConfig/base.ts +0 -82
  64. package/src/platformConfig/framework.ts +0 -31
  65. package/src/platformConfig/jd.ts +0 -11
  66. package/src/platformConfig/ks.ts +0 -11
  67. package/src/platformConfig/my.ts +0 -16
  68. package/src/platformConfig/qq.ts +0 -13
  69. package/src/platformConfig/quickapp.ts +0 -48
  70. package/src/platformConfig/swan.ts +0 -11
  71. package/src/platformConfig/tb.ts +0 -29
  72. package/src/platformConfig/tt.ts +0 -11
  73. package/src/platformConfig/wx.ts +0 -20
  74. package/src/platformConfig/xhs.ts +0 -27
  75. package/src/plugins/gioABTest.ts +0 -348
  76. package/src/plugins/gioCompress.ts +0 -253
  77. package/src/plugins/gioEventAutoTracking.ts +0 -310
  78. package/src/plugins/gioImpressionTracking.ts +0 -386
  79. package/src/plugins/gioMultipleInstances.ts +0 -189
  80. package/src/plugins/gioPerformance/exception.ts +0 -152
  81. package/src/plugins/gioPerformance/monitor.ts +0 -284
  82. package/src/plugins/gioPerformance/network.ts +0 -197
  83. package/src/plugins/gioPerformance.ts +0 -131
  84. package/src/types/base.ts +0 -167
  85. package/src/types/dataStore.ts +0 -62
  86. package/src/types/eventHooks.ts +0 -146
  87. package/src/types/gioCustomTracking.ts +0 -9
  88. package/src/types/gioEventTracking.ts +0 -10
  89. package/src/types/gioPerformance.ts +0 -8
  90. package/src/types/growingIO.ts +0 -137
  91. package/src/types/minipInstance.ts +0 -133
  92. package/src/types/platforms.ts +0 -64
  93. package/src/types/plugins.ts +0 -24
  94. package/src/types/uploader.ts +0 -30
  95. package/src/types/userStore.ts +0 -28
  96. package/src/utils/glodash.ts +0 -430
  97. package/src/utils/tools.ts +0 -511
  98. package/src/utils/verifiers.ts +0 -52
  99. package/tsconfig.json +0 -32
  100. package/typings/global.d.ts +0 -105
@@ -1,431 +0,0 @@
1
- /**
2
- * 名称:uniapp代理插件
3
- * 用途:用于重写uniapp框架下的创建App/Page/Component方法实现代理Hook;并获取uniapp框架下的自定义方法真实方法名获取。
4
- */
5
- import { UNIAPP_FUNC_REG } from '@@/constants/regex';
6
- import { GrowingIOType } from '@@/types/growingIO';
7
-
8
- const ONCE = '~'; // 用于标记一次性事件
9
- const CUSTOM = '^'; // 用于标记自定义事件
10
-
11
- let ut: any;
12
-
13
- class GioUniAppAdapter {
14
- public pluginVersion: string; // 插件版本号
15
- private uniVue: any; // UniApp框架的Vue实例
16
- private exposedNames: Record<string, string>; // 存储<script setup>中暴露的方法名映射
17
-
18
- constructor(public growingIO: GrowingIOType) {
19
- this.pluginVersion = '__PLUGIN_VERSION__'; // 插件版本占位符,会在构建时替换
20
- ut = this.growingIO.utils; // 初始化工具类
21
- this.uniVue = this.growingIO?.vdsConfig?.uniVue; // 获取UniApp的Vue实例
22
- this.exposedNames = {}; // 初始化方法名映射对象
23
- }
24
-
25
- /**
26
- * 主入口,根据Vue版本进行不同处理
27
- * 针对Vue2和Vue3采用不同的代理策略
28
- */
29
- main = (): void => {
30
- // 插件挂载时可能还没取到Vue实例
31
- if (!this.uniVue) {
32
- this.uniVue = this.growingIO?.vdsConfig?.uniVue;
33
- }
34
- console.log('Vue version: ', this.uniVue.version);
35
-
36
- // 提取主版本号
37
- const mainVersion = Number(ut.head(ut.split(this.uniVue.version, '.')));
38
- switch (mainVersion) {
39
- case 2:
40
- this.uniVue2Proxy();
41
- break;
42
- case 3:
43
- this.uniVue3Proxy(this.uniVue);
44
- break;
45
- default:
46
- // 不支持的版本
47
- ut.consoleText('不支持的Vue版本,请使用 Vue2 或 Vue3!', 'error');
48
- break;
49
- }
50
- };
51
-
52
- /**
53
- * 获取自定义真实的方法名
54
- * 用于将框架编译后的方法名映射回用户定义的原始方法名
55
- * @param eventName 事件名称
56
- * @param e 事件对象
57
- * @returns 真实的方法名
58
- */
59
- getHandlerName = (eventName: string, e: any): string => {
60
- if (eventName === '__e') {
61
- // 内置事件,需要从事件对象提取真实方法名
62
- return this.getEventHandlerNameFromE(e);
63
- } else if (!ut.isEmpty(this.exposedNames)) {
64
- // 从exposedNames中查找映射关系
65
- return this.exposedNames[eventName] ?? eventName;
66
- } else {
67
- // 无需映射,直接返回
68
- return eventName;
69
- }
70
- };
71
-
72
- /**
73
- * 从事件对象中获取处理函数的真实名称
74
- * 处理UniApp特有的事件机制,提取事件处理函数的原始名称
75
- * @param e 事件对象
76
- * @returns 处理函数的真实名称
77
- */
78
- private getEventHandlerNameFromE = (e: any): string => {
79
- let methodName = '__e'; // 默认方法名
80
- const { type, currentTarget, target } = e;
81
- const dataSet = currentTarget?.dataset || target?.dataset;
82
-
83
- // 无数据集时直接返回
84
- if (!dataSet) {
85
- return methodName;
86
- }
87
-
88
- // 获取事件选项
89
- const eventOpts = dataSet.eventOpts || dataSet['event-opts'];
90
- if (!eventOpts) {
91
- return methodName;
92
- }
93
-
94
- // 事件类型匹配函数
95
- // 处理regionchange等特殊事件类型
96
- const matchedEventType = (eventType: string, optType: string) =>
97
- eventType === optType ||
98
- (optType === 'regionchange' &&
99
- (eventType === 'begin' || eventType === 'end'));
100
-
101
- // 遍历事件选项查找匹配的方法名
102
- eventOpts.forEach((o: any[]) => {
103
- let eType = ut.head(o); // 获取事件类型
104
- const isCustom = eType.charAt(0) === CUSTOM;
105
- eType = isCustom ? eType.slice(1) : type; // 处理自定义事件
106
- const isOnce = eType.charAt(0) === ONCE;
107
- eType = isOnce ? eType.slice(1) : type; // 处理一次性事件
108
- const eArray = ut.last(o); // 获取事件处理数组
109
-
110
- // 找到匹配的事件类型
111
- if (matchedEventType(type, eType)) {
112
- methodName = ut.head(ut.head(eArray)); // 提取方法名
113
- }
114
- });
115
-
116
- return methodName;
117
- };
118
-
119
- /**
120
- * Vue2专用代理实现
121
- * 处理Vue2下的特殊情况,主要是生命周期和事件处理
122
- * Vue2的生命周期有时会异步执行,需要特殊处理
123
- */
124
- uniVue2Proxy = (): void => {
125
- const {
126
- dataStore: { eventHooks }
127
- } = this.growingIO;
128
- // 重写生命周期回调,vue2中会被处理成异步方法导致时序错位
129
- this.overrideLifeFcEffectsFn(eventHooks);
130
- // 初始化原生钩子
131
- eventHooks.nativeGrowing();
132
- };
133
-
134
- /**
135
- * 重写生命周期效果函数
136
- * 解决Vue2中页面生命周期异步执行导致的问题
137
- * 对Page类型的生命周期使用setTimeout延迟执行,保证执行顺序正确
138
- * @param eventHooks 事件钩子对象
139
- */
140
- private overrideLifeFcEffectsFn = (eventHooks: any): void => {
141
- const originFunc = eventHooks.lifeFcEffectsFn;
142
- eventHooks.lifeFcEffectsFn = function (...args) {
143
- // 对Page类型的生命周期特殊处理
144
- if (args[2] === 'Page') {
145
- // 使用setTimeout延迟执行,保证在正确的时机执行
146
- setTimeout(() => {
147
- return originFunc.apply(this, args);
148
- }, 0);
149
- } else {
150
- // 非Page类型直接执行原函数
151
- return originFunc.apply(this, args);
152
- }
153
- };
154
- };
155
-
156
- /**
157
- * Vue3代理实现
158
- * 为Vue3框架添加GrowingIO的代理逻辑
159
- * @param vue Vue3实例
160
- */
161
- uniVue3Proxy = (vue: any): void => {
162
- const {
163
- dataStore: { eventHooks },
164
- minipInstance
165
- } = this.growingIO;
166
-
167
- // 重写对象遍历逻辑,优先hook methods最后才是原生
168
- this.overrideObjectTraverse(eventHooks);
169
-
170
- // 初始化原生钩子
171
- eventHooks.nativeGrowing();
172
-
173
- // 重写getPageTitle方法,确保在Vue组件中能正确获取页面标题
174
- this.overrideGetPageTitle(minipInstance);
175
-
176
- // 添加Vue混入,实现组件方法的代理
177
- this.addVueMixin(vue, eventHooks);
178
- };
179
-
180
- /**
181
- * 重写对象遍历逻辑
182
- * 确保按照正确的优先级遍历对象属性
183
- * @param eventHooks 事件钩子对象
184
- */
185
- private overrideObjectTraverse = (eventHooks: any): void => {
186
- eventHooks.objectTraverse = (target: any, fn: any) => {
187
- // 先处理methods,因为这里包含了大部分自定义方法
188
- if (ut.has(target, 'methods')) {
189
- Object.getOwnPropertyNames(target.methods).forEach((k: string) => {
190
- fn(k, target.methods);
191
- });
192
- }
193
-
194
- // 处理lifetimes,组件生命周期方法
195
- if (ut.has(target, 'lifetimes')) {
196
- Object.getOwnPropertyNames(target.lifetimes).forEach((k: string) => {
197
- fn(k, target.lifetimes);
198
- });
199
- }
200
-
201
- // 处理pageLifetimes,页面生命周期方法
202
- if (ut.has(target, 'pageLifetimes')) {
203
- Object.getOwnPropertyNames(target.pageLifetimes).forEach(
204
- (k: string) => {
205
- fn(k, target.pageLifetimes);
206
- }
207
- );
208
- }
209
-
210
- // 最后处理其他属性,确保不重复处理
211
- Object.getOwnPropertyNames(target).forEach((k: string) => {
212
- if (
213
- !ut.niceTry(
214
- () =>
215
- !target?.methods[k] &&
216
- !target?.lifetimes[k] &&
217
- !target?.pageLifetimes[k]
218
- )
219
- ) {
220
- fn(k, target);
221
- }
222
- });
223
- };
224
- };
225
-
226
- /**
227
- * 重写getPageTitle方法
228
- * 确保能正确获取Vue组件中定义的页面标题
229
- * @param minipInstance 小程序实例
230
- */
231
- private overrideGetPageTitle = (minipInstance: any): void => {
232
- const originGetter = minipInstance.getPageTitle; // 保存原始getter
233
- minipInstance.getPageTitle = function (...args) {
234
- // 获取当前页面实例
235
- let pageInstance = !ut.isEmpty(args[0])
236
- ? args[0]
237
- : minipInstance.getCurrentPage();
238
-
239
- // 检查是否为页面组件且有路由信息
240
- if (
241
- pageInstance?.$vm?.mpType === 'page' &&
242
- pageInstance?.$vm?.__route__
243
- ) {
244
- // 优先使用组件中定义的gioPageTitle
245
- const vmTitle = pageInstance?.$vm?.gioPageTitle;
246
- return vmTitle ? vmTitle : originGetter.apply(this, args);
247
- } else {
248
- // 回退到原始实现
249
- return originGetter.apply(this, args);
250
- }
251
- };
252
- };
253
-
254
- /**
255
- * 添加Vue混入
256
- * 注入GrowingIO的代理逻辑到Vue组件生命周期中
257
- * @param vue Vue实例
258
- * @param eventHooks 事件钩子对象
259
- */
260
- private addVueMixin = (vue: any, eventHooks: any): void => {
261
- const self = this;
262
-
263
- vue.mixin({
264
- // 组件挂载前的钩子
265
- beforeMount() {
266
- // 代理普通方法
267
- self.proxyMethods(this, eventHooks);
268
-
269
- // 代理exposed方法(script setup中暴露的方法)
270
- self.proxyExposedMethods(this, eventHooks);
271
-
272
- // 使用emit监听组件事件hook
273
- self.proxyEmit(this, eventHooks);
274
- },
275
-
276
- // 组件更新时的钩子
277
- updated() {
278
- // 更新时重新代理exposed方法,确保动态添加的方法也被代理
279
- self.proxyExposedMethods(this, eventHooks);
280
- }
281
- });
282
- };
283
-
284
- /**
285
- * 代理普通方法
286
- * 处理传统Vue选项式API和组合式API中定义的方法
287
- * @param instance Vue组件实例
288
- * @param eventHooks 事件钩子对象
289
- */
290
- private proxyMethods = (instance: any, eventHooks: any): void => {
291
- // 代理单个方法的函数
292
- const proxyMethodFn = (name: string, method: any) => {
293
- // 只代理非页面生命周期的函数方法
294
- if (ut.isFunction(method) && !eventHooks.pageHandlers.includes(name)) {
295
- return function (...args) {
296
- // 使用customFcEffects包装方法,实现事件追踪
297
- return eventHooks.customFcEffects(name, method).apply(this, args);
298
- };
299
- } else {
300
- return method;
301
- }
302
- };
303
-
304
- // 对象属性转移函数,将源对象的方法代理后赋值给目标对象
305
- const transferMethods = (origin, target) =>
306
- ut.keys(origin).forEach((k: string) => {
307
- if (ut.isFunction(target[k])) {
308
- Object.defineProperty(target, k, {
309
- value: proxyMethodFn(k, target[k]),
310
- configurable: true,
311
- writable: true
312
- });
313
- }
314
- });
315
-
316
- // 处理传统选项式API中的methods
317
- const methods = instance.$options.methods;
318
- if (methods) {
319
- transferMethods(methods, instance);
320
- }
321
-
322
- // 处理组合式API中的setup返回值
323
- const setupState = instance?._?.setupState;
324
- if (setupState) {
325
- transferMethods(setupState, setupState);
326
- }
327
- };
328
-
329
- /**
330
- * 代理exposed方法
331
- * 处理<script setup>中使用defineExpose暴露的方法
332
- * @param instance Vue组件实例
333
- * @param eventHooks 事件钩子对象
334
- */
335
- private proxyExposedMethods = (instance: any, eventHooks: any): void => {
336
- // 获取组件暴露的方法
337
- const exposed = instance?._?.exposed;
338
- this.exposedNames = {}; // 重置映射
339
-
340
- // 无exposed时直接返回
341
- if (!exposed) {
342
- return;
343
- }
344
-
345
- // 保存exposed供<script setup>写法的事件查找真实的事件名
346
- const exposedKeys = ut.keys(exposed);
347
- exposedKeys.forEach((k) => {
348
- if (ut.isFunction(exposed[k])) {
349
- // 建立函数名到暴露属性名的映射
350
- this.exposedNames[exposed[k].name] = k;
351
- }
352
- });
353
-
354
- // 获取编译后的方法列表
355
- // 使用正则匹配UniApp编译生成的方法名
356
- const methodKeys = ut
357
- .keys(instance.$scope)
358
- .filter(
359
- (k) => UNIAPP_FUNC_REG.test(k) && ut.isFunction(instance.$scope[k])
360
- );
361
-
362
- // 遍历方法进行代理
363
- methodKeys.forEach((k, i) => {
364
- const originFunc = instance.$scope[k].value;
365
-
366
- // 在updated中避免重复hook,通过_GIO_HOOKED_标记判断
367
- if (instance._.updated && originFunc._GIO_HOOKED_) {
368
- return;
369
- }
370
-
371
- // 获取自定义方法名
372
- const customName = this.splicingMethodName(
373
- originFunc.name,
374
- k,
375
- exposedKeys[i]
376
- );
377
-
378
- // 使用customFcEffects包装方法
379
- instance.$scope[k].value = eventHooks.customFcEffects(
380
- customName,
381
- originFunc
382
- );
383
-
384
- // 标记已hook过的方法,避免重复处理
385
- instance.$scope[k].value._GIO_HOOKED_ = true;
386
- });
387
- };
388
-
389
- /**
390
- * 代理emit方法
391
- * 监听组件通过emit触发的事件
392
- * @param instance Vue组件实例
393
- * @param eventHooks 事件钩子对象
394
- */
395
- private proxyEmit = (instance: any, eventHooks: any): void => {
396
- const tEmit = instance._.emit; // 保存原始emit方法
397
- instance._.emit = function (...args) {
398
- // 使用自执行函数触发事件追踪,传入空函数作为handler
399
- (() => eventHooks.customFcEffects(args[0], () => {}).apply(this, args))();
400
- // 调用原始emit方法
401
- return tEmit.apply(this, args);
402
- };
403
- };
404
-
405
- /**
406
- * 拼接方法名称
407
- * 根据不同情况组合出最终的方法名
408
- * @param originName 原始名称
409
- * @param traversalName 遍历得到的名称
410
- * @param exposedName 暴露的名称
411
- * @returns 最终使用的方法名
412
- */
413
- splicingMethodName = (
414
- originName: string,
415
- traversalName: string,
416
- exposedName: string
417
- ): string => {
418
- if (originName) {
419
- // 优先使用原始名称
420
- return originName;
421
- } else if (exposedName) {
422
- // 其次使用遍历名称和暴露名称的组合
423
- return `${traversalName}#${exposedName}`;
424
- } else {
425
- // 最后使用遍历名称
426
- return traversalName;
427
- }
428
- };
429
- }
430
-
431
- export default { name: 'gioUniAppAdapter', method: GioUniAppAdapter };
@@ -1,170 +0,0 @@
1
- // SDK系统的默认配置项
2
- export const DEFAULT_SETTINGS = {
3
- // 是否开启无埋点
4
- autotrack: { type: 'boolean', default: true },
5
- // 是否开启加密压缩
6
- compress: { type: 'boolean', default: true },
7
- // 是否开启数据采集
8
- dataCollect: { type: 'boolean', default: true },
9
- // 是否开启调试模式
10
- debug: { type: 'boolean', default: false },
11
- // 是否开启
12
- idMapping: { type: 'boolean', default: false },
13
- enableIdMapping: { type: 'boolean', default: false },
14
- // 与内嵌页打通时额外的信息参数
15
- extraParams: { type: 'array', default: [] },
16
- // 是否开启分享跟踪
17
- followShare: { type: 'boolean', default: true },
18
- // 是否开启强制登录;多实例时仅主实例生效(其他实例无条件服从主实例)
19
- forceLogin: { type: 'boolean', default: false },
20
- // 或略上报字段
21
- ignoreFields: { type: 'array', default: [] },
22
- // 曝光比例
23
- impressionScale: { type: 'number', default: 0 },
24
- // 是否开启强制插件模式
25
- pluginMode: { type: 'boolean', default: false },
26
- // 是否使用原始来源信息作为访问事件的参数上报
27
- originalSource: { type: 'boolean', default: true },
28
- // session保活时长(5分钟)
29
- keepAlive: { type: 'number', default: 5 },
30
- // 性能采集配置
31
- performance: { type: 'object', default: { monitor: true, exception: true } },
32
- // 数据上报域名
33
- serverUrl: { type: 'string', default: 'https://napi.growingio.com' },
34
- // 会话有效时长
35
- sessionExpires: { type: 'number', default: -1 },
36
- // 请求超时时长
37
- requestTimeout: { type: 'number', default: 5000 },
38
- // taro框架实例
39
- taro: { type: ['object', 'module'], default: false },
40
- // taro框架vue实例
41
- taroVue: { type: ['object', 'function'], default: false },
42
- // 淘宝小程序/小部件配置
43
- tbConfig: {
44
- type: 'object',
45
- default: {
46
- cloud: undefined,
47
- cloudFuncSend: false,
48
- cloudFuncName: 'httpTunnel',
49
- cloudFuncHandler: 'main',
50
- cloudAppId: undefined,
51
- path: undefined
52
- }
53
- },
54
- // 是否自动采集页面访问事件
55
- trackPage: { type: 'boolean', default: true },
56
- // uniapp vue实例
57
- uniVue: { type: ['object', 'function'], default: false },
58
- // 上报间隔(1秒)
59
- uploadInterval: { type: 'number', default: 1000 },
60
- // 小程序应用版本
61
- version: { type: 'string', default: '1.0.0' }
62
- };
63
-
64
- // 不管实例直接调用的方法
65
- export const DIRECT_HANDLERS = [
66
- 'getPlugins', // 获取所有已加载插件
67
- 'getDeviceId', // 获取设备id
68
- 'updateImpression' // 手动更新曝光
69
- ];
70
-
71
- // 多实例的方法
72
- export const INSTANCE_HANDLERS = [
73
- 'clearGeneralProps', // 清除埋点通用属性
74
- 'clearPageAttributes', // 清除页面属性
75
- 'clearTrackTimer', // 清除所有事件计时器
76
- 'clearUserId', // 清除用户id
77
- 'getABTest', // 获取AB实验数据
78
- 'getGioInfo', // 内嵌页打通信息
79
- 'getOption', // 获取当前SDK配置项状态
80
- 'identify', // 强制登录设置设备id
81
- 'removeTimer', // 移除事件计时器
82
- 'sendPage', // 手动发page事件
83
- 'sendVisit', // 手动发visit事件
84
- 'setGeneralProps', // 设置埋点通用属性
85
- 'setLocation', // 手动设置位置信息
86
- 'setOption', // 设置配置项
87
- 'setPageAttributes', // 设置页面属性
88
- 'setUserAttributes', // 设置用户属性
89
- 'setUserId', // 设置用户id
90
- 'track', // 上报埋点
91
- 'trackTimerEnd', // 停止事件计时器并上报事件
92
- 'trackTimerPause', // 暂停事件计时器
93
- 'trackTimerResume', // 恢复事件计时器
94
- 'trackTimerStart' // 初始化事件计时器
95
- ];
96
-
97
- // 直接调用的通用方法
98
- export const HANDLERS = [
99
- 'init', // 初始化SDK
100
- 'registerPlugins', // 手动注册插件
101
- ...DIRECT_HANDLERS,
102
- ...INSTANCE_HANDLERS
103
- ];
104
-
105
- // 允许通过setOption修改的配置项
106
- export const ALLOW_SET_OPTIONS = {
107
- autotrack: '无埋点',
108
- dataCollect: '数据采集',
109
- debug: '调试模式',
110
- serverUrl: '数据上报服务地址'
111
- };
112
-
113
- // 已废弃方法
114
- export const DEPRECATED_HANDLERS = [
115
- 'enableDebug', // 4.0废弃
116
- 'setAutotrack', // 4.0废弃
117
- 'setDataCollect', // 4.0废弃
118
- 'setTrackerHost', // 4.0废弃
119
- 'setTrackerScheme', // 4.0废弃
120
- 'setConfig', // 3.8重构时废弃,原因:太多的客户以为是修改配置的接口导致用错
121
- 'collectImp', // 3.8重构时废弃,原因:重构时在页面onShow/onReady是自动注册
122
- 'setPlatformProfile', // 3.8重构时废弃,原因:使用setUserAttributes代替
123
- 'getLocation' // 2022/4/29废弃,原因:https://developers.weixin.qq.com/community/develop/doc/000e8ccb5ac498318cbd26c495bc01 ;https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html
124
- ];
125
-
126
- // 允许忽略的上报字段
127
- export const IGNORE_PARAMS = [
128
- 'deviceBrand',
129
- 'deviceModel',
130
- 'deviceType',
131
- 'networkState',
132
- 'screenHeight',
133
- 'screenWidth',
134
- 'operatingSystem'
135
- ];
136
-
137
- // 额外打通的字段
138
- export const EXTRA_INFO_PARAMS: string[] = [
139
- ...IGNORE_PARAMS,
140
- 'appChannel',
141
- 'language',
142
- 'platformVersion'
143
- ];
144
-
145
- // 小程序平台
146
- export const PLATFORMTYPES = [
147
- 'wx',
148
- 'my',
149
- 'swan',
150
- 'qq',
151
- 'tt',
152
- 'ks',
153
- 'jd',
154
- 'xhs',
155
- 'quickapp'
156
- ];
157
-
158
- // 各个需要拼接的在存储中的key后缀
159
- export const STORAGE_KEYS: any = {
160
- gsid: '_growing_gsid_',
161
- originalSource: '_gdp_original_source_',
162
- userId: '_growing_userId_',
163
- userKey: '_growing_userKey_',
164
- gioId: '_growing_gioId_',
165
- plugin_gsid: '_growing_plugin_gsid_',
166
- plugin_originalSource: '_gdp_plugin_original_source_',
167
- plugin_userId: '_growing_plugin_userId_',
168
- plugin_userKey: '_growing_plugin_userKey_',
169
- plugin_gioId: '_growing_plugin_gioId_'
170
- };
@@ -1,24 +0,0 @@
1
- export default {
2
- GIOID_UPDATE: 'GIOID_UPDATE', // gioId变更事件
3
- MINIP_LIFECYCLE: 'MINIP_LIFECYCLE', // 小程序生命周期
4
- ON_COMMIT_REQUEST: 'ON_COMMIT_REQUEST', // 小程序事件提交队列
5
- ON_COMPOSE_AFTER: 'ON_COMPOSE_AFTER', // 插件生命周期:构建事件后
6
- ON_COMPOSE_BEFORE: 'ON_COMPOSE_BEFORE', // 插件生命周期:构建事件前
7
- ON_ERROR: 'ON_ERROR', // 插件生命周期:插件执行错误
8
- ON_INSTALL: 'ON_INSTALL', // 插件生命周期:插件被正确加载
9
- ON_SDK_INITIALIZE_BEFORE: 'ON_SDK_INITIALIZE_BEFORE', // SDK开始初始化之前
10
- ON_SEND_AFTER: 'ON_SEND_AFTER', // 插件生命周期:发送事件后
11
- ON_SEND_BEFORE: 'ON_SEND_BEFORE', // 插件生命周期:发送事件前
12
- ON_SEND_ERROR: 'ON_SEND_ERROR', // 插件生命周期:发送事件错误
13
- OPTION_CHANGE: 'OPTION_CHANGE', // 设置变更事件
14
- OPTION_INITIALIZED: 'OPTION_INITIALIZED', // 配置项初始化完成
15
- SCENE_UPDATE: 'SCENE_UPDATE', // scene变更事件
16
- SDK_INITIALIZED: 'SDK_INITIALIZED', // SDK初始化完成发送事件之前
17
- SESSIONID_UPDATE: 'SESSIONID_UPDATE', // sessionId变更事件
18
- SET_USERID: 'SET_USERID', // setUserId事件
19
- SET_USERKEY: 'SET_USERKEY', // setUserKey事件
20
- UID_UPDATE: 'UID_UPDATE', // uId(设备Id)变更事件
21
- UN_EXECUTE_CALL: 'UN_EXECUTE_CALL', // SDK加载完成但没有初始化时的调用事件
22
- USERID_UPDATE: 'USERID_UPDATE', // userId变更事件
23
- USERKEY_UPDATE: 'USERKEY_UPDATE' // userKey变更事件
24
- };
@@ -1,18 +0,0 @@
1
- export const IPReg =
2
- /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/i;
3
- export const URLReg =
4
- /^(https?:\/\/)|(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;
5
- export const UNIAPP_FUNC_REG = /^e[0-9]+$/;
6
- export const ABTEST_SIGN_REG = /^\d+_gdp_abt_sign$/;
7
- export const ABTEST_DATA_REG = /^\d+_gdp_abtd$/;
8
- export const ID_REG = /^\d{1,10}$/;
9
- export const IMP_DATA_REG = /^gioTrack(.+)/;
10
- export const IMP_EVENTNAME_REG = /^[a-zA-Z_][0-9a-zA-Z_]{0,100}$/;
11
- export const SWAN_XID_REG = /^_[0-9a-z]+/;
12
- export const TARO_XID_REG = /^_n_[0-9]+$/;
13
- export const TARO_EVENT_PROPS_REG = /^__reactProps\$[a-z0-9]+$/i;
14
- export const TARO_EVENT_REACT_FUNC1_REG = /return [$\w]+.\w+\(/;
15
- export const TARO_EVENT_REACT_FUNC2_REG = /return \w+\(/;
16
- export const TARO_EVENT_VUE_FUNC1_REG = /return [$\w]+.\$emit\(['"]\w+/;
17
- export const TARO_EVENT_VUE_FUNC2_REG = /return [$\w]+.\w+/;
18
- export const TARO_EVENT_VUE_FUNC3_REG = /return [$\w]+/;