@constructor-io/constructorio-node 4.17.1 → 4.18.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.
- package/package.json +1 -1
- package/src/modules/tracker.js +60 -25
- package/src/types/tracker.d.ts +10 -3
package/package.json
CHANGED
package/src/modules/tracker.js
CHANGED
|
@@ -570,9 +570,16 @@ class Tracker {
|
|
|
570
570
|
* @function trackSearchResultsLoaded
|
|
571
571
|
* @param {string} term - Search results query term
|
|
572
572
|
* @param {object} parameters - Additional parameters to be sent with request
|
|
573
|
-
* @param {
|
|
574
|
-
* @param {string
|
|
575
|
-
* @param {
|
|
573
|
+
* @param {object[]} parameters.items - List of product item unique identifiers in search results listing
|
|
574
|
+
* @param {string} [parameters.url] - URL of the search results page
|
|
575
|
+
* @param {number} [parameters.resultCount] - Total number of results
|
|
576
|
+
* @param {number} [parameters.resultPage] - Current page of search results
|
|
577
|
+
* @param {string} [parameters.resultId] - Browse result identifier (returned in response from Constructor)
|
|
578
|
+
* @param {object} [parameters.selectedFilters] - Selected filters
|
|
579
|
+
* @param {string} [parameters.sortOrder] - Sort order ('ascending' or 'descending')
|
|
580
|
+
* @param {string} [parameters.sortBy] - Sorting method
|
|
581
|
+
* @param {string} [parameters.section] - The section name for the item Ex. "Products"
|
|
582
|
+
* @param {object} [parameters.analyticsTags] - Pass additional analytics data
|
|
576
583
|
* @param {object} userParameters - Parameters relevant to the user request
|
|
577
584
|
* @param {number} userParameters.sessionId - Session ID, utilized to personalize results
|
|
578
585
|
* @param {string} userParameters.clientId - Client ID, utilized to personalize results
|
|
@@ -593,8 +600,8 @@ class Tracker {
|
|
|
593
600
|
* constructorio.tracker.trackSearchResultsLoaded(
|
|
594
601
|
* 'T-Shirt',
|
|
595
602
|
* {
|
|
596
|
-
*
|
|
597
|
-
*
|
|
603
|
+
* resultCount: 167,
|
|
604
|
+
* items: [{ itemId: 'KMH876' }, { itemId: 'KMH140' }],
|
|
598
605
|
* },
|
|
599
606
|
* {
|
|
600
607
|
* sessionId: 1,
|
|
@@ -610,45 +617,73 @@ class Tracker {
|
|
|
610
617
|
if (term && typeof term === 'string') {
|
|
611
618
|
// Ensure parameters are provided (required)
|
|
612
619
|
if (parameters && typeof parameters === 'object' && !Array.isArray(parameters)) {
|
|
613
|
-
const
|
|
614
|
-
const queryParams = { action: 'search-results', term };
|
|
620
|
+
const baseUrl = `${this.options.serviceUrl}/v2/behavioral_action/search_result_load?`;
|
|
615
621
|
const {
|
|
616
622
|
num_results,
|
|
617
623
|
numResults = num_results,
|
|
618
|
-
|
|
619
|
-
customerIds
|
|
620
|
-
|
|
621
|
-
itemIds
|
|
624
|
+
result_count,
|
|
625
|
+
customerIds,
|
|
626
|
+
customer_ids = customerIds,
|
|
627
|
+
itemIds,
|
|
628
|
+
item_ids = itemIds,
|
|
629
|
+
items = customer_ids || item_ids,
|
|
630
|
+
result_page,
|
|
631
|
+
resultPage = result_page,
|
|
632
|
+
result_id,
|
|
633
|
+
resultId = result_id,
|
|
634
|
+
sort_order,
|
|
635
|
+
sortOrder = sort_order,
|
|
636
|
+
sort_by,
|
|
637
|
+
sortBy = sort_by,
|
|
638
|
+
selected_filters,
|
|
639
|
+
selectedFilters = selected_filters,
|
|
640
|
+
url = 'N/A',
|
|
622
641
|
section,
|
|
642
|
+
analyticsTags,
|
|
643
|
+
resultCount = numResults || result_count || items?.length || 0,
|
|
623
644
|
} = parameters;
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
if (!helpers.isNil(numResults)) {
|
|
627
|
-
queryParams.num_results = numResults;
|
|
628
|
-
}
|
|
645
|
+
const queryParams = {};
|
|
646
|
+
let transformedItems;
|
|
629
647
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
customerIDs = itemIds;
|
|
633
|
-
} else if (customerIds && Array.isArray(customerIds)) {
|
|
634
|
-
customerIDs = customerIds;
|
|
635
|
-
}
|
|
648
|
+
if (items && Array.isArray(items) && items.length !== 0) {
|
|
649
|
+
const trimmedItems = items.slice(0, 100);
|
|
636
650
|
|
|
637
|
-
|
|
638
|
-
|
|
651
|
+
if (typeof items[0] === 'string' || typeof items[0] === 'number') {
|
|
652
|
+
transformedItems = trimmedItems.map((itemId) => ({ item_id: String(itemId) }));
|
|
653
|
+
} else {
|
|
654
|
+
transformedItems = trimmedItems.map((item) => helpers.toSnakeCaseKeys(item, false));
|
|
655
|
+
}
|
|
639
656
|
}
|
|
640
657
|
|
|
641
658
|
if (section) {
|
|
642
659
|
queryParams.section = section;
|
|
643
660
|
}
|
|
644
661
|
|
|
645
|
-
const
|
|
662
|
+
const bodyParams = {
|
|
663
|
+
search_term: term,
|
|
664
|
+
result_count: resultCount,
|
|
665
|
+
items: transformedItems,
|
|
666
|
+
result_page: resultPage,
|
|
667
|
+
result_id: resultId,
|
|
668
|
+
sort_order: sortOrder,
|
|
669
|
+
sort_by: sortBy,
|
|
670
|
+
selected_filters: selectedFilters,
|
|
671
|
+
analytics_tags: analyticsTags,
|
|
672
|
+
url,
|
|
673
|
+
section,
|
|
674
|
+
};
|
|
675
|
+
|
|
676
|
+
const requestUrl = `${baseUrl}${applyParamsAsString({}, userParameters, this.options)}`;
|
|
677
|
+
const requestMethod = 'POST';
|
|
678
|
+
const requestBody = applyParams(bodyParams, userParameters, { ...this.options, requestMethod });
|
|
646
679
|
|
|
647
680
|
send.call(
|
|
648
681
|
this,
|
|
649
682
|
requestUrl,
|
|
650
683
|
userParameters,
|
|
651
684
|
networkParameters,
|
|
685
|
+
requestMethod,
|
|
686
|
+
requestBody,
|
|
652
687
|
);
|
|
653
688
|
|
|
654
689
|
return true;
|
package/src/types/tracker.d.ts
CHANGED
|
@@ -74,9 +74,16 @@ declare class Tracker {
|
|
|
74
74
|
trackSearchResultsLoaded(
|
|
75
75
|
term: string,
|
|
76
76
|
parameters: {
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
url: string;
|
|
78
|
+
items: ItemTracked[];
|
|
79
|
+
resultCount?: number;
|
|
80
|
+
resultPage?: number;
|
|
81
|
+
resultId?: string;
|
|
82
|
+
selectedFilters?: Record<string, any>;
|
|
83
|
+
sortOrder?: string;
|
|
84
|
+
sortBy?: string;
|
|
79
85
|
section?: string;
|
|
86
|
+
analyticsTags?: Record<string, string>;
|
|
80
87
|
},
|
|
81
88
|
userParameters?: TrackerUserParameters,
|
|
82
89
|
networkParameters?: NetworkParameters
|
|
@@ -97,7 +104,7 @@ declare class Tracker {
|
|
|
97
104
|
): true | Error;
|
|
98
105
|
|
|
99
106
|
trackConversion(
|
|
100
|
-
term
|
|
107
|
+
term: string | null | undefined,
|
|
101
108
|
parameters: {
|
|
102
109
|
itemId: string;
|
|
103
110
|
revenue?: number;
|