@technoapple/ga4 1.0.3 → 1.1.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 (76) hide show
  1. package/.github/workflows/node.js.yml +31 -31
  2. package/.prettierignore +1 -1
  3. package/LICENSE +21 -21
  4. package/README.md +386 -48
  5. package/REQUIREMENTS.md +548 -0
  6. package/babel.config.js +5 -5
  7. package/build/main/dataLayer.d.ts +1 -1
  8. package/build/main/dataLayer.js +60 -10
  9. package/build/main/ga4/ga4.d.ts +13 -0
  10. package/build/main/ga4/ga4.js +24 -1
  11. package/build/main/helpers/debounce.d.ts +5 -0
  12. package/build/main/helpers/debounce.js +23 -0
  13. package/build/main/helpers/delegate.d.ts +8 -0
  14. package/build/main/helpers/delegate.js +37 -0
  15. package/build/main/helpers/dom-ready.d.ts +1 -0
  16. package/build/main/helpers/dom-ready.js +13 -0
  17. package/build/main/helpers/parse-url.d.ts +11 -0
  18. package/build/main/helpers/parse-url.js +32 -0
  19. package/build/main/helpers/session.d.ts +4 -0
  20. package/build/main/helpers/session.js +50 -0
  21. package/build/main/index.d.ts +9 -0
  22. package/build/main/index.js +19 -2
  23. package/build/main/plugins/clean-url-tracker.d.ts +17 -0
  24. package/build/main/plugins/clean-url-tracker.js +105 -0
  25. package/build/main/plugins/event-tracker.d.ts +27 -0
  26. package/build/main/plugins/event-tracker.js +76 -0
  27. package/build/main/plugins/impression-tracker.d.ts +32 -0
  28. package/build/main/plugins/impression-tracker.js +202 -0
  29. package/build/main/plugins/index.d.ts +8 -0
  30. package/build/main/plugins/index.js +20 -0
  31. package/build/main/plugins/media-query-tracker.d.ts +20 -0
  32. package/build/main/plugins/media-query-tracker.js +96 -0
  33. package/build/main/plugins/outbound-form-tracker.d.ts +17 -0
  34. package/build/main/plugins/outbound-form-tracker.js +55 -0
  35. package/build/main/plugins/outbound-link-tracker.d.ts +19 -0
  36. package/build/main/plugins/outbound-link-tracker.js +63 -0
  37. package/build/main/plugins/page-visibility-tracker.d.ts +24 -0
  38. package/build/main/plugins/page-visibility-tracker.js +93 -0
  39. package/build/main/plugins/url-change-tracker.d.ts +20 -0
  40. package/build/main/plugins/url-change-tracker.js +76 -0
  41. package/build/main/types/plugins.d.ts +78 -0
  42. package/build/main/types/plugins.js +3 -0
  43. package/build/tsconfig.tsbuildinfo +1 -1
  44. package/docs/examples/react.md +95 -0
  45. package/docs/examples/vanilla.md +65 -0
  46. package/docs/examples/vue.md +87 -0
  47. package/jest.config.ts +195 -195
  48. package/package.json +56 -52
  49. package/src/dataLayer.ts +85 -23
  50. package/src/ga4/ga4.ts +69 -40
  51. package/src/ga4/ga4option.ts +4 -4
  52. package/src/ga4/index.ts +4 -4
  53. package/src/helpers/debounce.ts +28 -0
  54. package/src/helpers/delegate.ts +51 -0
  55. package/src/helpers/dom-ready.ts +7 -0
  56. package/src/helpers/parse-url.ts +37 -0
  57. package/src/helpers/session.ts +39 -0
  58. package/src/index.ts +34 -7
  59. package/src/plugins/clean-url-tracker.ts +112 -0
  60. package/src/plugins/event-tracker.ts +90 -0
  61. package/src/plugins/impression-tracker.ts +230 -0
  62. package/src/plugins/index.ts +8 -0
  63. package/src/plugins/media-query-tracker.ts +116 -0
  64. package/src/plugins/outbound-form-tracker.ts +65 -0
  65. package/src/plugins/outbound-link-tracker.ts +72 -0
  66. package/src/plugins/page-visibility-tracker.ts +104 -0
  67. package/src/plugins/url-change-tracker.ts +84 -0
  68. package/src/types/dataLayer.ts +9 -9
  69. package/src/types/global.ts +12 -12
  70. package/src/types/gtag.ts +259 -259
  71. package/src/types/plugins.ts +98 -0
  72. package/src/util.ts +18 -18
  73. package/test/dataLayer.spec.ts +55 -40
  74. package/test/ga4.spec.ts +36 -36
  75. package/tsconfig.json +28 -28
  76. package/tsconfig.module.json +11 -11
