@esri/hub-common 9.3.0 → 9.4.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 (40) hide show
  1. package/dist/es2017/search/_searchContent.js +62 -0
  2. package/dist/es2017/search/_searchContent.js.map +1 -0
  3. package/dist/es2017/search/content-utils.js +422 -0
  4. package/dist/es2017/search/content-utils.js.map +1 -0
  5. package/dist/es2017/search/index.js +4 -0
  6. package/dist/es2017/search/index.js.map +1 -1
  7. package/dist/es2017/search/types.js +1 -0
  8. package/dist/es2017/search/types.js.map +1 -0
  9. package/dist/es2017/search/utils.js +344 -0
  10. package/dist/es2017/search/utils.js.map +1 -0
  11. package/dist/esm/search/_searchContent.js +70 -0
  12. package/dist/esm/search/_searchContent.js.map +1 -0
  13. package/dist/esm/search/content-utils.js +426 -0
  14. package/dist/esm/search/content-utils.js.map +1 -0
  15. package/dist/esm/search/index.js +4 -0
  16. package/dist/esm/search/index.js.map +1 -1
  17. package/dist/esm/search/types.js +1 -0
  18. package/dist/esm/search/types.js.map +1 -0
  19. package/dist/esm/search/utils.js +341 -0
  20. package/dist/esm/search/utils.js.map +1 -0
  21. package/dist/node/search/_searchContent.js +66 -0
  22. package/dist/node/search/_searchContent.js.map +1 -0
  23. package/dist/node/search/content-utils.js +432 -0
  24. package/dist/node/search/content-utils.js.map +1 -0
  25. package/dist/node/search/index.js +4 -0
  26. package/dist/node/search/index.js.map +1 -1
  27. package/dist/node/search/types.js +3 -0
  28. package/dist/node/search/types.js.map +1 -0
  29. package/dist/node/search/utils.js +357 -0
  30. package/dist/node/search/utils.js.map +1 -0
  31. package/dist/types/search/_searchContent.d.ts +7 -0
  32. package/dist/types/search/content-utils.d.ts +70 -0
  33. package/dist/types/search/index.d.ts +4 -0
  34. package/dist/types/search/types.d.ts +294 -0
  35. package/dist/types/search/utils.d.ts +92 -0
  36. package/dist/umd/common.umd.js +842 -1
  37. package/dist/umd/common.umd.js.map +1 -1
  38. package/dist/umd/common.umd.min.js +1 -1
  39. package/dist/umd/common.umd.min.js.map +1 -1
  40. package/package.json +3 -3
