@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.
Files changed (224) hide show
  1. package/README.md +95 -0
  2. package/browser.cjs +3 -0
  3. package/browser.d.ts +2 -0
  4. package/browser.js +3 -0
  5. package/dist/cjs/package.json +40 -0
  6. package/dist/cjs/src/browser.d.ts +32 -0
  7. package/dist/cjs/src/browser.js +53 -0
  8. package/dist/cjs/src/lib/consts.d.ts +38 -0
  9. package/dist/cjs/src/lib/consts.js +49 -0
  10. package/dist/cjs/src/lib/events/entity-view-event.d.ts +22 -0
  11. package/dist/cjs/src/lib/events/entity-view-event.js +51 -0
  12. package/dist/cjs/src/lib/events/interfaces.d.ts +135 -0
  13. package/dist/cjs/src/lib/events/interfaces.js +3 -0
  14. package/dist/cjs/src/lib/events/widget-facet-click-event.d.ts +30 -0
  15. package/dist/cjs/src/lib/events/widget-facet-click-event.js +92 -0
  16. package/dist/cjs/src/lib/events/widget-item-click-event.d.ts +28 -0
  17. package/dist/cjs/src/lib/events/widget-item-click-event.js +72 -0
  18. package/dist/cjs/src/lib/events/widget-navigation-click-event.d.ts +26 -0
  19. package/dist/cjs/src/lib/events/widget-navigation-click-event.js +49 -0
  20. package/dist/cjs/src/lib/events/widget-suggestion-click-event.d.ts +29 -0
  21. package/dist/cjs/src/lib/events/widget-suggestion-click-event.js +75 -0
  22. package/dist/cjs/src/lib/events/widget-view-event.d.ts +28 -0
  23. package/dist/cjs/src/lib/events/widget-view-event.js +75 -0
  24. package/dist/cjs/src/lib/initializer/browser/initializer.d.ts +23 -0
  25. package/dist/cjs/src/lib/initializer/browser/initializer.js +44 -0
  26. package/dist/cjs/src/lib/initializer/server/initializer.d.ts +21 -0
  27. package/dist/cjs/src/lib/initializer/server/initializer.js +39 -0
  28. package/dist/cjs/src/lib/request-entities/context/context.d.ts +141 -0
  29. package/dist/cjs/src/lib/request-entities/context/context.js +273 -0
  30. package/dist/cjs/src/lib/request-entities/context/interfaces.d.ts +106 -0
  31. package/dist/cjs/src/lib/request-entities/context/interfaces.js +2 -0
  32. package/dist/cjs/src/lib/request-entities/filters/base-filter.d.ts +17 -0
  33. package/dist/cjs/src/lib/request-entities/filters/base-filter.js +17 -0
  34. package/dist/cjs/src/lib/request-entities/filters/comparison-filter.d.ts +18 -0
  35. package/dist/cjs/src/lib/request-entities/filters/comparison-filter.js +30 -0
  36. package/dist/cjs/src/lib/request-entities/filters/facet/comparison-facet-filter.d.ts +18 -0
  37. package/dist/cjs/src/lib/request-entities/filters/facet/comparison-facet-filter.js +26 -0
  38. package/dist/cjs/src/lib/request-entities/filters/facet/interfaces.d.ts +21 -0
  39. package/dist/cjs/src/lib/request-entities/filters/facet/interfaces.js +2 -0
  40. package/dist/cjs/src/lib/request-entities/filters/facet/list-facet-filter.d.ts +18 -0
  41. package/dist/cjs/src/lib/request-entities/filters/facet/list-facet-filter.js +26 -0
  42. package/dist/cjs/src/lib/request-entities/filters/facet/logical-facet-filter.d.ts +19 -0
  43. package/dist/cjs/src/lib/request-entities/filters/facet/logical-facet-filter.js +26 -0
  44. package/dist/cjs/src/lib/request-entities/filters/facet/not-facet-filter.d.ts +7 -0
  45. package/dist/cjs/src/lib/request-entities/filters/facet/not-facet-filter.js +22 -0
  46. package/dist/cjs/src/lib/request-entities/filters/geo-filter.d.ts +19 -0
  47. package/dist/cjs/src/lib/request-entities/filters/geo-filter.js +49 -0
  48. package/dist/cjs/src/lib/request-entities/filters/geo-within-filter.d.ts +19 -0
  49. package/dist/cjs/src/lib/request-entities/filters/geo-within-filter.js +44 -0
  50. package/dist/cjs/src/lib/request-entities/filters/interfaces.d.ts +66 -0
  51. package/dist/cjs/src/lib/request-entities/filters/interfaces.js +2 -0
  52. package/dist/cjs/src/lib/request-entities/filters/list-filter.d.ts +18 -0
  53. package/dist/cjs/src/lib/request-entities/filters/list-filter.js +30 -0
  54. package/dist/cjs/src/lib/request-entities/filters/logical-filter.d.ts +16 -0
  55. package/dist/cjs/src/lib/request-entities/filters/logical-filter.js +32 -0
  56. package/dist/cjs/src/lib/request-entities/widgets/interfaces.d.ts +372 -0
  57. package/dist/cjs/src/lib/request-entities/widgets/interfaces.js +2 -0
  58. package/dist/cjs/src/lib/request-entities/widgets/questions-answers-widget-item.d.ts +62 -0
  59. package/dist/cjs/src/lib/request-entities/widgets/questions-answers-widget-item.js +117 -0
  60. package/dist/cjs/src/lib/request-entities/widgets/recommendation-widget-item.d.ts +39 -0
  61. package/dist/cjs/src/lib/request-entities/widgets/recommendation-widget-item.js +84 -0
  62. package/dist/cjs/src/lib/request-entities/widgets/results-widget-item.d.ts +76 -0
  63. package/dist/cjs/src/lib/request-entities/widgets/results-widget-item.js +126 -0
  64. package/dist/cjs/src/lib/request-entities/widgets/rule-widget-item.d.ts +14 -0
  65. package/dist/cjs/src/lib/request-entities/widgets/rule-widget-item.js +71 -0
  66. package/dist/cjs/src/lib/request-entities/widgets/search-widget-item.d.ts +167 -0
  67. package/dist/cjs/src/lib/request-entities/widgets/search-widget-item.js +353 -0
  68. package/dist/cjs/src/lib/request-entities/widgets/utils.d.ts +8 -0
  69. package/dist/cjs/src/lib/request-entities/widgets/utils.js +14 -0
  70. package/dist/cjs/src/lib/request-entities/widgets/widget-item.d.ts +64 -0
  71. package/dist/cjs/src/lib/request-entities/widgets/widget-item.js +114 -0
  72. package/dist/cjs/src/lib/request-entities/widgets/widget-request-data.d.ts +15 -0
  73. package/dist/cjs/src/lib/request-entities/widgets/widget-request-data.js +30 -0
  74. package/dist/cjs/src/lib/requests/browser/entity-view-event.d.ts +6 -0
  75. package/dist/cjs/src/lib/requests/browser/entity-view-event.js +17 -0
  76. package/dist/cjs/src/lib/requests/browser/get-page-widget-data.d.ts +15 -0
  77. package/dist/cjs/src/lib/requests/browser/get-page-widget-data.js +25 -0
  78. package/dist/cjs/src/lib/requests/browser/get-widget-data.d.ts +9 -0
  79. package/dist/cjs/src/lib/requests/browser/get-widget-data.js +21 -0
  80. package/dist/cjs/src/lib/requests/browser/widget-facet-click-event.d.ts +7 -0
  81. package/dist/cjs/src/lib/requests/browser/widget-facet-click-event.js +18 -0
  82. package/dist/cjs/src/lib/requests/browser/widget-item-click-event.d.ts +7 -0
  83. package/dist/cjs/src/lib/requests/browser/widget-item-click-event.js +18 -0
  84. package/dist/cjs/src/lib/requests/browser/widget-navigation-click-event.d.ts +7 -0
  85. package/dist/cjs/src/lib/requests/browser/widget-navigation-click-event.js +18 -0
  86. package/dist/cjs/src/lib/requests/browser/widget-suggestion-click-event.d.ts +7 -0
  87. package/dist/cjs/src/lib/requests/browser/widget-suggestion-click-event.js +18 -0
  88. package/dist/cjs/src/lib/requests/browser/widget-view-event.d.ts +6 -0
  89. package/dist/cjs/src/lib/requests/browser/widget-view-event.js +17 -0
  90. package/dist/cjs/src/lib/requests/post-request.d.ts +57 -0
  91. package/dist/cjs/src/lib/requests/post-request.js +26 -0
  92. package/dist/cjs/src/lib/requests/server/entity-view-event-server.d.ts +8 -0
  93. package/dist/cjs/src/lib/requests/server/entity-view-event-server.js +18 -0
  94. package/dist/cjs/src/lib/requests/server/get-page-widget-data-server.d.ts +15 -0
  95. package/dist/cjs/src/lib/requests/server/get-page-widget-data-server.js +25 -0
  96. package/dist/cjs/src/lib/requests/server/get-widget-data-server.d.ts +8 -0
  97. package/dist/cjs/src/lib/requests/server/get-widget-data-server.js +19 -0
  98. package/dist/cjs/src/lib/requests/server/widget-facet-click-event-server.d.ts +9 -0
  99. package/dist/cjs/src/lib/requests/server/widget-facet-click-event-server.js +19 -0
  100. package/dist/cjs/src/lib/requests/server/widget-item-click-event-server.d.ts +9 -0
  101. package/dist/cjs/src/lib/requests/server/widget-item-click-event-server.js +19 -0
  102. package/dist/cjs/src/lib/requests/server/widget-navigation-click-event-server.d.ts +9 -0
  103. package/dist/cjs/src/lib/requests/server/widget-navigation-click-event-server.js +19 -0
  104. package/dist/cjs/src/lib/requests/server/widget-suggestion-click-event-server.d.ts +9 -0
  105. package/dist/cjs/src/lib/requests/server/widget-suggestion-click-event-server.js +19 -0
  106. package/dist/cjs/src/lib/requests/server/widget-view-event-server.d.ts +9 -0
  107. package/dist/cjs/src/lib/requests/server/widget-view-event-server.js +19 -0
  108. package/dist/cjs/src/lib/types.d.ts +14 -0
  109. package/dist/cjs/src/lib/types.js +2 -0
  110. package/dist/cjs/src/server.d.ts +32 -0
  111. package/dist/cjs/src/server.js +55 -0
  112. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  113. package/dist/esm/package.json +40 -0
  114. package/dist/esm/src/browser.d.ts +32 -0
  115. package/dist/esm/src/browser.js +26 -0
  116. package/dist/esm/src/lib/consts.d.ts +38 -0
  117. package/dist/esm/src/lib/consts.js +43 -0
  118. package/dist/esm/src/lib/events/entity-view-event.d.ts +22 -0
  119. package/dist/esm/src/lib/events/entity-view-event.js +47 -0
  120. package/dist/esm/src/lib/events/interfaces.d.ts +135 -0
  121. package/dist/esm/src/lib/events/interfaces.js +2 -0
  122. package/dist/esm/src/lib/events/widget-facet-click-event.d.ts +30 -0
  123. package/dist/esm/src/lib/events/widget-facet-click-event.js +88 -0
  124. package/dist/esm/src/lib/events/widget-item-click-event.d.ts +28 -0
  125. package/dist/esm/src/lib/events/widget-item-click-event.js +68 -0
  126. package/dist/esm/src/lib/events/widget-navigation-click-event.d.ts +26 -0
  127. package/dist/esm/src/lib/events/widget-navigation-click-event.js +45 -0
  128. package/dist/esm/src/lib/events/widget-suggestion-click-event.d.ts +29 -0
  129. package/dist/esm/src/lib/events/widget-suggestion-click-event.js +71 -0
  130. package/dist/esm/src/lib/events/widget-view-event.d.ts +28 -0
  131. package/dist/esm/src/lib/events/widget-view-event.js +71 -0
  132. package/dist/esm/src/lib/initializer/browser/initializer.d.ts +23 -0
  133. package/dist/esm/src/lib/initializer/browser/initializer.js +38 -0
  134. package/dist/esm/src/lib/initializer/server/initializer.d.ts +21 -0
  135. package/dist/esm/src/lib/initializer/server/initializer.js +33 -0
  136. package/dist/esm/src/lib/request-entities/context/context.d.ts +141 -0
  137. package/dist/esm/src/lib/request-entities/context/context.js +269 -0
  138. package/dist/esm/src/lib/request-entities/context/interfaces.d.ts +106 -0
  139. package/dist/esm/src/lib/request-entities/context/interfaces.js +1 -0
  140. package/dist/esm/src/lib/request-entities/filters/base-filter.d.ts +17 -0
  141. package/dist/esm/src/lib/request-entities/filters/base-filter.js +13 -0
  142. package/dist/esm/src/lib/request-entities/filters/comparison-filter.d.ts +18 -0
  143. package/dist/esm/src/lib/request-entities/filters/comparison-filter.js +26 -0
  144. package/dist/esm/src/lib/request-entities/filters/facet/comparison-facet-filter.d.ts +18 -0
  145. package/dist/esm/src/lib/request-entities/filters/facet/comparison-facet-filter.js +22 -0
  146. package/dist/esm/src/lib/request-entities/filters/facet/interfaces.d.ts +21 -0
  147. package/dist/esm/src/lib/request-entities/filters/facet/interfaces.js +1 -0
  148. package/dist/esm/src/lib/request-entities/filters/facet/list-facet-filter.d.ts +18 -0
  149. package/dist/esm/src/lib/request-entities/filters/facet/list-facet-filter.js +22 -0
  150. package/dist/esm/src/lib/request-entities/filters/facet/logical-facet-filter.d.ts +19 -0
  151. package/dist/esm/src/lib/request-entities/filters/facet/logical-facet-filter.js +22 -0
  152. package/dist/esm/src/lib/request-entities/filters/facet/not-facet-filter.d.ts +7 -0
  153. package/dist/esm/src/lib/request-entities/filters/facet/not-facet-filter.js +18 -0
  154. package/dist/esm/src/lib/request-entities/filters/geo-filter.d.ts +19 -0
  155. package/dist/esm/src/lib/request-entities/filters/geo-filter.js +45 -0
  156. package/dist/esm/src/lib/request-entities/filters/geo-within-filter.d.ts +19 -0
  157. package/dist/esm/src/lib/request-entities/filters/geo-within-filter.js +40 -0
  158. package/dist/esm/src/lib/request-entities/filters/interfaces.d.ts +66 -0
  159. package/dist/esm/src/lib/request-entities/filters/interfaces.js +1 -0
  160. package/dist/esm/src/lib/request-entities/filters/list-filter.d.ts +18 -0
  161. package/dist/esm/src/lib/request-entities/filters/list-filter.js +26 -0
  162. package/dist/esm/src/lib/request-entities/filters/logical-filter.d.ts +16 -0
  163. package/dist/esm/src/lib/request-entities/filters/logical-filter.js +28 -0
  164. package/dist/esm/src/lib/request-entities/widgets/interfaces.d.ts +372 -0
  165. package/dist/esm/src/lib/request-entities/widgets/interfaces.js +1 -0
  166. package/dist/esm/src/lib/request-entities/widgets/questions-answers-widget-item.d.ts +62 -0
  167. package/dist/esm/src/lib/request-entities/widgets/questions-answers-widget-item.js +113 -0
  168. package/dist/esm/src/lib/request-entities/widgets/recommendation-widget-item.d.ts +39 -0
  169. package/dist/esm/src/lib/request-entities/widgets/recommendation-widget-item.js +80 -0
  170. package/dist/esm/src/lib/request-entities/widgets/results-widget-item.d.ts +76 -0
  171. package/dist/esm/src/lib/request-entities/widgets/results-widget-item.js +122 -0
  172. package/dist/esm/src/lib/request-entities/widgets/rule-widget-item.d.ts +14 -0
  173. package/dist/esm/src/lib/request-entities/widgets/rule-widget-item.js +67 -0
  174. package/dist/esm/src/lib/request-entities/widgets/search-widget-item.d.ts +167 -0
  175. package/dist/esm/src/lib/request-entities/widgets/search-widget-item.js +349 -0
  176. package/dist/esm/src/lib/request-entities/widgets/utils.d.ts +8 -0
  177. package/dist/esm/src/lib/request-entities/widgets/utils.js +10 -0
  178. package/dist/esm/src/lib/request-entities/widgets/widget-item.d.ts +64 -0
  179. package/dist/esm/src/lib/request-entities/widgets/widget-item.js +110 -0
  180. package/dist/esm/src/lib/request-entities/widgets/widget-request-data.d.ts +15 -0
  181. package/dist/esm/src/lib/request-entities/widgets/widget-request-data.js +26 -0
  182. package/dist/esm/src/lib/requests/browser/entity-view-event.d.ts +6 -0
  183. package/dist/esm/src/lib/requests/browser/entity-view-event.js +13 -0
  184. package/dist/esm/src/lib/requests/browser/get-page-widget-data.d.ts +15 -0
  185. package/dist/esm/src/lib/requests/browser/get-page-widget-data.js +21 -0
  186. package/dist/esm/src/lib/requests/browser/get-widget-data.d.ts +9 -0
  187. package/dist/esm/src/lib/requests/browser/get-widget-data.js +18 -0
  188. package/dist/esm/src/lib/requests/browser/widget-facet-click-event.d.ts +7 -0
  189. package/dist/esm/src/lib/requests/browser/widget-facet-click-event.js +14 -0
  190. package/dist/esm/src/lib/requests/browser/widget-item-click-event.d.ts +7 -0
  191. package/dist/esm/src/lib/requests/browser/widget-item-click-event.js +14 -0
  192. package/dist/esm/src/lib/requests/browser/widget-navigation-click-event.d.ts +7 -0
  193. package/dist/esm/src/lib/requests/browser/widget-navigation-click-event.js +14 -0
  194. package/dist/esm/src/lib/requests/browser/widget-suggestion-click-event.d.ts +7 -0
  195. package/dist/esm/src/lib/requests/browser/widget-suggestion-click-event.js +14 -0
  196. package/dist/esm/src/lib/requests/browser/widget-view-event.d.ts +6 -0
  197. package/dist/esm/src/lib/requests/browser/widget-view-event.js +13 -0
  198. package/dist/esm/src/lib/requests/post-request.d.ts +57 -0
  199. package/dist/esm/src/lib/requests/post-request.js +22 -0
  200. package/dist/esm/src/lib/requests/server/entity-view-event-server.d.ts +8 -0
  201. package/dist/esm/src/lib/requests/server/entity-view-event-server.js +14 -0
  202. package/dist/esm/src/lib/requests/server/get-page-widget-data-server.d.ts +15 -0
  203. package/dist/esm/src/lib/requests/server/get-page-widget-data-server.js +21 -0
  204. package/dist/esm/src/lib/requests/server/get-widget-data-server.d.ts +8 -0
  205. package/dist/esm/src/lib/requests/server/get-widget-data-server.js +15 -0
  206. package/dist/esm/src/lib/requests/server/widget-facet-click-event-server.d.ts +9 -0
  207. package/dist/esm/src/lib/requests/server/widget-facet-click-event-server.js +15 -0
  208. package/dist/esm/src/lib/requests/server/widget-item-click-event-server.d.ts +9 -0
  209. package/dist/esm/src/lib/requests/server/widget-item-click-event-server.js +15 -0
  210. package/dist/esm/src/lib/requests/server/widget-navigation-click-event-server.d.ts +9 -0
  211. package/dist/esm/src/lib/requests/server/widget-navigation-click-event-server.js +15 -0
  212. package/dist/esm/src/lib/requests/server/widget-suggestion-click-event-server.d.ts +9 -0
  213. package/dist/esm/src/lib/requests/server/widget-suggestion-click-event-server.js +15 -0
  214. package/dist/esm/src/lib/requests/server/widget-view-event-server.d.ts +9 -0
  215. package/dist/esm/src/lib/requests/server/widget-view-event-server.js +15 -0
  216. package/dist/esm/src/lib/types.d.ts +14 -0
  217. package/dist/esm/src/lib/types.js +1 -0
  218. package/dist/esm/src/server.d.ts +32 -0
  219. package/dist/esm/src/server.js +28 -0
  220. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  221. package/package.json +40 -0
  222. package/server.cjs +3 -0
  223. package/server.d.ts +2 -0
  224. package/server.js +3 -0