@@ -1,10 +1,10 @@
1
- interface KeyValuePair {
2
- [key:string|number]: any;
3
- }
4
-
5
- interface DataLayerObject extends KeyValuePair{
6
- event?: string;
7
- value?: string;
8
- }
9
-
1
+ interface KeyValuePair {
2
+ [key:string|number]: any;
3
+ }
4
+
5
+ interface DataLayerObject extends KeyValuePair{
6
+ event?: string;
7
+ value?: string;
8
+ }
9
+
10
10
  export {DataLayerObject};
@@ -1,13 +1,13 @@
1
- import { DataLayerObject } from "./dataLayer";
2
- import { gtag } from "./gtag";
3
-
4
- declare global {
5
-
6
-
7
- interface Window {
8
- dataLayer: Array<DataLayerObject>;
9
- gtag:gtag;
10
- }
11
- }
12
-
1
+ import { DataLayerObject } from "./dataLayer";
2
+ import { gtag } from "./gtag";
3
+
4
+ declare global {
5
+
6
+
7
+ interface Window {
8
+ dataLayer: Array<DataLayerObject>;
9
+ gtag:gtag;
10
+ }
11
+ }
12
+
13
13
  export {};
package/src/types/gtag.ts CHANGED
@@ -1,260 +1,260 @@
1
-
2
- /**
3
- * gtag definition, referenced via here https://developers.google.com/tag-platform/gtagjs/reference
4
- *
5
- */
6
- type requestedFieldCallback = (fieldName:string) => void;
7
- type eventCallback = () => void;
8
-
9
- interface KeyValueParams {
10
- [key:string]: string | number | boolean;
11
- }
12
-
13
- interface ConsentParams {
14
- ad_storage: 'granted' | 'denied';
15
- analytics_storage: 'granted' | 'denied';
16
- wait_for_update: number;
17
- }
18
-
19
- interface ControlParams {
20
- groups: string;
21
- send_to: string;
22
- event_callback:eventCallback;
23
- event_timeout:number;
24
- }
25
-
26
- interface ItemParameters {
27
- item_id: string;
28
- item_name: string;
29
- affiliation?:string;
30
- coupon?:string;
31
- discount?:number;
32
- index?:number;
33
- item_brand?:string;
34
- item_category?:string;
35
- item_category2?:string;
36
- item_category3?:string;
37
- item_category4?:string;
38
- item_category5?:string;
39
- item_list_id?:string;
40
- item_list_name?:string;
41
- item_variant?:string;
42
- location_id?:string;
43
- price?:number;
44
- quantity?:number;
45
- }
46
-
47
- interface PromotionParameters extends ItemParameters {
48
- creative_name?:string;
49
- creative_slot?:string;
50
- promotion_id?:string;
51
- promotion_name?:string;
52
- }
53
-
54
- interface AddPaymentInfo {
55
- currency: string;
56
- value: number;
57
- coupon?:string;
58
- payment_type?:string;
59
- items:Array<ItemParameters>;
60
- }
61
-
62
- interface AddShippingInfo {
63
- currency:string;
64
- value:number;
65
- coupon?:string;
66
- shipping_tier?:string;
67
- items: Array<ItemParameters>;
68
- }
69
-
70
- interface AddToCart {
71
- currency:string;
72
- value:number;
73
- items:Array<ItemParameters>;
74
- }
75
-
76
- interface AddToWishlistOrRemoveFromCart {
77
- currency:string;
78
- value:number;
79
- items:Array<ItemParameters>;
80
- }
81
-
82
- interface EarnVirtualCurrency {
83
- earn_virtual_currency?:string;
84
- value?:number;
85
- }
86
-
87
- interface Exception {
88
- description?:string;
89
- fatal?:boolean;
90
- }
91
-
92
- interface GenerateLead {
93
- currency:string;
94
- value:number;
95
- }
96
-
97
- interface LevelEnd {
98
- level_name?: string;
99
- success?:boolean;
100
- }
101
-
102
- interface LevelUp {
103
- level?: number;
104
- character?:string;
105
- }
106
-
107
- interface PageView {
108
- page_location?: string;
109
- client_id?: string;
110
- language?: string;
111
- page_encoding?: string;
112
- page_title?: string;
113
- user_agent?: string;
114
- }
115
-
116
- interface PostScore {
117
- score:number;
118
- level?:number;
119
- character?:string;
120
- }
121
-
122
- interface PurchaseRefund {
123
- currency:string;
124
- transaction_id:string;
125
- value:number;
126
- coupon?:string;
127
- shipping?:number;
128
- tax?:number;
129
- items:Array<ItemParameters>;
130
- }
131
-
132
- interface SelectContent {
133
- content_type?:string;
134
- content_id?:string;
135
- }
136
-
137
- interface SelectItem {
138
- item_list_id?:string;
139
- item_list_name?:string;
140
- items:Array<ItemParameters>;
141
- }
142
-
143
- interface SelectPromotion {
144
- creative_name?:string;
145
- creative_slot?:string;
146
- promotion_id?:string;
147
- promotion_name?:string;
148
- items:Array<PromotionParameters>;
149
- }
150
-
151
- interface Share {
152
- method?:string;
153
- content_type?:string;
154
- item_id?:string;
155
- }
156
-
157
- interface SignUp {
158
- method?:string;
159
- }
160
-
161
- interface SpendVirtualCurrency {
162
- value:number;
163
- virtual_currency_name:string;
164
- item_name:string;
165
- }
166
-
167
- interface UnlockAchievement {
168
- achievement_id:string;
169
- }
170
-
171
- interface ViewCart {
172
- currency:string;
173
- value:number;
174
- items: Array<ItemParameters>
175
- }
176
-
177
- interface ViewItem {
178
- currency:string;
179
- value:number;
180
- items:Array<ItemParameters>;
181
- }
182
-
183
- interface ViewItemList {
184
- item_list_id?:string;
185
- item_list_name?:string;
186
- items:Array<ItemParameters>;
187
- }
188
-
189
- interface ViewPromotion {
190
- creative_name?:string;
191
- creative_slot?:string;
192
- promotion_id?:string;
193
- promotion_name?:string;
194
- items:Array<PromotionParameters>;
195
- }
196
-
197
- interface ViewSearchResults {
198
- search_term?:string;
199
- }
200
-
201
- interface JoinGroup {
202
- group_id?:string;
203
- }
204
-
205
- interface LevelStart {
206
- level_name:string
207
- }
208
-
209
- interface Login {
210
- login?:string;
211
- }
212
-
213
- interface Search {
214
- search_term:string
215
- }
216
-
217
- interface gtag {
218
- (command:'config', TARGET_ID:string, configInfo?: KeyValueParams | ControlParams): void;
219
- (command:'js', value: Date):void;
220
- (command:'get', TARGET_ID:string, fieldName:string, callbackFunc: requestedFieldCallback): void;
221
- (command:'set', customerParameter: KeyValueParams | ControlParams):void;
222
- (command:'event', eventName:'add_payment_info', customerParameter:AddPaymentInfo | KeyValueParams | ControlParams):void;
223
- (command:'event', eventName:'add_shipping_info', customerParameter:AddShippingInfo | KeyValueParams | ControlParams):void;
224
- (command:'event', eventName:'add_to_cart', customerParameter:AddToCart | KeyValueParams | ControlParams):void;
225
- (command:'event', eventName:'add_to_wishlist', customerParameter:AddToWishlistOrRemoveFromCart | KeyValueParams | ControlParams):void;
226
- (command:'event', eventName:'begin_checkout', customerParameter:AddToWishlistOrRemoveFromCart | KeyValueParams | ControlParams):void;
227
- (command:'event', eventName:'earn_virtual_currency', customerParameter:EarnVirtualCurrency | KeyValueParams | ControlParams):void;
228
- (command:'event', eventName:'exception', customerParameter:Exception | KeyValueParams | ControlParams):void;
229
- (command:'event', eventName:'generate_lead', customerParameter:GenerateLead | KeyValueParams | ControlParams):void;
230
- (command:'event', eventName:'join_group', customerParameter:JoinGroup | KeyValueParams | ControlParams):void;
231
- (command:'event', eventName:'level_end', customerParameter:LevelEnd | KeyValueParams | ControlParams):void;
232
- (command:'event', eventName:'level_start', customerParameter:LevelStart | KeyValueParams | ControlParams):void;
233
- (command:'event', eventName:'level_up', customerParameter:LevelUp | KeyValueParams | ControlParams):void;
234
- (command:'event', eventName:'login', customerParameter:Login | KeyValueParams | ControlParams):void;
235
- (command:'event', eventName:'page_view', customerParameter:PageView | KeyValueParams | ControlParams):void;
236
- (command:'event', eventName:'post_score', customerParameter:PostScore | KeyValueParams | ControlParams):void;
237
- (command:'event', eventName:'purchase', customerParameter:PurchaseRefund | KeyValueParams | ControlParams):void;
238
- (command:'event', eventName:'refund', customerParameter:PurchaseRefund | KeyValueParams | ControlParams):void;
239
- (command:'event', eventName:'remove_from_cart', customerParameter:AddToWishlistOrRemoveFromCart | KeyValueParams | ControlParams):void;
240
- (command:'event', eventName:'search', customerParameter:Search | KeyValueParams | ControlParams):void;
241
- (command:'event', eventName:'select_content', customerParameter:SelectContent | KeyValueParams | ControlParams):void;
242
- (command:'event', eventName:'select_item', customerParameter:SelectItem | KeyValueParams | ControlParams):void;
243
- (command:'event', eventName:'select_promotion', customerParameter:SelectPromotion | KeyValueParams | ControlParams):void;
244
- (command:'event', eventName:'share', customerParameter:Share | KeyValueParams | ControlParams):void;
245
- (command:'event', eventName:'sign_up', customerParameter:SignUp | KeyValueParams | ControlParams):void;
246
- (command:'event', eventName:'spend_virtual_currency', customerParameter:SpendVirtualCurrency | KeyValueParams | ControlParams):void;
247
- (command:'event', eventName:'tutorial_begin', customerParameter:KeyValueParams | ControlParams):void;
248
- (command:'event', eventName:'tutorial_complete', customerParameter:KeyValueParams | ControlParams):void;
249
- (command:'event', eventName:'unlock_achievement', customerParameter:UnlockAchievement | KeyValueParams | ControlParams):void;
250
- (command:'event', eventName:'view_cart', customerParameter:ViewCart | KeyValueParams | ControlParams):void;
251
- (command:'event', eventName:'view_item', customerParameter:ViewItem | KeyValueParams | ControlParams):void;
252
- (command:'event', eventName:'view_item_list', customerParameter:ViewItemList | KeyValueParams | ControlParams):void;
253
- (command:'event', eventName:'view_promotion', customerParameter:ViewPromotion | KeyValueParams | ControlParams):void;
254
- (command:'event', eventName:'view_search_results', customerParameter:ViewSearchResults | KeyValueParams | ControlParams):void;
255
- (command:'event', eventName:string, customerParameter:KeyValueParams | ControlParams):void;
256
- (command:'consent', consent:'default', customerParameter:ConsentParams | KeyValueParams):void;
257
- (command:'consent', consent:'update', customerParameter:ConsentParams | KeyValueParams):void;
258
- }
259
-
1
+
2
+ /**
3
+ * gtag definition, referenced via here https://developers.google.com/tag-platform/gtagjs/reference
4
+ *
5
+ */
6
+ type requestedFieldCallback = (fieldName:string) => void;
7
+ type eventCallback = () => void;
8
+
9
+ interface KeyValueParams {
10
+ [key:string]: string | number | boolean;
11
+ }
12
+
13
+ interface ConsentParams {
14
+ ad_storage: 'granted' | 'denied';
15
+ analytics_storage: 'granted' | 'denied';
16
+ wait_for_update: number;
17
+ }
18
+
19
+ interface ControlParams {
20
+ groups: string;
21
+ send_to: string;
22
+ event_callback:eventCallback;
23
+ event_timeout:number;
24
+ }
25
+
26
+ interface ItemParameters {
27
+ item_id: string;
28
+ item_name: string;
29
+ affiliation?:string;
30
+ coupon?:string;
31
+ discount?:number;
32
+ index?:number;
33
+ item_brand?:string;
34
+ item_category?:string;
35
+ item_category2?:string;
36
+ item_category3?:string;
37
+ item_category4?:string;
38
+ item_category5?:string;
39
+ item_list_id?:string;
40
+ item_list_name?:string;
41
+ item_variant?:string;
42
+ location_id?:string;
43
+ price?:number;
44
+ quantity?:number;
45
+ }
46
+
47
+ interface PromotionParameters extends ItemParameters {
48
+ creative_name?:string;
49
+ creative_slot?:string;
50
+ promotion_id?:string;
51
+ promotion_name?:string;
52
+ }
53
+
54
+ interface AddPaymentInfo {
55
+ currency: string;
56
+ value: number;
57
+ coupon?:string;
58
+ payment_type?:string;
59
+ items:Array<ItemParameters>;
60
+ }
61
+
62
+ interface AddShippingInfo {
63
+ currency:string;
64
+ value:number;
65
+ coupon?:string;
66
+ shipping_tier?:string;
67
+ items: Array<ItemParameters>;
68
+ }
69
+
70
+ interface AddToCart {
71
+ currency:string;
72
+ value:number;
73
+ items:Array<ItemParameters>;
74
+ }
75
+
76
+ interface AddToWishlistOrRemoveFromCart {
77
+ currency:string;
78
+ value:number;
79
+ items:Array<ItemParameters>;
80
+ }
81
+
82
+ interface EarnVirtualCurrency {
83
+ earn_virtual_currency?:string;
84
+ value?:number;
85
+ }
86
+
87
+ interface Exception {
88
+ description?:string;
89
+ fatal?:boolean;
90
+ }
91
+
92
+ interface GenerateLead {
93
+ currency:string;
94
+ value:number;
95
+ }
96
+
97
+ interface LevelEnd {
98
+ level_name?: string;
99
+ success?:boolean;
100
+ }
101
+
102
+ interface LevelUp {
103
+ level?: number;
104
+ character?:string;
105
+ }
106
+
107
+ interface PageView {
108
+ page_location?: string;
109
+ client_id?: string;
110
+ language?: string;
111
+ page_encoding?: string;
112
+ page_title?: string;
113
+ user_agent?: string;
114
+ }
115
+
116
+ interface PostScore {
117
+ score:number;
118
+ level?:number;
119
+ character?:string;
120
+ }
121
+
122
+ interface PurchaseRefund {
123
+ currency:string;
124
+ transaction_id:string;
125
+ value:number;
126
+ coupon?:string;
127
+ shipping?:number;
128
+ tax?:number;
129
+ items:Array<ItemParameters>;
130
+ }
131
+
132
+ interface SelectContent {
133
+ content_type?:string;
134
+ content_id?:string;
135
+ }
136
+
137
+ interface SelectItem {
138
+ item_list_id?:string;
139
+ item_list_name?:string;
140
+ items:Array<ItemParameters>;
141
+ }
142
+
143
+ interface SelectPromotion {
144
+ creative_name?:string;
145
+ creative_slot?:string;
146
+ promotion_id?:string;
147
+ promotion_name?:string;
148
+ items:Array<PromotionParameters>;
149
+ }
150
+
151
+ interface Share {
152
+ method?:string;
153
+ content_type?:string;
154
+ item_id?:string;
155
+ }
156
+
157
+ interface SignUp {
158
+ method?:string;
159
+ }
160
+
161
+ interface SpendVirtualCurrency {
162
+ value:number;
163
+ virtual_currency_name:string;
164
+ item_name:string;
165
+ }
166
+
167
+ interface UnlockAchievement {
168
+ achievement_id:string;
169
+ }
170
+
171
+ interface ViewCart {
172
+ currency:string;
173
+ value:number;
174
+ items: Array<ItemParameters>
175
+ }
176
+
177
+ interface ViewItem {
178
+ currency:string;
179
+ value:number;
180
+ items:Array<ItemParameters>;
181
+ }
182
+
183
+ interface ViewItemList {
184
+ item_list_id?:string;
185
+ item_list_name?:string;
186
+ items:Array<ItemParameters>;
187
+ }
188
+
189
+ interface ViewPromotion {
190
+ creative_name?:string;
191
+ creative_slot?:string;
192
+ promotion_id?:string;
193
+ promotion_name?:string;
194
+ items:Array<PromotionParameters>;
195
+ }
196
+
197
+ interface ViewSearchResults {
198
+ search_term?:string;
199
+ }
200
+
201
+ interface JoinGroup {
202
+ group_id?:string;
203
+ }
204
+
205
+ interface LevelStart {
206
+ level_name:string
207
+ }
208
+
209
+ interface Login {
210
+ login?:string;
211
+ }
212
+
213
+ interface Search {
214
+ search_term:string
215
+ }
216
+
217
+ interface gtag {
218
+ (command:'config', TARGET_ID:string, configInfo?: KeyValueParams | ControlParams): void;
219
+ (command:'js', value: Date):void;
220
+ (command:'get', TARGET_ID:string, fieldName:string, callbackFunc: requestedFieldCallback): void;
221
+ (command:'set', customerParameter: KeyValueParams | ControlParams):void;
222
+ (command:'event', eventName:'add_payment_info', customerParameter:AddPaymentInfo | KeyValueParams | ControlParams):void;
223
+ (command:'event', eventName:'add_shipping_info', customerParameter:AddShippingInfo | KeyValueParams | ControlParams):void;
224
+ (command:'event', eventName:'add_to_cart', customerParameter:AddToCart | KeyValueParams | ControlParams):void;
225
+ (command:'event', eventName:'add_to_wishlist', customerParameter:AddToWishlistOrRemoveFromCart | KeyValueParams | ControlParams):void;
226
+ (command:'event', eventName:'begin_checkout', customerParameter:AddToWishlistOrRemoveFromCart | KeyValueParams | ControlParams):void;
227
+ (command:'event', eventName:'earn_virtual_currency', customerParameter:EarnVirtualCurrency | KeyValueParams | ControlParams):void;
228
+ (command:'event', eventName:'exception', customerParameter:Exception | KeyValueParams | ControlParams):void;
229
+ (command:'event', eventName:'generate_lead', customerParameter:GenerateLead | KeyValueParams | ControlParams):void;
230
+ (command:'event', eventName:'join_group', customerParameter:JoinGroup | KeyValueParams | ControlParams):void;
231
+ (command:'event', eventName:'level_end', customerParameter:LevelEnd | KeyValueParams | ControlParams):void;
232
+ (command:'event', eventName:'level_start', customerParameter:LevelStart | KeyValueParams | ControlParams):void;
233
+ (command:'event', eventName:'level_up', customerParameter:LevelUp | KeyValueParams | ControlParams):void;
234
+ (command:'event', eventName:'login', customerParameter:Login | KeyValueParams | ControlParams):void;
235
+ (command:'event', eventName:'page_view', customerParameter:PageView | KeyValueParams | ControlParams):void;
236
+ (command:'event', eventName:'post_score', customerParameter:PostScore | KeyValueParams | ControlParams):void;
237
+ (command:'event', eventName:'purchase', customerParameter:PurchaseRefund | KeyValueParams | ControlParams):void;
238
+ (command:'event', eventName:'refund', customerParameter:PurchaseRefund | KeyValueParams | ControlParams):void;
239
+ (command:'event', eventName:'remove_from_cart', customerParameter:AddToWishlistOrRemoveFromCart | KeyValueParams | ControlParams):void;
240
+ (command:'event', eventName:'search', customerParameter:Search | KeyValueParams | ControlParams):void;
241
+ (command:'event', eventName:'select_content', customerParameter:SelectContent | KeyValueParams | ControlParams):void;
242
+ (command:'event', eventName:'select_item', customerParameter:SelectItem | KeyValueParams | ControlParams):void;
243
+ (command:'event', eventName:'select_promotion', customerParameter:SelectPromotion | KeyValueParams | ControlParams):void;
244
+ (command:'event', eventName:'share', customerParameter:Share | KeyValueParams | ControlParams):void;
245
+ (command:'event', eventName:'sign_up', customerParameter:SignUp | KeyValueParams | ControlParams):void;
246
+ (command:'event', eventName:'spend_virtual_currency', customerParameter:SpendVirtualCurrency | KeyValueParams | ControlParams):void;
247
+ (command:'event', eventName:'tutorial_begin', customerParameter:KeyValueParams | ControlParams):void;
248
+ (command:'event', eventName:'tutorial_complete', customerParameter:KeyValueParams | ControlParams):void;
249
+ (command:'event', eventName:'unlock_achievement', customerParameter:UnlockAchievement | KeyValueParams | ControlParams):void;
250
+ (command:'event', eventName:'view_cart', customerParameter:ViewCart | KeyValueParams | ControlParams):void;
251
+ (command:'event', eventName:'view_item', customerParameter:ViewItem | KeyValueParams | ControlParams):void;
252
+ (command:'event', eventName:'view_item_list', customerParameter:ViewItemList | KeyValueParams | ControlParams):void;
253
+ (command:'event', eventName:'view_promotion', customerParameter:ViewPromotion | KeyValueParams | ControlParams):void;
254
+ (command:'event', eventName:'view_search_results', customerParameter:ViewSearchResults | KeyValueParams | ControlParams):void;
255
+ (command:'event', eventName:string, customerParameter:KeyValueParams | ControlParams):void;
256
+ (command:'consent', consent:'default', customerParameter:ConsentParams | KeyValueParams):void;
257
+ (command:'consent', consent:'update', customerParameter:ConsentParams | KeyValueParams):void;
258
+ }
259
+
260
260
  export {gtag, KeyValueParams};