@@ -0,0 +1,344 @@
1
+ /* Copyright (c) 2018-2021 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+ import { cloneObject, unique } from "../util";
4
+ /**
5
+ * Well known APIs
6
+ * Short-forms for specifying common APIs
7
+ */
8
+ export const SEARCH_APIS = {
9
+ arcgis: {
10
+ label: "ArcGIS Online",
11
+ url: "https://www.arcgis.com",
12
+ type: "arcgis",
13
+ },
14
+ arcgisQA: {
15
+ label: "ArcGIS Online QAEXT",
16
+ url: "https://qaext.arcgis.com",
17
+ type: "arcgis",
18
+ },
19
+ arcgisDEV: {
20
+ label: "ArcGIS Online DEVEXT",
21
+ url: "https://devext.arcgis.com",
22
+ type: "arcgis",
23
+ },
24
+ hub: {
25
+ label: "ArcGIS Hub",
26
+ url: "https://hub.arcgis.com/api",
27
+ type: "arcgis-hub",
28
+ },
29
+ hubDEV: {
30
+ label: "ArcGIS Hub DEV",
31
+ url: "https://hubdev.arcgis.com/api",
32
+ type: "arcgis-hub",
33
+ },
34
+ hubQA: {
35
+ label: "ArcGIS Hub QA",
36
+ url: "https://hubqa.arcgis.com/api",
37
+ type: "arcgis-hub",
38
+ },
39
+ };
40
+ /**
41
+ * @private
42
+ * Convert api "names" into full ApiDefinitions
43
+ * @param apis
44
+ * @returns
45
+ */
46
+ export function expandApis(apis) {
47
+ return apis.map((api) => {
48
+ if (typeof api === "string" && api in SEARCH_APIS) {
49
+ return SEARCH_APIS[api];
50
+ }
51
+ else {
52
+ // it's an object, so we trust that it's well formed
53
+ return api;
54
+ }
55
+ });
56
+ }
57
+ /**
58
+ * @private
59
+ * Merge multiple search responses
60
+ *
61
+ * Naieve implementation that just merges arrays
62
+ * @param responses
63
+ * @returns
64
+ */
65
+ export function mergeSearchResults(responses) {
66
+ // Merge content
67
+ const content = responses.reduce((acc, response) => {
68
+ if (response.content) {
69
+ acc = acc.concat(response.content);
70
+ }
71
+ return acc;
72
+ }, []);
73
+ // Merge Facets
74
+ const facets = responses.reduce((acc, response) => {
75
+ if (response.facets) {
76
+ acc = acc.concat(response.facets);
77
+ }
78
+ return acc;
79
+ }, []);
80
+ return { content, facets };
81
+ }
82
+ /**
83
+ * @private
84
+ * Merge two date ranges by taking the longest span
85
+ * @param dr1
86
+ * @param dr2
87
+ * @returns
88
+ */
89
+ export function mergeDateRange(dr1, dr2) {
90
+ const result = cloneObject(dr1);
91
+ // feels like there is a more concise way to do this...
92
+ if (dr2.from < dr1.from) {
93
+ result.from = dr2.from;
94
+ }
95
+ if (dr2.to > dr1.to) {
96
+ result.to = dr2.to;
97
+ }
98
+ return result;
99
+ }
100
+ /**
101
+ * @private
102
+ * Merge two [`MatchOptions`](../MatchOptions)
103
+ *
104
+ * Currently a naieve implementation where the arrays are simply merged
105
+ *
106
+ * @param mo1
107
+ * @param mo2
108
+ * @returns
109
+ */
110
+ export function mergeMatchOptions(mo1, mo2) {
111
+ const result = {};
112
+ // None of these props are required, so we can't just
113
+ // use Object.keys/.entries
114
+ const props = ["any", "all", "not", "exact"];
115
+ props.forEach((prop) => {
116
+ const key = prop;
117
+ const merged = [...getMatchValue(mo1, key), ...getMatchValue(mo2, key)];
118
+ if (merged.length) {
119
+ // remove any dupes and set on the return
120
+ result[key] = merged.filter(unique);
121
+ }
122
+ });
123
+ return result;
124
+ }
125
+ /**
126
+ * Get the value of a property on an IMatchOptions
127
+ *
128
+ * This is complex b/c all the props are optional, and
129
+ * they could be a simple string, or an array of strings.
130
+ *
131
+ * This function normalizes all that and returns an array,
132
+ * which may or may not be empty
133
+ * @param option
134
+ * @param key
135
+ * @returns
136
+ */
137
+ function getMatchValue(option, key) {
138
+ let matchValue = [];
139
+ if (option[key]) {
140
+ const val = option[key];
141
+ if (Array.isArray(val)) {
142
+ matchValue = val;
143
+ }
144
+ else {
145
+ matchValue = [val];
146
+ }
147
+ }
148
+ return matchValue;
149
+ }
150
+ /**
151
+ * @private
152
+ * Convert a field value into a MatchOptions if it's not already one
153
+ * @param value
154
+ * @returns
155
+ */
156
+ export function valueToMatchOptions(value) {
157
+ let result = {};
158
+ if (Array.isArray(value)) {
159
+ result = {
160
+ any: value,
161
+ };
162
+ }
163
+ else {
164
+ if (typeof value === "string") {
165
+ result = {
166
+ any: [value],
167
+ };
168
+ }
169
+ if (typeof value === "object") {
170
+ result = value;
171
+ }
172
+ }
173
+ return result;
174
+ }
175
+ /**
176
+ * @private
177
+ * Convert a RelativeDate to a DateRange<number>
178
+ * @param relative
179
+ * @returns
180
+ */
181
+ export function relativeDateToDateRange(relative) {
182
+ // hash of offsets
183
+ const offsetMs = {
184
+ min: 1000 * 60,
185
+ hours: 1000 * 60 * 60,
186
+ days: 1000 * 60 * 60 * 24,
187
+ weeks: 1000 * 60 * 60 * 24 * 7,
188
+ };
189
+ const now = new Date();
190
+ // default
191
+ const result = {
192
+ type: "date-range",
193
+ from: now.getTime(),
194
+ to: now.getTime(),
195
+ };
196
+ //
197
+ switch (relative.unit) {
198
+ case "hours":
199
+ case "days":
200
+ case "weeks":
201
+ result.from = result.to - offsetMs[relative.unit] * relative.num;
202
+ break;
203
+ case "months":
204
+ // get the current month and subtract num
205
+ now.setMonth(now.getMonth() - relative.num);
206
+ result.from = now.getTime();
207
+ break;
208
+ case "years":
209
+ now.setFullYear(now.getFullYear() - relative.num);
210
+ result.from = now.getTime();
211
+ break;
212
+ }
213
+ return result;
214
+ }
215
+ /**
216
+ * @private
217
+ * As a final `ISearchOptions` object gets created, many such objects are created, and
218
+ * need to be systematically "merged" so as to return consistently structured `q` and `filter`
219
+ * values.
220
+ * @param so1
221
+ * @param so2
222
+ * @param join
223
+ * @returns
224
+ */
225
+ export function mergeSearchOptions(so1, so2, join) {
226
+ const result = cloneObject(so1);
227
+ const { q, filter } = so2;
228
+ if (q) {
229
+ result.q = (result.q ? ` (${result.q} ${join} ${q})` : q).trim();
230
+ }
231
+ if (filter) {
232
+ result.filter = (result.filter ? `(${result.filter} ${join} ${filter})` : filter).trim();
233
+ }
234
+ return result;
235
+ }
236
+ /**
237
+ * @private
238
+ * Serialize a `MatchOptions` into `q` or `filter` on an `ISearchOptions`
239
+ * @param key
240
+ * @param opts
241
+ * @returns
242
+ */
243
+ export function serializeMatchOptions(key, opts) {
244
+ const result = {
245
+ q: "",
246
+ filter: "",
247
+ };
248
+ if (opts.exact) {
249
+ // defined separately for refactoring later
250
+ const userFilterableFields = [
251
+ "username",
252
+ "firstname",
253
+ "lastname",
254
+ "fullname",
255
+ "email",
256
+ ];
257
+ const itemFilterableFields = [
258
+ "title",
259
+ "tags",
260
+ "typekeywords",
261
+ "type",
262
+ "name",
263
+ "owner",
264
+ ];
265
+ const groupFilterableFields = ["title", "typekeywords", "owner"];
266
+ const filterableFields = [
267
+ ...userFilterableFields,
268
+ ...itemFilterableFields,
269
+ ...groupFilterableFields,
270
+ ];
271
+ if (filterableFields.includes(key)) {
272
+ result.filter = serializeStringOrArray("AND", key, opts.exact);
273
+ }
274
+ else {
275
+ // Treat it the same as .all
276
+ if (typeof opts.exact === "string") {
277
+ if (!opts.all) {
278
+ opts.all = [];
279
+ }
280
+ if (typeof opts.all === "string") {
281
+ opts.all = [opts.all];
282
+ }
283
+ opts.all.push(opts.exact);
284
+ }
285
+ if (Array.isArray(opts.exact)) {
286
+ if (!opts.all) {
287
+ opts.all = [];
288
+ }
289
+ if (typeof opts.all === "string") {
290
+ opts.all = [opts.all];
291
+ }
292
+ opts.all = opts.all.concat(opts.exact);
293
+ }
294
+ }
295
+ }
296
+ // Handle the other props
297
+ if (opts.any) {
298
+ result.q = serializeStringOrArray("OR", key, opts.any);
299
+ }
300
+ if (opts.all) {
301
+ result.q =
302
+ (result.q ? result.q + " AND " : "") +
303
+ serializeStringOrArray("AND", key, opts.all);
304
+ }
305
+ if (opts.not) {
306
+ // negate the entries if they are not
307
+ result.q =
308
+ (result.q ? result.q + " AND " : "") +
309
+ serializeStringOrArray("OR", `-${key}`, opts.not);
310
+ }
311
+ return result;
312
+ }
313
+ /**
314
+ * @private
315
+ * Serialize a DateRange<number> into a Portal Query string
316
+ * @param key
317
+ * @param range
318
+ * @returns
319
+ */
320
+ export function serializeDateRange(key, range) {
321
+ return {
322
+ q: `${key}:[${range.from} TO ${range.to}]`,
323
+ filter: "",
324
+ };
325
+ }
326
+ /**
327
+ * @private
328
+ * Serialize a `string` or `string[]` into a string
329
+ * @param join
330
+ * @param key
331
+ * @param value
332
+ * @returns
333
+ */
334
+ export function serializeStringOrArray(join, key, value) {
335
+ let q = "";
336
+ if (Array.isArray(value)) {
337
+ q = `(${key}:"${value.join(`" ${join} ${key}:"`)}")`;
338
+ }
339
+ else {
340
+ q = `${key}:"${value}"`;
341
+ }
342
+ return q;
343
+ }
344
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/search/utils.ts"],"names":[],"mappings":"AAAA;gBACgB;AAIhB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAY9C;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,MAAM,EAAE;QACN,KAAK,EAAE,eAAe;QACtB,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,QAAQ;KACf;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,QAAQ;KACf;IACD,SAAS,EAAE;QACT,KAAK,EAAE,sBAAsB;QAC7B,GAAG,EAAE,2BAA2B;QAChC,IAAI,EAAE,QAAQ;KACf;IACD,GAAG,EAAE;QACH,KAAK,EAAE,YAAY;QACnB,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,YAAY;KACnB;IACD,MAAM,EAAE;QACN,KAAK,EAAE,gBAAgB;QACvB,GAAG,EAAE,+BAA+B;QACpC,IAAI,EAAE,YAAY;KACnB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,eAAe;QACtB,GAAG,EAAE,8BAA8B;QACnC,IAAI,EAAE,YAAY;KACnB;CACF,CAAC;AAEF;;;;;GAKG;AAEH,MAAM,UAAU,UAAU,CACxB,IAAuC;IAEvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,WAAW,EAAE;YACjD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;SACzB;aAAM;YACL,oDAAoD;YACpD,OAAO,GAAqB,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAiC;IAEjC,gBAAgB;IAChB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;QACjD,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACpC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAmB,CAAC,CAAC;IAExB,eAAe;IACf,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;QAChD,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACnC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAc,CAAC,CAAC;IAEnB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAuB,EACvB,GAAuB;IAEvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,uDAAuD;IACvD,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE;QACvB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;KACxB;IACD,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE;QACnB,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;KACpB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAkB,EAClB,GAAkB;IAElB,MAAM,MAAM,GAAG,EAAmB,CAAC;IACnC,qDAAqD;IACrD,2BAA2B;IAC3B,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,IAA2B,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,yCAAyC;YACzC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACrC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CACpB,MAAqB,EACrB,GAAwB;IAExB,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;QACf,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,UAAU,GAAG,GAAe,CAAC;SAC9B;aAAM;YACL,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;SACpB;KACF;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAwC;IAExC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,GAAG;YACP,GAAG,EAAE,KAAK;SACX,CAAC;KACH;SAAM;QACL,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,GAAG;gBACP,GAAG,EAAE,CAAC,KAAK,CAAC;aACb,CAAC;SACH;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,GAAG,KAAK,CAAC;SAChB;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAuB;IAEvB,kBAAkB;IAClB,MAAM,QAAQ,GAAG;QACf,GAAG,EAAE,IAAI,GAAG,EAAE;QACd,KAAK,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE;QACrB,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACzB,KAAK,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;KAC/B,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,UAAU;IACV,MAAM,MAAM,GAAuB;QACjC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE;QACnB,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE;KAClB,CAAC;IACF,EAAE;IACF,QAAQ,QAAQ,CAAC,IAAI,EAAE;QACrB,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;YACjE,MAAM;QACR,KAAK,QAAQ;YACX,yCAAyC;YACzC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM;QACR,KAAK,OAAO;YACV,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM;KACT;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAmB,EACnB,GAAmB,EACnB,IAAkB;IAElB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAmB,CAAC;IAElD,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAC1B,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,CAAC,GACN,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC,IAAI,EAAE,CAAC;KACV;IACD,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,MAAM,GAAG,CACd,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAChE,CAAC,IAAI,EAAE,CAAC;KACV;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,IAAmB;IAEnB,MAAM,MAAM,GAAG;QACb,CAAC,EAAE,EAAE;QACL,MAAM,EAAE,EAAE;KACO,CAAC;IAEpB,IAAI,IAAI,CAAC,KAAK,EAAE;QACd,2CAA2C;QAC3C,MAAM,oBAAoB,GAAG;YAC3B,UAAU;YACV,WAAW;YACX,UAAU;YACV,UAAU;YACV,OAAO;SACR,CAAC;QACF,MAAM,oBAAoB,GAAG;YAC3B,OAAO;YACP,MAAM;YACN,cAAc;YACd,MAAM;YACN,MAAM;YACN,OAAO;SACR,CAAC;QACF,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAG;YACvB,GAAG,oBAAoB;YACvB,GAAG,oBAAoB;YACvB,GAAG,qBAAqB;SACzB,CAAC;QACF,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClC,MAAM,CAAC,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAChE;aAAM;YACL,4BAA4B;YAC5B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;oBACb,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;iBACf;gBACD,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;oBAChC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACvB;gBACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;oBACb,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;iBACf;gBACD,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;oBAChC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACvB;gBACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACxC;SACF;KACF;IACD,yBAAyB;IACzB,IAAI,IAAI,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,CAAC,GAAG,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KACxD;IACD,IAAI,IAAI,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,CAAC;YACN,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KAChD;IAED,IAAI,IAAI,CAAC,GAAG,EAAE;QACZ,qCAAqC;QACrC,MAAM,CAAC,CAAC;YACN,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KACrD;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,KAAyB;IAEzB,OAAO;QACL,CAAC,EAAE,GAAG,GAAG,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,GAAG;QAC1C,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAkB,EAClB,GAAW,EACX,KAAwB;IAExB,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,CAAC,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;KACtD;SAAM;QACL,CAAC,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC;KACzB;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { expandContentFilter, serializeContentFilterForPortal, convertPortalResponseToFacets, } from "./content-utils";
3
+ import { searchItems } from "@esri/arcgis-rest-portal";
4
+ import { expandApis, mergeSearchResults } from "./utils";
5
+ import { itemToContent } from "..";
6
+ /**
7
+ * Search for content via the Portal or Hub API
8
+ * @param filter
9
+ * @param options
10
+ */
11
+ export function _searchContent(filter, options) {
12
+ return __awaiter(this, void 0, void 0, function () {
13
+ var expanded, apis, searchPromises, results;
14
+ return __generator(this, function (_a) {
15
+ switch (_a.label) {
16
+ case 0:
17
+ expanded = expandContentFilter(filter);
18
+ // APIs
19
+ if (!options.apis) {
20
+ // default to AGO PROD
21
+ options.apis = ["arcgis"];
22
+ }
23
+ apis = expandApis(options.apis);
24
+ searchPromises = apis.map(function (api) {
25
+ var _a;
26
+ // Portal Search
27
+ if (api.type === "arcgis") {
28
+ // serialize for portal
29
+ var so = serializeContentFilterForPortal(expanded);
30
+ // pass auth forward
31
+ if (options.authentication) {
32
+ so.authentication = options.authentication;
33
+ }
34
+ // Aggregations
35
+ if ((_a = options.aggregations) === null || _a === void 0 ? void 0 : _a.length) {
36
+ so.countFields = options.aggregations.join(",");
37
+ so.countSize = 200;
38
+ }
39
+ if (options.num) {
40
+ so.num = options.num;
41
+ }
42
+ return searchPortal(so);
43
+ }
44
+ else {
45
+ // Hub API Search
46
+ // TODO: Implement hub api content search
47
+ return Promise.resolve({
48
+ content: [],
49
+ facets: [],
50
+ });
51
+ }
52
+ });
53
+ return [4 /*yield*/, Promise.all(searchPromises)];
54
+ case 1:
55
+ results = _a.sent();
56
+ // merge and return
57
+ return [2 /*return*/, mergeSearchResults(results)];
58
+ }
59
+ });
60
+ });
61
+ }
62
+ function searchPortal(searchOptions) {
63
+ return searchItems(searchOptions).then(function (resp) {
64
+ var content = resp.results.map(itemToContent);
65
+ // convert aggregations into facets
66
+ var facets = convertPortalResponseToFacets(resp);
67
+ return { content: content, facets: facets };
68
+ });
69
+ }
70
+ //# sourceMappingURL=_searchContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_searchContent.js","sourceRoot":"","sources":["../../../src/search/_searchContent.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAkB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAe,aAAa,EAAE,MAAM,IAAI,CAAC;AAEhD;;;;GAIG;AACH,MAAM,UAAgB,cAAc,CAClC,MAAyB,EACzB,OAA0B;;;;;;oBAGpB,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAE7C,OAAO;oBACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;wBACjB,sBAAsB;wBACtB,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;qBAC3B;oBACK,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAGhC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG;;wBAClC,gBAAgB;wBAChB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;4BACzB,uBAAuB;4BACvB,IAAM,EAAE,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;4BACrD,oBAAoB;4BACpB,IAAI,OAAO,CAAC,cAAc,EAAE;gCAC1B,EAAE,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;6BAC5C;4BACD,eAAe;4BACf,UAAI,OAAO,CAAC,YAAY,0CAAE,MAAM,EAAE;gCAChC,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCAChD,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;6BACpB;4BACD,IAAI,OAAO,CAAC,GAAG,EAAE;gCACf,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;6BACtB;4BACD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;yBACzB;6BAAM;4BACL,iBAAiB;4BACjB,yCAAyC;4BACzC,OAAO,OAAO,CAAC,OAAO,CAAC;gCACrB,OAAO,EAAE,EAAmB;gCAC5B,MAAM,EAAE,EAAc;6BACvB,CAAC,CAAC;yBACJ;oBACH,CAAC,CAAC,CAAC;oBAEa,qBAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAA;;oBAA3C,OAAO,GAAG,SAAiC;oBACjD,mBAAmB;oBACnB,sBAAO,kBAAkB,CAAC,OAAO,CAAC,EAAC;;;;CACpC;AAED,SAAS,YAAY,CACnB,aAA6B;IAE7B,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAC,IAAI;QAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAChD,mCAAmC;QACnC,IAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}