Skip to content

Commit 0446e93

Browse files
fix: allow logEvent overloads for events
1 parent e95ea2c commit 0446e93

2 files changed

Lines changed: 496 additions & 0 deletions

File tree

packages/analytics/lib/modular.ts

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ import type {
4040
ViewPromotionEventParameters,
4141
ViewSearchResultsParameters,
4242
SettingsOptions,
43+
EventParams,
44+
CustomEventName,
4345
} from './types/analytics';
4446

4547
/**
@@ -77,6 +79,333 @@ export async function getGoogleAnalyticsClientId(analytics: Analytics): Promise<
7779
/**
7880
* Log a custom event with optional params.
7981
*/
82+
// Overloads for standard event names
83+
export function logEvent(
84+
analytics: Analytics,
85+
name: 'add_payment_info',
86+
params?: {
87+
items?: EventParams['items'];
88+
currency?: EventParams['currency'];
89+
value?: EventParams['value'];
90+
coupon?: EventParams['coupon'];
91+
payment_type?: EventParams['payment_type'];
92+
},
93+
options?: AnalyticsCallOptions,
94+
): Promise<void>;
95+
96+
export function logEvent(
97+
analytics: Analytics,
98+
name: 'add_shipping_info',
99+
params?: {
100+
items?: EventParams['items'];
101+
currency?: EventParams['currency'];
102+
value?: EventParams['value'];
103+
coupon?: EventParams['coupon'];
104+
shipping_tier?: EventParams['shipping_tier'];
105+
},
106+
options?: AnalyticsCallOptions,
107+
): Promise<void>;
108+
109+
export function logEvent(
110+
analytics: Analytics,
111+
name: 'add_to_cart',
112+
params?: {
113+
items?: EventParams['items'];
114+
currency?: EventParams['currency'];
115+
value?: EventParams['value'];
116+
},
117+
options?: AnalyticsCallOptions,
118+
): Promise<void>;
119+
120+
export function logEvent(
121+
analytics: Analytics,
122+
name: 'add_to_wishlist',
123+
params?: {
124+
items?: EventParams['items'];
125+
currency?: EventParams['currency'];
126+
value?: EventParams['value'];
127+
},
128+
options?: AnalyticsCallOptions,
129+
): Promise<void>;
130+
131+
export function logEvent(
132+
analytics: Analytics,
133+
name: 'begin_checkout',
134+
params?: {
135+
currency?: EventParams['currency'];
136+
value?: EventParams['value'];
137+
coupon?: EventParams['coupon'];
138+
items?: EventParams['items'];
139+
[key: string]: any;
140+
},
141+
options?: AnalyticsCallOptions,
142+
): Promise<void>;
143+
144+
export function logEvent(
145+
analytics: Analytics,
146+
name: 'checkout_progress',
147+
params?: {
148+
checkout_step?: EventParams['checkout_step'];
149+
checkout_option?: EventParams['checkout_option'];
150+
[key: string]: any;
151+
},
152+
options?: AnalyticsCallOptions,
153+
): Promise<void>;
154+
155+
export function logEvent(
156+
analytics: Analytics,
157+
name: 'exception',
158+
params?: {
159+
description?: EventParams['description'];
160+
fatal?: EventParams['fatal'];
161+
[key: string]: any;
162+
},
163+
options?: AnalyticsCallOptions,
164+
): Promise<void>;
165+
166+
export function logEvent(
167+
analytics: Analytics,
168+
name: 'generate_lead',
169+
params?: {
170+
currency?: EventParams['currency'];
171+
value?: EventParams['value'];
172+
},
173+
options?: AnalyticsCallOptions,
174+
): Promise<void>;
175+
176+
export function logEvent(
177+
analytics: Analytics,
178+
name: 'login',
179+
params: {
180+
method: EventParams['method'];
181+
},
182+
options?: AnalyticsCallOptions,
183+
): Promise<void>;
184+
185+
export function logEvent(
186+
analytics: Analytics,
187+
name: 'page_view',
188+
params?: {
189+
page_title?: EventParams['page_title'];
190+
page_location?: EventParams['page_location'];
191+
page_path?: EventParams['page_path'];
192+
[key: string]: any;
193+
},
194+
options?: AnalyticsCallOptions,
195+
): Promise<void>;
196+
197+
export function logEvent(
198+
analytics: Analytics,
199+
name: 'purchase',
200+
params?: {
201+
affiliation?: EventParams['affiliation'];
202+
coupon?: EventParams['coupon'];
203+
currency?: EventParams['currency'];
204+
items?: EventParams['items'];
205+
shipping?: EventParams['shipping'];
206+
tax?: EventParams['tax'];
207+
value?: EventParams['value'];
208+
transaction_id?: EventParams['transaction_id'];
209+
[key: string]: any;
210+
},
211+
options?: AnalyticsCallOptions,
212+
): Promise<void>;
213+
214+
export function logEvent(
215+
analytics: Analytics,
216+
name: 'refund',
217+
params?: {
218+
affiliation?: EventParams['affiliation'];
219+
coupon?: EventParams['coupon'];
220+
currency?: EventParams['currency'];
221+
items?: EventParams['items'];
222+
shipping?: EventParams['shipping'];
223+
tax?: EventParams['tax'];
224+
value?: EventParams['value'];
225+
transaction_id?: EventParams['transaction_id'];
226+
},
227+
options?: AnalyticsCallOptions,
228+
): Promise<void>;
229+
230+
export function logEvent(
231+
analytics: Analytics,
232+
name: 'remove_from_cart',
233+
params?: {
234+
items?: EventParams['items'];
235+
value?: EventParams['value'];
236+
currency?: EventParams['currency'];
237+
},
238+
options?: AnalyticsCallOptions,
239+
): Promise<void>;
240+
241+
export function logEvent(
242+
analytics: Analytics,
243+
name: 'screen_view',
244+
params?: {
245+
screen_name?: EventParams['screen_name'];
246+
screen_class?: EventParams['screen_class'];
247+
[key: string]: any;
248+
},
249+
options?: AnalyticsCallOptions,
250+
): Promise<void>;
251+
252+
export function logEvent(
253+
analytics: Analytics,
254+
name: 'search',
255+
params: {
256+
search_term: EventParams['search_term'];
257+
number_of_nights?: number;
258+
number_of_rooms?: number;
259+
number_of_passengers?: number;
260+
origin?: string;
261+
destination?: string;
262+
start_date?: string;
263+
end_date?: string;
264+
travel_class?: string;
265+
},
266+
options?: AnalyticsCallOptions,
267+
): Promise<void>;
268+
269+
export function logEvent(
270+
analytics: Analytics,
271+
name: 'select_content',
272+
params: {
273+
content_type: EventParams['content_type'];
274+
item_id: EventParams['item_id'];
275+
},
276+
options?: AnalyticsCallOptions,
277+
): Promise<void>;
278+
279+
export function logEvent(
280+
analytics: Analytics,
281+
name: 'select_item',
282+
params: {
283+
items?: EventParams['items'];
284+
content_type: EventParams['content_type'];
285+
item_list_id: EventParams['item_list_id'];
286+
item_list_name: EventParams['item_list_name'];
287+
},
288+
options?: AnalyticsCallOptions,
289+
): Promise<void>;
290+
291+
export function logEvent(
292+
analytics: Analytics,
293+
name: 'select_promotion',
294+
params: {
295+
creative_name: string;
296+
creative_slot: string;
297+
items?: EventParams['items'];
298+
location_id: string;
299+
promotion_id: EventParams['promotion_id'];
300+
promotion_name: EventParams['promotion_name'];
301+
},
302+
options?: AnalyticsCallOptions,
303+
): Promise<void>;
304+
305+
export function logEvent(
306+
analytics: Analytics,
307+
name: 'set_checkout_option',
308+
params?: {
309+
checkout_step?: EventParams['checkout_step'];
310+
checkout_option?: EventParams['checkout_option'];
311+
[key: string]: any;
312+
},
313+
options?: AnalyticsCallOptions,
314+
): Promise<void>;
315+
316+
export function logEvent(
317+
analytics: Analytics,
318+
name: 'share',
319+
params: {
320+
content_type: EventParams['content_type'];
321+
item_id: EventParams['item_id'];
322+
method: EventParams['method'];
323+
},
324+
options?: AnalyticsCallOptions,
325+
): Promise<void>;
326+
327+
export function logEvent(
328+
analytics: Analytics,
329+
name: 'sign_up',
330+
params: {
331+
method: EventParams['method'];
332+
},
333+
options?: AnalyticsCallOptions,
334+
): Promise<void>;
335+
336+
export function logEvent(
337+
analytics: Analytics,
338+
name: 'timing_complete',
339+
params?: {
340+
[key: string]: any;
341+
},
342+
options?: AnalyticsCallOptions,
343+
): Promise<void>;
344+
345+
export function logEvent(
346+
analytics: Analytics,
347+
name: 'view_cart',
348+
params?: {
349+
items?: EventParams['items'];
350+
currency?: EventParams['currency'];
351+
value?: EventParams['value'];
352+
},
353+
options?: AnalyticsCallOptions,
354+
): Promise<void>;
355+
356+
export function logEvent(
357+
analytics: Analytics,
358+
name: 'view_item',
359+
params?: {
360+
items?: EventParams['items'];
361+
currency?: EventParams['currency'];
362+
value?: EventParams['value'];
363+
},
364+
options?: AnalyticsCallOptions,
365+
): Promise<void>;
366+
367+
export function logEvent(
368+
analytics: Analytics,
369+
name: 'view_item_list',
370+
params?: {
371+
items?: EventParams['items'];
372+
item_list_id?: EventParams['item_list_id'];
373+
item_list_name?: EventParams['item_list_name'];
374+
},
375+
options?: AnalyticsCallOptions,
376+
): Promise<void>;
377+
378+
export function logEvent(
379+
analytics: Analytics,
380+
name: 'view_promotion',
381+
params?: {
382+
items?: EventParams['items'];
383+
location_id?: string;
384+
creative_name?: string;
385+
creative_slot?: string;
386+
promotion_id?: EventParams['promotion_id'];
387+
promotion_name?: EventParams['promotion_name'];
388+
},
389+
options?: AnalyticsCallOptions,
390+
): Promise<void>;
391+
392+
export function logEvent(
393+
analytics: Analytics,
394+
name: 'view_search_results',
395+
params: {
396+
search_term: EventParams['search_term'];
397+
},
398+
options?: AnalyticsCallOptions,
399+
): Promise<void>;
400+
401+
// Generic fallback for custom event names
402+
export function logEvent<T extends string>(
403+
analytics: Analytics,
404+
name: CustomEventName<T>,
405+
params?: { [key: string]: any },
406+
options?: AnalyticsCallOptions,
407+
): Promise<void>;
408+
80409
export function logEvent(
81410
analytics: Analytics,
82411
name: string,

0 commit comments

Comments
 (0)