@esri/hub-common 9.7.1 → 9.8.1
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.
- package/dist/es2017/content.js +20 -9
- package/dist/es2017/content.js.map +1 -1
- package/dist/es2017/search/_searchContent.js +66 -53
- package/dist/es2017/search/_searchContent.js.map +1 -1
- package/dist/es2017/search/_searchGroups.js +67 -41
- package/dist/es2017/search/_searchGroups.js.map +1 -1
- package/dist/es2017/search/_searchUsers.js +83 -0
- package/dist/es2017/search/_searchUsers.js.map +1 -0
- package/dist/es2017/search/index.js +2 -0
- package/dist/es2017/search/index.js.map +1 -1
- package/dist/es2017/search/user-utils.js +132 -0
- package/dist/es2017/search/user-utils.js.map +1 -0
- package/dist/es2017/search/utils.js +76 -37
- package/dist/es2017/search/utils.js.map +1 -1
- package/dist/es2017/sites/upgrade-site-schema.js +3 -0
- package/dist/es2017/sites/upgrade-site-schema.js.map +1 -1
- package/dist/esm/content.js +20 -9
- package/dist/esm/content.js.map +1 -1
- package/dist/esm/search/_searchContent.js +71 -62
- package/dist/esm/search/_searchContent.js.map +1 -1
- package/dist/esm/search/_searchGroups.js +75 -49
- package/dist/esm/search/_searchGroups.js.map +1 -1
- package/dist/esm/search/_searchUsers.js +88 -0
- package/dist/esm/search/_searchUsers.js.map +1 -0
- package/dist/esm/search/index.js +2 -0
- package/dist/esm/search/index.js.map +1 -1
- package/dist/esm/search/user-utils.js +136 -0
- package/dist/esm/search/user-utils.js.map +1 -0
- package/dist/esm/search/utils.js +76 -37
- package/dist/esm/search/utils.js.map +1 -1
- package/dist/esm/sites/upgrade-site-schema.js +3 -0
- package/dist/esm/sites/upgrade-site-schema.js.map +1 -1
- package/dist/node/content.js +21 -10
- package/dist/node/content.js.map +1 -1
- package/dist/node/search/_searchContent.js +65 -52
- package/dist/node/search/_searchContent.js.map +1 -1
- package/dist/node/search/_searchGroups.js +67 -41
- package/dist/node/search/_searchGroups.js.map +1 -1
- package/dist/node/search/_searchUsers.js +87 -0
- package/dist/node/search/_searchUsers.js.map +1 -0
- package/dist/node/search/index.js +2 -0
- package/dist/node/search/index.js.map +1 -1
- package/dist/node/search/user-utils.js +138 -0
- package/dist/node/search/user-utils.js.map +1 -0
- package/dist/node/search/utils.js +81 -39
- package/dist/node/search/utils.js.map +1 -1
- package/dist/node/sites/upgrade-site-schema.js +3 -0
- package/dist/node/sites/upgrade-site-schema.js.map +1 -1
- package/dist/types/content.d.ts +13 -2
- package/dist/types/search/_searchContent.d.ts +3 -2
- package/dist/types/search/_searchGroups.d.ts +3 -2
- package/dist/types/search/_searchUsers.d.ts +28 -0
- package/dist/types/search/index.d.ts +2 -0
- package/dist/types/search/types.d.ts +20 -2
- package/dist/types/search/user-utils.d.ts +35 -0
- package/dist/types/search/utils.d.ts +39 -8
- package/dist/types/types.d.ts +17 -0
- package/dist/umd/common.umd.js +477 -154
- package/dist/umd/common.umd.js.map +1 -1
- package/dist/umd/common.umd.min.js +1 -1
- package/dist/umd/common.umd.min.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeUserFilterForPortal = exports.expandUserFilter = exports.mergeUserFilters = void 0;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* Merge `Filter<"user">` objects
|
|
8
|
+
*
|
|
9
|
+
* Useful in components which may get partial filters from a variety of
|
|
10
|
+
* sub-components, which are then combined into a single filter prior
|
|
11
|
+
* to executing the search.
|
|
12
|
+
* @param filters
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
function mergeUserFilters(filters) {
|
|
16
|
+
// expand all the filters so all prop types are consistent
|
|
17
|
+
const expanded = filters.map(expandUserFilter);
|
|
18
|
+
// now we can merge based on fields
|
|
19
|
+
const dateFields = ["created", "modified", "lastlogin"];
|
|
20
|
+
const specialFields = ["disabled", "term", "filterType", ...dateFields];
|
|
21
|
+
// acc is initialized as Filter<group> but also needs it
|
|
22
|
+
// in the function signature... for reasons?!
|
|
23
|
+
const result = expanded.reduce((acc, entry) => {
|
|
24
|
+
// process fields
|
|
25
|
+
Object.entries(entry).forEach(([key, value]) => {
|
|
26
|
+
// Note: getProp/setProp are used to get around
|
|
27
|
+
// typescript issues with string indexing
|
|
28
|
+
if (acc.hasOwnProperty(key)) {
|
|
29
|
+
const existingValue = __1.getProp(acc, key);
|
|
30
|
+
// if the key is not to a special field
|
|
31
|
+
if (!specialFields.includes(key)) {
|
|
32
|
+
// treat as an IMatchOptions
|
|
33
|
+
__1.setProp(key, __1.mergeMatchOptions(existingValue, value), acc);
|
|
34
|
+
}
|
|
35
|
+
else if (dateFields.includes(key)) {
|
|
36
|
+
// treat as IDateRange
|
|
37
|
+
__1.setProp(key, __1.mergeDateRange(existingValue, value), acc);
|
|
38
|
+
}
|
|
39
|
+
else if (key === "term") {
|
|
40
|
+
// append terms
|
|
41
|
+
acc[key] = `${acc[key]} ${value}`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Acc does not have an entry for this yet
|
|
46
|
+
// so just clone it
|
|
47
|
+
__1.setProp(key, __1.cloneObject(value), acc);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return acc;
|
|
51
|
+
}, {
|
|
52
|
+
filterType: "user",
|
|
53
|
+
});
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
exports.mergeUserFilters = mergeUserFilters;
|
|
57
|
+
/**
|
|
58
|
+
* Prior to serialization into the query syntax for the backing APIs, we first expand [Filters](../Filter)
|
|
59
|
+
*
|
|
60
|
+
* Filter's can express their intent in a very terse form, but to ensure consistent structures
|
|
61
|
+
* we expand them into their more verbose form.
|
|
62
|
+
*
|
|
63
|
+
* i.e. `firstname: "John"` expands into `firstname: { any: ["John"]}`
|
|
64
|
+
*
|
|
65
|
+
* - Fields defined as `string | string[] | MatchOptions` will be converted to a `MatchOptions`
|
|
66
|
+
* - RelativeDate fields are converted to DateRange<number>
|
|
67
|
+
* @param filter
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
function expandUserFilter(filter) {
|
|
71
|
+
const result = {};
|
|
72
|
+
const dateProps = ["created", "modified", "lastlogin"];
|
|
73
|
+
const specialProps = ["disabled", "term", ...dateProps];
|
|
74
|
+
Object.entries(filter).forEach(([key, value]) => {
|
|
75
|
+
// handle Matchish fields
|
|
76
|
+
if (!specialProps.includes(key)) {
|
|
77
|
+
// setProp side-steps typescript complaining
|
|
78
|
+
__1.setProp(key, __1.valueToMatchOptions(value), result);
|
|
79
|
+
}
|
|
80
|
+
// Handle date fields
|
|
81
|
+
if (dateProps.includes(key)) {
|
|
82
|
+
const dateFieldValue = __1.cloneObject(__1.getProp(filter, key));
|
|
83
|
+
if (__1.getProp(filter, `${key}.type`) === "relative-date") {
|
|
84
|
+
__1.setProp(key, __1.relativeDateToDateRange(dateFieldValue), result);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
__1.setProp(key, dateFieldValue, result);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
// disabled is boolean, so we check if the prop exists
|
|
92
|
+
// vs checking if the value is truthy
|
|
93
|
+
if (filter.hasOwnProperty("disabled")) {
|
|
94
|
+
result.disabled = filter.disabled;
|
|
95
|
+
}
|
|
96
|
+
if (filter.term) {
|
|
97
|
+
result.term = filter.term;
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
exports.expandUserFilter = expandUserFilter;
|
|
102
|
+
/**
|
|
103
|
+
* @private
|
|
104
|
+
* Serialize an `IUserFilterDefinition` into an `ISearchOptions` for use
|
|
105
|
+
* with `searchUsers`
|
|
106
|
+
* @param filter
|
|
107
|
+
* @returns
|
|
108
|
+
*/
|
|
109
|
+
function serializeUserFilterForPortal(filter) {
|
|
110
|
+
let result = {
|
|
111
|
+
q: "",
|
|
112
|
+
filter: "",
|
|
113
|
+
};
|
|
114
|
+
const dateProps = ["created", "modified", "lastlogin"];
|
|
115
|
+
const specialProps = ["term", "filterType", ...dateProps];
|
|
116
|
+
Object.entries(filter).forEach(([key, value]) => {
|
|
117
|
+
// MatchOptions fields
|
|
118
|
+
if (!specialProps.includes(key)) {
|
|
119
|
+
result = __1.mergeSearchOptions(result, __1.serializeMatchOptions(key, value), "AND");
|
|
120
|
+
}
|
|
121
|
+
// Dates only go into q
|
|
122
|
+
if (dateProps.includes(key)) {
|
|
123
|
+
result = __1.mergeSearchOptions(result, __1.serializeDateRange(key, value), "AND");
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
// disabled is also a top-level property
|
|
127
|
+
if (filter.hasOwnProperty("disabled")) {
|
|
128
|
+
result.disabled = filter.disabled;
|
|
129
|
+
}
|
|
130
|
+
// add the term
|
|
131
|
+
if (filter.term) {
|
|
132
|
+
// Note: this is slightly different from other types
|
|
133
|
+
result.q = `(${filter.term}) ${result.q}`.trim();
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
exports.serializeUserFilterForPortal = serializeUserFilterForPortal;
|
|
138
|
+
//# sourceMappingURL=user-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-utils.js","sourceRoot":"","sources":["../../../src/search/user-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
/* Copyright (c) 2018-2021 Environmental Systems Research Institute, Inc.
|
|
3
3
|
* Apache-2.0 */
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.serializeStringOrArray = exports.serializeDateRange = exports.serializeMatchOptions = exports.mergeSearchOptions = exports.relativeDateToDateRange = exports.valueToMatchOptions = exports.mergeMatchOptions = exports.mergeDateRange = exports.
|
|
5
|
+
exports.getUserThumbnailUrl = exports.getGroupThumbnailUrl = exports.getNextFunction = exports.serializeStringOrArray = exports.serializeDateRange = exports.serializeMatchOptions = exports.mergeSearchOptions = exports.relativeDateToDateRange = exports.valueToMatchOptions = exports.mergeMatchOptions = exports.mergeDateRange = exports.expandApi = exports.expandApis = exports.SEARCH_APIS = void 0;
|
|
6
|
+
const arcgis_rest_auth_1 = require("@esri/arcgis-rest-auth");
|
|
6
7
|
const util_1 = require("../util");
|
|
7
8
|
/**
|
|
8
9
|
* Well known APIs
|
|
@@ -42,55 +43,30 @@ exports.SEARCH_APIS = {
|
|
|
42
43
|
};
|
|
43
44
|
/**
|
|
44
45
|
* @private
|
|
45
|
-
* Convert api "names" into full ApiDefinitions
|
|
46
|
+
* Convert array of api "names" into full ApiDefinitions
|
|
46
47
|
* @param apis
|
|
47
48
|
* @returns
|
|
48
49
|
*/
|
|
49
50
|
function expandApis(apis) {
|
|
50
|
-
return apis.map(
|
|
51
|
-
if (typeof api === "string" && api in exports.SEARCH_APIS) {
|
|
52
|
-
return exports.SEARCH_APIS[api];
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
// it's an object, so we trust that it's well formed
|
|
56
|
-
return api;
|
|
57
|
-
}
|
|
58
|
-
});
|
|
51
|
+
return apis.map(expandApi);
|
|
59
52
|
}
|
|
60
53
|
exports.expandApis = expandApis;
|
|
61
54
|
/**
|
|
62
55
|
* @private
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* Naieve implementation that just merges arrays
|
|
66
|
-
* @param responses
|
|
56
|
+
* Convert an api "name" into a full ApiDefinition
|
|
57
|
+
* @param api
|
|
67
58
|
* @returns
|
|
68
59
|
*/
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
// Merge Facets
|
|
78
|
-
const facets = responses.reduce((acc, response) => {
|
|
79
|
-
if (response.facets) {
|
|
80
|
-
acc = acc.concat(response.facets);
|
|
81
|
-
}
|
|
82
|
-
return acc;
|
|
83
|
-
}, []);
|
|
84
|
-
// Total
|
|
85
|
-
const total = responses.reduce((acc, entry) => {
|
|
86
|
-
if (entry.total) {
|
|
87
|
-
acc = acc + entry.total;
|
|
88
|
-
}
|
|
89
|
-
return acc;
|
|
90
|
-
}, 0);
|
|
91
|
-
return { total, results, facets };
|
|
60
|
+
function expandApi(api) {
|
|
61
|
+
if (typeof api === "string" && api in exports.SEARCH_APIS) {
|
|
62
|
+
return exports.SEARCH_APIS[api];
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// it's an object, so we trust that it's well formed
|
|
66
|
+
return api;
|
|
67
|
+
}
|
|
92
68
|
}
|
|
93
|
-
exports.
|
|
69
|
+
exports.expandApi = expandApi;
|
|
94
70
|
/**
|
|
95
71
|
* @private
|
|
96
72
|
* Merge two date ranges by taking the longest span
|
|
@@ -361,4 +337,70 @@ function serializeStringOrArray(join, key, value) {
|
|
|
361
337
|
return q;
|
|
362
338
|
}
|
|
363
339
|
exports.serializeStringOrArray = serializeStringOrArray;
|
|
340
|
+
/**
|
|
341
|
+
* Create a `.next()` function for a type
|
|
342
|
+
* @param request
|
|
343
|
+
* @param nextStart
|
|
344
|
+
* @param total
|
|
345
|
+
* @param fn
|
|
346
|
+
* @returns
|
|
347
|
+
*/
|
|
348
|
+
function getNextFunction(request, nextStart, total, fn) {
|
|
349
|
+
const clonedRequest = util_1.cloneObject(request);
|
|
350
|
+
// clone will not handle authentication so we do it manually
|
|
351
|
+
if (request.authentication) {
|
|
352
|
+
clonedRequest.authentication = arcgis_rest_auth_1.UserSession.deserialize(request.authentication.serialize());
|
|
353
|
+
}
|
|
354
|
+
// figure out the start
|
|
355
|
+
clonedRequest.start = nextStart > -1 ? nextStart : total + 1;
|
|
356
|
+
return (authentication) => {
|
|
357
|
+
if (authentication) {
|
|
358
|
+
clonedRequest.authentication = authentication;
|
|
359
|
+
}
|
|
360
|
+
return fn(clonedRequest);
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
exports.getNextFunction = getNextFunction;
|
|
364
|
+
/**
|
|
365
|
+
* Construct a the full url to a group thumbnail
|
|
366
|
+
*
|
|
367
|
+
* - If the group has a thumbnail, construct the full url
|
|
368
|
+
* - If the group is not public, append on the token
|
|
369
|
+
* @param portalUrl
|
|
370
|
+
* @param group
|
|
371
|
+
* @param token
|
|
372
|
+
* @returns
|
|
373
|
+
*/
|
|
374
|
+
function getGroupThumbnailUrl(portalUrl, group, token) {
|
|
375
|
+
let thumbnailUrl = null;
|
|
376
|
+
if (group.thumbnail) {
|
|
377
|
+
thumbnailUrl = `${portalUrl}/community/groups/${group.id}/info/${group.thumbnail}`;
|
|
378
|
+
if (token && group.access !== "public") {
|
|
379
|
+
thumbnailUrl = `${thumbnailUrl}?token=${token}`;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return thumbnailUrl;
|
|
383
|
+
}
|
|
384
|
+
exports.getGroupThumbnailUrl = getGroupThumbnailUrl;
|
|
385
|
+
/**
|
|
386
|
+
* Construct a the full url to a user thumbnail
|
|
387
|
+
*
|
|
388
|
+
* - If the user has a thumbnail, construct the full url
|
|
389
|
+
* - If the user is not public, append on the token
|
|
390
|
+
* @param portalUrl
|
|
391
|
+
* @param user
|
|
392
|
+
* @param token
|
|
393
|
+
* @returns
|
|
394
|
+
*/
|
|
395
|
+
function getUserThumbnailUrl(portalUrl, user, token) {
|
|
396
|
+
let thumbnailUrl = null;
|
|
397
|
+
if (user.thumbnail) {
|
|
398
|
+
thumbnailUrl = `${portalUrl}/community/users/${user.username}/info/${user.thumbnail}`;
|
|
399
|
+
if (token && user.access !== "public") {
|
|
400
|
+
thumbnailUrl = `${thumbnailUrl}?token=${token}`;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return thumbnailUrl;
|
|
404
|
+
}
|
|
405
|
+
exports.getUserThumbnailUrl = getUserThumbnailUrl;
|
|
364
406
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/search/utils.ts"],"names":[],"mappings":";AAAA;gBACgB;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/search/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,9 @@ function upgradeSiteSchema(model) {
|
|
|
25
25
|
model = _purge_non_guids_from_catalog_1._purgeNonGuidsFromCatalog(model);
|
|
26
26
|
model = _ensure_telemetry_1._ensureTelemetry(model);
|
|
27
27
|
model = _migrate_feed_config_1._migrateFeedConfig(model);
|
|
28
|
+
// WARNING - If you are writing a site schema migration,
|
|
29
|
+
// you probably need to apply it to site drafts as well!
|
|
30
|
+
// See https://github.com/Esri/hub.js/issues/498 for more details.
|
|
28
31
|
return model;
|
|
29
32
|
}
|
|
30
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-site-schema.js","sourceRoot":"","sources":["../../../src/sites/upgrade-site-schema.ts"],"names":[],"mappings":";;;AACA,wCAAqC;AACrC,+DAA4D;AAC5D,6DAAwD;AACxD,6EAAwE;AACxE,uDAAmD;AACnD,mFAA4E;AAC5E,2DAAuD;AACvD,iEAA4D;AAE5D;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,IAAI,iBAAO,CAAC,KAAK,EAAE,+BAA+B,CAAC,KAAK,yCAAmB,EAAE;QAC3E,OAAO,KAAK,CAAC;KACd;SAAM;QACL,sCAAsC;QACtC,KAAK,GAAG,qCAAgB,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,GAAG,qDAAwB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,GAAG,gCAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,GAAG,yDAAyB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,GAAG,oCAAgB,CAAS,KAAK,CAAC,CAAC;QACxC,KAAK,GAAG,yCAAkB,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;KACd;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"upgrade-site-schema.js","sourceRoot":"","sources":["../../../src/sites/upgrade-site-schema.ts"],"names":[],"mappings":";;;AACA,wCAAqC;AACrC,+DAA4D;AAC5D,6DAAwD;AACxD,6EAAwE;AACxE,uDAAmD;AACnD,mFAA4E;AAC5E,2DAAuD;AACvD,iEAA4D;AAE5D;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,IAAI,iBAAO,CAAC,KAAK,EAAE,+BAA+B,CAAC,KAAK,yCAAmB,EAAE;QAC3E,OAAO,KAAK,CAAC;KACd;SAAM;QACL,sCAAsC;QACtC,KAAK,GAAG,qCAAgB,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,GAAG,qDAAwB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,GAAG,gCAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,GAAG,yDAAyB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,GAAG,oCAAgB,CAAS,KAAK,CAAC,CAAC;QACxC,KAAK,GAAG,yCAAkB,CAAC,KAAK,CAAC,CAAC;QAClC,wDAAwD;QACxD,wDAAwD;QACxD,kEAAkE;QAClE,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAhBD,8CAgBC"}
|
package/dist/types/content.d.ts
CHANGED
|
@@ -203,7 +203,7 @@ export declare function datasetToContent(dataset: DatasetResource): IHubContent;
|
|
|
203
203
|
*/
|
|
204
204
|
export declare function datasetToItem(dataset: DatasetResource): IItem;
|
|
205
205
|
/**
|
|
206
|
-
*
|
|
206
|
+
* returns a new content that has the specified type and
|
|
207
207
|
* and updated related properties like normalizedType, family, etc
|
|
208
208
|
* @param content orignal content
|
|
209
209
|
* @param type new type
|
|
@@ -211,12 +211,23 @@ export declare function datasetToItem(dataset: DatasetResource): IItem;
|
|
|
211
211
|
*/
|
|
212
212
|
export declare const setContentType: (content: IHubContent, type: string) => IHubContent;
|
|
213
213
|
/**
|
|
214
|
-
*
|
|
214
|
+
* returns a new content that has the specified hubId and updated identifier
|
|
215
215
|
* @param content orignal content
|
|
216
216
|
* @param hubId new hubId
|
|
217
217
|
* @returns new content
|
|
218
218
|
*/
|
|
219
219
|
export declare const setContentHubId: (content: IHubContent, hubId: string) => IHubContent;
|
|
220
|
+
/**
|
|
221
|
+
* Calculates the relative and absolute urls for a given content on a specific site
|
|
222
|
+
*
|
|
223
|
+
* @param content
|
|
224
|
+
* @param siteModel
|
|
225
|
+
* @returns relative and absolute urls
|
|
226
|
+
*/
|
|
227
|
+
export declare const getContentSiteUrls: (content: IHubContent, siteModel: IModel) => {
|
|
228
|
+
relative: string;
|
|
229
|
+
absolute: string;
|
|
230
|
+
};
|
|
220
231
|
/**
|
|
221
232
|
* append the absolute URL to the content on the site
|
|
222
233
|
* also updates the relative URL in case the
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Filter, IHubSearchOptions
|
|
1
|
+
import { Filter, IHubSearchOptions } from "./types";
|
|
2
|
+
import { IHubContent, ISearchResponse } from "..";
|
|
2
3
|
/**
|
|
3
4
|
* Search for content via the Portal or Hub API
|
|
4
5
|
* @param filter
|
|
5
6
|
* @param options
|
|
6
7
|
*/
|
|
7
|
-
export declare function _searchContent(filter: Filter<"content">, options: IHubSearchOptions): Promise<
|
|
8
|
+
export declare function _searchContent(filter: Filter<"content">, options: IHubSearchOptions): Promise<ISearchResponse<IHubContent>>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { IGroup
|
|
1
|
+
import { IGroup } from "@esri/arcgis-rest-portal";
|
|
2
2
|
import { Filter, IFacet, IHubSearchOptions } from "./types";
|
|
3
|
+
import { ISearchResponse } from "..";
|
|
3
4
|
export interface IGroupSearchResult {
|
|
4
5
|
groups: IGroup[];
|
|
5
6
|
facets: IFacet[];
|
|
@@ -12,4 +13,4 @@ export interface IGroupSearchResult {
|
|
|
12
13
|
* @param options
|
|
13
14
|
* @returns
|
|
14
15
|
*/
|
|
15
|
-
export declare function _searchGroups(filter: Filter<"group">, options: IHubSearchOptions): Promise<
|
|
16
|
+
export declare function _searchGroups(filter: Filter<"group">, options: IHubSearchOptions): Promise<ISearchResponse<IGroup>>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IUser, UserSession } from "@esri/arcgis-rest-auth";
|
|
2
|
+
import { Filter, IHubSearchOptions, ISearchResponse } from "..";
|
|
3
|
+
/**
|
|
4
|
+
* Extends IHubSearchOptions to make auth mandatory
|
|
5
|
+
*/
|
|
6
|
+
export interface IAuthenticatedHubSearchOptions extends IHubSearchOptions {
|
|
7
|
+
authentication: UserSession;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Extends `IUser` with url optional props for the user's
|
|
11
|
+
* profile and thumbnail
|
|
12
|
+
*/
|
|
13
|
+
export interface IHubUser extends IUser {
|
|
14
|
+
profileUrl?: string;
|
|
15
|
+
thumbnailUrl?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Search for Users via the Portal API.
|
|
19
|
+
*
|
|
20
|
+
* **Note** Authentication is required
|
|
21
|
+
*
|
|
22
|
+
* Note: in the future, there may be options to search via
|
|
23
|
+
* a Hub specific API
|
|
24
|
+
* @param filter
|
|
25
|
+
* @param options
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
export declare function _searchUsers(filter: Filter<"user">, options: IAuthenticatedHubSearchOptions): Promise<ISearchResponse<IHubUser>>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from "./hub-api-search";
|
|
2
2
|
export * from "./content-utils";
|
|
3
3
|
export * from "./group-utils";
|
|
4
|
+
export * from "./user-utils";
|
|
4
5
|
export * from "./utils";
|
|
5
6
|
export * from "./types";
|
|
6
7
|
export * from "./_searchContent";
|
|
7
8
|
export * from "./_searchGroups";
|
|
9
|
+
export * from "./_searchUsers";
|
|
@@ -105,16 +105,21 @@ export interface IWellKnownContentFilters {
|
|
|
105
105
|
}
|
|
106
106
|
export declare type NamedContentFilter = keyof IWellKnownContentFilters;
|
|
107
107
|
export interface IUserFilterDefinition {
|
|
108
|
+
created?: IDateRange<number> | IRelativeDate;
|
|
108
109
|
disabled?: boolean;
|
|
109
110
|
email?: string | string[] | IMatchOptions;
|
|
110
111
|
firstname?: string | string[] | IMatchOptions;
|
|
111
112
|
fullname?: string | string[] | IMatchOptions;
|
|
112
113
|
groups?: string | string[] | IMatchOptions;
|
|
114
|
+
lastlogin?: IDateRange<number> | IRelativeDate;
|
|
113
115
|
lastname?: string | string[] | IMatchOptions;
|
|
116
|
+
modified?: IDateRange<number> | IRelativeDate;
|
|
117
|
+
role?: string | string[] | IMatchOptions;
|
|
118
|
+
term?: string;
|
|
119
|
+
userlicensetype?: string | string[] | IMatchOptions;
|
|
114
120
|
username?: string | string[] | IMatchOptions;
|
|
115
121
|
}
|
|
116
122
|
export interface IGroupFilterDefinition {
|
|
117
|
-
term?: string;
|
|
118
123
|
access?: string | string[] | IMatchOptions;
|
|
119
124
|
created?: IDateRange<number> | IRelativeDate;
|
|
120
125
|
id?: string | string[] | IMatchOptions;
|
|
@@ -124,6 +129,7 @@ export interface IGroupFilterDefinition {
|
|
|
124
129
|
owner?: string | string[] | IMatchOptions;
|
|
125
130
|
searchUserAccess?: "groupMember";
|
|
126
131
|
tags?: string | string[] | IMatchOptions;
|
|
132
|
+
term?: string;
|
|
127
133
|
title?: string | string[] | IMatchOptions;
|
|
128
134
|
typekeywords?: string | string[] | IMatchOptions;
|
|
129
135
|
}
|
|
@@ -207,6 +213,9 @@ export interface ICatalog {
|
|
|
207
213
|
collections?: ICollection[];
|
|
208
214
|
facets?: IFacet[];
|
|
209
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Sort Option to be displayed in a UI
|
|
218
|
+
*/
|
|
210
219
|
export interface ISortOption {
|
|
211
220
|
label: string;
|
|
212
221
|
attribute: string;
|
|
@@ -219,11 +228,18 @@ export interface ICollection {
|
|
|
219
228
|
filter: Filter<FilterType>;
|
|
220
229
|
facets?: IFacet[];
|
|
221
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Defines a span of time by specifying a `from` and `to` Date
|
|
233
|
+
* as either a number or a ISO string
|
|
234
|
+
*/
|
|
222
235
|
export interface IDateRange<T> {
|
|
223
236
|
type?: "date-range";
|
|
224
237
|
from: T;
|
|
225
238
|
to: T;
|
|
226
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Relative Date will be convertd to a `IDateRange` at run-time
|
|
242
|
+
*/
|
|
227
243
|
export interface IRelativeDate {
|
|
228
244
|
type: "relative-date";
|
|
229
245
|
num: number;
|
|
@@ -270,7 +286,7 @@ export interface IHubSearchOptions {
|
|
|
270
286
|
aggregations?: string[];
|
|
271
287
|
bbox?: string;
|
|
272
288
|
fields?: string;
|
|
273
|
-
|
|
289
|
+
api?: NamedApis | IApiDefinition;
|
|
274
290
|
}
|
|
275
291
|
/**
|
|
276
292
|
* searchContent return
|
|
@@ -279,6 +295,8 @@ export interface IContentSearchResult {
|
|
|
279
295
|
total: number;
|
|
280
296
|
results: IHubContent[];
|
|
281
297
|
facets?: IFacet[];
|
|
298
|
+
hasNext: boolean;
|
|
299
|
+
next: (params?: any) => Promise<IContentSearchResult>;
|
|
282
300
|
}
|
|
283
301
|
export interface IWellKnownApis {
|
|
284
302
|
arcgis: IApiDefinition;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ISearchOptions } from "@esri/arcgis-rest-portal";
|
|
2
|
+
import { Filter, IUserFilterDefinition } from "..";
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* Merge `Filter<"user">` objects
|
|
6
|
+
*
|
|
7
|
+
* Useful in components which may get partial filters from a variety of
|
|
8
|
+
* sub-components, which are then combined into a single filter prior
|
|
9
|
+
* to executing the search.
|
|
10
|
+
* @param filters
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export declare function mergeUserFilters(filters: Array<Filter<"user">>): Filter<"user">;
|
|
14
|
+
/**
|
|
15
|
+
* Prior to serialization into the query syntax for the backing APIs, we first expand [Filters](../Filter)
|
|
16
|
+
*
|
|
17
|
+
* Filter's can express their intent in a very terse form, but to ensure consistent structures
|
|
18
|
+
* we expand them into their more verbose form.
|
|
19
|
+
*
|
|
20
|
+
* i.e. `firstname: "John"` expands into `firstname: { any: ["John"]}`
|
|
21
|
+
*
|
|
22
|
+
* - Fields defined as `string | string[] | MatchOptions` will be converted to a `MatchOptions`
|
|
23
|
+
* - RelativeDate fields are converted to DateRange<number>
|
|
24
|
+
* @param filter
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
export declare function expandUserFilter(filter: Filter<"user">): IUserFilterDefinition;
|
|
28
|
+
/**
|
|
29
|
+
* @private
|
|
30
|
+
* Serialize an `IUserFilterDefinition` into an `ISearchOptions` for use
|
|
31
|
+
* with `searchUsers`
|
|
32
|
+
* @param filter
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
export declare function serializeUserFilterForPortal(filter: IUserFilterDefinition): ISearchOptions;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { IUser } from "@esri/arcgis-rest-auth";
|
|
2
|
+
import { IGroup, ISearchOptions } from "@esri/arcgis-rest-portal";
|
|
3
|
+
import { ISearchResponse } from "..";
|
|
4
|
+
import { IMatchOptions, IDateRange, IRelativeDate, IWellKnownApis, IApiDefinition, NamedApis } from "./types";
|
|
3
5
|
/**
|
|
4
6
|
* Well known APIs
|
|
5
7
|
* Short-forms for specifying common APIs
|
|
@@ -7,20 +9,18 @@ import { IMatchOptions, IDateRange, IRelativeDate, IWellKnownApis, IApiDefinitio
|
|
|
7
9
|
export declare const SEARCH_APIS: IWellKnownApis;
|
|
8
10
|
/**
|
|
9
11
|
* @private
|
|
10
|
-
* Convert api "names" into full ApiDefinitions
|
|
12
|
+
* Convert array of api "names" into full ApiDefinitions
|
|
11
13
|
* @param apis
|
|
12
14
|
* @returns
|
|
13
15
|
*/
|
|
14
16
|
export declare function expandApis(apis: Array<NamedApis | IApiDefinition>): IApiDefinition[];
|
|
15
17
|
/**
|
|
16
18
|
* @private
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* Naieve implementation that just merges arrays
|
|
20
|
-
* @param responses
|
|
19
|
+
* Convert an api "name" into a full ApiDefinition
|
|
20
|
+
* @param api
|
|
21
21
|
* @returns
|
|
22
22
|
*/
|
|
23
|
-
export declare function
|
|
23
|
+
export declare function expandApi(api: NamedApis | IApiDefinition): IApiDefinition;
|
|
24
24
|
/**
|
|
25
25
|
* @private
|
|
26
26
|
* Merge two date ranges by taking the longest span
|
|
@@ -90,3 +90,34 @@ export declare function serializeDateRange(key: string, range: IDateRange<number
|
|
|
90
90
|
* @returns
|
|
91
91
|
*/
|
|
92
92
|
export declare function serializeStringOrArray(join: "AND" | "OR", key: string, value: string | string[]): string;
|
|
93
|
+
/**
|
|
94
|
+
* Create a `.next()` function for a type
|
|
95
|
+
* @param request
|
|
96
|
+
* @param nextStart
|
|
97
|
+
* @param total
|
|
98
|
+
* @param fn
|
|
99
|
+
* @returns
|
|
100
|
+
*/
|
|
101
|
+
export declare function getNextFunction<T>(request: ISearchOptions, nextStart: number, total: number, fn: (r: any) => Promise<ISearchResponse<T>>): () => Promise<ISearchResponse<T>>;
|
|
102
|
+
/**
|
|
103
|
+
* Construct a the full url to a group thumbnail
|
|
104
|
+
*
|
|
105
|
+
* - If the group has a thumbnail, construct the full url
|
|
106
|
+
* - If the group is not public, append on the token
|
|
107
|
+
* @param portalUrl
|
|
108
|
+
* @param group
|
|
109
|
+
* @param token
|
|
110
|
+
* @returns
|
|
111
|
+
*/
|
|
112
|
+
export declare function getGroupThumbnailUrl(portalUrl: string, group: IGroup, token?: string): string;
|
|
113
|
+
/**
|
|
114
|
+
* Construct a the full url to a user thumbnail
|
|
115
|
+
*
|
|
116
|
+
* - If the user has a thumbnail, construct the full url
|
|
117
|
+
* - If the user is not public, append on the token
|
|
118
|
+
* @param portalUrl
|
|
119
|
+
* @param user
|
|
120
|
+
* @param token
|
|
121
|
+
* @returns
|
|
122
|
+
*/
|
|
123
|
+
export declare function getUserThumbnailUrl(portalUrl: string, user: IUser, token?: string): string;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { IPortal, ISearchResult } from "@esri/arcgis-rest-portal";
|
|
|
3
3
|
import { UserSession } from "@esri/arcgis-rest-auth";
|
|
4
4
|
import { IStructuredLicense } from "./items/get-structured-license";
|
|
5
5
|
import { IRequestOptions } from "@esri/arcgis-rest-request";
|
|
6
|
+
import { IFacet } from "./search";
|
|
6
7
|
/**
|
|
7
8
|
* Generic Model, used with all items that have a json
|
|
8
9
|
* `/data` payload
|
|
@@ -395,4 +396,20 @@ export interface IHubTeam extends IGroup {
|
|
|
395
396
|
[key: string]: any;
|
|
396
397
|
};
|
|
397
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* Defines a generic search response interface with parameterized result type
|
|
401
|
+
* for different types of searches
|
|
402
|
+
*
|
|
403
|
+
* total - total number of results
|
|
404
|
+
* results - potentially paginated list of results
|
|
405
|
+
* hasNext - boolean flag for if there are any more pages ofresults
|
|
406
|
+
* next - invokable function for obtaining next page of results
|
|
407
|
+
*/
|
|
408
|
+
export interface ISearchResponse<T> {
|
|
409
|
+
total: number;
|
|
410
|
+
results: T[];
|
|
411
|
+
hasNext: boolean;
|
|
412
|
+
next: (params?: any) => Promise<ISearchResponse<T>>;
|
|
413
|
+
facets?: IFacet[];
|
|
414
|
+
}
|
|
398
415
|
export {};
|