@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,372 @@
|
|
|
1
|
+
import type { ComparisonFacetFilter } from '../filters/facet/comparison-facet-filter';
|
|
2
|
+
import type { ComparisonFacetFilterDTO, ListFacetFilterDTO, LogicalFacetFilterDTO, NotFacetFilterDTO } from '../filters/facet/interfaces';
|
|
3
|
+
import type { ListFacetFilter } from '../filters/facet/list-facet-filter';
|
|
4
|
+
import type { LogicalFacetFilter } from '../filters/facet/logical-facet-filter';
|
|
5
|
+
import type { NotFacetFilter } from '../filters/facet/not-facet-filter';
|
|
6
|
+
import type { ArrayOfAtLeastOne, Filter, FilterDTO, LogicalOperators } from '../filters/interfaces';
|
|
7
|
+
/**
|
|
8
|
+
* Represents a widget item object that holds the base members in its DTO format.
|
|
9
|
+
*/
|
|
10
|
+
export interface WidgetItemDTO {
|
|
11
|
+
entity: string;
|
|
12
|
+
rfk_id: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Represents the content options property of the results widget item.
|
|
16
|
+
*/
|
|
17
|
+
export type ContentOptions = {
|
|
18
|
+
attributes?: ArrayOfAtLeastOne<string>;
|
|
19
|
+
} | Record<string, never>;
|
|
20
|
+
/**
|
|
21
|
+
* Represents the content options property of the results widget item in DTO Format.
|
|
22
|
+
*/
|
|
23
|
+
export type ContentOptionsDto = {
|
|
24
|
+
fields?: ArrayOfAtLeastOne<string>;
|
|
25
|
+
} | Record<string, never>;
|
|
26
|
+
/**
|
|
27
|
+
* Represents a results widget item object.
|
|
28
|
+
*/
|
|
29
|
+
export interface ResultsOptions {
|
|
30
|
+
limit?: number;
|
|
31
|
+
filter?: Filter;
|
|
32
|
+
groupBy?: string;
|
|
33
|
+
content?: ContentOptions;
|
|
34
|
+
rule?: SearchRuleOptions;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Represents a results widget item object in its DTO format.
|
|
38
|
+
*/
|
|
39
|
+
export interface ResultsItemDTO {
|
|
40
|
+
limit?: number;
|
|
41
|
+
filter?: FilterDTO;
|
|
42
|
+
group_by?: string;
|
|
43
|
+
content?: ContentOptionsDto;
|
|
44
|
+
rule?: SearchRuleDTO;
|
|
45
|
+
}
|
|
46
|
+
type FacetSortName = 'text' | 'count';
|
|
47
|
+
type SortingOptions = 'asc' | 'desc';
|
|
48
|
+
export type FacetFilter = ComparisonFacetFilter | NotFacetFilter | LogicalFacetFilter | ListFacetFilter;
|
|
49
|
+
export type FacetFilterDTO = ComparisonFacetFilterDTO | NotFacetFilterDTO | LogicalFacetFilterDTO | ListFacetFilterDTO;
|
|
50
|
+
export type FacetTypeFilter = {
|
|
51
|
+
type: 'and' | 'or';
|
|
52
|
+
values: ArrayOfAtLeastOne<string> | ArrayOfAtLeastOne<FacetFilter>;
|
|
53
|
+
};
|
|
54
|
+
export type FacetTypeFilterDTO = {
|
|
55
|
+
type: 'and' | 'or';
|
|
56
|
+
values: ArrayOfAtLeastOne<string> | ArrayOfAtLeastOne<FacetFilterDTO>;
|
|
57
|
+
};
|
|
58
|
+
export type FacetSortDTO = Omit<FacetSort, 'after'>;
|
|
59
|
+
type FilteringOptionsDynamicOr = 'Dynamic OR';
|
|
60
|
+
type FilteringOptionsDynamicAnd = 'Dynamic AND';
|
|
61
|
+
type FilteringOptionsStatic = 'Static';
|
|
62
|
+
/**
|
|
63
|
+
* Represents the type filtering option.
|
|
64
|
+
*
|
|
65
|
+
* Manages how other filtering affects this facet, and how filtering in this facet affects other facets.
|
|
66
|
+
*/
|
|
67
|
+
export type FilteringOptions = FilteringOptionsDynamicOr | FilteringOptionsDynamicAnd | FilteringOptionsStatic;
|
|
68
|
+
export type FilteringOptionsDTO = ['hard_filters', 'other_facet_values', 'own_values'] | ['hard_filters', 'other_facet_values'] | ['hard_filters'];
|
|
69
|
+
/**
|
|
70
|
+
* Represents the type object of the facet object.
|
|
71
|
+
*/
|
|
72
|
+
export interface FacetTypeOptions {
|
|
73
|
+
name: string;
|
|
74
|
+
exclude?: ArrayOfAtLeastOne<string>;
|
|
75
|
+
max?: number;
|
|
76
|
+
keyphrase?: string;
|
|
77
|
+
minCount?: number;
|
|
78
|
+
sort?: FacetSort;
|
|
79
|
+
filter?: FacetTypeFilter;
|
|
80
|
+
filteringOptions?: FilteringOptions;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Represents the facet object of search widget item in its DTO format.
|
|
84
|
+
*/
|
|
85
|
+
export interface FacetTypeDTO {
|
|
86
|
+
name: string;
|
|
87
|
+
exclude?: ArrayOfAtLeastOne<string>;
|
|
88
|
+
max?: number;
|
|
89
|
+
keyphrase?: string;
|
|
90
|
+
min_count?: number;
|
|
91
|
+
sort?: FacetSortDTO;
|
|
92
|
+
after?: string;
|
|
93
|
+
filter?: FacetTypeFilterDTO;
|
|
94
|
+
filtering_options?: FilteringOptionsDTO;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Represents the facet object of search widget item.
|
|
98
|
+
*/
|
|
99
|
+
export interface FacetOptions {
|
|
100
|
+
all?: boolean;
|
|
101
|
+
max?: number;
|
|
102
|
+
coverage?: boolean;
|
|
103
|
+
sort?: FacetSort;
|
|
104
|
+
types?: ArrayOfAtLeastOne<FacetTypeOptions>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Represents the sort object of the facet object.
|
|
108
|
+
*/
|
|
109
|
+
export interface FacetSort {
|
|
110
|
+
name: FacetSortName;
|
|
111
|
+
order: SortingOptions;
|
|
112
|
+
after?: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Represents the facet object its DTO format.
|
|
116
|
+
*/
|
|
117
|
+
export interface FacetOptionsDTO {
|
|
118
|
+
all?: boolean;
|
|
119
|
+
max?: number;
|
|
120
|
+
coverage?: boolean;
|
|
121
|
+
sort?: FacetSort;
|
|
122
|
+
types?: ArrayOfAtLeastOne<FacetTypeDTO>;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Represents the query object of search widget item.
|
|
126
|
+
*/
|
|
127
|
+
export interface QueryOptions {
|
|
128
|
+
keyphrase: string;
|
|
129
|
+
operator?: Exclude<LogicalOperators, 'not'>;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Represents the query object of search widget item in its DTO format.
|
|
133
|
+
*/
|
|
134
|
+
export interface QueryOptionsDTO {
|
|
135
|
+
keyphrase: string;
|
|
136
|
+
operator?: Exclude<LogicalOperators, 'not'>;
|
|
137
|
+
}
|
|
138
|
+
export interface SearchOptions extends ResultsOptions {
|
|
139
|
+
facet?: FacetOptions;
|
|
140
|
+
query?: QueryOptions;
|
|
141
|
+
offset?: number;
|
|
142
|
+
sort?: SearchSortOptions;
|
|
143
|
+
rule?: SearchRuleOptions;
|
|
144
|
+
suggestion?: ArrayOfAtLeastOne<SearchSuggestionOptions>;
|
|
145
|
+
ranking?: ArrayOfAtLeastOne<SearchRankingOptions>;
|
|
146
|
+
personalization?: SearchPersonalizationOptions;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Represents the search object of the search widget item in its DTO format.
|
|
150
|
+
*/
|
|
151
|
+
export interface SearchDTO extends ResultsItemDTO {
|
|
152
|
+
facet?: FacetOptionsDTO;
|
|
153
|
+
query?: QueryOptionsDTO;
|
|
154
|
+
offset?: number;
|
|
155
|
+
sort?: SearchSortOptionsDTO;
|
|
156
|
+
suggestion?: ArrayOfAtLeastOne<SearchSuggestionOptionsDTO>;
|
|
157
|
+
ranking?: ArrayOfAtLeastOne<SearchRankingOptionsDto>;
|
|
158
|
+
personalization?: SearchPersonalizationOptionsDto;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Represents the search widget item object in its DTO format.
|
|
162
|
+
*/
|
|
163
|
+
export interface SearchWidgetItemDTO extends WidgetItemDTO {
|
|
164
|
+
search?: SearchDTO;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Represents the search widget item sort param options.
|
|
168
|
+
*/
|
|
169
|
+
export interface SortValue {
|
|
170
|
+
name: string;
|
|
171
|
+
order?: SortingOptions;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Represents the search widget item sort param options in its DTO format.
|
|
175
|
+
*/
|
|
176
|
+
export interface SortValueDTO {
|
|
177
|
+
name: string;
|
|
178
|
+
order?: SortingOptions;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Represents `ranking` property options of the search widget item.
|
|
182
|
+
*/
|
|
183
|
+
export interface SearchRankingOptions {
|
|
184
|
+
name: string;
|
|
185
|
+
weight?: number;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Represents `ranking` property options of the search widget item in DTO format.
|
|
189
|
+
*/
|
|
190
|
+
export interface SearchRankingOptionsDto {
|
|
191
|
+
name: string;
|
|
192
|
+
weight?: number;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Typescript restriction for the `personalization` property.
|
|
196
|
+
* if `algorithm` = affinity, `ids` should not be present.
|
|
197
|
+
*/
|
|
198
|
+
export type SearchPersonalizationOptions = {
|
|
199
|
+
attributes: ArrayOfAtLeastOne<string>;
|
|
200
|
+
} & ({
|
|
201
|
+
algorithm: 'affinity';
|
|
202
|
+
} | {
|
|
203
|
+
algorithm: 'mlt';
|
|
204
|
+
ids: ArrayOfAtLeastOne<string>;
|
|
205
|
+
});
|
|
206
|
+
/**
|
|
207
|
+
* Typescript restriction for the `personalization` property in DTO format.
|
|
208
|
+
* if `algorithm` = affinity, `ids` should not be present.
|
|
209
|
+
*/
|
|
210
|
+
export type SearchPersonalizationOptionsDto = {
|
|
211
|
+
fields: ArrayOfAtLeastOne<string>;
|
|
212
|
+
} & ({
|
|
213
|
+
algorithm: 'affinity';
|
|
214
|
+
} | {
|
|
215
|
+
algorithm: 'mlt';
|
|
216
|
+
ids: ArrayOfAtLeastOne<string>;
|
|
217
|
+
});
|
|
218
|
+
/**
|
|
219
|
+
* Represents the search widget item sort param.
|
|
220
|
+
*/
|
|
221
|
+
export interface SearchSortOptions {
|
|
222
|
+
choices?: boolean;
|
|
223
|
+
value?: ArrayOfAtLeastOne<SortValue>;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Represents the search widget item sort param in its DTO format.
|
|
227
|
+
*/
|
|
228
|
+
export interface SearchSortOptionsDTO {
|
|
229
|
+
choices?: boolean;
|
|
230
|
+
value?: ArrayOfAtLeastOne<SortValue>;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Represents the search widget item suggestion param.
|
|
234
|
+
*/
|
|
235
|
+
export interface SearchSuggestionOptions {
|
|
236
|
+
exclude?: ArrayOfAtLeastOne<string>;
|
|
237
|
+
keyphraseFallback?: boolean;
|
|
238
|
+
max?: number;
|
|
239
|
+
name: string;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Represents the search widget item suggestion param in DTO format.
|
|
243
|
+
*/
|
|
244
|
+
export interface SearchSuggestionOptionsDTO {
|
|
245
|
+
exclude?: ArrayOfAtLeastOne<string>;
|
|
246
|
+
keyphrase_fallback?: boolean;
|
|
247
|
+
max?: number;
|
|
248
|
+
name: string;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Represents the recipe object of the recommendation widget item.
|
|
252
|
+
*/
|
|
253
|
+
export type Recipe = {
|
|
254
|
+
id: string;
|
|
255
|
+
version: number;
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* Represents recommendation widget item.
|
|
259
|
+
*/
|
|
260
|
+
export interface Recommendation {
|
|
261
|
+
recipe?: Recipe;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Represents a widget item recommendation object.
|
|
265
|
+
*/
|
|
266
|
+
export type RecommendationOptions = ResultsOptions & Recommendation;
|
|
267
|
+
/**
|
|
268
|
+
* Represents the recommendations object of the recommendation widget item in its DTO format.
|
|
269
|
+
*/
|
|
270
|
+
export interface RecommendationDTO extends ResultsItemDTO {
|
|
271
|
+
recipe?: Recipe;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Represents the recommendation widget item object in its DTO format.
|
|
275
|
+
*/
|
|
276
|
+
export interface WidgetItemRecommendationDTO extends WidgetItemDTO {
|
|
277
|
+
recommendations?: RecommendationDTO;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Represents a widget object in its DTO format.
|
|
281
|
+
*/
|
|
282
|
+
export interface WidgetDTO {
|
|
283
|
+
widget: {
|
|
284
|
+
items: WidgetItemDTO[];
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
type QueryType = 'question' | 'statement' | 'keyword';
|
|
288
|
+
export interface RelatedQuestionsOptions {
|
|
289
|
+
limit?: number;
|
|
290
|
+
includeSources?: boolean;
|
|
291
|
+
filter?: Filter;
|
|
292
|
+
offset?: number;
|
|
293
|
+
}
|
|
294
|
+
export interface ExactAnswerOptions {
|
|
295
|
+
includeSources?: boolean;
|
|
296
|
+
queryTypes?: ArrayOfAtLeastOne<QueryType>;
|
|
297
|
+
}
|
|
298
|
+
export interface QuestionsAnswersOptions {
|
|
299
|
+
keyphrase: string;
|
|
300
|
+
exactAnswer?: ExactAnswerOptions;
|
|
301
|
+
relatedQuestions?: RelatedQuestionsOptions;
|
|
302
|
+
rule?: SearchRuleOptions;
|
|
303
|
+
}
|
|
304
|
+
export interface QuestionsAnswersWidgetItemDTO extends WidgetItemDTO {
|
|
305
|
+
questions: {
|
|
306
|
+
keyphrase: string;
|
|
307
|
+
exact_answer?: {
|
|
308
|
+
include_sources?: boolean;
|
|
309
|
+
query_types?: ArrayOfAtLeastOne<QueryType>;
|
|
310
|
+
};
|
|
311
|
+
related_questions?: {
|
|
312
|
+
filter?: FilterDTO;
|
|
313
|
+
include_sources?: boolean;
|
|
314
|
+
limit?: number;
|
|
315
|
+
offset?: number;
|
|
316
|
+
rule?: SearchRuleDTO;
|
|
317
|
+
};
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
interface Boost {
|
|
321
|
+
filter: Filter;
|
|
322
|
+
slots?: ArrayOfAtLeastOne<number>;
|
|
323
|
+
weight?: number;
|
|
324
|
+
}
|
|
325
|
+
interface Include {
|
|
326
|
+
filter: Filter;
|
|
327
|
+
slots: ArrayOfAtLeastOne<number>;
|
|
328
|
+
}
|
|
329
|
+
interface PinItem {
|
|
330
|
+
id: string;
|
|
331
|
+
slot: number;
|
|
332
|
+
}
|
|
333
|
+
export interface SearchRuleOptions {
|
|
334
|
+
behaviors?: boolean;
|
|
335
|
+
blacklist?: {
|
|
336
|
+
filter: Filter;
|
|
337
|
+
};
|
|
338
|
+
boost?: ArrayOfAtLeastOne<Boost>;
|
|
339
|
+
bury?: {
|
|
340
|
+
filter: Filter;
|
|
341
|
+
};
|
|
342
|
+
include?: ArrayOfAtLeastOne<Include>;
|
|
343
|
+
pin?: ArrayOfAtLeastOne<PinItem>;
|
|
344
|
+
}
|
|
345
|
+
export interface PinItemDTO {
|
|
346
|
+
id: string;
|
|
347
|
+
slot: number;
|
|
348
|
+
}
|
|
349
|
+
export interface BoostRuleDTO {
|
|
350
|
+
filter: FilterDTO;
|
|
351
|
+
slots?: ArrayOfAtLeastOne<number>;
|
|
352
|
+
weight?: number;
|
|
353
|
+
}
|
|
354
|
+
export interface IncludeRuleDTO {
|
|
355
|
+
filter: FilterDTO;
|
|
356
|
+
slots: ArrayOfAtLeastOne<number>;
|
|
357
|
+
}
|
|
358
|
+
export interface FilterRuleDTO {
|
|
359
|
+
filter: FilterDTO;
|
|
360
|
+
}
|
|
361
|
+
export interface SearchRuleDTO {
|
|
362
|
+
behaviors?: boolean;
|
|
363
|
+
blacklist?: FilterRuleDTO;
|
|
364
|
+
boost?: ArrayOfAtLeastOne<BoostRuleDTO>;
|
|
365
|
+
bury?: FilterRuleDTO;
|
|
366
|
+
include?: ArrayOfAtLeastOne<IncludeRuleDTO>;
|
|
367
|
+
pin?: ArrayOfAtLeastOne<PinItemDTO>;
|
|
368
|
+
}
|
|
369
|
+
export interface RuleWidgetItemDTO extends WidgetItemDTO {
|
|
370
|
+
rule?: SearchRuleDTO;
|
|
371
|
+
}
|
|
372
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ExactAnswerOptions, QuestionsAnswersOptions, QuestionsAnswersWidgetItemDTO, RelatedQuestionsOptions } from './interfaces';
|
|
2
|
+
import { RuleWidgetItem } from './rule-widget-item';
|
|
3
|
+
export declare class QuestionsAnswersWidgetItem extends RuleWidgetItem {
|
|
4
|
+
private _keyphrase;
|
|
5
|
+
private _exactAnswer?;
|
|
6
|
+
private _relatedQuestions?;
|
|
7
|
+
/**
|
|
8
|
+
* Creates and holds the functionality of a questions answers widget item.
|
|
9
|
+
* @param entity - The widget's item entity.
|
|
10
|
+
* @param widgetId - The widget's item id.
|
|
11
|
+
* @param questionsAnswersOptions - The widget's questions answers options object.
|
|
12
|
+
*/
|
|
13
|
+
constructor(entity: string, widgetId: string, questionsAnswersOptions: QuestionsAnswersOptions);
|
|
14
|
+
private _validateRelatedQuestions;
|
|
15
|
+
/**
|
|
16
|
+
* Sets the keyphrase for the QuestionsAnswersWidgetItem.
|
|
17
|
+
* This method updates the `keyphrase` property of the questions answers configuration.
|
|
18
|
+
*
|
|
19
|
+
* @param keyphrase - The keyphrase that the visitor enters to search for relevant content.
|
|
20
|
+
*/
|
|
21
|
+
set keyphrase(keyphrase: string);
|
|
22
|
+
/**
|
|
23
|
+
* @returns The keyphrase property of the QuestionsAnswersWidgetItem.
|
|
24
|
+
*/
|
|
25
|
+
get keyphrase(): string;
|
|
26
|
+
/**
|
|
27
|
+
* Sets the exactAnswer for the QuestionsAnswersWidgetItem.
|
|
28
|
+
* This method updates the `exactAnswer` property of the questions answers configuration.
|
|
29
|
+
*
|
|
30
|
+
* @param exactAnswer - The exactAnswer that the visitor enters to search for relevant content.
|
|
31
|
+
*/
|
|
32
|
+
set exactAnswer(exactAnswer: ExactAnswerOptions);
|
|
33
|
+
/**
|
|
34
|
+
* @returns The exactAnswer property of the QuestionsAnswersWidgetItem.
|
|
35
|
+
*/
|
|
36
|
+
get exactAnswer(): ExactAnswerOptions | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Sets the exactAnswer to undefined
|
|
39
|
+
*/
|
|
40
|
+
resetExactAnswer(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Sets the relatedQuestions for the QuestionsAnswersWidgetItem.
|
|
43
|
+
* This method updates the `relatedQuestions` property of the questions answers configuration.
|
|
44
|
+
*
|
|
45
|
+
* @param relatedQuestions - The relatedQuestions that the visitor enters to search for relevant content.
|
|
46
|
+
*/
|
|
47
|
+
set relatedQuestions(relatedQuestions: RelatedQuestionsOptions);
|
|
48
|
+
/**
|
|
49
|
+
* @returns The relatedQuestions property of the QuestionsAnswersWidgetItem.
|
|
50
|
+
*/
|
|
51
|
+
get relatedQuestions(): RelatedQuestionsOptions | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Sets the relatedQuestions to undefined
|
|
54
|
+
*/
|
|
55
|
+
resetRelatedQuestions(): void;
|
|
56
|
+
private _exactAnswerToDTO;
|
|
57
|
+
private _relatedQuestionsToDTO;
|
|
58
|
+
/**
|
|
59
|
+
* Maps the questions answers widget item to its DTO format.
|
|
60
|
+
*/
|
|
61
|
+
toDTO(): QuestionsAnswersWidgetItemDTO;
|
|
62
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
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 { RuleWidgetItem } from './rule-widget-item';
|
|
4
|
+
export class QuestionsAnswersWidgetItem extends RuleWidgetItem {
|
|
5
|
+
/**
|
|
6
|
+
* Creates and holds the functionality of a questions answers widget item.
|
|
7
|
+
* @param entity - The widget's item entity.
|
|
8
|
+
* @param widgetId - The widget's item id.
|
|
9
|
+
* @param questionsAnswersOptions - The widget's questions answers options object.
|
|
10
|
+
*/
|
|
11
|
+
constructor(entity, widgetId, questionsAnswersOptions) {
|
|
12
|
+
super(entity, widgetId, questionsAnswersOptions.rule);
|
|
13
|
+
this._validateStringLengthInRange1To100(ErrorMessages.IV_0009, questionsAnswersOptions.keyphrase);
|
|
14
|
+
this._keyphrase = questionsAnswersOptions.keyphrase;
|
|
15
|
+
this._exactAnswer = questionsAnswersOptions.exactAnswer;
|
|
16
|
+
if (questionsAnswersOptions.relatedQuestions) {
|
|
17
|
+
this._validateRelatedQuestions(questionsAnswersOptions.relatedQuestions);
|
|
18
|
+
this._relatedQuestions = questionsAnswersOptions.relatedQuestions;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
_validateRelatedQuestions(relatedQuestions) {
|
|
22
|
+
this._validateNumberInRange1To100(ErrorMessages.IV_0007, relatedQuestions.limit);
|
|
23
|
+
this._validatePositiveInteger(ErrorMessages.IV_0008, relatedQuestions.offset);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sets the keyphrase for the QuestionsAnswersWidgetItem.
|
|
27
|
+
* This method updates the `keyphrase` property of the questions answers configuration.
|
|
28
|
+
*
|
|
29
|
+
* @param keyphrase - The keyphrase that the visitor enters to search for relevant content.
|
|
30
|
+
*/
|
|
31
|
+
set keyphrase(keyphrase) {
|
|
32
|
+
this._validateStringLengthInRange1To100(ErrorMessages.IV_0009, keyphrase);
|
|
33
|
+
this._keyphrase = keyphrase;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @returns The keyphrase property of the QuestionsAnswersWidgetItem.
|
|
37
|
+
*/
|
|
38
|
+
get keyphrase() {
|
|
39
|
+
return this._keyphrase;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Sets the exactAnswer for the QuestionsAnswersWidgetItem.
|
|
43
|
+
* This method updates the `exactAnswer` property of the questions answers configuration.
|
|
44
|
+
*
|
|
45
|
+
* @param exactAnswer - The exactAnswer that the visitor enters to search for relevant content.
|
|
46
|
+
*/
|
|
47
|
+
set exactAnswer(exactAnswer) {
|
|
48
|
+
this._exactAnswer = exactAnswer;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @returns The exactAnswer property of the QuestionsAnswersWidgetItem.
|
|
52
|
+
*/
|
|
53
|
+
get exactAnswer() {
|
|
54
|
+
return this._exactAnswer;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Sets the exactAnswer to undefined
|
|
58
|
+
*/
|
|
59
|
+
resetExactAnswer() {
|
|
60
|
+
this._exactAnswer = undefined;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Sets the relatedQuestions for the QuestionsAnswersWidgetItem.
|
|
64
|
+
* This method updates the `relatedQuestions` property of the questions answers configuration.
|
|
65
|
+
*
|
|
66
|
+
* @param relatedQuestions - The relatedQuestions that the visitor enters to search for relevant content.
|
|
67
|
+
*/
|
|
68
|
+
set relatedQuestions(relatedQuestions) {
|
|
69
|
+
this._validateRelatedQuestions(relatedQuestions);
|
|
70
|
+
this._relatedQuestions = relatedQuestions;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @returns The relatedQuestions property of the QuestionsAnswersWidgetItem.
|
|
74
|
+
*/
|
|
75
|
+
get relatedQuestions() {
|
|
76
|
+
return this._relatedQuestions;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Sets the relatedQuestions to undefined
|
|
80
|
+
*/
|
|
81
|
+
resetRelatedQuestions() {
|
|
82
|
+
this._relatedQuestions = undefined;
|
|
83
|
+
}
|
|
84
|
+
_exactAnswerToDTO() {
|
|
85
|
+
if (!this._exactAnswer)
|
|
86
|
+
return;
|
|
87
|
+
return { include_sources: this._exactAnswer.includeSources, query_types: this._exactAnswer.queryTypes };
|
|
88
|
+
}
|
|
89
|
+
_relatedQuestionsToDTO() {
|
|
90
|
+
if (!this._relatedQuestions)
|
|
91
|
+
return;
|
|
92
|
+
return {
|
|
93
|
+
filter: this._relatedQuestions.filter?.toDTO(),
|
|
94
|
+
include_sources: this._relatedQuestions.includeSources,
|
|
95
|
+
limit: this._relatedQuestions.limit,
|
|
96
|
+
offset: this._relatedQuestions.offset,
|
|
97
|
+
rule: this._ruleToDTO(this._rule)
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Maps the questions answers widget item to its DTO format.
|
|
102
|
+
*/
|
|
103
|
+
toDTO() {
|
|
104
|
+
return {
|
|
105
|
+
...super.toDTO(),
|
|
106
|
+
questions: {
|
|
107
|
+
keyphrase: this._keyphrase,
|
|
108
|
+
...{ exact_answer: this._exactAnswerToDTO() },
|
|
109
|
+
...{ related_questions: this._relatedQuestionsToDTO() }
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Recipe, Recommendation, RecommendationOptions, WidgetItemRecommendationDTO } from './interfaces';
|
|
2
|
+
import { ResultsWidgetItem } from './results-widget-item';
|
|
3
|
+
export declare class RecommendationWidgetItem extends ResultsWidgetItem {
|
|
4
|
+
protected _recommendation?: Recommendation;
|
|
5
|
+
/**
|
|
6
|
+
* Creates and holds the functionality of a recommendation widget item.
|
|
7
|
+
* @param entity - The widget's item entity.
|
|
8
|
+
* @param widgetId - The widget's item id.
|
|
9
|
+
* @param recommendationOptions - The widget's recommendation options object.
|
|
10
|
+
*/
|
|
11
|
+
constructor(entity: string, widgetId: string, recommendationOptions?: RecommendationOptions);
|
|
12
|
+
/**
|
|
13
|
+
* Sets the recommendations to an empty object.
|
|
14
|
+
*/
|
|
15
|
+
resetRecommendations(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Sets the recipe for the RecommendationWidgetItem.
|
|
18
|
+
* This method updates the `recipe` property of the recommendations configuration.
|
|
19
|
+
* The recipe is used to specify which recommendation algorithm to use.
|
|
20
|
+
* If not provided, the API uses the recipe specified in CEC.
|
|
21
|
+
*
|
|
22
|
+
* @param recipe - {@link Recipe} The recipe configuration with id and version.
|
|
23
|
+
* @throws Error If the recipe id is empty or version is less than 1.
|
|
24
|
+
*/
|
|
25
|
+
set recipe(recipe: Recipe);
|
|
26
|
+
/**
|
|
27
|
+
* @returns The recipe property of the RecommendationWidgetItem.
|
|
28
|
+
*/
|
|
29
|
+
get recipe(): Recipe | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Sets the recipe to undefined
|
|
32
|
+
*/
|
|
33
|
+
resetRecipe(): void;
|
|
34
|
+
private _validateRecipe;
|
|
35
|
+
/**
|
|
36
|
+
* Maps the recommendation widget item to its DTO format.
|
|
37
|
+
*/
|
|
38
|
+
toDTO(): WidgetItemRecommendationDTO;
|
|
39
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
export class RecommendationWidgetItem extends ResultsWidgetItem {
|
|
5
|
+
/**
|
|
6
|
+
* Creates and holds the functionality of a recommendation widget item.
|
|
7
|
+
* @param entity - The widget's item entity.
|
|
8
|
+
* @param widgetId - The widget's item id.
|
|
9
|
+
* @param recommendationOptions - The widget's recommendation options object.
|
|
10
|
+
*/
|
|
11
|
+
constructor(entity, widgetId, recommendationOptions) {
|
|
12
|
+
const { recipe, ...rest } = recommendationOptions || {};
|
|
13
|
+
super(entity, widgetId, rest);
|
|
14
|
+
if (!recommendationOptions)
|
|
15
|
+
return;
|
|
16
|
+
if (!Object.keys(recommendationOptions).length) {
|
|
17
|
+
this._recommendation = {};
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
this._validateRecipe(recipe);
|
|
21
|
+
this._recommendation = { recipe };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Sets the recommendations to an empty object.
|
|
25
|
+
*/
|
|
26
|
+
resetRecommendations() {
|
|
27
|
+
this._recommendation = {};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Sets the recipe for the RecommendationWidgetItem.
|
|
31
|
+
* This method updates the `recipe` property of the recommendations configuration.
|
|
32
|
+
* The recipe is used to specify which recommendation algorithm to use.
|
|
33
|
+
* If not provided, the API uses the recipe specified in CEC.
|
|
34
|
+
*
|
|
35
|
+
* @param recipe - {@link Recipe} The recipe configuration with id and version.
|
|
36
|
+
* @throws Error If the recipe id is empty or version is less than 1.
|
|
37
|
+
*/
|
|
38
|
+
set recipe(recipe) {
|
|
39
|
+
this._validateRecipe(recipe);
|
|
40
|
+
this._recommendation = {
|
|
41
|
+
...this._recommendation,
|
|
42
|
+
recipe
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @returns The recipe property of the RecommendationWidgetItem.
|
|
47
|
+
*/
|
|
48
|
+
get recipe() {
|
|
49
|
+
return this._recommendation?.recipe;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Sets the recipe to undefined
|
|
53
|
+
*/
|
|
54
|
+
resetRecipe() {
|
|
55
|
+
this._recommendation = undefined;
|
|
56
|
+
}
|
|
57
|
+
_validateRecipe(recipe) {
|
|
58
|
+
if (!recipe)
|
|
59
|
+
return;
|
|
60
|
+
this._validateNonEmptyString(ErrorMessages.IV_0023, recipe.id);
|
|
61
|
+
if (recipe.version < 1)
|
|
62
|
+
throw new Error(ErrorMessages.IV_0024);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Maps the recommendation widget item to its DTO format.
|
|
66
|
+
*/
|
|
67
|
+
toDTO() {
|
|
68
|
+
const baseDTO = super.toDTO();
|
|
69
|
+
const resultsDTO = this._resultsToDTO();
|
|
70
|
+
const recommendationsDTO = {
|
|
71
|
+
...(this._recommendation?.recipe && { recipe: this._recommendation.recipe }),
|
|
72
|
+
...resultsDTO
|
|
73
|
+
};
|
|
74
|
+
const dto = {
|
|
75
|
+
...baseDTO,
|
|
76
|
+
recommendations: Object.values(recommendationsDTO).length || this._recommendation ? recommendationsDTO : undefined
|
|
77
|
+
};
|
|
78
|
+
return dto;
|
|
79
|
+
}
|
|
80
|
+
}
|