@@ -0,0 +1,30 @@
1
+ import type { NestedObject } from '@sitecore-cloudsdk/utils';
2
+ import type { FacetFilterEventParams, RangeFacetFilterEventParams, SearchEventRequest, WidgetFacetClickEventParams } from './interfaces';
3
+ export declare class WidgetFacetClickEvent {
4
+ protected request: SearchEventRequest;
5
+ protected pathname: string;
6
+ protected widgetId: string;
7
+ protected page?: string;
8
+ protected currency?: string;
9
+ protected language?: string;
10
+ protected channel?: string;
11
+ protected filters: Array<FacetFilterEventParams | RangeFacetFilterEventParams>;
12
+ /**
13
+ * Creates a search widget facet click event.
14
+ * @param widgetFacetClickEventParams - An object with the widget facet click params
15
+ * {@link WidgetFacetClickEventParams}
16
+ */
17
+ constructor({ request, pathname, widgetId, page, currency, language, channel, filters }: WidgetFacetClickEventParams);
18
+ private _validate;
19
+ private _mapFiltersToDTO;
20
+ private _mapRequestToDTO;
21
+ private _rangeFacetFilterTypeGuard;
22
+ toDTO(): {
23
+ channel: string | undefined;
24
+ currency: string | undefined;
25
+ language: string | undefined;
26
+ page: string | undefined;
27
+ searchData: NestedObject;
28
+ type: string;
29
+ };
30
+ }
@@ -0,0 +1,88 @@
1
+ import { ErrorMessages } from '../consts';
2
+ export class WidgetFacetClickEvent {
3
+ /**
4
+ * Creates a search widget facet click event.
5
+ * @param widgetFacetClickEventParams - An object with the widget facet click params
6
+ * {@link WidgetFacetClickEventParams}
7
+ */
8
+ constructor({ request, pathname, widgetId, page, currency, language, channel, filters }) {
9
+ this._validate(currency, language);
10
+ this.request = request;
11
+ this.currency = currency;
12
+ this.language = language;
13
+ this.channel = channel;
14
+ this.filters = filters;
15
+ this.page = page;
16
+ this.pathname = pathname;
17
+ this.widgetId = widgetId;
18
+ }
19
+ _validate(currency, language) {
20
+ if (currency !== undefined && currency.length !== 3)
21
+ throw new Error(ErrorMessages.IV_0015);
22
+ if (language !== undefined && language.length !== 2)
23
+ throw new Error(ErrorMessages.IV_0011);
24
+ }
25
+ _mapFiltersToDTO() {
26
+ return this.filters.map((filter) => {
27
+ if (this._rangeFacetFilterTypeGuard(filter))
28
+ return {
29
+ display_name: [filter.displayName],
30
+ end_value: filter.endValue,
31
+ facet_position: 0,
32
+ name: filter.name,
33
+ start_value: filter.startValue,
34
+ title: filter.title,
35
+ value: [filter.value],
36
+ value_position: [filter.valuePosition]
37
+ };
38
+ return {
39
+ display_name: [filter.displayName],
40
+ facet_position: filter.facetPosition,
41
+ name: filter.name,
42
+ title: filter.title,
43
+ value: [filter.value],
44
+ value_position: [filter.valuePosition]
45
+ };
46
+ });
47
+ }
48
+ _mapRequestToDTO() {
49
+ return {
50
+ advanced_query_text: this.request.advancedQueryText,
51
+ keyword: this.request.keyword,
52
+ modified_keyword: this.request.modifiedKeyword,
53
+ num_requested: this.request.numRequested,
54
+ num_results: this.request.numResults,
55
+ page_number: this.request.pageNumber,
56
+ page_size: this.request.pageSize,
57
+ redirect_url: this.request.redirectUrl,
58
+ total_results: this.request.totalResults
59
+ };
60
+ }
61
+ _rangeFacetFilterTypeGuard(filter) {
62
+ return 'startValue' in filter;
63
+ }
64
+ toDTO() {
65
+ const filtersDTO = this._mapFiltersToDTO();
66
+ const requestDTO = this._mapRequestToDTO();
67
+ return {
68
+ channel: this.channel,
69
+ currency: this.currency,
70
+ language: this.language,
71
+ page: this.page,
72
+ searchData: {
73
+ action_cause: 'filter',
74
+ value: {
75
+ context: {
76
+ page: {
77
+ uri: this.pathname
78
+ }
79
+ },
80
+ filters: filtersDTO,
81
+ request: requestDTO,
82
+ rfk_id: this.widgetId
83
+ }
84
+ },
85
+ type: 'SC_SEARCH_WIDGET_CLICK'
86
+ };
87
+ }
88
+ }
@@ -0,0 +1,28 @@
1
+ import type { NestedObject } from '@sitecore-cloudsdk/utils';
2
+ import type { SearchEventEntity, SearchEventRequest, WidgetItemClickEventParams } from './interfaces';
3
+ export declare class WidgetItemClickEvent {
4
+ protected request: SearchEventRequest;
5
+ protected entity: SearchEventEntity;
6
+ protected itemPosition: number;
7
+ protected pathname: string;
8
+ protected widgetId: string;
9
+ protected page?: string;
10
+ protected currency?: string;
11
+ protected language?: string;
12
+ protected channel?: string;
13
+ /**
14
+ * Creates a search widget item event.
15
+ * @param widgetItemClickEventParams - An object with the widget item click params
16
+ * {@link WidgetItemClickEventParams}
17
+ */
18
+ constructor({ request, entity, itemPosition, pathname, widgetId, page, currency, language, channel }: WidgetItemClickEventParams);
19
+ private _validate;
20
+ toDTO(): {
21
+ channel: string | undefined;
22
+ currency: string | undefined;
23
+ language: string | undefined;
24
+ page: string | undefined;
25
+ searchData: NestedObject;
26
+ type: string;
27
+ };
28
+ }
@@ -0,0 +1,68 @@
1
+ import { ErrorMessages } from '../consts';
2
+ export class WidgetItemClickEvent {
3
+ /**
4
+ * Creates a search widget item event.
5
+ * @param widgetItemClickEventParams - An object with the widget item click params
6
+ * {@link WidgetItemClickEventParams}
7
+ */
8
+ constructor({ request, entity, itemPosition, pathname, widgetId, page, currency, language, channel }) {
9
+ this._validate(currency, language);
10
+ this.entity = entity;
11
+ this.itemPosition = itemPosition;
12
+ this.page = page;
13
+ this.request = request;
14
+ this.pathname = pathname;
15
+ this.widgetId = widgetId;
16
+ this.currency = currency;
17
+ this.language = language;
18
+ this.channel = channel;
19
+ }
20
+ _validate(currency, language) {
21
+ if (currency !== undefined && currency.length !== 3)
22
+ throw new Error(ErrorMessages.IV_0015);
23
+ if (language !== undefined && language.length !== 2)
24
+ throw new Error(ErrorMessages.IV_0011);
25
+ }
26
+ toDTO() {
27
+ const eventRequestDTO = {
28
+ advanced_query_text: this.request.advancedQueryText,
29
+ keyword: this.request.keyword,
30
+ modified_keyword: this.request.modifiedKeyword,
31
+ num_requested: this.request.numRequested,
32
+ num_results: this.request.numResults,
33
+ page_number: this.request.pageNumber,
34
+ page_size: this.request.pageSize,
35
+ redirect_url: this.request.redirectUrl,
36
+ total_results: this.request.totalResults
37
+ };
38
+ const eventEntityDTO = {
39
+ attributes: this.entity.attributes,
40
+ entity_subtype: this.entity.entityType,
41
+ entity_type: this.entity.entity,
42
+ id: this.entity.id,
43
+ source_id: this.entity.sourceId,
44
+ uri: this.entity.uri
45
+ };
46
+ return {
47
+ channel: this.channel,
48
+ currency: this.currency,
49
+ language: this.language,
50
+ page: this.page,
51
+ searchData: {
52
+ action_cause: 'entity',
53
+ value: {
54
+ context: {
55
+ page: {
56
+ uri: this.pathname
57
+ }
58
+ },
59
+ entities: [eventEntityDTO],
60
+ index: this.itemPosition,
61
+ request: eventRequestDTO,
62
+ rfk_id: this.widgetId
63
+ }
64
+ },
65
+ type: 'SC_SEARCH_WIDGET_CLICK'
66
+ };
67
+ }
68
+ }
@@ -0,0 +1,26 @@
1
+ import type { NestedObject } from '@sitecore-cloudsdk/utils';
2
+ import type { WidgetNavigationClickEventParams } from './interfaces';
3
+ export declare class WidgetNavigationClickEvent {
4
+ protected itemPosition: number;
5
+ protected pathname: string;
6
+ protected widgetIdentifier: string;
7
+ protected page?: string;
8
+ protected currency?: string;
9
+ protected language?: string;
10
+ protected channel?: string;
11
+ /**
12
+ * Creates a search widget navigation event.
13
+ * @param widgetNavigationClickEventParams - an object containing navigation click params
14
+ * {@link WidgetNavigationClickEventParams}
15
+ */
16
+ constructor({ itemPosition, pathname, widgetId, page, currency, language, channel }: WidgetNavigationClickEventParams);
17
+ private _validate;
18
+ toDTO(): {
19
+ channel: string | undefined;
20
+ currency: string | undefined;
21
+ language: string | undefined;
22
+ page: string | undefined;
23
+ searchData: NestedObject;
24
+ type: string;
25
+ };
26
+ }
@@ -0,0 +1,45 @@
1
+ import { ErrorMessages } from '../consts';
2
+ export class WidgetNavigationClickEvent {
3
+ /**
4
+ * Creates a search widget navigation event.
5
+ * @param widgetNavigationClickEventParams - an object containing navigation click params
6
+ * {@link WidgetNavigationClickEventParams}
7
+ */
8
+ constructor({ itemPosition, pathname, widgetId, page, currency, language, channel }) {
9
+ this._validate(currency, language);
10
+ this.itemPosition = itemPosition;
11
+ this.page = page;
12
+ this.pathname = pathname;
13
+ this.widgetIdentifier = widgetId;
14
+ this.currency = currency;
15
+ this.language = language;
16
+ this.channel = channel;
17
+ }
18
+ _validate(currency, language) {
19
+ if (currency !== undefined && currency.length !== 3)
20
+ throw new Error(ErrorMessages.IV_0015);
21
+ if (language !== undefined && language.length !== 2)
22
+ throw new Error(ErrorMessages.IV_0011);
23
+ }
24
+ toDTO() {
25
+ return {
26
+ channel: this.channel,
27
+ currency: this.currency,
28
+ language: this.language,
29
+ page: this.page,
30
+ searchData: {
31
+ action_cause: 'navigation',
32
+ value: {
33
+ context: {
34
+ page: {
35
+ uri: this.pathname
36
+ }
37
+ },
38
+ index: this.itemPosition,
39
+ rfk_id: this.widgetIdentifier
40
+ }
41
+ },
42
+ type: 'SC_SEARCH_WIDGET_NAVIGATION_CLICK'
43
+ };
44
+ }
45
+ }
@@ -0,0 +1,29 @@
1
+ import type { NestedObject } from '@sitecore-cloudsdk/utils';
2
+ import type { SearchEventRequest, SuggestionFilterEventParams, WidgetSuggestionClickEventParams } from './interfaces';
3
+ export declare class WidgetSuggestionClickEvent {
4
+ protected request: SearchEventRequest;
5
+ protected filters?: Array<SuggestionFilterEventParams>;
6
+ protected pathname: string;
7
+ protected page?: string;
8
+ protected widgetIdentifier: string;
9
+ protected currency?: string;
10
+ protected language?: string;
11
+ protected channel?: string;
12
+ /**
13
+ * Creates a widget suggestion click event.
14
+ * @param widgetSuggestionClickEventParams - An object with the widget suggestion click event params
15
+ * {@link WidgetSuggestionClickEventParams}
16
+ */
17
+ constructor({ request, filters, pathname, page, widgetId, currency, language, channel }: WidgetSuggestionClickEventParams);
18
+ private _validate;
19
+ private _mapFiltersToDTO;
20
+ private _mapRequestToDTO;
21
+ toDTO(): {
22
+ channel: string | undefined;
23
+ currency: string | undefined;
24
+ language: string | undefined;
25
+ page: string | undefined;
26
+ searchData: NestedObject;
27
+ type: string;
28
+ };
29
+ }
@@ -0,0 +1,71 @@
1
+ import { ErrorMessages } from '../consts';
2
+ export class WidgetSuggestionClickEvent {
3
+ /**
4
+ * Creates a widget suggestion click event.
5
+ * @param widgetSuggestionClickEventParams - An object with the widget suggestion click event params
6
+ * {@link WidgetSuggestionClickEventParams}
7
+ */
8
+ constructor({ request, filters, pathname, page, widgetId, currency, language, channel }) {
9
+ this._validate(currency, language);
10
+ this.request = request;
11
+ this.filters = filters;
12
+ this.pathname = pathname;
13
+ this.page = page;
14
+ this.widgetIdentifier = widgetId;
15
+ this.currency = currency;
16
+ this.language = language;
17
+ this.channel = channel;
18
+ }
19
+ _validate(currency, language) {
20
+ if (currency !== undefined && currency.length !== 3)
21
+ throw new Error(ErrorMessages.IV_0015);
22
+ if (language !== undefined && language.length !== 2)
23
+ throw new Error(ErrorMessages.IV_0011);
24
+ }
25
+ _mapFiltersToDTO() {
26
+ return this.filters?.map((filter) => ({
27
+ display_name: [filter.displayName],
28
+ name: filter.name,
29
+ title: filter.title,
30
+ value: [filter.value],
31
+ value_position: [filter.valuePosition]
32
+ }));
33
+ }
34
+ _mapRequestToDTO() {
35
+ return {
36
+ advanced_query_text: this.request.advancedQueryText,
37
+ keyword: this.request.keyword,
38
+ modified_keyword: this.request.modifiedKeyword,
39
+ num_requested: this.request.numRequested,
40
+ num_results: this.request.numResults,
41
+ page_number: this.request.pageNumber,
42
+ page_size: this.request.pageSize,
43
+ redirect_url: this.request.redirectUrl,
44
+ total_results: this.request.totalResults
45
+ };
46
+ }
47
+ toDTO() {
48
+ const filtersDTO = this._mapFiltersToDTO();
49
+ const requestDTO = this._mapRequestToDTO();
50
+ return {
51
+ channel: this.channel,
52
+ currency: this.currency,
53
+ language: this.language,
54
+ page: this.page,
55
+ searchData: {
56
+ action_cause: 'suggestion',
57
+ value: {
58
+ context: {
59
+ page: {
60
+ uri: this.pathname
61
+ }
62
+ },
63
+ filters: filtersDTO,
64
+ request: requestDTO,
65
+ rfk_id: this.widgetIdentifier
66
+ }
67
+ },
68
+ type: 'SC_SEARCH_WIDGET_CLICK'
69
+ };
70
+ }
71
+ }
@@ -0,0 +1,28 @@
1
+ import type { NestedObject } from '@sitecore-cloudsdk/utils';
2
+ import type { SearchEventEntity, SearchEventRequest, WidgetViewEventParams } from './interfaces';
3
+ export declare class WidgetViewEvent {
4
+ protected request: SearchEventRequest;
5
+ protected entities: SearchEventEntity[];
6
+ protected pathname: string;
7
+ protected widgetIdentifier: string;
8
+ protected page?: string;
9
+ protected currency?: string;
10
+ protected language?: string;
11
+ protected channel?: string;
12
+ /**
13
+ * Creates a search widget view event.
14
+ * @param widgetViewEventParams - An object with the widget view events params {@link WidgetViewEventParams}
15
+ */
16
+ constructor({ request, entities, pathname, widgetId, page, currency, language, channel }: WidgetViewEventParams);
17
+ private _validate;
18
+ private _mapEntitiesToDTO;
19
+ private _mapRequestToDTO;
20
+ toDTO(): {
21
+ channel: string | undefined;
22
+ currency: string | undefined;
23
+ language: string | undefined;
24
+ page: string | undefined;
25
+ searchData: NestedObject;
26
+ type: string;
27
+ };
28
+ }
@@ -0,0 +1,71 @@
1
+ import { ErrorMessages } from '../consts';
2
+ export class WidgetViewEvent {
3
+ /**
4
+ * Creates a search widget view event.
5
+ * @param widgetViewEventParams - An object with the widget view events params {@link WidgetViewEventParams}
6
+ */
7
+ constructor({ request, entities, pathname, widgetId, page, currency, language, channel }) {
8
+ this._validate(currency, language);
9
+ this.entities = entities;
10
+ this.page = page;
11
+ this.request = request;
12
+ this.pathname = pathname;
13
+ this.widgetIdentifier = widgetId;
14
+ this.currency = currency;
15
+ this.language = language;
16
+ this.channel = channel;
17
+ }
18
+ _validate(currency, language) {
19
+ if (currency !== undefined && currency.length !== 3)
20
+ throw new Error(ErrorMessages.IV_0015);
21
+ if (language !== undefined && language.length !== 2)
22
+ throw new Error(ErrorMessages.IV_0011);
23
+ }
24
+ _mapEntitiesToDTO() {
25
+ return this.entities.map((entity) => ({
26
+ attributes: entity.attributes,
27
+ entity_subtype: entity.entityType,
28
+ entity_type: entity.entity,
29
+ id: entity.id,
30
+ source_id: entity.sourceId,
31
+ uri: entity.uri
32
+ }));
33
+ }
34
+ _mapRequestToDTO() {
35
+ return {
36
+ advanced_query_text: this.request.advancedQueryText,
37
+ keyword: this.request.keyword,
38
+ modified_keyword: this.request.modifiedKeyword,
39
+ num_requested: this.request.numRequested,
40
+ num_results: this.request.numResults,
41
+ page_number: this.request.pageNumber,
42
+ page_size: this.request.pageSize,
43
+ redirect_url: this.request.redirectUrl,
44
+ total_results: this.request.totalResults
45
+ };
46
+ }
47
+ toDTO() {
48
+ const entitiesDTO = this._mapEntitiesToDTO();
49
+ const requestDTO = this._mapRequestToDTO();
50
+ return {
51
+ channel: this.channel,
52
+ currency: this.currency,
53
+ language: this.language,
54
+ page: this.page,
55
+ searchData: {
56
+ action_cause: 'entity',
57
+ value: {
58
+ context: {
59
+ page: {
60
+ uri: this.pathname
61
+ }
62
+ },
63
+ entities: entitiesDTO,
64
+ request: requestDTO,
65
+ rfk_id: this.widgetIdentifier
66
+ }
67
+ },
68
+ type: 'SC_SEARCH_WIDGET_VIEW'
69
+ };
70
+ }
71
+ }
@@ -0,0 +1,23 @@
1
+ import { CloudSDKBrowserInitializer } from '@sitecore-cloudsdk/core/browser';
2
+ export declare function sideEffects(): Promise<void>;
3
+ /**
4
+ * Makes the functionality of the search package available.
5
+ * This functionality also requires the events package.
6
+ *
7
+ * @returns An instance of {@link CloudSDKBrowserInitializer}
8
+ *
9
+ * @example
10
+ * ```
11
+ * CloudSDK().addEvents().addSearch().initialize()
12
+ * ```
13
+ */
14
+ export declare function addSearch(this: CloudSDKBrowserInitializer): CloudSDKBrowserInitializer;
15
+ declare module '@sitecore-cloudsdk/core/browser' {
16
+ interface CloudSDKBrowserInitializer {
17
+ addSearch: typeof addSearch;
18
+ }
19
+ }
20
+ /**
21
+ * A function that handles the async browser init logic. Throws an error or awaits the promise.
22
+ */
23
+ export declare function awaitInit(): Promise<void>;
@@ -0,0 +1,38 @@
1
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
2
+ import { CloudSDKBrowserInitializer } from '@sitecore-cloudsdk/core/browser';
3
+ import { debug, enabledPackagesBrowser as enabledPackages, getEnabledPackageBrowser as getEnabledPackage, PackageInitializer } from '@sitecore-cloudsdk/core/internal';
4
+ import { PACKAGE_NAME as EVENTS_PACKAGE_NAME, PACKAGE_INITIALIZER_METHOD_NAME } from '@sitecore-cloudsdk/events/browser';
5
+ import { ErrorMessages, PACKAGE_NAME, SEARCH_NAMESPACE } from '../../consts';
6
+ // eslint-disable-next-line no-empty-function, @typescript-eslint/no-empty-function
7
+ export async function sideEffects() {
8
+ debug(SEARCH_NAMESPACE)('searchClient library initialized');
9
+ }
10
+ /**
11
+ * Makes the functionality of the search package available.
12
+ * This functionality also requires the events package.
13
+ *
14
+ * @returns An instance of {@link CloudSDKBrowserInitializer}
15
+ *
16
+ * @example
17
+ * ```
18
+ * CloudSDK().addEvents().addSearch().initialize()
19
+ * ```
20
+ */
21
+ export function addSearch() {
22
+ const searchInitializer = new PackageInitializer({
23
+ dependencies: [{ method: PACKAGE_INITIALIZER_METHOD_NAME, name: EVENTS_PACKAGE_NAME }],
24
+ sideEffects
25
+ });
26
+ enabledPackages.set(PACKAGE_NAME, searchInitializer);
27
+ return this;
28
+ }
29
+ CloudSDKBrowserInitializer.prototype.addSearch = addSearch;
30
+ /**
31
+ * A function that handles the async browser init logic. Throws an error or awaits the promise.
32
+ */
33
+ export async function awaitInit() {
34
+ const initState = getEnabledPackage(PACKAGE_NAME)?.initState;
35
+ if (!initState)
36
+ throw new Error(ErrorMessages.IE_0018);
37
+ await initState;
38
+ }
@@ -0,0 +1,21 @@
1
+ import { CloudSDKServerInitializer } from '@sitecore-cloudsdk/core/server';
2
+ export declare function sideEffects(): Promise<void>;
3
+ /**
4
+ * Makes the functionality of the search package available.
5
+ * This functionality also requires the events package.
6
+ *
7
+ * @param settings - The optional settings to initialize the search
8
+ * @returns An instance of {@link CloudSDKServerInitializer}
9
+ *
10
+ * @example
11
+ * ```
12
+ * CloudSDK().addEvents().addSearch().initialize()
13
+ * ```
14
+ */
15
+ export declare function addSearch(this: CloudSDKServerInitializer): CloudSDKServerInitializer;
16
+ declare module '@sitecore-cloudsdk/core/server' {
17
+ interface CloudSDKServerInitializer {
18
+ addSearch: typeof addSearch;
19
+ }
20
+ }
21
+ export declare function verifySearchPackageExistence(): void;
@@ -0,0 +1,33 @@
1
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
2
+ import { debug, enabledPackagesServer as enabledPackages, getEnabledPackageServer as getEnabledPackage, PackageInitializerServer } from '@sitecore-cloudsdk/core/internal';
3
+ import { CloudSDKServerInitializer } from '@sitecore-cloudsdk/core/server';
4
+ import { PACKAGE_NAME as EVENTS_PACKAGE_NAME, PACKAGE_INITIALIZER_METHOD_NAME } from '@sitecore-cloudsdk/events/server';
5
+ import { ErrorMessages, PACKAGE_NAME, SEARCH_NAMESPACE } from '../../consts';
6
+ export async function sideEffects() {
7
+ debug(SEARCH_NAMESPACE)('searchServer library initialized');
8
+ }
9
+ /**
10
+ * Makes the functionality of the search package available.
11
+ * This functionality also requires the events package.
12
+ *
13
+ * @param settings - The optional settings to initialize the search
14
+ * @returns An instance of {@link CloudSDKServerInitializer}
15
+ *
16
+ * @example
17
+ * ```
18
+ * CloudSDK().addEvents().addSearch().initialize()
19
+ * ```
20
+ */
21
+ export function addSearch() {
22
+ const searchInitializer = new PackageInitializerServer({
23
+ dependencies: [{ method: PACKAGE_INITIALIZER_METHOD_NAME, name: EVENTS_PACKAGE_NAME }],
24
+ sideEffects
25
+ });
26
+ enabledPackages.set(PACKAGE_NAME, searchInitializer);
27
+ return this;
28
+ }
29
+ CloudSDKServerInitializer.prototype.addSearch = addSearch;
30
+ export function verifySearchPackageExistence() {
31
+ if (!getEnabledPackage(PACKAGE_NAME))
32
+ throw Error(ErrorMessages.IE_0019);
33
+ }