11import type {
22 InsightsClient ,
3- InsightsEvent ,
43 Init ,
54 InsightsEventObjectData ,
5+ InsightsAdditionalEventParams ,
66} from 'search-insights' ;
7+ import type { InsightsSearchClickEvent , InsightsClickObjectIDsEvent , InsightsClickFiltersEvent } from '../node_modules/search-insights/dist/click' ;
8+ import type { InsightsSearchConversionEvent , InsightsSearchConversionObjectIDsEvent , InsightsSearchConversionFiltersEvent } from '../node_modules/search-insights/dist/conversion' ;
9+ import type { InsightsSearchViewObjectIDsEvent , InsightsSearchViewFiltersEvent } from '../node_modules/search-insights/dist/view' ;
710import { devDependencies , version } from '../package.json' ;
811
912const log = require ( 'logToConsole' ) ;
@@ -291,23 +294,21 @@ switch (data.method) {
291294 break ;
292295 }
293296
294- const payload : InsightsEvent = {
295- eventType : 'view' ,
297+ const payload : InsightsSearchViewObjectIDsEvent = {
296298 eventName : data . eventName ,
297299 index : data . index ,
298300 objectIDs : formatValueToList ( data . objectIDs ) ,
299- objectData : transformObjectData ( data . objectData ) ,
300301 userToken : data . userToken ,
301302 authenticatedUserToken : data . authenticatedUserToken ,
302303 } ;
303304 const chunks = chunkPayload (
304305 payload ,
305- [ 'objectIDs' , 'objectData' ] ,
306+ [ 'objectIDs' ] ,
306307 MAX_OBJECT_IDS
307308 ) ;
308309
309- logger ( 'sendEvents ' , chunks ) ;
310- aa ( 'sendEvents ' , chunks ) ;
310+ logger ( 'viewedObjectIDs ' , chunks ) ;
311+ chunks . forEach ( ( chunk ) => aa ( 'viewedObjectIDs ' , chunk ) ) ;
311312 data . gtmOnSuccess ( ) ;
312313 break ;
313314 }
@@ -319,25 +320,23 @@ switch (data.method) {
319320 break ;
320321 }
321322
322- const payload : InsightsEvent = {
323- eventType : 'click' ,
323+ const payload : InsightsSearchClickEvent = {
324324 eventName : data . eventName ,
325325 index : data . index ,
326326 objectIDs : formatValueToList ( data . objectIDs ) ,
327- objectData : transformObjectData ( data . objectData ) ,
328327 positions : formatValueToList ( data . positions ) . map ( makeInteger ) ,
329328 queryID : data . queryID ,
330329 userToken : data . userToken ,
331330 authenticatedUserToken : data . authenticatedUserToken ,
332331 } ;
333332 const chunks = chunkPayload (
334333 payload ,
335- [ 'objectIDs' , 'objectData' , ' positions'] ,
334+ [ 'objectIDs' , 'positions' ] ,
336335 MAX_OBJECT_IDS
337336 ) ;
338337
339- logger ( 'sendEvents ' , chunks ) ;
340- aa ( 'sendEvents ' , chunks ) ;
338+ logger ( 'clickedObjectIDsAfterSearch ' , chunks ) ;
339+ chunks . forEach ( ( chunk ) => aa ( 'clickedObjectIDsAfterSearch ' , chunk ) ) ;
341340 data . gtmOnSuccess ( ) ;
342341 break ;
343342 }
@@ -349,24 +348,21 @@ switch (data.method) {
349348 break ;
350349 }
351350
352- const payload : InsightsEvent = {
353- eventType : 'click' ,
351+ const payload : InsightsClickObjectIDsEvent = {
354352 eventName : data . eventName ,
355353 index : data . index ,
356- queryID : data . queryID ,
357354 objectIDs : formatValueToList ( data . objectIDs ) ,
358- objectData : transformObjectData ( data . objectData ) ,
359355 userToken : data . userToken ,
360356 authenticatedUserToken : data . authenticatedUserToken ,
361357 } ;
362358 const chunks = chunkPayload (
363359 payload ,
364- [ 'objectIDs' , 'objectData' ] ,
360+ [ 'objectIDs' ] ,
365361 MAX_OBJECT_IDS
366362 ) ;
367363
368- logger ( 'sendEvents ' , chunks ) ;
369- aa ( 'sendEvents ' , chunks ) ;
364+ logger ( 'clickedObjectIDs ' , chunks ) ;
365+ chunks . forEach ( ( chunk ) => aa ( 'clickedObjectIDs ' , chunk ) ) ;
370366 data . gtmOnSuccess ( ) ;
371367 break ;
372368 }
@@ -378,8 +374,7 @@ switch (data.method) {
378374 break ;
379375 }
380376
381- const payload : InsightsEvent = {
382- eventType : 'click' ,
377+ const payload : InsightsClickFiltersEvent = {
383378 eventName : data . eventName ,
384379 filters : formatValueToList ( data . filters ) ,
385380 index : data . index ,
@@ -388,8 +383,8 @@ switch (data.method) {
388383 } ;
389384 const chunks = chunkPayload ( payload , [ 'filters' ] , MAX_FILTERS ) ;
390385
391- logger ( 'sendEvents ' , chunks ) ;
392- aa ( 'sendEvents ' , chunks ) ;
386+ logger ( 'clickedFilters ' , chunks ) ;
387+ chunks . forEach ( ( chunk ) => aa ( 'clickedFilters ' , chunk ) ) ;
393388 data . gtmOnSuccess ( ) ;
394389 break ;
395390 }
@@ -401,8 +396,13 @@ switch (data.method) {
401396 break ;
402397 }
403398
404- const payload : InsightsEvent = {
405- eventType : 'conversion' ,
399+ const methodName = data . eventSubtype === 'addToCart'
400+ ? 'addedToCartObjectIDsAfterSearch'
401+ : data . eventSubtype === 'purchase'
402+ ? 'purchasedObjectIDsAfterSearch'
403+ : 'convertedObjectIDsAfterSearch' ;
404+
405+ const payload : InsightsSearchConversionEvent = {
406406 eventName : data . eventName ,
407407 index : data . index ,
408408 objectIDs : formatValueToList ( data . objectIDs ) ,
@@ -413,17 +413,15 @@ switch (data.method) {
413413 value : data . value ,
414414 currency : data . currency ,
415415 } ;
416- if ( data . eventSubtype ) {
417- payload . eventSubtype = data . eventSubtype ;
418- }
419416 const chunks = chunkPayload (
420417 payload ,
421418 [ 'objectIDs' , 'objectData' ] ,
422419 MAX_OBJECT_IDS
423420 ) ;
424421
425- logger ( 'sendEvents' , chunks ) ;
426- aa ( 'sendEvents' , chunks ) ;
422+ logger ( methodName , chunks ) ;
423+ const additionalParams : InsightsAdditionalEventParams = data . inferQueryID ? { inferQueryID : true } : { } ;
424+ chunks . forEach ( ( chunk ) => aa ( methodName , chunk , additionalParams ) ) ;
427425 data . gtmOnSuccess ( ) ;
428426 break ;
429427 }
@@ -435,8 +433,13 @@ switch (data.method) {
435433 break ;
436434 }
437435
438- const payload : InsightsEvent = {
439- eventType : 'conversion' ,
436+ const methodName = data . eventSubtype === 'addToCart'
437+ ? 'addedToCartObjectIDs'
438+ : data . eventSubtype === 'purchase'
439+ ? 'purchasedObjectIDs'
440+ : 'convertedObjectIDs' ;
441+
442+ const payload : InsightsSearchConversionObjectIDsEvent = {
440443 eventName : data . eventName ,
441444 index : data . index ,
442445 objectIDs : formatValueToList ( data . objectIDs ) ,
@@ -446,17 +449,15 @@ switch (data.method) {
446449 value : data . value ,
447450 currency : data . currency ,
448451 } ;
449- if ( data . eventSubtype ) {
450- payload . eventSubtype = data . eventSubtype ;
451- }
452452 const chunks = chunkPayload (
453453 payload ,
454454 [ 'objectIDs' , 'objectData' ] ,
455455 MAX_OBJECT_IDS
456456 ) ;
457457
458- logger ( 'sendEvents' , chunks ) ;
459- aa ( 'sendEvents' , chunks ) ;
458+ logger ( methodName , chunks ) ;
459+ const additionalParams : InsightsAdditionalEventParams = data . inferQueryID ? { inferQueryID : true } : { } ;
460+ chunks . forEach ( ( chunk ) => aa ( methodName , chunk , additionalParams ) ) ;
460461 data . gtmOnSuccess ( ) ;
461462 break ;
462463 }
@@ -468,23 +469,17 @@ switch (data.method) {
468469 break ;
469470 }
470471
471- const payload : InsightsEvent = {
472- eventType : 'conversion' ,
472+ const payload : InsightsSearchConversionFiltersEvent = {
473473 eventName : data . eventName ,
474474 filters : formatValueToList ( data . filters ) ,
475475 index : data . index ,
476476 userToken : data . userToken ,
477477 authenticatedUserToken : data . authenticatedUserToken ,
478- value : data . value ,
479- currency : data . currency ,
480478 } ;
481- if ( data . eventSubtype ) {
482- payload . eventSubtype = data . eventSubtype ;
483- }
484479 const chunks = chunkPayload ( payload , [ 'filters' ] , MAX_FILTERS ) ;
485480
486- logger ( 'sendEvents ' , chunks ) ;
487- aa ( 'sendEvents ' , chunks ) ;
481+ logger ( 'convertedFilters ' , chunks ) ;
482+ chunks . forEach ( ( chunk ) => aa ( 'convertedFilters ' , chunk ) ) ;
488483 data . gtmOnSuccess ( ) ;
489484 break ;
490485 }
@@ -496,8 +491,7 @@ switch (data.method) {
496491 break ;
497492 }
498493
499- const payload : InsightsEvent = {
500- eventType : 'view' ,
494+ const payload : InsightsSearchViewFiltersEvent = {
501495 eventName : data . eventName ,
502496 filters : formatValueToList ( data . filters ) ,
503497 index : data . index ,
@@ -506,8 +500,8 @@ switch (data.method) {
506500 } ;
507501 const chunks = chunkPayload ( payload , [ 'filters' ] , MAX_FILTERS ) ;
508502
509- logger ( 'sendEvents ' , chunks ) ;
510- aa ( 'sendEvents ' , chunks ) ;
503+ logger ( 'viewedFilters ' , chunks ) ;
504+ chunks . forEach ( ( chunk ) => aa ( 'viewedFilters ' , chunk ) ) ;
511505 data . gtmOnSuccess ( ) ;
512506 break ;
513507 }
0 commit comments