@esri/hub-common 9.40.0 → 9.41.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.
- package/dist/es2017/index.js +1 -0
- package/dist/es2017/index.js.map +1 -1
- package/dist/es2017/search/_internal/portalSearchGroups.js.map +1 -1
- package/dist/es2017/search/_internal/portalSearchUsers.js +89 -0
- package/dist/es2017/search/_internal/portalSearchUsers.js.map +1 -0
- package/dist/es2017/search/hubSearch.js +4 -1
- package/dist/es2017/search/hubSearch.js.map +1 -1
- package/dist/es2017/urls/getUserHomeUrl.js +12 -0
- package/dist/es2017/urls/getUserHomeUrl.js.map +1 -0
- package/dist/es2017/urls/index.js +1 -0
- package/dist/es2017/urls/index.js.map +1 -1
- package/dist/es2017/users/HubUsers.js +64 -0
- package/dist/es2017/users/HubUsers.js.map +1 -0
- package/dist/es2017/users/_internal/enrichments.js +85 -0
- package/dist/es2017/users/_internal/enrichments.js.map +1 -0
- package/dist/es2017/users/index.js +2 -0
- package/dist/es2017/users/index.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/search/_internal/portalSearchGroups.js.map +1 -1
- package/dist/esm/search/_internal/portalSearchUsers.js +104 -0
- package/dist/esm/search/_internal/portalSearchUsers.js.map +1 -0
- package/dist/esm/search/hubSearch.js +4 -1
- package/dist/esm/search/hubSearch.js.map +1 -1
- package/dist/esm/urls/getUserHomeUrl.js +12 -0
- package/dist/esm/urls/getUserHomeUrl.js.map +1 -0
- package/dist/esm/urls/index.js +1 -0
- package/dist/esm/urls/index.js.map +1 -1
- package/dist/esm/users/HubUsers.js +66 -0
- package/dist/esm/users/HubUsers.js.map +1 -0
- package/dist/esm/users/_internal/enrichments.js +86 -0
- package/dist/esm/users/_internal/enrichments.js.map +1 -0
- package/dist/esm/users/index.js +2 -0
- package/dist/esm/users/index.js.map +1 -0
- package/dist/node/index.js +1 -0
- package/dist/node/index.js.map +1 -1
- package/dist/node/search/_internal/portalSearchGroups.js.map +1 -1
- package/dist/node/search/_internal/portalSearchUsers.js +93 -0
- package/dist/node/search/_internal/portalSearchUsers.js.map +1 -0
- package/dist/node/search/hubSearch.js +4 -1
- package/dist/node/search/hubSearch.js.map +1 -1
- package/dist/node/urls/getUserHomeUrl.js +16 -0
- package/dist/node/urls/getUserHomeUrl.js.map +1 -0
- package/dist/node/urls/index.js +1 -0
- package/dist/node/urls/index.js.map +1 -1
- package/dist/node/users/HubUsers.js +68 -0
- package/dist/node/users/HubUsers.js.map +1 -0
- package/dist/node/users/_internal/enrichments.js +89 -0
- package/dist/node/users/_internal/enrichments.js.map +1 -0
- package/dist/node/users/index.js +5 -0
- package/dist/node/users/index.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/search/_internal/portalSearchUsers.d.ts +8 -0
- package/dist/types/search/types/types.d.ts +17 -1
- package/dist/types/urls/getUserHomeUrl.d.ts +10 -0
- package/dist/types/urls/index.d.ts +1 -0
- package/dist/types/users/HubUsers.d.ts +11 -0
- package/dist/types/users/_internal/enrichments.d.ts +28 -0
- package/dist/types/users/index.d.ts +1 -0
- package/dist/umd/common.umd.js +274 -23
- package/dist/umd/common.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { __awaiter, __generator, __spreadArrays } from "tslib";
|
|
2
|
+
import { fetchUserEnrichments } from "./_internal/enrichments";
|
|
3
|
+
import { getProp } from "../objects";
|
|
4
|
+
import { getUserThumbnailUrl } from "../search";
|
|
5
|
+
import { parseInclude } from "../search/_internal/parseInclude";
|
|
6
|
+
import { getUserHomeUrl } from "../urls";
|
|
7
|
+
import { unique } from "../util";
|
|
8
|
+
import { mapBy } from "../utils";
|
|
9
|
+
/**
|
|
10
|
+
* Enrich a User object
|
|
11
|
+
* @param user
|
|
12
|
+
* @param includes
|
|
13
|
+
* @param requestOptions
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export function enrichUserSearchResult(user, include, requestOptions) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
18
|
+
var result, DEFAULTS, specs, enrichments, enriched, token;
|
|
19
|
+
return __generator(this, function (_a) {
|
|
20
|
+
switch (_a.label) {
|
|
21
|
+
case 0:
|
|
22
|
+
result = {
|
|
23
|
+
access: user.access,
|
|
24
|
+
id: user.username,
|
|
25
|
+
type: "User",
|
|
26
|
+
name: user.fullName,
|
|
27
|
+
owner: user.username,
|
|
28
|
+
summary: user.description,
|
|
29
|
+
createdDate: new Date(user.created),
|
|
30
|
+
createdDateSource: "user.created",
|
|
31
|
+
updatedDate: new Date(user.modified),
|
|
32
|
+
updatedDateSource: "user.modified",
|
|
33
|
+
family: "people",
|
|
34
|
+
links: {
|
|
35
|
+
self: "not-implemented",
|
|
36
|
+
siteRelative: "not-implemented",
|
|
37
|
+
thumbnail: "not-implemented",
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
DEFAULTS = ["org.name AS orgName"];
|
|
41
|
+
// merge includes
|
|
42
|
+
include = __spreadArrays(DEFAULTS, include).filter(unique);
|
|
43
|
+
specs = include.map(parseInclude);
|
|
44
|
+
enrichments = mapBy("enrichment", specs).filter(unique);
|
|
45
|
+
enriched = {};
|
|
46
|
+
if (!enrichments.length) return [3 /*break*/, 2];
|
|
47
|
+
return [4 /*yield*/, fetchUserEnrichments(user, enrichments, requestOptions)];
|
|
48
|
+
case 1:
|
|
49
|
+
enriched = _a.sent();
|
|
50
|
+
_a.label = 2;
|
|
51
|
+
case 2:
|
|
52
|
+
// map the enriched props onto the result
|
|
53
|
+
specs.forEach(function (spec) {
|
|
54
|
+
result[spec.prop] = getProp(enriched, spec.path);
|
|
55
|
+
});
|
|
56
|
+
token = requestOptions.authentication.token;
|
|
57
|
+
// Handle links
|
|
58
|
+
result.links.thumbnail = getUserThumbnailUrl(requestOptions.portal, user, token);
|
|
59
|
+
result.links.self = getUserHomeUrl(result.id, requestOptions);
|
|
60
|
+
result.links.siteRelative = "/people/" + result.id;
|
|
61
|
+
return [2 /*return*/, result];
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=HubUsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HubUsers.js","sourceRoot":"","sources":["../../../src/users/HubUsers.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAoB,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC;;;;;;GAMG;AACH,MAAM,UAAgB,sBAAsB,CAC1C,IAAW,EACX,OAAiB,EACjB,cAAkC;;;;;;oBAG5B,MAAM,GAAqB;wBAC/B,MAAM,EAAE,IAAI,CAAC,MAAqB;wBAClC,EAAE,EAAE,IAAI,CAAC,QAAQ;wBACjB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,QAAQ;wBACnB,KAAK,EAAE,IAAI,CAAC,QAAQ;wBACpB,OAAO,EAAE,IAAI,CAAC,WAAW;wBACzB,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;wBACnC,iBAAiB,EAAE,cAAc;wBACjC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;wBACpC,iBAAiB,EAAE,eAAe;wBAClC,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE;4BACL,IAAI,EAAE,iBAAiB;4BACvB,YAAY,EAAE,iBAAiB;4BAC/B,SAAS,EAAE,iBAAiB;yBAC7B;qBACF,CAAC;oBAMI,QAAQ,GAAa,CAAC,qBAAqB,CAAC,CAAC;oBAEnD,iBAAiB;oBACjB,OAAO,GAAG,eAAI,QAAQ,EAAK,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAE7C,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAElC,WAAW,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAE1D,QAAQ,GAAG,EAAE,CAAC;yBAId,WAAW,CAAC,MAAM,EAAlB,wBAAkB;oBACT,qBAAM,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,EAAA;;oBAAxE,QAAQ,GAAG,SAA6D,CAAC;;;oBAG3E,yCAAyC;oBACzC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;wBACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnD,CAAC,CAAC,CAAC;oBAEG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC;oBAElD,eAAe;oBACf,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAC1C,cAAc,CAAC,MAAM,EACrB,IAAI,EACJ,KAAK,CACN,CAAC;oBACF,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;oBAC9D,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,aAAW,MAAM,CAAC,EAAI,CAAC;oBAEnD,sBAAO,MAAM,EAAC;;;;CACf"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
import { getPortalBaseFromOrgUrl, fetchOrg } from "../..";
|
|
3
|
+
import { getEnrichmentErrors } from "../../items/_enrichments";
|
|
4
|
+
import OperationStack from "../../OperationStack";
|
|
5
|
+
import { createOperationPipeline } from "../../utils";
|
|
6
|
+
var enrichUserOrg = function (input) {
|
|
7
|
+
var data = input.data, stack = input.stack, requestOptions = input.requestOptions;
|
|
8
|
+
var opId = stack.start("enrichUserOrg");
|
|
9
|
+
var options = __assign(__assign({}, requestOptions), {
|
|
10
|
+
// In order to get the correct response, we must pass options.portal
|
|
11
|
+
// as a base portal url (e.g., www.arcgis.com, qaext.arcgis.com, etc)
|
|
12
|
+
// **not** an org portal (i.e. org.maps.arcgis.com).
|
|
13
|
+
portal: getPortalBaseFromOrgUrl(requestOptions.portal) + "/sharing/rest" });
|
|
14
|
+
// TODO: Add Caching
|
|
15
|
+
// Had implemented a simple caching system, but it leads to unstable
|
|
16
|
+
// tests because we can't deterministically clear it
|
|
17
|
+
// if (!orgCache[data.user.orgId]) {
|
|
18
|
+
// orgCache[data.user.orgId] = fetchOrg(data.user.orgId, options);
|
|
19
|
+
// }
|
|
20
|
+
// return (orgCache[data.user.orgId] as Promise<IPortal>)
|
|
21
|
+
return fetchOrg(data.user.orgId, options)
|
|
22
|
+
.then(function (results) {
|
|
23
|
+
stack.finish(opId);
|
|
24
|
+
return {
|
|
25
|
+
data: __assign(__assign({}, data), {
|
|
26
|
+
org: results,
|
|
27
|
+
}),
|
|
28
|
+
stack: stack,
|
|
29
|
+
requestOptions: requestOptions,
|
|
30
|
+
};
|
|
31
|
+
})
|
|
32
|
+
.catch(function (error) { return handleEnrichmentError(error, input, opId); });
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Simple cache for user org's. This does not expire
|
|
36
|
+
* but that seems reasonable as Org props rarely change
|
|
37
|
+
*/
|
|
38
|
+
// This works find at run-time, but it's a problem in tests
|
|
39
|
+
// where we are validating calls. Will work with Randy to
|
|
40
|
+
// create something that's more robust
|
|
41
|
+
// const orgCache: Record<string, any> = {};
|
|
42
|
+
// add the error to the content.errors,
|
|
43
|
+
// log current stack operation as finished with an error
|
|
44
|
+
// and return output that can be piped into the next operation
|
|
45
|
+
var handleEnrichmentError = function (error, input, opId) {
|
|
46
|
+
var data = input.data, stack = input.stack, requestOptions = input.requestOptions;
|
|
47
|
+
stack.finish(opId, { error: error });
|
|
48
|
+
return {
|
|
49
|
+
data: __assign(__assign({}, data), { errors: getEnrichmentErrors(error, data.errors) }),
|
|
50
|
+
stack: stack,
|
|
51
|
+
requestOptions: requestOptions,
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Available enrichments for Groups
|
|
56
|
+
*/
|
|
57
|
+
var groupEnrichementOperations = {
|
|
58
|
+
org: enrichUserOrg,
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Fetch enrichments for Users
|
|
62
|
+
* @param group
|
|
63
|
+
* @param enrichments
|
|
64
|
+
* @param requestOptions
|
|
65
|
+
* @returns
|
|
66
|
+
*/
|
|
67
|
+
export function fetchUserEnrichments(user, enrichments, requestOptions) {
|
|
68
|
+
// create a pipeline of enrichment operations
|
|
69
|
+
var operations = enrichments.reduce(function (ops, enrichment) {
|
|
70
|
+
var operation = groupEnrichementOperations[enrichment];
|
|
71
|
+
// only include the enrichments that we know how to fetch
|
|
72
|
+
operation && ops.push(operation);
|
|
73
|
+
return ops;
|
|
74
|
+
}, []);
|
|
75
|
+
var pipeline = createOperationPipeline(operations);
|
|
76
|
+
// execute pipeline and return the item and enrichments
|
|
77
|
+
return pipeline({
|
|
78
|
+
data: { user: user },
|
|
79
|
+
stack: new OperationStack(),
|
|
80
|
+
requestOptions: requestOptions,
|
|
81
|
+
}).then(function (output) {
|
|
82
|
+
// TODO: send telemetry so we have info on what enrichments are requested and possible errors
|
|
83
|
+
return output.data;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=enrichments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrichments.js","sourceRoot":"","sources":["../../../../src/users/_internal/enrichments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/users/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
package/dist/node/index.js
CHANGED
|
@@ -32,6 +32,7 @@ tslib_1.__exportStar(require("./utils"), exports);
|
|
|
32
32
|
tslib_1.__exportStar(require("./Hub"), exports);
|
|
33
33
|
tslib_1.__exportStar(require("./pages"), exports);
|
|
34
34
|
tslib_1.__exportStar(require("./org"), exports);
|
|
35
|
+
tslib_1.__exportStar(require("./users"), exports);
|
|
35
36
|
const OperationStack_1 = require("./OperationStack");
|
|
36
37
|
exports.OperationStack = OperationStack_1.default;
|
|
37
38
|
const OperationError_1 = require("./OperationError");
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;;;;AAEhB,mDAAyB;AACzB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,iDAAuB;AACvB,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,kDAAwB;AACxB,mDAAyB;AACzB,oDAA0B;AAC1B,qDAA2B;AAC3B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,iDAAuB;AACvB,iDAAuB;AACvB,kDAAwB;AACxB,gDAAsB;AACtB,kDAAwB;AACxB,gDAAsB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;;;;AAEhB,mDAAyB;AACzB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,iDAAuB;AACvB,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,kDAAwB;AACxB,mDAAyB;AACzB,oDAA0B;AAC1B,qDAA2B;AAC3B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,iDAAuB;AACvB,iDAAuB;AACvB,kDAAwB;AACxB,gDAAsB;AACtB,kDAAwB;AACxB,gDAAsB;AACtB,kDAAwB;AAExB,qDAA8C;AAKrC,yBALF,wBAAc,CAKE;AAJvB,qDAA8C;AAIrB,yBAJlB,wBAAc,CAIkB;AAHvC,yCAAkC;AAGO,mBAHlC,kBAAQ,CAGkC;AACjD,6BAAkC;AAAzB,4FAAA,IAAI,OAAA;AAAE,4FAAA,IAAI,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portalSearchGroups.js","sourceRoot":"","sources":["../../../../src/search/_internal/portalSearchGroups.ts"],"names":[],"mappings":";;;AAAA,iEAAwE;AAExE,sDAAiE;AAEjE,kDAA+E;AAO/E,oCAAsD;AAEtD;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CACtC,YAA0C,EAC1C,OAA0B;IAE1B,MAAM;IACN,MAAM,GAAG,GAAG,iBAAS,CAAC,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC3B,IAAI,OAAO,CAAC,cAAc,EAAE;YAC1B,gCAAgC;YAChC,OAAO,CAAC,cAAc,GAAG;gBACvB,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM;aACtC,CAAC;SACH;aAAM;YACL,OAAO,CAAC,cAAc,GAAG;gBACvB,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,eAAe;aAClC,CAAC;SACH;KACF;
|
|
1
|
+
{"version":3,"file":"portalSearchGroups.js","sourceRoot":"","sources":["../../../../src/search/_internal/portalSearchGroups.ts"],"names":[],"mappings":";;;AAAA,iEAAwE;AAExE,sDAAiE;AAEjE,kDAA+E;AAO/E,oCAAsD;AAEtD;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CACtC,YAA0C,EAC1C,OAA0B;IAE1B,MAAM;IACN,MAAM,GAAG,GAAG,iBAAS,CAAC,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC3B,IAAI,OAAO,CAAC,cAAc,EAAE;YAC1B,gCAAgC;YAChC,OAAO,CAAC,cAAc,GAAG;gBACvB,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM;aACtC,CAAC;SACH;aAAM;YACL,OAAO,CAAC,cAAc,GAAG;gBACvB,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,eAAe;aAClC,CAAC;SACH;KACF;IAED,sDAAsD;IACtD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAC7C,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,2BAAY,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,MAAM,EAAE,GAAG,6CAA8B,CAAC,cAAc,CAAC,CAAC;IAC1D,mFAAmF;IACnF,MAAM,KAAK,GAAmC;QAC5C,gBAAgB;QAChB,KAAK;QACL,WAAW;QACX,WAAW;QACX,SAAS;QACT,OAAO;QACP,gBAAgB;KACjB,CAAC;IACF,sBAAsB;IACtB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAChC,EAAE,CAAC,IAA4B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;SAClD;IACH,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;QACtB,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,eAAe,CAAC;KACnE;IAED,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AApDD,gDAoDC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,YAAY,CACzB,aAA6B;IAE7B,wBAAwB;IACxB,MAAM,IAAI,GAAG,MAAM,iCAAY,CAAC,aAAa,CAAC,CAAC;IAE/C,qCAAqC;IACrC,uCAAuC;IACvC,MAAM,EAAE,GAAG,CAAC,IAAY,EAAE,EAAE;QAC1B,OAAO,mBAAmB,CACxB,IAAI,EACJ,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,cAAc,CAC7B,CAAC;IACJ,CAAC,CAAC;IAEF,mBAAmB;IACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAExD,6CAA6C;IAC7C,uBAAuB;IACvB,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO;QACP,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAC5B,IAAI,EAAE,uBAAe,CACnB,aAAa,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,EACV,YAAY,CACb;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB,CAChC,KAAa,EACb,WAAqB,EAAE,EACvB,cAAmC;IAEnC,+BAA+B;IAC/B,iDAAiD;IACjD,6CAA6C;IAC7C,mCAAmC;IACnC,OAAO,mCAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.portalSearchUsers = void 0;
|
|
4
|
+
const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
|
|
5
|
+
const __1 = require("../..");
|
|
6
|
+
const HubError_1 = require("../../HubError");
|
|
7
|
+
const filter_utils_1 = require("../filter-utils");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
/**
|
|
10
|
+
* @private
|
|
11
|
+
* Portal Search implementation for Users
|
|
12
|
+
* @param filterGroups
|
|
13
|
+
* @param options
|
|
14
|
+
*/
|
|
15
|
+
async function portalSearchUsers(filterGroups, options) {
|
|
16
|
+
// requestOptions is always required and user must be authd
|
|
17
|
+
if (!options.requestOptions) {
|
|
18
|
+
throw new HubError_1.default("portalSearchUsers", "requestOptions: IHubRequestOptions is required.");
|
|
19
|
+
}
|
|
20
|
+
if (!options.requestOptions.authentication) {
|
|
21
|
+
throw new HubError_1.default("portalSearchUsers", "requestOptions must pass authentication.");
|
|
22
|
+
}
|
|
23
|
+
// Expand the individual filters in each of the groups
|
|
24
|
+
const expandedGroups = filterGroups.map((fg) => {
|
|
25
|
+
fg.filters = fg.filters.map(filter_utils_1.expandFilter);
|
|
26
|
+
return fg;
|
|
27
|
+
});
|
|
28
|
+
// Serialize the all the groups for portal
|
|
29
|
+
const so = filter_utils_1.serializeFilterGroupsForPortal(expandedGroups);
|
|
30
|
+
// Array of properties we want to copy from IHubSearchOptions to the ISearchOptions
|
|
31
|
+
const props = [
|
|
32
|
+
"num",
|
|
33
|
+
"sortField",
|
|
34
|
+
"sortOrder",
|
|
35
|
+
"include",
|
|
36
|
+
"start",
|
|
37
|
+
"requestOptions",
|
|
38
|
+
];
|
|
39
|
+
// copy the props over
|
|
40
|
+
props.forEach((prop) => {
|
|
41
|
+
if (options.hasOwnProperty(prop)) {
|
|
42
|
+
so[prop] = options[prop];
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
// Ensure authentication gets sent
|
|
46
|
+
so.authentication = options.requestOptions.authentication;
|
|
47
|
+
// Execute search
|
|
48
|
+
return searchPortal(so);
|
|
49
|
+
}
|
|
50
|
+
exports.portalSearchUsers = portalSearchUsers;
|
|
51
|
+
/**
|
|
52
|
+
* Internal portal search, which then converts `IGroup`s to `IHubSearchResult`s
|
|
53
|
+
* handling enrichments & includes along the way
|
|
54
|
+
*
|
|
55
|
+
* @param searchOptions
|
|
56
|
+
* @returns
|
|
57
|
+
*/
|
|
58
|
+
async function searchPortal(searchOptions) {
|
|
59
|
+
// Execute portal search
|
|
60
|
+
const resp = await arcgis_rest_portal_1.searchUsers(searchOptions);
|
|
61
|
+
// create mappable fn that will close
|
|
62
|
+
// over the includes and requestOptions
|
|
63
|
+
const fn = (user) => {
|
|
64
|
+
return userToSearchResult(user, searchOptions.include, searchOptions.requestOptions);
|
|
65
|
+
};
|
|
66
|
+
// map over results
|
|
67
|
+
const results = await Promise.all(resp.results.map(fn));
|
|
68
|
+
// Group Search does not support aggregations
|
|
69
|
+
// Construct the return
|
|
70
|
+
return {
|
|
71
|
+
total: resp.total,
|
|
72
|
+
results,
|
|
73
|
+
facets: [],
|
|
74
|
+
hasNext: resp.nextStart > -1,
|
|
75
|
+
next: utils_1.getNextFunction(searchOptions, resp.nextStart, resp.total, searchPortal),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Convert an Item to a IHubSearchResult
|
|
80
|
+
* Fetches the includes and attaches them to the item
|
|
81
|
+
* @param item
|
|
82
|
+
* @param includes
|
|
83
|
+
* @param requestOptions
|
|
84
|
+
* @returns
|
|
85
|
+
*/
|
|
86
|
+
async function userToSearchResult(user, includes = [], requestOptions) {
|
|
87
|
+
// Delegate to HubGroups module
|
|
88
|
+
// This layer of indirection is not necessary but
|
|
89
|
+
// aligns with how the items search works and
|
|
90
|
+
// allows for future specialization
|
|
91
|
+
return __1.enrichUserSearchResult(user, includes, requestOptions);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=portalSearchUsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portalSearchUsers.js","sourceRoot":"","sources":["../../../../src/search/_internal/portalSearchUsers.ts"],"names":[],"mappings":";;;AAAA,iEAIkC;AAElC,6BAAuD;AAEvD,6CAAsC;AAGtC,kDAA+E;AAQ/E,oCAAsD;AAEtD;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CACrC,YAAyC,EACzC,OAA0B;IAE1B,2DAA2D;IAC3D,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC3B,MAAM,IAAI,kBAAQ,CAChB,mBAAmB,EACnB,iDAAiD,CAClD,CAAC;KACH;IAED,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE;QAC1C,MAAM,IAAI,kBAAQ,CAChB,mBAAmB,EACnB,0CAA0C,CAC3C,CAAC;KACH;IAED,sDAAsD;IACtD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAC7C,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,2BAAY,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,MAAM,EAAE,GAAG,6CAA8B,CAAC,cAAc,CAAC,CAAC;IAC1D,mFAAmF;IACnF,MAAM,KAAK,GAAmC;QAC5C,KAAK;QACL,WAAW;QACX,WAAW;QACX,SAAS;QACT,OAAO;QACP,gBAAgB;KACjB,CAAC;IACF,sBAAsB;IACtB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAChC,EAAE,CAAC,IAA4B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;SAClD;IACH,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,EAAE,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC;IAE1D,iBAAiB;IACjB,OAAO,YAAY,CAAC,EAAwB,CAAC,CAAC;AAChD,CAAC;AAhDD,8CAgDC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,YAAY,CACzB,aAAiC;IAEjC,wBAAwB;IACxB,MAAM,IAAI,GAAG,MAAM,gCAAW,CAAC,aAAa,CAAC,CAAC;IAE9C,qCAAqC;IACrC,uCAAuC;IACvC,MAAM,EAAE,GAAG,CAAC,IAAW,EAAE,EAAE;QACzB,OAAO,kBAAkB,CACvB,IAAI,EACJ,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,cAAc,CAC7B,CAAC;IACJ,CAAC,CAAC;IAEF,mBAAmB;IACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAExD,6CAA6C;IAC7C,uBAAuB;IACvB,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO;QACP,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAC5B,IAAI,EAAE,uBAAe,CACnB,aAAa,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,EACV,YAAY,CACb;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAW,EACX,WAAqB,EAAE,EACvB,cAAmC;IAEnC,+BAA+B;IAC/B,iDAAiD;IACjD,6CAA6C;IAC7C,mCAAmC;IACnC,OAAO,0BAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.hubSearch = void 0;
|
|
4
4
|
const HubError_1 = require("../HubError");
|
|
5
5
|
const objects_1 = require("../objects");
|
|
6
|
+
const util_1 = require("../util");
|
|
6
7
|
const utils_1 = require("./utils");
|
|
7
8
|
const _internal_1 = require("./_internal");
|
|
9
|
+
const portalSearchUsers_1 = require("./_internal/portalSearchUsers");
|
|
8
10
|
/**
|
|
9
11
|
* Main Search function for ArcGIS Hub
|
|
10
12
|
*
|
|
@@ -37,6 +39,7 @@ async function hubSearch(filterGroups, options) {
|
|
|
37
39
|
arcgis: {
|
|
38
40
|
item: _internal_1.portalSearchItems,
|
|
39
41
|
group: _internal_1.portalSearchGroups,
|
|
42
|
+
user: portalSearchUsers_1.portalSearchUsers,
|
|
40
43
|
},
|
|
41
44
|
"arcgis-hub": {
|
|
42
45
|
item: _internal_1.hubSearchItems,
|
|
@@ -46,7 +49,7 @@ async function hubSearch(filterGroups, options) {
|
|
|
46
49
|
if (!fn) {
|
|
47
50
|
throw new HubError_1.default(`hubSearch`, `Search via "${filterType}" filter against "${apiType}" api is not implemented`);
|
|
48
51
|
}
|
|
49
|
-
return fn(filterGroups, options);
|
|
52
|
+
return fn(util_1.cloneObject(filterGroups), options);
|
|
50
53
|
}
|
|
51
54
|
exports.hubSearch = hubSearch;
|
|
52
55
|
//# sourceMappingURL=hubSearch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubSearch.js","sourceRoot":"","sources":["../../../src/search/hubSearch.ts"],"names":[],"mappings":";;;AAAA,0CAAmC;AACnC,wCAAqC;
|
|
1
|
+
{"version":3,"file":"hubSearch.js","sourceRoot":"","sources":["../../../src/search/hubSearch.ts"],"names":[],"mappings":";;;AAAA,0CAAmC;AACnC,wCAAqC;AACrC,kCAAsC;AAStC,mCAAoC;AACpC,2CAIqB;AACrB,qEAAkE;AAElE;;;;;;;;GAQG;AACI,KAAK,UAAU,SAAS,CAC7B,YAA6C,EAC7C,OAA0B;IAE1B,kBAAkB;IAClB,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACjD,MAAM,IAAI,kBAAQ,CAChB,WAAW,EACX,iDAAiD,CAClD,CAAC;KACH;IACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACxB,MAAM,IAAI,kBAAQ,CAChB,WAAW,EACX,oDAAoD,CACrD,CAAC;KACH;IAED,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC3B,MAAM,IAAI,kBAAQ,CAChB,WAAW,EACX,iDAAiD,CAClD,CAAC;KACH;IAED,8BAA8B;IAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;KACtB;IAED,wCAAwC;IACxC,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,UAAwB,CAAC;IAC5D,cAAc;IACd,MAAM,OAAO,GAAG,iBAAS,CAAC,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC;IAExD,MAAM,MAAM,GAAG;QACb,MAAM,EAAE;YACN,IAAI,EAAE,6BAAiB;YACvB,KAAK,EAAE,8BAAkB;YACzB,IAAI,EAAE,qCAAiB;SACxB;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,0BAAc;SACrB;KACF,CAAC;IAEF,MAAM,EAAE,GAAG,iBAAO,CAAC,MAAM,EAAE,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,EAAE;QACP,MAAM,IAAI,kBAAQ,CAChB,WAAW,EACX,eAAe,UAAU,qBAAqB,OAAO,0BAA0B,CAChF,CAAC;KACH;IACD,OAAO,EAAE,CAAC,kBAAW,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAtDD,8BAsDC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUserHomeUrl = void 0;
|
|
4
|
+
const get_portal_url_1 = require("./get-portal-url");
|
|
5
|
+
/**
|
|
6
|
+
* Return the URL of the user's page in the Portal Home application
|
|
7
|
+
* @param username The username
|
|
8
|
+
* @param portalUrlOrObject a portal base or API URL, a portal object, or request options containing either of those
|
|
9
|
+
* @returns URL to the user's profile, defaults to `https://www.arcgis.com/home/user.html?user={username}`
|
|
10
|
+
*/
|
|
11
|
+
function getUserHomeUrl(username, portalUrlOrObject) {
|
|
12
|
+
const portalUrl = get_portal_url_1.getPortalUrl(portalUrlOrObject);
|
|
13
|
+
return `${portalUrl}/home/user.html?user=${username}`;
|
|
14
|
+
}
|
|
15
|
+
exports.getUserHomeUrl = getUserHomeUrl;
|
|
16
|
+
//# sourceMappingURL=getUserHomeUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getUserHomeUrl.js","sourceRoot":"","sources":["../../../src/urls/getUserHomeUrl.ts"],"names":[],"mappings":";;;AAGA,qDAAgD;AAEhD;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,QAAgB,EAChB,iBAA2E;IAE3E,MAAM,SAAS,GAAG,6BAAY,CAAC,iBAAiB,CAAC,CAAC;IAClD,OAAO,GAAG,SAAS,wBAAwB,QAAQ,EAAE,CAAC;AACxD,CAAC;AAND,wCAMC"}
|
package/dist/node/urls/index.js
CHANGED
|
@@ -21,6 +21,7 @@ tslib_1.__exportStar(require("./convert-urls-to-anchor-tags"), exports);
|
|
|
21
21
|
tslib_1.__exportStar(require("./getHubApiFromPortalUrl"), exports);
|
|
22
22
|
tslib_1.__exportStar(require("./getPortalBaseFromOrgUrl"), exports);
|
|
23
23
|
tslib_1.__exportStar(require("./getGroupHomeUrl"), exports);
|
|
24
|
+
tslib_1.__exportStar(require("./getUserHomeUrl"), exports);
|
|
24
25
|
const MAP_OR_FEATURE_SERVER_URL_REGEX = /\/(map|feature)server/i;
|
|
25
26
|
/**
|
|
26
27
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/urls/index.ts"],"names":[],"mappings":";;;;AAAA,kCAAqC;AACrC,sDAA4B;AAC5B,qEAA2C;AAC3C,+DAAqC;AACrC,2DAAiC;AACjC,2DAAiC;AACjC,6DAAmC;AACnC,2DAAiC;AACjC,qEAA2C;AAC3C,0DAAgC;AAChC,wEAA8C;AAC9C,oEAA0C;AAC1C,8DAAoC;AACpC,6DAAmC;AACnC,8DAAoC;AACpC,wEAA8C;AAC9C,mEAAyC;AACzC,oEAA0C;AAC1C,4DAAkC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/urls/index.ts"],"names":[],"mappings":";;;;AAAA,kCAAqC;AACrC,sDAA4B;AAC5B,qEAA2C;AAC3C,+DAAqC;AACrC,2DAAiC;AACjC,2DAAiC;AACjC,6DAAmC;AACnC,2DAAiC;AACjC,qEAA2C;AAC3C,0DAAgC;AAChC,wEAA8C;AAC9C,oEAA0C;AAC1C,8DAAoC;AACpC,6DAAmC;AACnC,8DAAoC;AACpC,wEAA8C;AAC9C,mEAAyC;AACzC,oEAA0C;AAC1C,4DAAkC;AAClC,2DAAiC;AAEjC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AAEjE;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE;IACrD,OAAO,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,YAAY,IAAI,GAAG,iBAAU,CAAC,YAAY,CAAC,UAAU,CAAC;AAC/D,CAAC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.enrichUserSearchResult = void 0;
|
|
4
|
+
const enrichments_1 = require("./_internal/enrichments");
|
|
5
|
+
const objects_1 = require("../objects");
|
|
6
|
+
const search_1 = require("../search");
|
|
7
|
+
const parseInclude_1 = require("../search/_internal/parseInclude");
|
|
8
|
+
const urls_1 = require("../urls");
|
|
9
|
+
const util_1 = require("../util");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
/**
|
|
12
|
+
* Enrich a User object
|
|
13
|
+
* @param user
|
|
14
|
+
* @param includes
|
|
15
|
+
* @param requestOptions
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
async function enrichUserSearchResult(user, include, requestOptions) {
|
|
19
|
+
// Create the basic structure
|
|
20
|
+
const result = {
|
|
21
|
+
access: user.access,
|
|
22
|
+
id: user.username,
|
|
23
|
+
type: "User",
|
|
24
|
+
name: user.fullName,
|
|
25
|
+
owner: user.username,
|
|
26
|
+
summary: user.description,
|
|
27
|
+
createdDate: new Date(user.created),
|
|
28
|
+
createdDateSource: "user.created",
|
|
29
|
+
updatedDate: new Date(user.modified),
|
|
30
|
+
updatedDateSource: "user.modified",
|
|
31
|
+
family: "people",
|
|
32
|
+
links: {
|
|
33
|
+
self: "not-implemented",
|
|
34
|
+
siteRelative: "not-implemented",
|
|
35
|
+
thumbnail: "not-implemented",
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
// Informal Enrichments - basically adding type-specific props
|
|
39
|
+
// derived directly from the entity
|
|
40
|
+
// default includes
|
|
41
|
+
const DEFAULTS = ["org.name AS orgName"];
|
|
42
|
+
// merge includes
|
|
43
|
+
include = [...DEFAULTS, ...include].filter(util_1.unique);
|
|
44
|
+
// Parse the includes into a valid set of enrichments
|
|
45
|
+
const specs = include.map(parseInclude_1.parseInclude);
|
|
46
|
+
// Extract out the low-level enrichments needed
|
|
47
|
+
const enrichments = utils_1.mapBy("enrichment", specs).filter(util_1.unique);
|
|
48
|
+
// fetch the enrichments
|
|
49
|
+
let enriched = {};
|
|
50
|
+
// Ignoring the else, because we currently have defaults, but want the guards
|
|
51
|
+
// so if we remove that in the future, we don't call the fn
|
|
52
|
+
/* istanbul ignore else */
|
|
53
|
+
if (enrichments.length) {
|
|
54
|
+
enriched = await enrichments_1.fetchUserEnrichments(user, enrichments, requestOptions);
|
|
55
|
+
}
|
|
56
|
+
// map the enriched props onto the result
|
|
57
|
+
specs.forEach((spec) => {
|
|
58
|
+
result[spec.prop] = objects_1.getProp(enriched, spec.path);
|
|
59
|
+
});
|
|
60
|
+
const token = requestOptions.authentication.token;
|
|
61
|
+
// Handle links
|
|
62
|
+
result.links.thumbnail = search_1.getUserThumbnailUrl(requestOptions.portal, user, token);
|
|
63
|
+
result.links.self = urls_1.getUserHomeUrl(result.id, requestOptions);
|
|
64
|
+
result.links.siteRelative = `/people/${result.id}`;
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
exports.enrichUserSearchResult = enrichUserSearchResult;
|
|
68
|
+
//# sourceMappingURL=HubUsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HubUsers.js","sourceRoot":"","sources":["../../../src/users/HubUsers.ts"],"names":[],"mappings":";;;AACA,yDAA+D;AAC/D,wCAAqC;AACrC,sCAAkE;AAClE,mEAAgE;AAEhE,kCAAyC;AACzC,kCAAiC;AACjC,oCAAiC;AAGjC;;;;;;GAMG;AACI,KAAK,UAAU,sBAAsB,CAC1C,IAAW,EACX,OAAiB,EACjB,cAAkC;IAElC,6BAA6B;IAC7B,MAAM,MAAM,GAAqB;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAqB;QAClC,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,CAAC,QAAQ;QACnB,KAAK,EAAE,IAAI,CAAC,QAAQ;QACpB,OAAO,EAAE,IAAI,CAAC,WAAW;QACzB,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,iBAAiB,EAAE,cAAc;QACjC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpC,iBAAiB,EAAE,eAAe;QAClC,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE,iBAAiB;YAC/B,SAAS,EAAE,iBAAiB;SAC7B;KACF,CAAC;IAEF,8DAA8D;IAC9D,mCAAmC;IAEnC,mBAAmB;IACnB,MAAM,QAAQ,GAAa,CAAC,qBAAqB,CAAC,CAAC;IAEnD,iBAAiB;IACjB,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,aAAM,CAAC,CAAC;IACnD,qDAAqD;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,2BAAY,CAAC,CAAC;IACxC,+CAA+C;IAC/C,MAAM,WAAW,GAAG,aAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,aAAM,CAAC,CAAC;IAC9D,wBAAwB;IACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,6EAA6E;IAC7E,2DAA2D;IAC3D,0BAA0B;IAC1B,IAAI,WAAW,CAAC,MAAM,EAAE;QACtB,QAAQ,GAAG,MAAM,kCAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;KAC1E;IAED,yCAAyC;IACzC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,iBAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC;IAElD,eAAe;IACf,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,4BAAmB,CAC1C,cAAc,CAAC,MAAM,EACrB,IAAI,EACJ,KAAK,CACN,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,qBAAc,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,WAAW,MAAM,CAAC,EAAE,EAAE,CAAC;IAEnD,OAAO,MAAM,CAAC;AAChB,CAAC;AA/DD,wDA+DC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchUserEnrichments = void 0;
|
|
4
|
+
const __1 = require("../..");
|
|
5
|
+
const _enrichments_1 = require("../../items/_enrichments");
|
|
6
|
+
const OperationStack_1 = require("../../OperationStack");
|
|
7
|
+
const utils_1 = require("../../utils");
|
|
8
|
+
const enrichUserOrg = (input) => {
|
|
9
|
+
const { data, stack, requestOptions } = input;
|
|
10
|
+
const opId = stack.start("enrichUserOrg");
|
|
11
|
+
const options = Object.assign(Object.assign({}, requestOptions), {
|
|
12
|
+
// In order to get the correct response, we must pass options.portal
|
|
13
|
+
// as a base portal url (e.g., www.arcgis.com, qaext.arcgis.com, etc)
|
|
14
|
+
// **not** an org portal (i.e. org.maps.arcgis.com).
|
|
15
|
+
portal: `${__1.getPortalBaseFromOrgUrl(requestOptions.portal)}/sharing/rest` });
|
|
16
|
+
// TODO: Add Caching
|
|
17
|
+
// Had implemented a simple caching system, but it leads to unstable
|
|
18
|
+
// tests because we can't deterministically clear it
|
|
19
|
+
// if (!orgCache[data.user.orgId]) {
|
|
20
|
+
// orgCache[data.user.orgId] = fetchOrg(data.user.orgId, options);
|
|
21
|
+
// }
|
|
22
|
+
// return (orgCache[data.user.orgId] as Promise<IPortal>)
|
|
23
|
+
return __1.fetchOrg(data.user.orgId, options)
|
|
24
|
+
.then((results) => {
|
|
25
|
+
stack.finish(opId);
|
|
26
|
+
return {
|
|
27
|
+
data: Object.assign(Object.assign({}, data), {
|
|
28
|
+
org: results,
|
|
29
|
+
}),
|
|
30
|
+
stack,
|
|
31
|
+
requestOptions,
|
|
32
|
+
};
|
|
33
|
+
})
|
|
34
|
+
.catch((error) => handleEnrichmentError(error, input, opId));
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Simple cache for user org's. This does not expire
|
|
38
|
+
* but that seems reasonable as Org props rarely change
|
|
39
|
+
*/
|
|
40
|
+
// This works find at run-time, but it's a problem in tests
|
|
41
|
+
// where we are validating calls. Will work with Randy to
|
|
42
|
+
// create something that's more robust
|
|
43
|
+
// const orgCache: Record<string, any> = {};
|
|
44
|
+
// add the error to the content.errors,
|
|
45
|
+
// log current stack operation as finished with an error
|
|
46
|
+
// and return output that can be piped into the next operation
|
|
47
|
+
const handleEnrichmentError = (error, input, opId) => {
|
|
48
|
+
const { data, stack, requestOptions } = input;
|
|
49
|
+
stack.finish(opId, { error });
|
|
50
|
+
return {
|
|
51
|
+
data: Object.assign(Object.assign({}, data), { errors: _enrichments_1.getEnrichmentErrors(error, data.errors) }),
|
|
52
|
+
stack,
|
|
53
|
+
requestOptions,
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Available enrichments for Groups
|
|
58
|
+
*/
|
|
59
|
+
const groupEnrichementOperations = {
|
|
60
|
+
org: enrichUserOrg,
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Fetch enrichments for Users
|
|
64
|
+
* @param group
|
|
65
|
+
* @param enrichments
|
|
66
|
+
* @param requestOptions
|
|
67
|
+
* @returns
|
|
68
|
+
*/
|
|
69
|
+
function fetchUserEnrichments(user, enrichments, requestOptions) {
|
|
70
|
+
// create a pipeline of enrichment operations
|
|
71
|
+
const operations = enrichments.reduce((ops, enrichment) => {
|
|
72
|
+
const operation = groupEnrichementOperations[enrichment];
|
|
73
|
+
// only include the enrichments that we know how to fetch
|
|
74
|
+
operation && ops.push(operation);
|
|
75
|
+
return ops;
|
|
76
|
+
}, []);
|
|
77
|
+
const pipeline = utils_1.createOperationPipeline(operations);
|
|
78
|
+
// execute pipeline and return the item and enrichments
|
|
79
|
+
return pipeline({
|
|
80
|
+
data: { user },
|
|
81
|
+
stack: new OperationStack_1.default(),
|
|
82
|
+
requestOptions,
|
|
83
|
+
}).then((output) => {
|
|
84
|
+
// TODO: send telemetry so we have info on what enrichments are requested and possible errors
|
|
85
|
+
return output.data;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
exports.fetchUserEnrichments = fetchUserEnrichments;
|
|
89
|
+
//# sourceMappingURL=enrichments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrichments.js","sourceRoot":"","sources":["../../../../src/users/_internal/enrichments.ts"],"names":[],"mappings":";;;AACA,6BAA0D;AAC1D,2DAA+D;AAC/D,yDAAkD;AAElD,uCAAiE;AAgCjE,MAAM,aAAa,GAAG,CACpB,KAAqC,EACI,EAAE;IAC3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,OAAO,mCACR,cAAc;QACjB,oEAAoE;QACpE,qEAAqE;QACrE,oDAAoD;QACpD,MAAM,EAAE,GAAG,2BAAuB,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,GACzE,CAAC;IACF,oBAAoB;IACpB,oEAAoE;IACpE,oDAAoD;IACpD,oCAAoC;IACpC,oEAAoE;IACpE,IAAI;IAEJ,yDAAyD;IACzD,OAAO,YAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;SACtC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO;YACL,IAAI,kCACC,IAAI,GACJ;gBACD,GAAG,EAAE,OAAO;aACb,CACF;YACD,KAAK;YACL,cAAc;SACf,CAAC;IACJ,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF;;;GAGG;AACH,2DAA2D;AAC3D,yDAAyD;AACzD,sCAAsC;AACtC,4CAA4C;AAE5C,uCAAuC;AACvC,wDAAwD;AACxD,8DAA8D;AAC9D,MAAM,qBAAqB,GAAG,CAC5B,KAAqB,EACrB,KAAqC,EACrC,IAAY,EACoB,EAAE;IAClC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC9C,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9B,OAAO;QACL,IAAI,kCACC,IAAI,KACP,MAAM,EAAE,kCAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAChD;QACD,KAAK;QACL,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,0BAA0B,GAA8B;IAC5D,GAAG,EAAE,aAAa;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,IAAW,EACX,WAA6B,EAC7B,cAAmC;IAEnC,6CAA6C;IAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;QACxD,MAAM,SAAS,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;QACzD,yDAAyD;QACzD,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,QAAQ,GAAG,+BAAuB,CAAsB,UAAU,CAAC,CAAC;IAC1E,uDAAuD;IACvD,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,EAAE,IAAI,EAAE;QACd,KAAK,EAAE,IAAI,wBAAc,EAAE;QAC3B,cAAc;KACf,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACjB,6FAA6F;QAC7F,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAtBD,oDAsBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/users/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export * from "./utils";
|
|
|
26
26
|
export * from "./Hub";
|
|
27
27
|
export * from "./pages";
|
|
28
28
|
export * from "./org";
|
|
29
|
+
export * from "./users";
|
|
29
30
|
import OperationStack from "./OperationStack";
|
|
30
31
|
import OperationError from "./OperationError";
|
|
31
32
|
import HubError from "./HubError";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IFilterGroup, IHubSearchOptions, IHubSearchResponse, IHubSearchResult } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* @private
|
|
4
|
+
* Portal Search implementation for Users
|
|
5
|
+
* @param filterGroups
|
|
6
|
+
* @param options
|
|
7
|
+
*/
|
|
8
|
+
export declare function portalSearchUsers(filterGroups: Array<IFilterGroup<"user">>, options: IHubSearchOptions): Promise<IHubSearchResponse<IHubSearchResult>>;
|
|
@@ -40,6 +40,7 @@ export interface IFilterTypeMap {
|
|
|
40
40
|
item: IItemFilter;
|
|
41
41
|
user: IUserFilterDefinition;
|
|
42
42
|
group: IGroupFilterDefinition;
|
|
43
|
+
groupMember: IGroupMemberFilterDefinition;
|
|
43
44
|
event: IEventFilterDefinition;
|
|
44
45
|
/**
|
|
45
46
|
* DEPRECATED use item
|
|
@@ -127,7 +128,7 @@ export interface IUserFilterDefinition {
|
|
|
127
128
|
email?: string | string[] | IMatchOptions;
|
|
128
129
|
firstname?: string | string[] | IMatchOptions;
|
|
129
130
|
fullname?: string | string[] | IMatchOptions;
|
|
130
|
-
|
|
131
|
+
group?: string | string[] | IMatchOptions;
|
|
131
132
|
lastlogin?: IDateRange<number> | IRelativeDate;
|
|
132
133
|
lastname?: string | string[] | IMatchOptions;
|
|
133
134
|
modified?: IDateRange<number> | IRelativeDate;
|
|
@@ -135,6 +136,21 @@ export interface IUserFilterDefinition {
|
|
|
135
136
|
term?: string;
|
|
136
137
|
userlicensetype?: string | string[] | IMatchOptions;
|
|
137
138
|
username?: string | string[] | IMatchOptions;
|
|
139
|
+
emailstatus?: string | string[] | IMatchOptions;
|
|
140
|
+
provider?: string | string[] | IMatchOptions;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* These properties must all be passed through
|
|
144
|
+
* so they are sent in separate fields and *not*
|
|
145
|
+
* serialized into a q
|
|
146
|
+
* Also `joined` does not take the same format as
|
|
147
|
+
* dates in `q`
|
|
148
|
+
*/
|
|
149
|
+
export interface IGroupMemberFilterDefinition {
|
|
150
|
+
memberType?: "admin" | "member";
|
|
151
|
+
joined?: IDateRange<number> | IRelativeDate;
|
|
152
|
+
name?: string | string[] | IMatchOptions;
|
|
153
|
+
orgIds?: string | string[] | IMatchOptions;
|
|
138
154
|
}
|
|
139
155
|
export interface IGroupFilterDefinition {
|
|
140
156
|
access?: string | string[] | IMatchOptions;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IRequestOptions } from "@esri/arcgis-rest-request";
|
|
2
|
+
import { IPortal } from "@esri/arcgis-rest-portal";
|
|
3
|
+
import { IHubRequestOptions } from "../types";
|
|
4
|
+
/**
|
|
5
|
+
* Return the URL of the user's page in the Portal Home application
|
|
6
|
+
* @param username The username
|
|
7
|
+
* @param portalUrlOrObject a portal base or API URL, a portal object, or request options containing either of those
|
|
8
|
+
* @returns URL to the user's profile, defaults to `https://www.arcgis.com/home/user.html?user={username}`
|
|
9
|
+
*/
|
|
10
|
+
export declare function getUserHomeUrl(username: string, portalUrlOrObject?: string | IPortal | IHubRequestOptions | IRequestOptions): string;
|