@sitecore-cloudsdk/search 0.5.0-rc.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/README.md +95 -0
- package/browser.cjs +3 -0
- package/browser.d.ts +2 -0
- package/browser.js +3 -0
- package/dist/cjs/package.json +40 -0
- package/dist/cjs/src/browser.d.ts +32 -0
- package/dist/cjs/src/browser.js +53 -0
- package/dist/cjs/src/lib/consts.d.ts +38 -0
- package/dist/cjs/src/lib/consts.js +49 -0
- package/dist/cjs/src/lib/events/entity-view-event.d.ts +22 -0
- package/dist/cjs/src/lib/events/entity-view-event.js +51 -0
- package/dist/cjs/src/lib/events/interfaces.d.ts +135 -0
- package/dist/cjs/src/lib/events/interfaces.js +3 -0
- package/dist/cjs/src/lib/events/widget-facet-click-event.d.ts +30 -0
- package/dist/cjs/src/lib/events/widget-facet-click-event.js +92 -0
- package/dist/cjs/src/lib/events/widget-item-click-event.d.ts +28 -0
- package/dist/cjs/src/lib/events/widget-item-click-event.js +72 -0
- package/dist/cjs/src/lib/events/widget-navigation-click-event.d.ts +26 -0
- package/dist/cjs/src/lib/events/widget-navigation-click-event.js +49 -0
- package/dist/cjs/src/lib/events/widget-suggestion-click-event.d.ts +29 -0
- package/dist/cjs/src/lib/events/widget-suggestion-click-event.js +75 -0
- package/dist/cjs/src/lib/events/widget-view-event.d.ts +28 -0
- package/dist/cjs/src/lib/events/widget-view-event.js +75 -0
- package/dist/cjs/src/lib/initializer/browser/initializer.d.ts +23 -0
- package/dist/cjs/src/lib/initializer/browser/initializer.js +44 -0
- package/dist/cjs/src/lib/initializer/server/initializer.d.ts +21 -0
- package/dist/cjs/src/lib/initializer/server/initializer.js +39 -0
- package/dist/cjs/src/lib/request-entities/context/context.d.ts +141 -0
- package/dist/cjs/src/lib/request-entities/context/context.js +273 -0
- package/dist/cjs/src/lib/request-entities/context/interfaces.d.ts +106 -0
- package/dist/cjs/src/lib/request-entities/context/interfaces.js +2 -0
- package/dist/cjs/src/lib/request-entities/filters/base-filter.d.ts +17 -0
- package/dist/cjs/src/lib/request-entities/filters/base-filter.js +17 -0
- package/dist/cjs/src/lib/request-entities/filters/comparison-filter.d.ts +18 -0
- package/dist/cjs/src/lib/request-entities/filters/comparison-filter.js +30 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/comparison-facet-filter.d.ts +18 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/comparison-facet-filter.js +26 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/interfaces.d.ts +21 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/interfaces.js +2 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/list-facet-filter.d.ts +18 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/list-facet-filter.js +26 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/logical-facet-filter.d.ts +19 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/logical-facet-filter.js +26 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/not-facet-filter.d.ts +7 -0
- package/dist/cjs/src/lib/request-entities/filters/facet/not-facet-filter.js +22 -0
- package/dist/cjs/src/lib/request-entities/filters/geo-filter.d.ts +19 -0
- package/dist/cjs/src/lib/request-entities/filters/geo-filter.js +49 -0
- package/dist/cjs/src/lib/request-entities/filters/geo-within-filter.d.ts +19 -0
- package/dist/cjs/src/lib/request-entities/filters/geo-within-filter.js +44 -0
- package/dist/cjs/src/lib/request-entities/filters/interfaces.d.ts +66 -0
- package/dist/cjs/src/lib/request-entities/filters/interfaces.js +2 -0
- package/dist/cjs/src/lib/request-entities/filters/list-filter.d.ts +18 -0
- package/dist/cjs/src/lib/request-entities/filters/list-filter.js +30 -0
- package/dist/cjs/src/lib/request-entities/filters/logical-filter.d.ts +16 -0
- package/dist/cjs/src/lib/request-entities/filters/logical-filter.js +32 -0
- package/dist/cjs/src/lib/request-entities/widgets/interfaces.d.ts +372 -0
- package/dist/cjs/src/lib/request-entities/widgets/interfaces.js +2 -0
- package/dist/cjs/src/lib/request-entities/widgets/questions-answers-widget-item.d.ts +62 -0
- package/dist/cjs/src/lib/request-entities/widgets/questions-answers-widget-item.js +117 -0
- package/dist/cjs/src/lib/request-entities/widgets/recommendation-widget-item.d.ts +39 -0
- package/dist/cjs/src/lib/request-entities/widgets/recommendation-widget-item.js +84 -0
- package/dist/cjs/src/lib/request-entities/widgets/results-widget-item.d.ts +76 -0
- package/dist/cjs/src/lib/request-entities/widgets/results-widget-item.js +126 -0
- package/dist/cjs/src/lib/request-entities/widgets/rule-widget-item.d.ts +14 -0
- package/dist/cjs/src/lib/request-entities/widgets/rule-widget-item.js +71 -0
- package/dist/cjs/src/lib/request-entities/widgets/search-widget-item.d.ts +167 -0
- package/dist/cjs/src/lib/request-entities/widgets/search-widget-item.js +353 -0
- package/dist/cjs/src/lib/request-entities/widgets/utils.d.ts +8 -0
- package/dist/cjs/src/lib/request-entities/widgets/utils.js +14 -0
- package/dist/cjs/src/lib/request-entities/widgets/widget-item.d.ts +64 -0
- package/dist/cjs/src/lib/request-entities/widgets/widget-item.js +114 -0
- package/dist/cjs/src/lib/request-entities/widgets/widget-request-data.d.ts +15 -0
- package/dist/cjs/src/lib/request-entities/widgets/widget-request-data.js +30 -0
- package/dist/cjs/src/lib/requests/browser/entity-view-event.d.ts +6 -0
- package/dist/cjs/src/lib/requests/browser/entity-view-event.js +17 -0
- package/dist/cjs/src/lib/requests/browser/get-page-widget-data.d.ts +15 -0
- package/dist/cjs/src/lib/requests/browser/get-page-widget-data.js +25 -0
- package/dist/cjs/src/lib/requests/browser/get-widget-data.d.ts +9 -0
- package/dist/cjs/src/lib/requests/browser/get-widget-data.js +21 -0
- package/dist/cjs/src/lib/requests/browser/widget-facet-click-event.d.ts +7 -0
- package/dist/cjs/src/lib/requests/browser/widget-facet-click-event.js +18 -0
- package/dist/cjs/src/lib/requests/browser/widget-item-click-event.d.ts +7 -0
- package/dist/cjs/src/lib/requests/browser/widget-item-click-event.js +18 -0
- package/dist/cjs/src/lib/requests/browser/widget-navigation-click-event.d.ts +7 -0
- package/dist/cjs/src/lib/requests/browser/widget-navigation-click-event.js +18 -0
- package/dist/cjs/src/lib/requests/browser/widget-suggestion-click-event.d.ts +7 -0
- package/dist/cjs/src/lib/requests/browser/widget-suggestion-click-event.js +18 -0
- package/dist/cjs/src/lib/requests/browser/widget-view-event.d.ts +6 -0
- package/dist/cjs/src/lib/requests/browser/widget-view-event.js +17 -0
- package/dist/cjs/src/lib/requests/post-request.d.ts +57 -0
- package/dist/cjs/src/lib/requests/post-request.js +26 -0
- package/dist/cjs/src/lib/requests/server/entity-view-event-server.d.ts +8 -0
- package/dist/cjs/src/lib/requests/server/entity-view-event-server.js +18 -0
- package/dist/cjs/src/lib/requests/server/get-page-widget-data-server.d.ts +15 -0
- package/dist/cjs/src/lib/requests/server/get-page-widget-data-server.js +25 -0
- package/dist/cjs/src/lib/requests/server/get-widget-data-server.d.ts +8 -0
- package/dist/cjs/src/lib/requests/server/get-widget-data-server.js +19 -0
- package/dist/cjs/src/lib/requests/server/widget-facet-click-event-server.d.ts +9 -0
- package/dist/cjs/src/lib/requests/server/widget-facet-click-event-server.js +19 -0
- package/dist/cjs/src/lib/requests/server/widget-item-click-event-server.d.ts +9 -0
- package/dist/cjs/src/lib/requests/server/widget-item-click-event-server.js +19 -0
- package/dist/cjs/src/lib/requests/server/widget-navigation-click-event-server.d.ts +9 -0
- package/dist/cjs/src/lib/requests/server/widget-navigation-click-event-server.js +19 -0
- package/dist/cjs/src/lib/requests/server/widget-suggestion-click-event-server.d.ts +9 -0
- package/dist/cjs/src/lib/requests/server/widget-suggestion-click-event-server.js +19 -0
- package/dist/cjs/src/lib/requests/server/widget-view-event-server.d.ts +9 -0
- package/dist/cjs/src/lib/requests/server/widget-view-event-server.js +19 -0
- package/dist/cjs/src/lib/types.d.ts +14 -0
- package/dist/cjs/src/lib/types.js +2 -0
- package/dist/cjs/src/server.d.ts +32 -0
- package/dist/cjs/src/server.js +55 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/esm/package.json +40 -0
- package/dist/esm/src/browser.d.ts +32 -0
- package/dist/esm/src/browser.js +26 -0
- package/dist/esm/src/lib/consts.d.ts +38 -0
- package/dist/esm/src/lib/consts.js +43 -0
- package/dist/esm/src/lib/events/entity-view-event.d.ts +22 -0
- package/dist/esm/src/lib/events/entity-view-event.js +47 -0
- package/dist/esm/src/lib/events/interfaces.d.ts +135 -0
- package/dist/esm/src/lib/events/interfaces.js +2 -0
- package/dist/esm/src/lib/events/widget-facet-click-event.d.ts +30 -0
- package/dist/esm/src/lib/events/widget-facet-click-event.js +88 -0
- package/dist/esm/src/lib/events/widget-item-click-event.d.ts +28 -0
- package/dist/esm/src/lib/events/widget-item-click-event.js +68 -0
- package/dist/esm/src/lib/events/widget-navigation-click-event.d.ts +26 -0
- package/dist/esm/src/lib/events/widget-navigation-click-event.js +45 -0
- package/dist/esm/src/lib/events/widget-suggestion-click-event.d.ts +29 -0
- package/dist/esm/src/lib/events/widget-suggestion-click-event.js +71 -0
- package/dist/esm/src/lib/events/widget-view-event.d.ts +28 -0
- package/dist/esm/src/lib/events/widget-view-event.js +71 -0
- package/dist/esm/src/lib/initializer/browser/initializer.d.ts +23 -0
- package/dist/esm/src/lib/initializer/browser/initializer.js +38 -0
- package/dist/esm/src/lib/initializer/server/initializer.d.ts +21 -0
- package/dist/esm/src/lib/initializer/server/initializer.js +33 -0
- package/dist/esm/src/lib/request-entities/context/context.d.ts +141 -0
- package/dist/esm/src/lib/request-entities/context/context.js +269 -0
- package/dist/esm/src/lib/request-entities/context/interfaces.d.ts +106 -0
- package/dist/esm/src/lib/request-entities/context/interfaces.js +1 -0
- package/dist/esm/src/lib/request-entities/filters/base-filter.d.ts +17 -0
- package/dist/esm/src/lib/request-entities/filters/base-filter.js +13 -0
- package/dist/esm/src/lib/request-entities/filters/comparison-filter.d.ts +18 -0
- package/dist/esm/src/lib/request-entities/filters/comparison-filter.js +26 -0
- package/dist/esm/src/lib/request-entities/filters/facet/comparison-facet-filter.d.ts +18 -0
- package/dist/esm/src/lib/request-entities/filters/facet/comparison-facet-filter.js +22 -0
- package/dist/esm/src/lib/request-entities/filters/facet/interfaces.d.ts +21 -0
- package/dist/esm/src/lib/request-entities/filters/facet/interfaces.js +1 -0
- package/dist/esm/src/lib/request-entities/filters/facet/list-facet-filter.d.ts +18 -0
- package/dist/esm/src/lib/request-entities/filters/facet/list-facet-filter.js +22 -0
- package/dist/esm/src/lib/request-entities/filters/facet/logical-facet-filter.d.ts +19 -0
- package/dist/esm/src/lib/request-entities/filters/facet/logical-facet-filter.js +22 -0
- package/dist/esm/src/lib/request-entities/filters/facet/not-facet-filter.d.ts +7 -0
- package/dist/esm/src/lib/request-entities/filters/facet/not-facet-filter.js +18 -0
- package/dist/esm/src/lib/request-entities/filters/geo-filter.d.ts +19 -0
- package/dist/esm/src/lib/request-entities/filters/geo-filter.js +45 -0
- package/dist/esm/src/lib/request-entities/filters/geo-within-filter.d.ts +19 -0
- package/dist/esm/src/lib/request-entities/filters/geo-within-filter.js +40 -0
- package/dist/esm/src/lib/request-entities/filters/interfaces.d.ts +66 -0
- package/dist/esm/src/lib/request-entities/filters/interfaces.js +1 -0
- package/dist/esm/src/lib/request-entities/filters/list-filter.d.ts +18 -0
- package/dist/esm/src/lib/request-entities/filters/list-filter.js +26 -0
- package/dist/esm/src/lib/request-entities/filters/logical-filter.d.ts +16 -0
- package/dist/esm/src/lib/request-entities/filters/logical-filter.js +28 -0
- package/dist/esm/src/lib/request-entities/widgets/interfaces.d.ts +372 -0
- package/dist/esm/src/lib/request-entities/widgets/interfaces.js +1 -0
- package/dist/esm/src/lib/request-entities/widgets/questions-answers-widget-item.d.ts +62 -0
- package/dist/esm/src/lib/request-entities/widgets/questions-answers-widget-item.js +113 -0
- package/dist/esm/src/lib/request-entities/widgets/recommendation-widget-item.d.ts +39 -0
- package/dist/esm/src/lib/request-entities/widgets/recommendation-widget-item.js +80 -0
- package/dist/esm/src/lib/request-entities/widgets/results-widget-item.d.ts +76 -0
- package/dist/esm/src/lib/request-entities/widgets/results-widget-item.js +122 -0
- package/dist/esm/src/lib/request-entities/widgets/rule-widget-item.d.ts +14 -0
- package/dist/esm/src/lib/request-entities/widgets/rule-widget-item.js +67 -0
- package/dist/esm/src/lib/request-entities/widgets/search-widget-item.d.ts +167 -0
- package/dist/esm/src/lib/request-entities/widgets/search-widget-item.js +349 -0
- package/dist/esm/src/lib/request-entities/widgets/utils.d.ts +8 -0
- package/dist/esm/src/lib/request-entities/widgets/utils.js +10 -0
- package/dist/esm/src/lib/request-entities/widgets/widget-item.d.ts +64 -0
- package/dist/esm/src/lib/request-entities/widgets/widget-item.js +110 -0
- package/dist/esm/src/lib/request-entities/widgets/widget-request-data.d.ts +15 -0
- package/dist/esm/src/lib/request-entities/widgets/widget-request-data.js +26 -0
- package/dist/esm/src/lib/requests/browser/entity-view-event.d.ts +6 -0
- package/dist/esm/src/lib/requests/browser/entity-view-event.js +13 -0
- package/dist/esm/src/lib/requests/browser/get-page-widget-data.d.ts +15 -0
- package/dist/esm/src/lib/requests/browser/get-page-widget-data.js +21 -0
- package/dist/esm/src/lib/requests/browser/get-widget-data.d.ts +9 -0
- package/dist/esm/src/lib/requests/browser/get-widget-data.js +18 -0
- package/dist/esm/src/lib/requests/browser/widget-facet-click-event.d.ts +7 -0
- package/dist/esm/src/lib/requests/browser/widget-facet-click-event.js +14 -0
- package/dist/esm/src/lib/requests/browser/widget-item-click-event.d.ts +7 -0
- package/dist/esm/src/lib/requests/browser/widget-item-click-event.js +14 -0
- package/dist/esm/src/lib/requests/browser/widget-navigation-click-event.d.ts +7 -0
- package/dist/esm/src/lib/requests/browser/widget-navigation-click-event.js +14 -0
- package/dist/esm/src/lib/requests/browser/widget-suggestion-click-event.d.ts +7 -0
- package/dist/esm/src/lib/requests/browser/widget-suggestion-click-event.js +14 -0
- package/dist/esm/src/lib/requests/browser/widget-view-event.d.ts +6 -0
- package/dist/esm/src/lib/requests/browser/widget-view-event.js +13 -0
- package/dist/esm/src/lib/requests/post-request.d.ts +57 -0
- package/dist/esm/src/lib/requests/post-request.js +22 -0
- package/dist/esm/src/lib/requests/server/entity-view-event-server.d.ts +8 -0
- package/dist/esm/src/lib/requests/server/entity-view-event-server.js +14 -0
- package/dist/esm/src/lib/requests/server/get-page-widget-data-server.d.ts +15 -0
- package/dist/esm/src/lib/requests/server/get-page-widget-data-server.js +21 -0
- package/dist/esm/src/lib/requests/server/get-widget-data-server.d.ts +8 -0
- package/dist/esm/src/lib/requests/server/get-widget-data-server.js +15 -0
- package/dist/esm/src/lib/requests/server/widget-facet-click-event-server.d.ts +9 -0
- package/dist/esm/src/lib/requests/server/widget-facet-click-event-server.js +15 -0
- package/dist/esm/src/lib/requests/server/widget-item-click-event-server.d.ts +9 -0
- package/dist/esm/src/lib/requests/server/widget-item-click-event-server.js +15 -0
- package/dist/esm/src/lib/requests/server/widget-navigation-click-event-server.d.ts +9 -0
- package/dist/esm/src/lib/requests/server/widget-navigation-click-event-server.js +15 -0
- package/dist/esm/src/lib/requests/server/widget-suggestion-click-event-server.d.ts +9 -0
- package/dist/esm/src/lib/requests/server/widget-suggestion-click-event-server.js +15 -0
- package/dist/esm/src/lib/requests/server/widget-view-event-server.d.ts +9 -0
- package/dist/esm/src/lib/requests/server/widget-view-event-server.js +15 -0
- package/dist/esm/src/lib/types.d.ts +14 -0
- package/dist/esm/src/lib/types.js +1 -0
- package/dist/esm/src/server.d.ts +32 -0
- package/dist/esm/src/server.js +28 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/package.json +40 -0
- package/server.cjs +3 -0
- package/server.d.ts +2 -0
- package/server.js +3 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
// © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
|
|
2
|
+
import { ErrorMessages } from '../../consts';
|
|
3
|
+
import { ResultsWidgetItem } from './results-widget-item';
|
|
4
|
+
import { isFacetFilter } from './utils';
|
|
5
|
+
export class SearchWidgetItem extends ResultsWidgetItem {
|
|
6
|
+
/**
|
|
7
|
+
* Creates and holds the functionality of a search widget item.
|
|
8
|
+
* @param entity - The widget's item entity.
|
|
9
|
+
* @param widgetId - The widget's item id.
|
|
10
|
+
* @param searchOptions - The widget's search options object.
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
constructor(entity, widgetId, searchOptions) {
|
|
14
|
+
super(entity, widgetId, {
|
|
15
|
+
content: searchOptions?.content,
|
|
16
|
+
filter: searchOptions?.filter,
|
|
17
|
+
groupBy: searchOptions?.groupBy,
|
|
18
|
+
limit: searchOptions?.limit,
|
|
19
|
+
rule: searchOptions?.rule
|
|
20
|
+
});
|
|
21
|
+
if (!searchOptions)
|
|
22
|
+
return;
|
|
23
|
+
if (searchOptions.facet && Object.keys(searchOptions.facet).length) {
|
|
24
|
+
this._validateNumberInRange1To100(ErrorMessages.IV_0014, searchOptions.facet.max);
|
|
25
|
+
this._validateFacetTypes(searchOptions.facet.types);
|
|
26
|
+
this._facet = searchOptions.facet;
|
|
27
|
+
}
|
|
28
|
+
if (searchOptions.query) {
|
|
29
|
+
this._validateQuery(searchOptions.query);
|
|
30
|
+
this._query = searchOptions.query;
|
|
31
|
+
}
|
|
32
|
+
this._validatePositiveInteger(ErrorMessages.IV_0008, searchOptions.offset);
|
|
33
|
+
this._offset = searchOptions.offset;
|
|
34
|
+
this._validatePersonalization(searchOptions.personalization);
|
|
35
|
+
this._personalization = searchOptions.personalization;
|
|
36
|
+
this._validateRanking(searchOptions.ranking);
|
|
37
|
+
this._ranking = searchOptions.ranking;
|
|
38
|
+
this._validateSort(searchOptions.sort);
|
|
39
|
+
this._sort = searchOptions.sort;
|
|
40
|
+
this._validateSuggestion(searchOptions.suggestion);
|
|
41
|
+
this._suggestion = searchOptions.suggestion;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @param personalization - the object of the `personalization` param
|
|
45
|
+
*/
|
|
46
|
+
set personalization(personalization) {
|
|
47
|
+
this._validatePersonalization(personalization);
|
|
48
|
+
this._personalization = personalization;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @returns the `personalization` property of the SearchWidgetItem
|
|
52
|
+
*/
|
|
53
|
+
get personalization() {
|
|
54
|
+
return this._personalization;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* sets the `personalization` property to undefined of the SearchWidgetItem
|
|
58
|
+
*/
|
|
59
|
+
resetPersonalization() {
|
|
60
|
+
this._personalization = undefined;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
* @param personalization - the object of the `personalization` property
|
|
65
|
+
* @throws IV_0030 if `personalization.attributes` contains an empty or whitespace string
|
|
66
|
+
* @throws IV_0031 if `personalization.ids` contains an empty string
|
|
67
|
+
*/
|
|
68
|
+
_validatePersonalization(personalization) {
|
|
69
|
+
if (!personalization)
|
|
70
|
+
return;
|
|
71
|
+
personalization.attributes.forEach((attribute) => {
|
|
72
|
+
this._validateNonEmptyNoWhitespaceString(ErrorMessages.IV_0030, attribute);
|
|
73
|
+
});
|
|
74
|
+
if (personalization.algorithm === 'mlt')
|
|
75
|
+
personalization.ids.forEach((id) => {
|
|
76
|
+
this._validateNonEmptyString(ErrorMessages.IV_0031, id);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
*
|
|
81
|
+
* @returns The personalization property in its DTO format.
|
|
82
|
+
*/
|
|
83
|
+
_personalizationToDTO() {
|
|
84
|
+
if (!this._personalization)
|
|
85
|
+
return undefined;
|
|
86
|
+
const { attributes, ...rest } = this._personalization;
|
|
87
|
+
return { fields: attributes, ...rest };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* @param ranking - the object of the `ranking` param
|
|
91
|
+
*/
|
|
92
|
+
set ranking(ranking) {
|
|
93
|
+
this._validateRanking(ranking);
|
|
94
|
+
this._ranking = ranking;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @returns the `ranking` property of the SearchWidgetItem
|
|
98
|
+
*/
|
|
99
|
+
get ranking() {
|
|
100
|
+
return this._ranking;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* sets the `ranking` property to undefined of the SearchWidgetItem
|
|
104
|
+
*/
|
|
105
|
+
resetRanking() {
|
|
106
|
+
this._ranking = undefined;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
*
|
|
110
|
+
* @param ranking - the object of the `ranking` property
|
|
111
|
+
* @throws IV_0016 if `ranking.name` contains an empty string
|
|
112
|
+
* @throws IV_0016 if `ranking.weight` is outside of range 1 ~ 100
|
|
113
|
+
*/
|
|
114
|
+
_validateRanking(ranking) {
|
|
115
|
+
ranking?.forEach((rank) => {
|
|
116
|
+
this._validateNumberInRange(ErrorMessages.IV_0029, { max: 100, min: 0.1 }, rank.weight);
|
|
117
|
+
this._validateNonEmptyNoWhitespaceString(ErrorMessages.IV_0016, rank.name);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Sets the search query for the SearchWidgetItem.
|
|
122
|
+
* This method updates the `query` property of the search configuration within the SearchWidgetItem instance.
|
|
123
|
+
* The query is used to define specific search criteria.
|
|
124
|
+
* @param query - The operator that specifies the search criteria.
|
|
125
|
+
*/
|
|
126
|
+
set query(query) {
|
|
127
|
+
this._validateQuery(query);
|
|
128
|
+
this._query = query;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @returns The query property of the SearchWidgetItem.
|
|
132
|
+
*/
|
|
133
|
+
get query() {
|
|
134
|
+
return this._query;
|
|
135
|
+
}
|
|
136
|
+
_validateQuery(query) {
|
|
137
|
+
this._validateStringLengthInRange1To100(ErrorMessages.IV_0009, query.keyphrase);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Sets the query data to undefined
|
|
141
|
+
*/
|
|
142
|
+
resetQuery() {
|
|
143
|
+
this._query = undefined;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Sets the search facet for the SearchWidgetItem.
|
|
147
|
+
* This method updates the `facet` property of the search configuration within the SearchWidgetItem instance.
|
|
148
|
+
*
|
|
149
|
+
* @param facet - The object to set as the search facet.
|
|
150
|
+
* @throws Error If the max is less than 1 or greater than 100, indicating an invalid range.
|
|
151
|
+
*/
|
|
152
|
+
set facet(facet) {
|
|
153
|
+
this._validateNumberInRange1To100(ErrorMessages.IV_0014, facet.max);
|
|
154
|
+
this._validateFacetTypes(facet.types);
|
|
155
|
+
this._facet = facet;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* @returns The facet property of the SearchWidgetItem.
|
|
159
|
+
*/
|
|
160
|
+
get facet() {
|
|
161
|
+
return this._facet;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Sets the facet data to undefined
|
|
165
|
+
*/
|
|
166
|
+
resetFacet() {
|
|
167
|
+
this._facet = undefined;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Sets the search offset for the WidgetItem.
|
|
171
|
+
* Updates the offset property to manage pagination. Throws an error if the offset value is less than 0.
|
|
172
|
+
* @param offset - The non-negative integer to set as the search offset.
|
|
173
|
+
* @throws Error If the offset is less than 0.
|
|
174
|
+
*/
|
|
175
|
+
set offset(offset) {
|
|
176
|
+
this._validatePositiveInteger(ErrorMessages.IV_0008, offset);
|
|
177
|
+
this._offset = offset;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* @returns The offset property of the SearchWidgetItem.
|
|
181
|
+
*/
|
|
182
|
+
get offset() {
|
|
183
|
+
return this._offset;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Sets the offset value to undefined
|
|
187
|
+
*/
|
|
188
|
+
resetOffset() {
|
|
189
|
+
this._offset = undefined;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Sets the suggestion property for SearchWidgetItem
|
|
193
|
+
* @param suggestion - the <array>array of objects for the suggestion param
|
|
194
|
+
* @throws error if <SearchSuggestionOptions>.<suggestion>.name property is an empty string or contains spaces
|
|
195
|
+
* @throws error if <SearchSuggestionOptions>.<suggestion>.max property is not between the range 1 ~ 100
|
|
196
|
+
*/
|
|
197
|
+
set suggestion(suggestion) {
|
|
198
|
+
this._validateSuggestion(suggestion);
|
|
199
|
+
this._suggestion = suggestion;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* @returns The suggestion property of the SearchWidgetItem.
|
|
203
|
+
*/
|
|
204
|
+
get suggestion() {
|
|
205
|
+
return this._suggestion;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Sets the suggestion property to undefined.
|
|
209
|
+
*/
|
|
210
|
+
resetSuggestion() {
|
|
211
|
+
this._suggestion = undefined;
|
|
212
|
+
}
|
|
213
|
+
_suggestionToDTO() {
|
|
214
|
+
if (!this._suggestion)
|
|
215
|
+
return undefined;
|
|
216
|
+
return this._suggestion.map((item) => {
|
|
217
|
+
const { keyphraseFallback, ...rest } = item;
|
|
218
|
+
return { ...rest, keyphrase_fallback: keyphraseFallback };
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Validates the suggestion property. Throws error if provided with incorrect values.
|
|
223
|
+
* @param suggestion - the <array> of objects for the suggestion param
|
|
224
|
+
*/
|
|
225
|
+
_validateSuggestion(suggestion) {
|
|
226
|
+
suggestion?.forEach((suggestionItem) => {
|
|
227
|
+
this._validateNumberInRange1To100(ErrorMessages.IV_0014, suggestionItem.max);
|
|
228
|
+
this._validateNonEmptyNoWhitespaceString(ErrorMessages.IV_0016, suggestionItem.name);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Sets the search sort property for SearchWidgetItem
|
|
233
|
+
* Throws an error if one of the values under sort have an empty `name`
|
|
234
|
+
* @param sort - the object for the sort param
|
|
235
|
+
* @throws error if <SearchSortOptions>.<SortValue>.name(s) property is an empty string
|
|
236
|
+
*/
|
|
237
|
+
set sort(sort) {
|
|
238
|
+
this._validateSort(sort);
|
|
239
|
+
this._sort = sort;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* @returns The sort property of the SearchWidgetItem.
|
|
243
|
+
*/
|
|
244
|
+
get sort() {
|
|
245
|
+
return this._sort;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Sets the sort data to undefined
|
|
249
|
+
*/
|
|
250
|
+
resetSort() {
|
|
251
|
+
this._sort = undefined;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Validates the sort field. Throws an error if incorrect values are provided.
|
|
255
|
+
*/
|
|
256
|
+
_validateSort(sort) {
|
|
257
|
+
sort?.value?.forEach((sortValueItem) => {
|
|
258
|
+
this._validateNonEmptyString(ErrorMessages.IV_0026, sortValueItem.name);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Validates the facet type fields. Throws an errors if incorrect values are provided.
|
|
263
|
+
*/
|
|
264
|
+
_validateFacetTypes(types) {
|
|
265
|
+
if (!types)
|
|
266
|
+
return;
|
|
267
|
+
types.forEach((type) => {
|
|
268
|
+
if (!type.name || type.name.includes(' '))
|
|
269
|
+
throw new Error(ErrorMessages.IV_0016);
|
|
270
|
+
this._validateStringLengthInRange1To100(ErrorMessages.IV_0018, type.keyphrase);
|
|
271
|
+
this._validateNumberInRange1To100(ErrorMessages.IV_0017, type.max);
|
|
272
|
+
this._validateNumberInRange1To100(ErrorMessages.IV_0019, type.minCount);
|
|
273
|
+
if (typeof type.sort === 'object' && typeof type.sort.after === 'string') {
|
|
274
|
+
this._validateNonEmptyNoWhitespaceString(ErrorMessages.IV_0020, type.sort.after);
|
|
275
|
+
if (type.sort.name !== 'text')
|
|
276
|
+
throw new Error(ErrorMessages.IV_0021);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
_filterToDTO(type) {
|
|
281
|
+
if (!type.filter)
|
|
282
|
+
return undefined;
|
|
283
|
+
if (!isFacetFilter(type.filter.values))
|
|
284
|
+
return type.filter;
|
|
285
|
+
return { type: type.filter.type, values: type.filter.values.map((filter) => filter.toDTO()) };
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Builds the sort piece of the DTO.
|
|
289
|
+
*/
|
|
290
|
+
_facetSortToDTO(type) {
|
|
291
|
+
if (type.sort)
|
|
292
|
+
return {
|
|
293
|
+
after: type.sort.after,
|
|
294
|
+
sort: { name: type.sort.name, order: type.sort.order }
|
|
295
|
+
};
|
|
296
|
+
return {};
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Builds the filtering options array.
|
|
300
|
+
*/
|
|
301
|
+
_filteringOptionsToDTO(filteringOptions) {
|
|
302
|
+
if (!filteringOptions)
|
|
303
|
+
return undefined;
|
|
304
|
+
if (filteringOptions === 'Dynamic AND')
|
|
305
|
+
return ['hard_filters', 'other_facet_values', 'own_values'];
|
|
306
|
+
if (filteringOptions === 'Dynamic OR')
|
|
307
|
+
return ['hard_filters', 'other_facet_values'];
|
|
308
|
+
return ['hard_filters'];
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Maps the search widget item to its DTO format.
|
|
312
|
+
*/
|
|
313
|
+
toDTO() {
|
|
314
|
+
const baseDTO = super.toDTO();
|
|
315
|
+
const resultsDTO = this._resultsToDTO();
|
|
316
|
+
const facet = {
|
|
317
|
+
all: this._facet?.all,
|
|
318
|
+
coverage: this._facet?.coverage,
|
|
319
|
+
max: this._facet?.max,
|
|
320
|
+
sort: this._facet?.sort
|
|
321
|
+
};
|
|
322
|
+
if (this._facet?.types)
|
|
323
|
+
facet.types = this._facet.types.map((type) => ({
|
|
324
|
+
exclude: type.exclude,
|
|
325
|
+
filter: this._filterToDTO(type),
|
|
326
|
+
filtering_options: this._filteringOptionsToDTO(type.filteringOptions),
|
|
327
|
+
keyphrase: type.keyphrase,
|
|
328
|
+
max: type.max,
|
|
329
|
+
min_count: type.minCount,
|
|
330
|
+
name: type.name,
|
|
331
|
+
...this._facetSortToDTO(type)
|
|
332
|
+
}));
|
|
333
|
+
const search = {
|
|
334
|
+
...{ offset: this._offset },
|
|
335
|
+
...(this._query && { query: this._query }),
|
|
336
|
+
...(Object.values(facet).filter((value) => value !== undefined).length && { facet }),
|
|
337
|
+
...{ personalization: this._personalizationToDTO() },
|
|
338
|
+
...{ ranking: this._ranking },
|
|
339
|
+
...{ suggestion: this._suggestionToDTO() },
|
|
340
|
+
...{ sort: this._sort },
|
|
341
|
+
...resultsDTO
|
|
342
|
+
};
|
|
343
|
+
const dto = {
|
|
344
|
+
...baseDTO,
|
|
345
|
+
search: Object.values(search).filter((value) => value !== undefined).length ? search : undefined
|
|
346
|
+
};
|
|
347
|
+
return dto;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayOfAtLeastOne } from '../filters/interfaces';
|
|
2
|
+
import type { FacetFilter } from './interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* Checks if the provided filters are facet filters.
|
|
5
|
+
* @param filters - The filters to check.
|
|
6
|
+
* @returns True if the filters are facet filters, false otherwise.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isFacetFilter(filters: ArrayOfAtLeastOne<string> | ArrayOfAtLeastOne<FacetFilter>): filters is ArrayOfAtLeastOne<FacetFilter>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if the provided filters are facet filters.
|
|
3
|
+
* @param filters - The filters to check.
|
|
4
|
+
* @returns True if the filters are facet filters, false otherwise.
|
|
5
|
+
*/
|
|
6
|
+
export function isFacetFilter(filters) {
|
|
7
|
+
if (typeof filters[0] === 'string')
|
|
8
|
+
return false;
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ErrorMessages } from '../../consts';
|
|
2
|
+
import type { WidgetItemDTO } from './interfaces';
|
|
3
|
+
export declare class WidgetItem {
|
|
4
|
+
protected _entity: string;
|
|
5
|
+
protected _widgetId: string;
|
|
6
|
+
/**
|
|
7
|
+
* Creates and holds the functionality of a widget item.
|
|
8
|
+
* @param entity - The widget's item entity.
|
|
9
|
+
* @param widgetId - The widget's item id.
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
constructor(entity: string, widgetId: string);
|
|
13
|
+
/**
|
|
14
|
+
* Sets the entity for the WidgetItem.
|
|
15
|
+
* This method updates the `entity` property of WidgetItem instance.
|
|
16
|
+
*
|
|
17
|
+
* @param entity - The entity to set.
|
|
18
|
+
*/
|
|
19
|
+
set entity(entity: string);
|
|
20
|
+
/**
|
|
21
|
+
* @returns The entity property of the WidgetItem.
|
|
22
|
+
*/
|
|
23
|
+
get entity(): string;
|
|
24
|
+
private _validateEntity;
|
|
25
|
+
/**
|
|
26
|
+
* Sets the id for the WidgetItem.
|
|
27
|
+
* This method updates the `widgetId` property of WidgetItem instance.
|
|
28
|
+
*
|
|
29
|
+
* @param widgetId - The entity to set.
|
|
30
|
+
*/
|
|
31
|
+
set widgetId(widgetId: string);
|
|
32
|
+
/**
|
|
33
|
+
* @returns The id property of the WidgetItem.
|
|
34
|
+
*/
|
|
35
|
+
get widgetId(): string;
|
|
36
|
+
private _validateWidgetId;
|
|
37
|
+
protected _validateNumberInRange1To100(errorMessage: ErrorMessages, num?: number): void;
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* @param errorMessage - The error message
|
|
41
|
+
* @param range - min and max range
|
|
42
|
+
* @param num - number to test
|
|
43
|
+
* @returns void
|
|
44
|
+
*/
|
|
45
|
+
protected _validateNumberInRange(errorMessage: ErrorMessages, range: {
|
|
46
|
+
min: number;
|
|
47
|
+
max: number;
|
|
48
|
+
}, num?: number): void;
|
|
49
|
+
protected _validateStringLengthInRange1To100(errorMessage: ErrorMessages, str?: string): void;
|
|
50
|
+
protected _validatePositiveInteger(error: ErrorMessages, num?: number): void;
|
|
51
|
+
protected _validateNonEmptyString(errorMessage: ErrorMessages, str?: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* Tests if passed string is defined, is not empty string and does not contain whitespaces.
|
|
54
|
+
* @param errorMessage - Error Message
|
|
55
|
+
* @param string - the string to test
|
|
56
|
+
* @returns void
|
|
57
|
+
* @throws Error when failed
|
|
58
|
+
*/
|
|
59
|
+
protected _validateNonEmptyNoWhitespaceString(errorMessage: ErrorMessages, string?: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Maps the widget item to its DTO format.
|
|
62
|
+
*/
|
|
63
|
+
toDTO(): WidgetItemDTO;
|
|
64
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
|
|
2
|
+
import { ErrorMessages } from '../../consts';
|
|
3
|
+
export class WidgetItem {
|
|
4
|
+
/**
|
|
5
|
+
* Creates and holds the functionality of a widget item.
|
|
6
|
+
* @param entity - The widget's item entity.
|
|
7
|
+
* @param widgetId - The widget's item id.
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
constructor(entity, widgetId) {
|
|
11
|
+
this._validateWidgetId(widgetId);
|
|
12
|
+
this._validateEntity(entity);
|
|
13
|
+
this._entity = entity;
|
|
14
|
+
this._widgetId = widgetId;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Sets the entity for the WidgetItem.
|
|
18
|
+
* This method updates the `entity` property of WidgetItem instance.
|
|
19
|
+
*
|
|
20
|
+
* @param entity - The entity to set.
|
|
21
|
+
*/
|
|
22
|
+
set entity(entity) {
|
|
23
|
+
this._validateEntity(entity);
|
|
24
|
+
this._entity = entity;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @returns The entity property of the WidgetItem.
|
|
28
|
+
*/
|
|
29
|
+
get entity() {
|
|
30
|
+
return this._entity;
|
|
31
|
+
}
|
|
32
|
+
_validateEntity(entity) {
|
|
33
|
+
if (!entity || entity.trim().length === 0)
|
|
34
|
+
throw new Error(ErrorMessages.MV_0010);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Sets the id for the WidgetItem.
|
|
38
|
+
* This method updates the `widgetId` property of WidgetItem instance.
|
|
39
|
+
*
|
|
40
|
+
* @param widgetId - The entity to set.
|
|
41
|
+
*/
|
|
42
|
+
set widgetId(widgetId) {
|
|
43
|
+
this._validateWidgetId(widgetId);
|
|
44
|
+
this._widgetId = widgetId;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @returns The id property of the WidgetItem.
|
|
48
|
+
*/
|
|
49
|
+
get widgetId() {
|
|
50
|
+
return this._widgetId;
|
|
51
|
+
}
|
|
52
|
+
_validateWidgetId(widgetId) {
|
|
53
|
+
if (!widgetId || widgetId.trim().length === 0)
|
|
54
|
+
throw new Error(ErrorMessages.MV_0011);
|
|
55
|
+
}
|
|
56
|
+
_validateNumberInRange1To100(errorMessage, num) {
|
|
57
|
+
if (num === undefined || (num >= 1 && num <= 100))
|
|
58
|
+
return;
|
|
59
|
+
throw new Error(errorMessage);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* @param errorMessage - The error message
|
|
64
|
+
* @param range - min and max range
|
|
65
|
+
* @param num - number to test
|
|
66
|
+
* @returns void
|
|
67
|
+
*/
|
|
68
|
+
_validateNumberInRange(errorMessage, range, num) {
|
|
69
|
+
if (num === undefined || (num >= range.min && num <= range.max))
|
|
70
|
+
return;
|
|
71
|
+
throw new Error(errorMessage);
|
|
72
|
+
}
|
|
73
|
+
_validateStringLengthInRange1To100(errorMessage, str) {
|
|
74
|
+
if (str === undefined || (str.trim().length >= 1 && str.length <= 100))
|
|
75
|
+
return;
|
|
76
|
+
throw new Error(errorMessage);
|
|
77
|
+
}
|
|
78
|
+
_validatePositiveInteger(error, num) {
|
|
79
|
+
if (num === undefined || num >= 0)
|
|
80
|
+
return;
|
|
81
|
+
throw new Error(error);
|
|
82
|
+
}
|
|
83
|
+
_validateNonEmptyString(errorMessage, str) {
|
|
84
|
+
if (str === undefined || str.trim().length >= 1)
|
|
85
|
+
return;
|
|
86
|
+
throw new Error(errorMessage);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Tests if passed string is defined, is not empty string and does not contain whitespaces.
|
|
90
|
+
* @param errorMessage - Error Message
|
|
91
|
+
* @param string - the string to test
|
|
92
|
+
* @returns void
|
|
93
|
+
* @throws Error when failed
|
|
94
|
+
*/
|
|
95
|
+
_validateNonEmptyNoWhitespaceString(errorMessage, string) {
|
|
96
|
+
if (string && !string.includes(' '))
|
|
97
|
+
return;
|
|
98
|
+
throw new Error(errorMessage);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Maps the widget item to its DTO format.
|
|
102
|
+
*/
|
|
103
|
+
toDTO() {
|
|
104
|
+
return {
|
|
105
|
+
entity: this._entity,
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
107
|
+
rfk_id: this._widgetId
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WidgetDTO } from './interfaces';
|
|
2
|
+
import type { WidgetItem } from './widget-item';
|
|
3
|
+
export declare class WidgetRequestData {
|
|
4
|
+
private _widgetItems;
|
|
5
|
+
/**
|
|
6
|
+
* Creates and holds the functionality of the widget request data.
|
|
7
|
+
* @param widgetItems - Array of {@link WidgetItem} instances.
|
|
8
|
+
*/
|
|
9
|
+
constructor(widgetItems: WidgetItem[]);
|
|
10
|
+
private _validateWidgetItems;
|
|
11
|
+
/**
|
|
12
|
+
* Maps the widget items to their DTO format.
|
|
13
|
+
*/
|
|
14
|
+
toDTO(): WidgetDTO;
|
|
15
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
|
|
2
|
+
import { ErrorMessages } from '../../consts';
|
|
3
|
+
export class WidgetRequestData {
|
|
4
|
+
/**
|
|
5
|
+
* Creates and holds the functionality of the widget request data.
|
|
6
|
+
* @param widgetItems - Array of {@link WidgetItem} instances.
|
|
7
|
+
*/
|
|
8
|
+
constructor(widgetItems) {
|
|
9
|
+
this._validateWidgetItems(widgetItems);
|
|
10
|
+
this._widgetItems = widgetItems;
|
|
11
|
+
}
|
|
12
|
+
_validateWidgetItems(widgetItems) {
|
|
13
|
+
if (widgetItems.length === 0)
|
|
14
|
+
throw new Error(ErrorMessages.MV_0012);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Maps the widget items to their DTO format.
|
|
18
|
+
*/
|
|
19
|
+
toDTO() {
|
|
20
|
+
return {
|
|
21
|
+
widget: {
|
|
22
|
+
items: this._widgetItems.map((widgetItem) => widgetItem.toDTO())
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { EntityViewEventParams } from '../../events/interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* This function sends an entity view event from browser.
|
|
4
|
+
* @param entityViewEventParams - An object containing conversion event params from {@link EntityViewEventParams}
|
|
5
|
+
*/
|
|
6
|
+
export declare function entityView(entityViewEventParams: EntityViewEventParams): Promise<import("@sitecore-cloudsdk/core/internal").EPResponse | null>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
|
|
2
|
+
import { event } from '@sitecore-cloudsdk/events/browser';
|
|
3
|
+
import { EntityViewEvent } from '../../events/entity-view-event';
|
|
4
|
+
import { awaitInit } from '../../initializer/browser/initializer';
|
|
5
|
+
/**
|
|
6
|
+
* This function sends an entity view event from browser.
|
|
7
|
+
* @param entityViewEventParams - An object containing conversion event params from {@link EntityViewEventParams}
|
|
8
|
+
*/
|
|
9
|
+
export async function entityView(entityViewEventParams) {
|
|
10
|
+
await awaitInit();
|
|
11
|
+
const conversionEventDTO = new EntityViewEvent(entityViewEventParams).toDTO();
|
|
12
|
+
return await event(conversionEventDTO);
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Context } from '../../request-entities/context/context';
|
|
2
|
+
import type { Pathname } from '../../types';
|
|
3
|
+
import type { SearchEndpointResponse } from '../post-request';
|
|
4
|
+
/**
|
|
5
|
+
* This function requests widget data for a page.
|
|
6
|
+
* @param pathname - The path of the URL.
|
|
7
|
+
* @returns The response object.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getPageWidgetData(pathname: Pathname): Promise<SearchEndpointResponse | null>;
|
|
10
|
+
/**
|
|
11
|
+
* This function requests widget data for a page.
|
|
12
|
+
* @param context - The context.
|
|
13
|
+
* @returns The response object.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getPageWidgetData(context: Context): Promise<SearchEndpointResponse | null>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
|
|
2
|
+
import { getCloudSDKSettingsBrowser as getCloudSDKSettings } from '@sitecore-cloudsdk/core/internal';
|
|
3
|
+
import { ErrorMessages } from '../../consts';
|
|
4
|
+
import { awaitInit } from '../../initializer/browser/initializer';
|
|
5
|
+
import { Context } from '../../request-entities/context/context';
|
|
6
|
+
import { sendPostRequest } from '../post-request';
|
|
7
|
+
export async function getPageWidgetData(param) {
|
|
8
|
+
await awaitInit();
|
|
9
|
+
const settings = getCloudSDKSettings();
|
|
10
|
+
let context;
|
|
11
|
+
if (param instanceof Context) {
|
|
12
|
+
if (!param.page)
|
|
13
|
+
throw new Error(ErrorMessages.MV_0006);
|
|
14
|
+
context = param;
|
|
15
|
+
}
|
|
16
|
+
else
|
|
17
|
+
context = new Context({ page: { uri: param } });
|
|
18
|
+
const contextRequestBody = context.toDTO();
|
|
19
|
+
const body = JSON.stringify({ ...contextRequestBody });
|
|
20
|
+
return await sendPostRequest(body, settings);
|
|
21
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Context } from '../../request-entities/context/context';
|
|
2
|
+
import type { WidgetRequestData } from '../../request-entities/widgets/widget-request-data';
|
|
3
|
+
import type { SearchEndpointResponse } from '../post-request';
|
|
4
|
+
/**
|
|
5
|
+
* This function requests widget data.
|
|
6
|
+
* @param widgetRequestData - An instance of {@link WidgetRequestData}.
|
|
7
|
+
* @returns The response object.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getWidgetData(widgetRequestData: WidgetRequestData, contextRequestData?: Context): Promise<SearchEndpointResponse | null>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
|
|
2
|
+
import { getCloudSDKSettingsBrowser as getCloudSDKSettings // getEnabledPackageBrowser as getEnabledPackage
|
|
3
|
+
} from '@sitecore-cloudsdk/core/internal';
|
|
4
|
+
import { awaitInit } from '../../initializer/browser/initializer';
|
|
5
|
+
import { sendPostRequest } from '../post-request';
|
|
6
|
+
/**
|
|
7
|
+
* This function requests widget data.
|
|
8
|
+
* @param widgetRequestData - An instance of {@link WidgetRequestData}.
|
|
9
|
+
* @returns The response object.
|
|
10
|
+
*/
|
|
11
|
+
export async function getWidgetData(widgetRequestData, contextRequestData) {
|
|
12
|
+
await awaitInit();
|
|
13
|
+
const settings = getCloudSDKSettings();
|
|
14
|
+
const widgetRequestBody = widgetRequestData.toDTO();
|
|
15
|
+
const contextRequestBody = contextRequestData?.toDTO();
|
|
16
|
+
const body = JSON.stringify({ ...contextRequestBody, ...widgetRequestBody });
|
|
17
|
+
return await sendPostRequest(body, settings);
|
|
18
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { WidgetFacetClickEventParams } from '../../events/interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* This function sends a widget facet click event from browser.
|
|
4
|
+
* @param widgetFacetClickEventParams - An object containing widget facet click event params
|
|
5
|
+
* from {@link WidgetFacetClickEventParams}
|
|
6
|
+
*/
|
|
7
|
+
export declare function widgetFacetClick(widgetFacetClickEventParams: WidgetFacetClickEventParams): Promise<import("@sitecore-cloudsdk/core/internal").EPResponse | null>;
|