@jctrans-materials/comps-vue2 1.0.37-beta.5 → 1.0.37-beta.7

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 CHANGED
@@ -71,3 +71,88 @@ Vue.use(JCtransComps);
71
71
  - `Base Demo`:`JcSearch` + `ApplyDataDialog` + `GlobalModal`
72
72
  - `Carrier Search Demo`:`JcCarrierSearch` 系列
73
73
  - `Verify Slide Demo`:`JcVerifySlide`
74
+
75
+ ## GIO 埋点接入(Vue2)
76
+
77
+ ### 1) 按需启用(不传配置即不启用)
78
+
79
+ ```ts
80
+ import Vue from "vue";
81
+ import JCtransComps from "@jctrans-materials/comps-vue2";
82
+
83
+ Vue.use(JCtransComps, {
84
+ tracking: {
85
+ enabled: true,
86
+ autoInit: true,
87
+ directiveName: "gio-track",
88
+ accountId: process.env.VUE_APP_GIO_ACCOUNT_ID,
89
+ dataSourceId: process.env.VUE_APP_GIO_DATA_SOURCE_ID,
90
+ appId: process.env.VUE_APP_GIO_APP_ID,
91
+ initOptions: {
92
+ debug: process.env.NODE_ENV !== "production",
93
+ trackPage: false,
94
+ autoTrackPage: true,
95
+ serverUrl: process.env.VUE_APP_GIO_SERVER_URL,
96
+ },
97
+ },
98
+ });
99
+ ```
100
+
101
+ 如果不传 `tracking`,则不会初始化 GIO。
102
+
103
+ ### 2) 指令与 API 用法
104
+
105
+ ```vue
106
+ <button v-gio-track="'order_submit'">提交订单</button>
107
+
108
+ <button
109
+ v-gio-track="{
110
+ event: 'order_submit',
111
+ attrs: { source: 'cart' },
112
+ onTracked: ({ eventName }) => console.log(eventName),
113
+ }"
114
+ >
115
+ 提交并回调
116
+ </button>
117
+ ```
118
+
119
+ ```ts
120
+ this.$trackEvent("manual_track", { source: "manual" });
121
+ this.$gio.track("direct_track", { source: "direct" }, () => {
122
+ console.log("done");
123
+ });
124
+ ```
125
+
126
+ ### 3) 配置优先级
127
+
128
+ 1. `window.__JCTRANS_GIO_CONFIG__`(或 `globalVarName` 指定对象)
129
+ 2. `tracking` 传入配置
130
+ 3. `import.meta.env.VITE_GIO_*`
131
+
132
+ ### 4) GIO 单测(Vue2)
133
+
134
+ 测试文件:`src/gio.test.ts`
135
+
136
+ 覆盖点:
137
+
138
+ - 初始化分支:
139
+ - 有 `appId`(4 参数 `init`)
140
+ - 无 `appId`(3 参数 `init`)
141
+ - 缺少必填配置时不初始化
142
+ - 指令行为:`bind` / `update` / `unbind` 的绑定、重绑、清理
143
+ - 回调行为:`onTracked` 在 `track` 回调后触发
144
+ - 暴露能力:`$trackEvent` 与 `$gio` 常用 API
145
+
146
+ 结合 GrowingIO WebJS 常用 API 文档(含 `trackTimerStart`)对齐了以下接口可用性:
147
+
148
+ - `setUserId`
149
+ - `clearUserId`
150
+ - `setVisitor`
151
+ - `trackTimerStart`
152
+ - `trackTimerEnd`
153
+
154
+ 运行方式:
155
+
156
+ ```bash
157
+ pnpm -C packages/vue2 test:run
158
+ ```
package/dist/gio.d.ts ADDED
@@ -0,0 +1,61 @@
1
+ import { VueConstructor } from 'vue';
2
+
3
+ export type TrackAttrs = Record<string, string | number | Array<string | number>>;
4
+ export type TrackDirectiveValue = string | {
5
+ event?: string;
6
+ name?: string;
7
+ attrs?: TrackAttrs;
8
+ attributes?: TrackAttrs;
9
+ trigger?: string;
10
+ once?: boolean;
11
+ stop?: boolean;
12
+ prevent?: boolean;
13
+ callback?: (payload: {
14
+ event: Event;
15
+ eventName: string;
16
+ attrs: TrackAttrs;
17
+ trigger: string;
18
+ }) => void;
19
+ onTracked?: (payload: {
20
+ event: Event;
21
+ eventName: string;
22
+ attrs: TrackAttrs;
23
+ trigger: string;
24
+ }) => void;
25
+ };
26
+ export type TrackConfig = {
27
+ enabled?: boolean;
28
+ autoInit?: boolean;
29
+ directiveName?: string;
30
+ globalVarName?: string;
31
+ accountId?: string;
32
+ dataSourceId?: string;
33
+ appId?: string;
34
+ serverUrl?: string;
35
+ initOptions?: {
36
+ debug?: boolean;
37
+ trackPage?: boolean;
38
+ forceLogin?: boolean;
39
+ idMapping?: boolean;
40
+ hashtag?: boolean;
41
+ autoTrackPage?: boolean;
42
+ serverUrl?: string;
43
+ };
44
+ };
45
+ export type GioPublicApi = {
46
+ isInitialized: () => boolean;
47
+ isBrowser: () => boolean;
48
+ init: (...args: any[]) => void;
49
+ track: (eventName: string, attrs?: TrackAttrs, callback?: () => void) => void;
50
+ setUserId: (userId: string) => void;
51
+ clearUserId: () => void;
52
+ setVisitor: (visitor: Record<string, any>) => void;
53
+ setGeneralProps: (props: Record<string, any>) => void;
54
+ setPageAttributes: (props: Record<string, any>) => void;
55
+ sendPage: () => void;
56
+ trackTimerStart: (eventName: string) => void;
57
+ trackTimerEnd: (eventName: string, attrs?: TrackAttrs) => void;
58
+ };
59
+ export declare function createGioTrackingPlugin(rawConfig?: TrackConfig): {
60
+ install(Vue: VueConstructor): void;
61
+ };
@@ -0,0 +1,2 @@
1
+ /** 🤡 Powered by My Super Rules */
2
+ export {};