@usereactify/search 5.59.0-beta.2 → 5.59.0-beta.4

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.
@@ -2,61 +2,49 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateSortQuery = exports.generateSortSort = exports.getSortOption = exports.getSortOptions = void 0;
4
4
  const getSortOptions = (options) => {
5
+ const { provider } = options;
6
+ const visibilityMode = provider.mode === "curated-page" ? provider.variation : provider.mode;
5
7
  return options.config.sort
6
8
  .sort((a, b) => {
7
- const aInt = typeof a.position === "string"
8
- ? parseInt(a.position, 10)
9
- : a.position;
10
- const bInt = typeof b.position === "string"
11
- ? parseInt(b.position, 10)
12
- : b.position;
9
+ const aInt = typeof a.position === "string" ? parseInt(a.position, 10) : a.position;
10
+ const bInt = typeof b.position === "string" ? parseInt(b.position, 10) : b.position;
13
11
  return aInt - bInt;
14
12
  })
15
- .filter(({ visibility }) => ["all", options.provider.mode].includes(visibility));
13
+ .filter(({ visibility }) => ["all", visibilityMode].includes(visibility));
16
14
  };
17
15
  exports.getSortOptions = getSortOptions;
18
16
  const getSortOption = (options) => {
19
17
  var _a;
20
18
  const sortOptions = (0, exports.getSortOptions)(options);
21
- return (_a = sortOptions.find(({ handle }) => { var _a; return handle === options.sortOption || handle === ((_a = options.query) === null || _a === void 0 ? void 0 : _a.sort); })) !== null && _a !== void 0 ? _a : sortOptions[0];
19
+ return ((_a = sortOptions.find(({ handle }) => { var _a; return handle === options.sortOption || handle === ((_a = options.query) === null || _a === void 0 ? void 0 : _a.sort); })) !== null && _a !== void 0 ? _a : sortOptions[0]);
22
20
  };
23
21
  exports.getSortOption = getSortOption;
