@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,19 @@
1
+ import type { FacetFilter } from '../../widgets/interfaces';
2
+ import type { LogicalOperators } from '../interfaces';
3
+ import type { FacetFilterBase, LogicalFacetFilterDTO } from './interfaces';
4
+ /**
5
+ * Creates LogicalFacetFilter object.
6
+ */
7
+ export declare class LogicalFacetFilter implements FacetFilterBase {
8
+ private _operator;
9
+ private _value;
10
+ /**
11
+ * @param operator - The operator to be applied on attribute.
12
+ * @param value - The value to check against of.
13
+ */
14
+ constructor(operator: Exclude<LogicalOperators, 'not'>, value: Array<FacetFilter>);
15
+ /**
16
+ * @returns The DTO representation of the filter.
17
+ */
18
+ toDTO(): LogicalFacetFilterDTO;
19
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Creates LogicalFacetFilter object.
3
+ */
4
+ export class LogicalFacetFilter {
5
+ /**
6
+ * @param operator - The operator to be applied on attribute.
7
+ * @param value - The value to check against of.
8
+ */
9
+ constructor(operator, value) {
10
+ this._operator = operator;
11
+ this._value = value;
12
+ }
13
+ /**
14
+ * @returns The DTO representation of the filter.
15
+ */
16
+ toDTO() {
17
+ return {
18
+ filters: this._value.map((filter) => filter.toDTO()),
19
+ type: this._operator
20
+ };
21
+ }
22
+ }
@@ -0,0 +1,7 @@
1
+ import type { FacetFilter } from '../../widgets/interfaces';
2
+ import type { FacetFilterBase, NotFacetFilterDTO } from './interfaces';
3
+ export declare class NotFacetFilter implements FacetFilterBase {
4
+ private _value;
5
+ constructor(value: string | FacetFilter);
6
+ toDTO(): NotFacetFilterDTO;
7
+ }
@@ -0,0 +1,18 @@
1
+ export class NotFacetFilter {
2
+ constructor(value) {
3
+ this._value = value;
4
+ }
5
+ toDTO() {
6
+ /**
7
+ * If the value is a string, it probably means that it is a facet filter id.
8
+ * Otherwise, it is a facet filter object, so we need to convert it to DTO.
9
+ * @example facetid_eyJ0eXBlIjoiZXEiLCJuYW1lIjoicHJvZHVjdCIsInZhbHVlIjoiQ0RQIn0=
10
+ * @example \{"type": "not", "filter": \{ "type": "eq", "value": "test" \}\}
11
+ */
12
+ const filter = typeof this._value === 'string' ? this._value : this._value.toDTO();
13
+ return {
14
+ filter,
15
+ type: 'not'
16
+ };
17
+ }
18
+ }
@@ -0,0 +1,19 @@
1
+ import { BaseFilter } from './base-filter';
2
+ import type { GeoFilterData, GeoFilterDTO } from './interfaces';
3
+ export declare const GEO_FILTER_TYPE = "geoDistance";
4
+ /**
5
+ * Creates a GeoFilter object which denotes the base of each filter.
6
+ */
7
+ export declare class GeoFilter extends BaseFilter {
8
+ private _attributeName;
9
+ /**
10
+ * @param attributeName - The name of the attribute to filter.
11
+ * @param geoFilterData - The geo filter data like location and distance.
12
+ */
13
+ constructor(attributeName: string, geoFilterData?: GeoFilterData);
14
+ private _validateLocation;
15
+ /**
16
+ * @returns The DTO representation of the filter.
17
+ */
18
+ toDTO(): GeoFilterDTO;
19
+ }
@@ -0,0 +1,45 @@
1
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
2
+ import { isValidLocation } from '@sitecore-cloudsdk/utils';
3
+ import { ErrorMessages } from '../../consts';
4
+ import { BaseFilter } from './base-filter';
5
+ export const GEO_FILTER_TYPE = 'geoDistance';
6
+ /**
7
+ * Creates a GeoFilter object which denotes the base of each filter.
8
+ */
9
+ export class GeoFilter extends BaseFilter {
10
+ /**
11
+ * @param attributeName - The name of the attribute to filter.
12
+ * @param geoFilterData - The geo filter data like location and distance.
13
+ */
14
+ constructor(attributeName, geoFilterData) {
15
+ super(GEO_FILTER_TYPE, geoFilterData);
16
+ if (geoFilterData?.location)
17
+ this._validateLocation(geoFilterData.location);
18
+ this._attributeName = attributeName;
19
+ }
20
+ _validateLocation(location) {
21
+ const result = isValidLocation(location);
22
+ if (!result.latitude)
23
+ throw new Error(ErrorMessages.IV_0012);
24
+ if (!result.longitude)
25
+ throw new Error(ErrorMessages.IV_0013);
26
+ }
27
+ /**
28
+ * @returns The DTO representation of the filter.
29
+ */
30
+ toDTO() {
31
+ const dto = {
32
+ name: this._attributeName,
33
+ type: GEO_FILTER_TYPE
34
+ };
35
+ if (this.value && this.value.distance)
36
+ dto.distance = this.value.distance;
37
+ if (this.value && this.value.location) {
38
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
39
+ dto.lat = this.value.location.latitude;
40
+ dto.lon = this.value.location.longitude;
41
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
42
+ }
43
+ return dto;
44
+ }
45
+ }
@@ -0,0 +1,19 @@
1
+ import { BaseFilter } from './base-filter';
2
+ import type { GeoWithinFilterData, GeoWithinFilterDTO } from './interfaces';
3
+ export declare const GEO_FILTER_TYPE = "geoWithin";
4
+ /**
5
+ * Creates a GeoWithinFilter object which denotes the base of each filter.
6
+ */
7
+ export declare class GeoWithinFilter extends BaseFilter {
8
+ private _attributeName;
9
+ /**
10
+ * @param attributeName - The name of the attribute to filter.
11
+ * @param geoWithinFilterData - The geo within filter data. Array of location objects.
12
+ */
13
+ constructor(attributeName: string, geoWithinFilterData: GeoWithinFilterData);
14
+ private _validateLocation;
15
+ /**
16
+ * @returns The DTO representation of the filter.
17
+ */
18
+ toDTO(): GeoWithinFilterDTO;
19
+ }
@@ -0,0 +1,40 @@
1
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
2
+ import { isValidLocation } from '@sitecore-cloudsdk/utils';
3
+ import { ErrorMessages } from '../../consts';
4
+ import { BaseFilter } from './base-filter';
5
+ export const GEO_FILTER_TYPE = 'geoWithin';
6
+ /**
7
+ * Creates a GeoWithinFilter object which denotes the base of each filter.
8
+ */
9
+ export class GeoWithinFilter extends BaseFilter {
10
+ /**
11
+ * @param attributeName - The name of the attribute to filter.
12
+ * @param geoWithinFilterData - The geo within filter data. Array of location objects.
13
+ */
14
+ constructor(attributeName, geoWithinFilterData) {
15
+ super(GEO_FILTER_TYPE, geoWithinFilterData);
16
+ geoWithinFilterData.forEach((location) => this._validateLocation(location));
17
+ this._attributeName = attributeName;
18
+ }
19
+ _validateLocation(location) {
20
+ const result = isValidLocation(location);
21
+ if (!result.latitude)
22
+ throw new Error(ErrorMessages.IV_0012);
23
+ if (!result.longitude)
24
+ throw new Error(ErrorMessages.IV_0013);
25
+ }
26
+ /**
27
+ * @returns The DTO representation of the filter.
28
+ */
29
+ toDTO() {
30
+ const dto = {
31
+ coordinates: this.value.map((location) => ({
32
+ lat: location.latitude,
33
+ lon: location.longitude
34
+ })),
35
+ name: this._attributeName,
36
+ type: GEO_FILTER_TYPE
37
+ };
38
+ return dto;
39
+ }
40
+ }
@@ -0,0 +1,66 @@
1
+ import type { LocationData } from '../context/interfaces';
2
+ import type { BaseFilter } from './base-filter';
3
+ import type { ComparisonFilter } from './comparison-filter';
4
+ import type { GeoFilter } from './geo-filter';
5
+ import type { GeoWithinFilter } from './geo-within-filter';
6
+ import type { ListFilter } from './list-filter';
7
+ import type { LogicalFilter } from './logical-filter';
8
+ export type Filter = LogicalFilter<keyof LogicalFilterValues> | GeoFilter | ComparisonFilter | ListFilter | GeoWithinFilter;
9
+ export type FilterDTO = LogicalFilterDTO | NotFilterDTO | GeoFilterDTO | ComparisonFilterDTO | ListFilterDTO | GeoWithinFilterDTO;
10
+ export interface ComparisonFilterDTO {
11
+ name: string;
12
+ type: string;
13
+ value: unknown;
14
+ }
15
+ export interface ListFilterDTO {
16
+ name: string;
17
+ type: string;
18
+ values: unknown[];
19
+ }
20
+ export interface LogicalFilterDTO {
21
+ filters: ArrayOfAtLeastTwo<ComparisonFilterDTO | LogicalFilterDTO | NotFilterDTO>;
22
+ type: string;
23
+ }
24
+ export interface GeoFilterData {
25
+ distance?: DistanceString;
26
+ location?: LocationData;
27
+ }
28
+ export type GeoWithinFilterData = ArrayOfAtLeastThree<LocationData>;
29
+ export interface GeoFilterDTO {
30
+ distance?: DistanceString;
31
+ name: string;
32
+ type: GeoOperator;
33
+ lat?: number;
34
+ lon?: number;
35
+ }
36
+ export interface LocationDTO {
37
+ lat: number;
38
+ lon: number;
39
+ }
40
+ export interface GeoWithinFilterDTO {
41
+ name: string;
42
+ type: GeoWithinOperator;
43
+ coordinates: ArrayOfAtLeastThree<LocationDTO>;
44
+ }
45
+ export type DistanceString = `${number}${DistanceUnits}`;
46
+ type DistanceUnits = 'in' | 'ft' | 'yd' | 'nmi' | 'km' | 'm' | 'cm' | 'mm';
47
+ export interface NotFilterDTO {
48
+ type: string;
49
+ filter: ComparisonFilterDTO | LogicalFilterDTO;
50
+ }
51
+ export type ComparisonOperators = 'eq' | 'gt' | 'gte' | 'lt' | 'lte';
52
+ export type LogicalOperators = 'and' | 'or' | 'not';
53
+ export type ListOperators = 'allOf' | 'anyOf';
54
+ export type GeoOperator = 'geoDistance';
55
+ export type GeoWithinOperator = 'geoWithin';
56
+ export type Operators = ComparisonOperators | LogicalOperators | GeoOperator | GeoWithinOperator | ListOperators;
57
+ export interface LogicalFilterValues {
58
+ not: BaseFilter;
59
+ or: ArrayOfAtLeastTwo<BaseFilter>;
60
+ and: ArrayOfAtLeastTwo<BaseFilter>;
61
+ }
62
+ export type ArrayOfAtLeastOne<T> = [T, ...T[]];
63
+ export type ArrayOfAtLeastTwo<T> = [T, T, ...T[]];
64
+ export type ArrayOfAtLeastThree<T> = [T, T, T, ...T[]];
65
+ export type PickLogicalDTO<T extends keyof LogicalFilterValues> = T extends 'not' ? NotFilterDTO : LogicalFilterDTO;
66
+ export {};
@@ -0,0 +1,18 @@
1
+ import { BaseFilter } from './base-filter';
2
+ import type { ListFilterDTO, ListOperators } from './interfaces';
3
+ /**
4
+ * Creates ListFilter object which denotes the base of each filter.
5
+ */
6
+ export declare class ListFilter extends BaseFilter {
7
+ private _attributeName;
8
+ /**
9
+ * @param attributeName - The name of the attribute to filter.
10
+ * @param operator - The operator to be applied on attribute.
11
+ * @param value - The value to check against of.
12
+ */
13
+ constructor(attributeName: string, operator: ListOperators, value: unknown[]);
14
+ /**
15
+ * @returns The DTO representation of the filter.
16
+ */
17
+ toDTO(): ListFilterDTO;
18
+ }
@@ -0,0 +1,26 @@
1
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
2
+ import { BaseFilter } from './base-filter';
3
+ /**
4
+ * Creates ListFilter object which denotes the base of each filter.
5
+ */
6
+ export class ListFilter extends BaseFilter {
7
+ /**
8
+ * @param attributeName - The name of the attribute to filter.
9
+ * @param operator - The operator to be applied on attribute.
10
+ * @param value - The value to check against of.
11
+ */
12
+ constructor(attributeName, operator, value) {
13
+ super(operator, value);
14
+ this._attributeName = attributeName;
15
+ }
16
+ /**
17
+ * @returns The DTO representation of the filter.
18
+ */
19
+ toDTO() {
20
+ return {
21
+ name: this._attributeName,
22
+ type: this.operator,
23
+ values: this.value
24
+ };
25
+ }
26
+ }
@@ -0,0 +1,16 @@
1
+ import { BaseFilter } from './base-filter';
2
+ import type { LogicalFilterValues, PickLogicalDTO } from './interfaces';
3
+ /**
4
+ * Creates a LogicalFilter object which denotes the base of each filter.
5
+ */
6
+ export declare class LogicalFilter<T extends keyof LogicalFilterValues> extends BaseFilter {
7
+ /**
8
+ * @param operator - The operator to be applied on attribute.
9
+ * @param value - The value to check against. Using "and" or the "or" filter, you must include minimum 2 filters.
10
+ */
11
+ constructor(operator: T, value: LogicalFilterValues[T]);
12
+ /**
13
+ * @returns The DTO representation of the filter.
14
+ */
15
+ toDTO(): PickLogicalDTO<T>;
16
+ }
@@ -0,0 +1,28 @@
1
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
2
+ import { BaseFilter } from './base-filter';
3
+ /**
4
+ * Creates a LogicalFilter object which denotes the base of each filter.
5
+ */
6
+ export class LogicalFilter extends BaseFilter {
7
+ /**
8
+ * @param operator - The operator to be applied on attribute.
9
+ * @param value - The value to check against. Using "and" or the "or" filter, you must include minimum 2 filters.
10
+ */
11
+ constructor(operator, value) {
12
+ super(operator, value);
13
+ }
14
+ /**
15
+ * @returns The DTO representation of the filter.
16
+ */
17
+ toDTO() {
18
+ if (this.operator === 'not')
19
+ return {
20
+ filter: this.value.toDTO(),
21
+ type: this.operator
22
+ };
23
+ return {
24
+ filters: this.value.map((filter) => filter.toDTO()),
25
+ type: this.operator
26
+ };
27
+ }
28
+ }