@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,341 @@
1
+ /* Copyright (c) 2018-2021 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+ import { __spreadArrays } from "tslib";
4
+ import { cloneObject, unique } from "../util";
5
+ /**
6
+ * Well known APIs
7
+ * Short-forms for specifying common APIs
8
+ */
9
+ export var SEARCH_APIS = {
10
+ arcgis: {
11
+ label: "ArcGIS Online",
12
+ url: "https://www.arcgis.com",
13
+ type: "arcgis",
14
+ },
15
+ arcgisQA: {
16
+ label: "ArcGIS Online QAEXT",
17
+ url: "https://qaext.arcgis.com",
18
+ type: "arcgis",
19
+ },
20
+ arcgisDEV: {
21
+ label: "ArcGIS Online DEVEXT",
22
+ url: "https://devext.arcgis.com",
23
+ type: "arcgis",
24
+ },
25
+ hub: {
26
+ label: "ArcGIS Hub",
27
+ url: "https://hub.arcgis.com/api",
28
+ type: "arcgis-hub",
29
+ },
30
+ hubDEV: {
31
+ label: "ArcGIS Hub DEV",
32
+ url: "https://hubdev.arcgis.com/api",
33
+ type: "arcgis-hub",
34
+ },
35
+ hubQA: {
36
+ label: "ArcGIS Hub QA",
37
+ url: "https://hubqa.arcgis.com/api",
38
+ type: "arcgis-hub",
39
+ },
40
+ };
41
+ /**
42
+ * @private
43
+ * Convert api "names" into full ApiDefinitions
44
+ * @param apis
45
+ * @returns
46
+ */
47
+ export function expandApis(apis) {
48
+ return apis.map(function (api) {
49
+ if (typeof api === "string" && api in SEARCH_APIS) {
50
+ return SEARCH_APIS[api];
51
+ }
52
+ else {
53
+ // it's an object, so we trust that it's well formed
54
+ return api;
55
+ }
56
+ });
57
+ }
58
+ /**
59
+ * @private
60
+ * Merge multiple search responses
61
+ *
62
+ * Naieve implementation that just merges arrays
63
+ * @param responses
64
+ * @returns
65
+ */
66
+ export function mergeSearchResults(responses) {
67
+ // Merge content
68
+ var content = responses.reduce(function (acc, response) {
69
+ if (response.content) {
70
+ acc = acc.concat(response.content);
71
+ }
72
+ return acc;
73
+ }, []);
74
+ // Merge Facets
75
+ var facets = responses.reduce(function (acc, response) {
76
+ if (response.facets) {
77
+ acc = acc.concat(response.facets);
78
+ }
79
+ return acc;
80
+ }, []);
81
+ return { content: content, facets: facets };
82
+ }
83
+ /**
84
+ * @private
85
+ * Merge two date ranges by taking the longest span
86
+ * @param dr1
87
+ * @param dr2
88
+ * @returns
89
+ */
90
+ export function mergeDateRange(dr1, dr2) {
91
+ var result = cloneObject(dr1);
92
+ // feels like there is a more concise way to do this...
93
+ if (dr2.from < dr1.from) {
94
+ result.from = dr2.from;
95
+ }
96
+ if (dr2.to > dr1.to) {
97
+ result.to = dr2.to;
98
+ }
99
+ return result;
100
+ }
101
+ /**
102
+ * @private
103
+ * Merge two [`MatchOptions`](../MatchOptions)
104
+ *
105
+ * Currently a naieve implementation where the arrays are simply merged
106
+ *
107
+ * @param mo1
108
+ * @param mo2
109
+ * @returns
110
+ */
111
+ export function mergeMatchOptions(mo1, mo2) {
112
+ var result = {};
113
+ // None of these props are required, so we can't just
114
+ // use Object.keys/.entries
115
+ var props = ["any", "all", "not", "exact"];
116
+ props.forEach(function (prop) {
117
+ var key = prop;
118
+ var merged = __spreadArrays(getMatchValue(mo1, key), getMatchValue(mo2, key));
119
+ if (merged.length) {
120
+ // remove any dupes and set on the return
121
+ result[key] = merged.filter(unique);
122
+ }
123
+ });
124
+ return result;
125
+ }
126
+ /**
127
+ * Get the value of a property on an IMatchOptions
128
+ *
129
+ * This is complex b/c all the props are optional, and
130
+ * they could be a simple string, or an array of strings.
131
+ *
132
+ * This function normalizes all that and returns an array,
133
+ * which may or may not be empty
134
+ * @param option
135
+ * @param key
136
+ * @returns
137
+ */
138
+ function getMatchValue(option, key) {
139
+ var matchValue = [];
140
+ if (option[key]) {
141
+ var val = option[key];
142
+ if (Array.isArray(val)) {
143
+ matchValue = val;
144
+ }
145
+ else {
146
+ matchValue = [val];
147
+ }
148
+ }
149
+ return matchValue;
150
+ }
151
+ /**
152
+ * @private
153
+ * Convert a field value into a MatchOptions if it's not already one
154
+ * @param value
155
+ * @returns
156
+ */
157
+ export function valueToMatchOptions(value) {
158
+ var result = {};
159
+ if (Array.isArray(value)) {
160
+ result = {
161
+ any: value,
162
+ };
163
+ }
164
+ else {
165
+ if (typeof value === "string") {
166
+ result = {
167
+ any: [value],
168
+ };
169
+ }
170
+ if (typeof value === "object") {
171
+ result = value;
172
+ }
173
+ }
174
+ return result;
175
+ }
176
+ /**
177
+ * @private
178
+ * Convert a RelativeDate to a DateRange<number>
179
+ * @param relative
180
+ * @returns
181
+ */
182
+ export function relativeDateToDateRange(relative) {
183
+ // hash of offsets
184
+ var offsetMs = {
185
+ min: 1000 * 60,
186
+ hours: 1000 * 60 * 60,
187
+ days: 1000 * 60 * 60 * 24,
188
+ weeks: 1000 * 60 * 60 * 24 * 7,
189
+ };
190
+ var now = new Date();
191
+ // default
192
+ var result = {
193
+ type: "date-range",
194
+ from: now.getTime(),
195
+ to: now.getTime(),
196
+ };
197
+ //
198
+ switch (relative.unit) {
199
+ case "hours":
200
+ case "days":
201
+ case "weeks":
202
+ result.from = result.to - offsetMs[relative.unit] * relative.num;
203
+ break;
204
+ case "months":
205
+ // get the current month and subtract num
206
+ now.setMonth(now.getMonth() - relative.num);
207
+ result.from = now.getTime();
208
+ break;
209
+ case "years":
210
+ now.setFullYear(now.getFullYear() - relative.num);
211
+ result.from = now.getTime();
212
+ break;
213
+ }
214
+ return result;
215
+ }
216
+ /**
217
+ * @private
218
+ * As a final `ISearchOptions` object gets created, many such objects are created, and
219
+ * need to be systematically "merged" so as to return consistently structured `q` and `filter`
220
+ * values.
221
+ * @param so1
222
+ * @param so2
223
+ * @param join
224
+ * @returns
225
+ */
226
+ export function mergeSearchOptions(so1, so2, join) {
227
+ var result = cloneObject(so1);
228
+ var q = so2.q, filter = so2.filter;
229
+ if (q) {
230
+ result.q = (result.q ? " (" + result.q + " " + join + " " + q + ")" : q).trim();
231
+ }
232
+ if (filter) {
233
+ result.filter = (result.filter ? "(" + result.filter + " " + join + " " + filter + ")" : filter).trim();
234
+ }
235
+ return result;
236
+ }
237
+ /**
238
+ * @private
239
+ * Serialize a `MatchOptions` into `q` or `filter` on an `ISearchOptions`
240
+ * @param key
241
+ * @param opts
242
+ * @returns
243
+ */
244
+ export function serializeMatchOptions(key, opts) {
245
+ var result = {
246
+ q: "",
247
+ filter: "",
248
+ };
249
+ if (opts.exact) {
250
+ // defined separately for refactoring later
251
+ var userFilterableFields = [
252
+ "username",
253
+ "firstname",
254
+ "lastname",
255
+ "fullname",
256
+ "email",
257
+ ];
258
+ var itemFilterableFields = [
259
+ "title",
260
+ "tags",
261
+ "typekeywords",
262
+ "type",
263
+ "name",
264
+ "owner",
265
+ ];
266
+ var groupFilterableFields = ["title", "typekeywords", "owner"];
267
+ var filterableFields = __spreadArrays(userFilterableFields, itemFilterableFields, groupFilterableFields);
268
+ if (filterableFields.includes(key)) {
269
+ result.filter = serializeStringOrArray("AND", key, opts.exact);
270
+ }
271
+ else {
272
+ // Treat it the same as .all
273
+ if (typeof opts.exact === "string") {
274
+ if (!opts.all) {
275
+ opts.all = [];
276
+ }
277
+ if (typeof opts.all === "string") {
278
+ opts.all = [opts.all];
279
+ }
280
+ opts.all.push(opts.exact);
281
+ }
282
+ if (Array.isArray(opts.exact)) {
283
+ if (!opts.all) {
284
+ opts.all = [];
285
+ }
286
+ if (typeof opts.all === "string") {
287
+ opts.all = [opts.all];
288
+ }
289
+ opts.all = opts.all.concat(opts.exact);
290
+ }
291
+ }
292
+ }
293
+ // Handle the other props
294
+ if (opts.any) {
295
+ result.q = serializeStringOrArray("OR", key, opts.any);
296
+ }
297
+ if (opts.all) {
298
+ result.q =
299
+ (result.q ? result.q + " AND " : "") +
300
+ serializeStringOrArray("AND", key, opts.all);
301
+ }
302
+ if (opts.not) {
303
+ // negate the entries if they are not
304
+ result.q =
305
+ (result.q ? result.q + " AND " : "") +
306
+ serializeStringOrArray("OR", "-" + key, opts.not);
307
+ }
308
+ return result;
309
+ }
310
+ /**
311
+ * @private
312
+ * Serialize a DateRange<number> into a Portal Query string
313
+ * @param key
314
+ * @param range
315
+ * @returns
316
+ */
317
+ export function serializeDateRange(key, range) {
318
+ return {
319
+ q: key + ":[" + range.from + " TO " + range.to + "]",
320
+ filter: "",
321
+ };
322
+ }
323
+ /**
324
+ * @private
325
+ * Serialize a `string` or `string[]` into a string
326
+ * @param join
327
+ * @param key
328
+ * @param value
329
+ * @returns
330
+ */
331
+ export function serializeStringOrArray(join, key, value) {
332
+ var q = "";
333
+ if (Array.isArray(value)) {
334
+ q = "(" + key + ":\"" + value.join("\" " + join + " " + key + ":\"") + "\")";
335
+ }
336
+ else {
337
+ q = key + ":\"" + value + "\"";
338
+ }
339
+ return q;
340
+ }
341
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/search/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._searchContent = void 0;
4
+ const content_utils_1 = require("./content-utils");
5
+ const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
6
+ const utils_1 = require("./utils");
7
+ const __1 = require("..");
8
+ /**
9
+ * Search for content via the Portal or Hub API
10
+ * @param filter
11
+ * @param options
12
+ */
13
+ async function _searchContent(filter, options) {
14
+ // expand filter so we can serialize to either api
15
+ const expanded = content_utils_1.expandContentFilter(filter);
16
+ // APIs
17
+ if (!options.apis) {
18
+ // default to AGO PROD
19
+ options.apis = ["arcgis"];
20
+ }
21
+ const apis = utils_1.expandApis(options.apis);
22
+ // map over the apis, depending on the type we issue the queries
23
+ const searchPromises = apis.map((api) => {
24
+ var _a;
25
+ // Portal Search
26
+ if (api.type === "arcgis") {
27
+ // serialize for portal
28
+ const so = content_utils_1.serializeContentFilterForPortal(expanded);
29
+ // pass auth forward
30
+ if (options.authentication) {
31
+ so.authentication = options.authentication;
32
+ }
33
+ // Aggregations
34
+ if ((_a = options.aggregations) === null || _a === void 0 ? void 0 : _a.length) {
35
+ so.countFields = options.aggregations.join(",");
36
+ so.countSize = 200;
37
+ }
38
+ if (options.num) {
39
+ so.num = options.num;
40
+ }
41
+ return searchPortal(so);
42
+ }
43
+ else {
44
+ // Hub API Search
45
+ // TODO: Implement hub api content search
46
+ return Promise.resolve({
47
+ content: [],
48
+ facets: [],
49
+ });
50
+ }
51
+ });
52
+ // wait for results
53
+ const results = await Promise.all(searchPromises);
54
+ // merge and return
55
+ return utils_1.mergeSearchResults(results);
56
+ }
57
+ exports._searchContent = _searchContent;
58
+ function searchPortal(searchOptions) {
59
+ return arcgis_rest_portal_1.searchItems(searchOptions).then((resp) => {
60
+ const content = resp.results.map(__1.itemToContent);
61
+ // convert aggregations into facets
62
+ const facets = content_utils_1.convertPortalResponseToFacets(resp);
63
+ return { content, facets };
64
+ });
65
+ }
66
+ //# sourceMappingURL=_searchContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_searchContent.js","sourceRoot":"","sources":["../../../src/search/_searchContent.ts"],"names":[],"mappings":";;;AAAA,mDAIyB;AAOzB,iEAAuE;AACvE,mCAAyD;AACzD,0BAAgD;AAEhD;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAClC,MAAyB,EACzB,OAA0B;IAE1B,kDAAkD;IAClD,MAAM,QAAQ,GAAG,mCAAmB,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO;IACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACjB,sBAAsB;QACtB,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC3B;IACD,MAAM,IAAI,GAAG,kBAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,gEAAgE;IAChE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;;QACtC,gBAAgB;QAChB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACzB,uBAAuB;YACvB,MAAM,EAAE,GAAG,+CAA+B,CAAC,QAAQ,CAAC,CAAC;YACrD,oBAAoB;YACpB,IAAI,OAAO,CAAC,cAAc,EAAE;gBAC1B,EAAE,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;aAC5C;YACD,eAAe;YACf,UAAI,OAAO,CAAC,YAAY,0CAAE,MAAM,EAAE;gBAChC,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChD,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;aACpB;YACD,IAAI,OAAO,CAAC,GAAG,EAAE;gBACf,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;aACtB;YACD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;SACzB;aAAM;YACL,iBAAiB;YACjB,yCAAyC;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,OAAO,EAAE,EAAmB;gBAC5B,MAAM,EAAE,EAAc;aACvB,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IACH,mBAAmB;IACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClD,mBAAmB;IACnB,OAAO,0BAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AA9CD,wCA8CC;AAED,SAAS,YAAY,CACnB,aAA6B;IAE7B,OAAO,gCAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAa,CAAC,CAAC;QAChD,mCAAmC;QACnC,MAAM,MAAM,GAAG,6CAA6B,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}