@@ -0,0 +1,98 @@
1
+ export type SendFunction = (eventName: string, params: Record<string, unknown>) => void;
2
+
3
+ export interface GA4Plugin {
4
+ remove(): void;
5
+ }
6
+
7
+ // --- Event Tracker ---
8
+
9
+ export interface EventTrackerOptions {
10
+ events?: string[];
11
+ attributePrefix?: string;
12
+ hitFilter?: (params: Record<string, unknown>, element: Element, event: Event) => Record<string, unknown> | null;
13
+ }
14
+
15
+ // --- Outbound Link Tracker ---
16
+
17
+ export interface OutboundLinkTrackerOptions {
18
+ events?: string[];
19
+ linkSelector?: string;
20
+ shouldTrackOutboundLink?: (link: Element, parseUrl: (url: string) => { hostname: string; protocol: string; href: string }) => boolean;
21
+ eventName?: string;
22
+ attributePrefix?: string;
23
+ hitFilter?: (params: Record<string, unknown>, element: Element, event: Event) => Record<string, unknown> | null;
24
+ }
25
+
26
+ // --- Outbound Form Tracker ---
27
+
28
+ export interface OutboundFormTrackerOptions {
29
+ formSelector?: string;
30
+ shouldTrackOutboundForm?: (form: HTMLFormElement, parseUrl: (url: string) => { hostname: string; protocol: string; href: string }) => boolean;
31
+ eventName?: string;
32
+ hitFilter?: (params: Record<string, unknown>, element: Element, event: Event) => Record<string, unknown> | null;
33
+ }
34
+
35
+ // --- Page Visibility Tracker ---
36
+
37
+ export interface PageVisibilityTrackerOptions {
38
+ sendInitialPageview?: boolean;
39
+ sessionTimeout?: number;
40
+ timeZone?: string;
41
+ eventName?: string;
42
+ hitFilter?: (params: Record<string, unknown>) => Record<string, unknown> | null;
43
+ }
44
+
45
+ // --- URL Change Tracker ---
46
+
47
+ export interface UrlChangeTrackerOptions {
48
+ shouldTrackUrlChange?: (newPath: string, oldPath: string) => boolean;
49
+ trackReplaceState?: boolean;
50
+ hitFilter?: (params: Record<string, unknown>) => Record<string, unknown> | null;
51
+ }
52
+
53
+ // --- Impression Tracker ---
54
+
55
+ export interface ImpressionElementConfig {
56
+ id: string;
57
+ threshold?: number;
58
+ trackFirstImpressionOnly?: boolean;
59
+ }
60
+
61
+ export interface ImpressionTrackerOptions {
62
+ elements?: Array<string | ImpressionElementConfig>;
63
+ rootMargin?: string;
64
+ attributePrefix?: string;
65
+ eventName?: string;
66
+ hitFilter?: (params: Record<string, unknown>, element: Element) => Record<string, unknown> | null;
67
+ }
68
+
69
+ // --- Clean URL Tracker ---
70
+
71
+ export interface CleanUrlTrackerOptions {
72
+ stripQuery?: boolean;
73
+ queryParamsAllowlist?: string[];
74
+ queryParamsDenylist?: string[];
75
+ trailingSlash?: 'add' | 'remove';
76
+ urlFilter?: (url: string) => string;
77
+ }
78
+
79
+ // --- Media Query Tracker ---
80
+
81
+ export interface MediaQueryDefinitionItem {
82
+ name: string;
83
+ media: string;
84
+ }
85
+
86
+ export interface MediaQueryDefinition {
87
+ name: string;
88
+ dimensionIndex?: number;
89
+ items: MediaQueryDefinitionItem[];
90
+ }
91
+
92
+ export interface MediaQueryTrackerOptions {
93
+ definitions?: MediaQueryDefinition[];
94
+ changeTemplate?: (oldValue: string, newValue: string) => string;
95
+ changeTimeout?: number;
96
+ eventName?: string;
97
+ hitFilter?: (params: Record<string, unknown>) => Record<string, unknown> | null;
98
+ }