24
22
  const generateSortSort = (options) => {
25
- var _a, _b;
23
+ const { provider, curation, sortOption } = options;
26
24
  // curation positions are only applied for the default `collections.position` or `_score` sort
27
25
  // if the sort is something else, apply a normal sort which applies what the user has requested
28
- if (options.provider.mode !== "instant-search") {
29
- if (options.sortOption &&
30
- !["_score", "collections.position"].includes(options.sortOption.field)) {
31
- if (["price_min", "price_max"].includes(options.sortOption.field) && options.provider.market) {
32
- return [{ [`${options.sortOption.field}_market_${options.provider.market}`]: options.sortOption.direction }];
26
+ if (provider.mode !== "instant-search") {
27
+ if (sortOption && !["_score", "collections.position"].includes(sortOption.field)) {
28
+ if (["price_min", "price_max"].includes(sortOption.field) && provider.market) {
29
+ return [{ [`${sortOption.field}_market_${provider.market}`]: sortOption.direction }];
33
30
  }
34
- return [{ [options.sortOption.field]: options.sortOption.direction }];
31
+ return [{ [sortOption.field]: sortOption.direction }];
35
32
  }
36
33
  }
37
34
  const sorts = [];
38
35
  // collection curation pin sorting
39
- if (options.provider.mode === "collection" && options.provider.collectionHandle) {
40
- if ((_a = options.curation) === null || _a === void 0 ? void 0 : _a.collectionHandle) {
41
- const queriesMust = [{
42
- term: {
43
- "curations.collectionHandle.keyword": options.curation.collectionHandle,
44
- },
45
- }];
36
+ if ((provider.mode === "collection" && provider.collectionHandle) ||
37
+ (provider.mode === "curated-page" && provider.variation === "collection")) {
38
+ if (curation === null || curation === void 0 ? void 0 : curation.collectionHandle) {
39
+ const queriesMust = [
40
+ { term: { "curations.collectionHandle.keyword": curation.collectionHandle } },
41
+ ];
46
42
  const queriesMustNot = [];
47
- if (options.provider.market) {
48
- queriesMust.push({
49
- term: {
50
- "curations.markets.keyword": options.provider.market,
51
- },
52
- });
43
+ if (provider.market) {
44
+ queriesMust.push({ term: { "curations.markets.keyword": provider.market } });
53
45
  }
54
46
  else {
55
- queriesMustNot.push({
56
- exists: {
57
- field: "curations.markets.keyword"
58
- },
59
- });
47
+ queriesMustNot.push({ exists: { field: "curations.markets.keyword" } });
60
48
  }
61
49
  sorts.push({
62
50
  "curations.position": {
@@ -65,35 +53,27 @@ const generateSortSort = (options) => {
65
53
  nested: {
66
54
  path: "curations",
67
55
  filter: {
68
- bool: Object.assign({ must: queriesMust }, queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})
69
- }
56
+ bool: Object.assign({ must: queriesMust }, (queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})),
57
+ },
70
58
  },
71
59
  },
72
60
  });
73
61
  }
74
62
  }
75
- // search options.curation pin sorting
76
- if (options.provider.mode === "search" || options.provider.mode === "instant-search") {
77
- if ((_b = options.curation) === null || _b === void 0 ? void 0 : _b.searchTerm) {
78
- const queriesMust = [{
79
- term: {
80
- "curations.searchTerm.keyword": options.curation.searchTerm.toLowerCase(),
81
- },
82
- }];
63
+ // search curation pin sorting
64
+ if (provider.mode === "search" ||
65
+ provider.mode === "instant-search" ||
66
+ (provider.mode === "curated-page" && provider.variation === "search")) {
67
+ if (curation === null || curation === void 0 ? void 0 : curation.searchTerm) {
68
+ const queriesMust = [
69
+ { term: { "curations.searchTerm.keyword": curation.searchTerm.toLowerCase() } },
70
+ ];
83
71
  const queriesMustNot = [];
84
- if (options.provider.market) {
85
- queriesMust.push({
86
- term: {
87
- "curations.markets.keyword": options.provider.market,
88
- },
89
- });
72
+ if (provider.market) {
73
+ queriesMust.push({ term: { "curations.markets.keyword": provider.market } });
90
74
  }
91
75
  else {
92
- queriesMustNot.push({
93
- exists: {
94
- field: "curations.markets.keyword"
95
- },
96
- });
76
+ queriesMustNot.push({ exists: { field: "curations.markets.keyword" } });
97
77
  }
98
78
  sorts.push({
99
79
  "curations.position": {
@@ -102,109 +82,71 @@ const generateSortSort = (options) => {
102
82
  nested: {
103
83
  path: "curations",
104
84
  filter: {
105
- bool: Object.assign({ must: queriesMust }, queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})
106
- }
85
+ bool: Object.assign({ must: queriesMust }, (queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})),
86
+ },
107
87
  },
108
88
  },
109
89
  });
110
90
  }
111
91
  }
112
- // options.curation boost sorting
113
- if (options.curation) {
114
- if (0 < options.curation.boosting.groupings.length) {
115
- const groupings = options.curation.boosting.groupings.sort((a, b) => a.position > b.position ? 1 : -1);
92
+ // curation boost sorting
93
+ if (curation) {
94
+ if (0 < curation.boosting.groupings.length) {
95
+ const groupings = curation.boosting.groupings.sort((a, b) => (a.position > b.position ? 1 : -1));
116
96
  for (const grouping of groupings) {
117
97
  try {
118
98
  const query = JSON.parse(grouping.query);
119
99
  if (query)
120
100
  sorts.push(query);
121
101
  }
122
- catch (_c) {
102
+ catch (_a) {
123
103
  console.error(`query could not be parsed for boost grouping`, grouping);
124
104
  }
125
105
  }
126
106
  }
127
- if (0 < options.curation.boosting.sortings.length) {
128
- const sortings = options.curation.boosting.sortings.sort((a, b) => a.position > b.position ? 1 : -1);
107
+ if (0 < curation.boosting.sortings.length) {
108
+ const sortings = curation.boosting.sortings.sort((a, b) => (a.position > b.position ? 1 : -1));
129
109
  for (const sorting of sortings) {
130
110
  try {
131
111
  let query = JSON.parse(sorting.query);
132
- if (options.provider.market && sorting.field === "inventory_total") {
133
- query = {
134
- [`inventory_quantity_market_${options.provider.market}`]: query.inventory_total,
135
- };
112
+ if (provider.market && sorting.field === "inventory_total") {
113
+ query = { [`inventory_quantity_market_${provider.market}`]: query.inventory_total };
136
114
  }
137
- if (options.provider.market && sorting.field === "price") {
138
- query = {
139
- [`price_min_market_${options.provider.market}`]: query.price_min,
140
- };
115
+ if (provider.market && sorting.field === "price") {
116
+ query = { [`price_min_market_${provider.market}`]: query.price_min };
141
117
  }
142
118
  if (query) {
143
119
  sorts.push(query);
144
120
  }
145
121
  }
146
- catch (_d) {
122
+ catch (_b) {
147
123
  console.error(`query could not be parsed for boost sorting`, sorting);
148
124
  }
149
125
  }
150
126
  }
151
127
  }
152
- // default collection sorting
153
- if (options.provider.mode === "collection" && options.provider.collectionHandle) {
154
- sorts.push({
155
- "collections.position": {
156
- order: "asc",
157
- nested: {
158
- path: "collections",
159
- filter: {
160
- term: {
161
- "collections.handle.keyword": options.provider.collectionHandle,
162
- },
163
- },
164
- },
165
- },
166
- });
167
- }
168
- // default search sorting
169
- if (options.provider.mode === "search" || options.provider.mode === "instant-search") {
170
- sorts.push("_score");
171
- }
128
+ // default sorting - use _score for all modes
129
+ sorts.push("_score");
172
130
  return sorts;
173
131
  };
174
132
  exports.generateSortSort = generateSortSort;
175
133
  const generateSortQuery = (options) => {
176
134
  var _a;
177
- if (!options.curation || options.curation.id.includes("global")) {
135
+ const { provider, curation, sortOption } = options;
136
+ if (!curation || curation.id.includes("global"))
178
137
  return { match_all: {} };
179
- }
180
- const queriesMust = [{
181
- term: {
182
- [`curations.${"collection" === options.curation.type
183
- ? "collectionHandle"
184
- : "searchTerm"}.keyword`]: "collection" === options.curation.type
185
- ? options.curation.collectionHandle
186
- : (_a = options.curation.searchTerm) === null || _a === void 0 ? void 0 : _a.toLowerCase(),
187
- },
188
- },
189
- {
190
- term: {
191
- "curations.hidden": true,
192
- },
193
- }];
138
+ const curationField = curation.type === "collection" ? "collectionHandle" : "searchTerm";
139
+ const curationValue = curation.type === "collection" ? curation.collectionHandle : (_a = curation.searchTerm) === null || _a === void 0 ? void 0 : _a.toLowerCase();
140
+ const queriesMust = [
141
+ { term: { [`curations.${curationField}.keyword`]: curationValue } },
142
+ { term: { "curations.hidden": true } },
143
+ ];
194
144
  const queriesMustNot = [];
195
- if (options.provider.market) {
196
- queriesMust.push({
197
- term: {
198
- "curations.markets.keyword": options.provider.market,
199
- },
200
- });
145
+ if (provider.market) {
146
+ queriesMust.push({ term: { "curations.markets.keyword": provider.market } });
201
147
  }
202
148
  else {
203
- queriesMustNot.push({
204
- exists: {
205
- field: "curations.markets.keyword",
206
- },
207
- });
149
+ queriesMustNot.push({ exists: { field: "curations.markets.keyword" } });
208
150
  }
209
151
  return {
210
152
  bool: {
@@ -213,20 +155,13 @@ const generateSortQuery = (options) => {
213
155
  nested: {
214
156
  path: "curations",
215
157
  query: {
216
- bool: Object.assign({ must: queriesMust }, queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {}),
158
+ bool: Object.assign({ must: queriesMust }, (queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})),
217
159
  },
218
160
  },
219
161
  },
220
162
  // hide callout when not sorting by _score or collections.position
221
- ...(options.sortOption &&
222
- !["_score", "collections.position"].includes(options.sortOption.field)
223
- ? [
224
- {
225
- term: {
226
- type: "callout",
227
- },
228
- },
229
- ]
163
+ ...(sortOption && !["_score", "collections.position"].includes(sortOption.field)
164
+ ? [{ term: { type: "callout" } }]
230
165
  : []),
231
166
  ],
232
167
  },
@@ -1 +1 @@
1
- {"version":3,"file":"sortOption.js","sourceRoot":"","sources":["../../../src/utility/sortOption.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactifySearchProviderProps } from \"../components\";\nimport { Config, ConfigCuration, ConfigSort } from \"../types\";\n\nexport const getSortOptions = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n sortOption?: string;\n}) => {\n return options.config.sort\n .sort((a, b) => {\n const aInt =\n typeof a.position === \"string\"\n ? parseInt(a.position, 10)\n : a.position;\n const bInt =\n typeof b.position === \"string\"\n ? parseInt(b.position, 10)\n : b.position;\n return aInt - bInt;\n })\n .filter(({ visibility }) => [\"all\", options.provider.mode].includes(visibility));\n\n}\n\nexport const getSortOption = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n sortOption?: string;\n query?: Record<string, string>;\n}) => {\n const sortOptions = getSortOptions(options);\n\n return sortOptions.find(({ handle }) => handle === options.sortOption || handle === options.query?.sort) ?? sortOptions[0];\n}\n\nexport const generateSortSort = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n}) => {\n // curation positions are only applied for the default `collections.position` or `_score` sort\n // if the sort is something else, apply a normal sort which applies what the user has requested\n if (options.provider.mode !== \"instant-search\") {\n if (\n options.sortOption &&\n ![\"_score\", \"collections.position\"].includes(options.sortOption.field)\n ) {\n if ([\"price_min\", \"price_max\"].includes(options.sortOption.field) && options.provider.market) {\n return [{ [`${options.sortOption.field}_market_${options.provider.market}`]: options.sortOption.direction }];\n }\n return [{ [options.sortOption.field]: options.sortOption.direction }];\n }\n }\n\n const sorts = [];\n\n // collection curation pin sorting\n if (options.provider.mode === \"collection\" && options.provider.collectionHandle) {\n if (options.curation?.collectionHandle) {\n const queriesMust: Array<unknown> = [{\n term: {\n \"curations.collectionHandle.keyword\": options.curation.collectionHandle,\n },\n }];\n const queriesMustNot: Array<unknown> = [];\n if (options.provider.market) {\n queriesMust.push({\n term: {\n \"curations.markets.keyword\": options.provider.market,\n },\n });\n } else {\n queriesMustNot.push({\n exists: {\n field: \"curations.markets.keyword\"\n },\n })\n }\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n bool: {\n must: queriesMust,\n ...queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {},\n }\n }\n },\n },\n });\n }\n }\n\n // search options.curation pin sorting\n if (options.provider.mode === \"search\" || options.provider.mode === \"instant-search\") {\n if (options.curation?.searchTerm) {\n const queriesMust: Array<unknown> = [{\n term: {\n \"curations.searchTerm.keyword\": options.curation.searchTerm.toLowerCase(),\n },\n }];\n const queriesMustNot: Array<unknown> = [];\n if (options.provider.market) {\n queriesMust.push({\n term: {\n \"curations.markets.keyword\": options.provider.market,\n },\n });\n } else {\n queriesMustNot.push({\n exists: {\n field: \"curations.markets.keyword\"\n },\n })\n }\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n bool: {\n must: queriesMust,\n ...queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {},\n }\n }\n },\n },\n });\n }\n }\n\n // options.curation boost sorting\n if (options.curation) {\n if (0 < options.curation.boosting.groupings.length) {\n const groupings = options.curation.boosting.groupings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const grouping of groupings) {\n try {\n const query = JSON.parse(grouping.query);\n if (query) sorts.push(query);\n } catch {\n console.error(\n `query could not be parsed for boost grouping`,\n grouping\n );\n }\n }\n }\n\n if (0 < options.curation.boosting.sortings.length) {\n const sortings = options.curation.boosting.sortings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const sorting of sortings) {\n try {\n let query = JSON.parse(sorting.query);\n\n if (options.provider.market && sorting.field === \"inventory_total\") {\n query = {\n [`inventory_quantity_market_${options.provider.market}`]: query.inventory_total,\n };\n }\n if (options.provider.market && sorting.field === \"price\") {\n query = {\n [`price_min_market_${options.provider.market}`]: query.price_min,\n };\n }\n if (query) {\n sorts.push(query);\n }\n } catch {\n console.error(`query could not be parsed for boost sorting`, sorting);\n }\n }\n }\n }\n\n // default collection sorting\n if (options.provider.mode === \"collection\" && options.provider.collectionHandle) {\n sorts.push({\n \"collections.position\": {\n order: \"asc\",\n nested: {\n path: \"collections\",\n filter: {\n term: {\n \"collections.handle.keyword\": options.provider.collectionHandle,\n },\n },\n },\n },\n });\n }\n\n // default search sorting\n if (options.provider.mode === \"search\" || options.provider.mode === \"instant-search\") {\n sorts.push(\"_score\");\n }\n\n return sorts;\n}\n\nexport const generateSortQuery = (options: {\n provider: ReactifySearchProviderProps;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n}): Record<string, any> | undefined => {\n if (!options.curation || options.curation.id.includes(\"global\")) {\n return { match_all: {} };\n }\n\n const queriesMust: Array<unknown> = [{\n term: {\n [`curations.${\n \"collection\" === options.curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === options.curation.type\n ? options.curation.collectionHandle\n : options.curation.searchTerm?.toLowerCase(),\n },\n },\n {\n term: {\n \"curations.hidden\": true,\n },\n }];\n const queriesMustNot: Array<unknown> = [];\n\n if (options.provider.market) {\n queriesMust.push({\n term: {\n \"curations.markets.keyword\": options.provider.market,\n },\n })\n } else {\n queriesMustNot.push({\n exists: {\n field: \"curations.markets.keyword\",\n },\n });\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: queriesMust,\n ...queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {},\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(options.sortOption &&\n ![\"_score\", \"collections.position\"].includes(options.sortOption.field)\n ? [\n {\n term: {\n type: \"callout\",\n },\n },\n ]\n : []),\n ],\n },\n };\n};\n"]}
1
+ {"version":3,"file":"sortOption.js","sourceRoot":"","sources":["../../../src/utility/sortOption.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactifySearchProviderProps } from \"../components\";\nimport { Config, ConfigCuration, ConfigSort } from \"../types\";\n\nexport const getSortOptions = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n sortOption?: string;\n}) => {\n const { provider } = options;\n const visibilityMode = provider.mode === \"curated-page\" ? provider.variation : provider.mode;\n return options.config.sort\n .sort((a, b) => {\n const aInt = typeof a.position === \"string\" ? parseInt(a.position, 10) : a.position;\n const bInt = typeof b.position === \"string\" ? parseInt(b.position, 10) : b.position;\n return aInt - bInt;\n })\n .filter(({ visibility }) => [\"all\", visibilityMode].includes(visibility));\n};\n\nexport const getSortOption = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n sortOption?: string;\n query?: Record<string, string>;\n}) => {\n const sortOptions = getSortOptions(options);\n\n return (\n sortOptions.find(({ handle }) => handle === options.sortOption || handle === options.query?.sort) ?? sortOptions[0]\n );\n};\n\nexport const generateSortSort = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n}) => {\n const { provider, curation, sortOption } = options;\n // curation positions are only applied for the default `collections.position` or `_score` sort\n // if the sort is something else, apply a normal sort which applies what the user has requested\n if (provider.mode !== \"instant-search\") {\n if (sortOption && ![\"_score\", \"collections.position\"].includes(sortOption.field)) {\n if ([\"price_min\", \"price_max\"].includes(sortOption.field) && provider.market) {\n return [{ [`${sortOption.field}_market_${provider.market}`]: sortOption.direction }];\n }\n return [{ [sortOption.field]: sortOption.direction }];\n }\n }\n\n const sorts = [];\n\n // collection curation pin sorting\n if (\n (provider.mode === \"collection\" && provider.collectionHandle) ||\n (provider.mode === \"curated-page\" && provider.variation === \"collection\")\n ) {\n if (curation?.collectionHandle) {\n const queriesMust: Array<unknown> = [\n { term: { \"curations.collectionHandle.keyword\": curation.collectionHandle } },\n ];\n const queriesMustNot: Array<unknown> = [];\n if (provider.market) {\n queriesMust.push({ term: { \"curations.markets.keyword\": provider.market } });\n } else {\n queriesMustNot.push({ exists: { field: \"curations.markets.keyword\" } });\n }\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n bool: {\n must: queriesMust,\n ...(queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {}),\n },\n },\n },\n },\n });\n }\n }\n\n // search curation pin sorting\n if (\n provider.mode === \"search\" ||\n provider.mode === \"instant-search\" ||\n (provider.mode === \"curated-page\" && provider.variation === \"search\")\n ) {\n if (curation?.searchTerm) {\n const queriesMust: Array<unknown> = [\n { term: { \"curations.searchTerm.keyword\": curation.searchTerm.toLowerCase() } },\n ];\n const queriesMustNot: Array<unknown> = [];\n if (provider.market) {\n queriesMust.push({ term: { \"curations.markets.keyword\": provider.market } });\n } else {\n queriesMustNot.push({ exists: { field: \"curations.markets.keyword\" } });\n }\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n bool: {\n must: queriesMust,\n ...(queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {}),\n },\n },\n },\n },\n });\n }\n }\n\n // curation boost sorting\n if (curation) {\n if (0 < curation.boosting.groupings.length) {\n const groupings = curation.boosting.groupings.sort((a, b) => (a.position > b.position ? 1 : -1));\n\n for (const grouping of groupings) {\n try {\n const query = JSON.parse(grouping.query);\n if (query) sorts.push(query);\n } catch {\n console.error(`query could not be parsed for boost grouping`, grouping);\n }\n }\n }\n\n if (0 < curation.boosting.sortings.length) {\n const sortings = curation.boosting.sortings.sort((a, b) => (a.position > b.position ? 1 : -1));\n\n for (const sorting of sortings) {\n try {\n let query = JSON.parse(sorting.query);\n\n if (provider.market && sorting.field === \"inventory_total\") {\n query = { [`inventory_quantity_market_${provider.market}`]: query.inventory_total };\n }\n if (provider.market && sorting.field === \"price\") {\n query = { [`price_min_market_${provider.market}`]: query.price_min };\n }\n if (query) {\n sorts.push(query);\n }\n } catch {\n console.error(`query could not be parsed for boost sorting`, sorting);\n }\n }\n }\n }\n\n // default sorting - use _score for all modes\n sorts.push(\"_score\");\n\n return sorts;\n};\n\nexport const generateSortQuery = (options: {\n provider: ReactifySearchProviderProps;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n}): Record<string, any> | undefined => {\n const { provider, curation, sortOption } = options;\n if (!curation || curation.id.includes(\"global\")) return { match_all: {} };\n\n const curationField = curation.type === \"collection\" ? \"collectionHandle\" : \"searchTerm\";\n const curationValue = curation.type === \"collection\" ? curation.collectionHandle : curation.searchTerm?.toLowerCase();\n\n const queriesMust: Array<unknown> = [\n { term: { [`curations.${curationField}.keyword`]: curationValue } },\n { term: { \"curations.hidden\": true } },\n ];\n const queriesMustNot: Array<unknown> = [];\n\n if (provider.market) {\n queriesMust.push({ term: { \"curations.markets.keyword\": provider.market } });\n } else {\n queriesMustNot.push({ exists: { field: \"curations.markets.keyword\" } });\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: queriesMust,\n ...(queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {}),\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(sortOption && ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ? [{ term: { type: \"callout\" } }]\n : []),\n ],\n },\n };\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@usereactify/search",
3
3
  "description": "React UI library for Reactify Search",
4
- "version": "5.59.0-beta.2",
4
+ "version": "5.59.0-beta.4",
5
5
  "license": "MIT",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",
@@ -10,7 +10,7 @@
10
10
  "README.md",
11
11
  "CHANGELOG.md"
12
12
  ],
13
- "packageManager": "pnpm@8.9.2",
13
+ "packageManager": "pnpm@10.13.1",
14
14
  "scripts": {
15
15
  "watch": "tsc --watch",
16
16
  "release": "standard-version --tag-prefix release-v",
@@ -29,10 +29,10 @@
29
29
  ]
30
30
  },
31
31
  "dependencies": {
32
- "@appbaseio/reactivecore": "9.8.0",
33
32
  "@usereactify/search-internals": "1.0.0",
33
+ "@appbaseio/reactivecore": "9.15.2",
34
34
  "ahooks": "2.10.11",
35
- "axios": "0.26.1",
35
+ "axios": "1.10.0",
36
36
  "currency.js": "2.0.4",
37
37
  "debug": "4.3.2",
38
38
  "ga-gtag": "1.1.5",
@@ -40,7 +40,8 @@
40
40
  "react-slider": "2.0.4"
41
41
  },
42
42
  "peerDependencies": {
43
- "react": "17 - 18"
43
+ "react": "^18.2.0",
44
+ "react-dom": "^18.2.0"
44
45
  },
45
46
  "devDependencies": {
46
47
  "@babel/plugin-transform-typescript": "7.18.12",