@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.
Files changed (62) hide show
  1. package/dist/es2017/index.js +1 -0
  2. package/dist/es2017/index.js.map +1 -1
  3. package/dist/es2017/search/_internal/portalSearchGroups.js.map +1 -1
  4. package/dist/es2017/search/_internal/portalSearchUsers.js +89 -0
  5. package/dist/es2017/search/_internal/portalSearchUsers.js.map +1 -0
  6. package/dist/es2017/search/hubSearch.js +4 -1
  7. package/dist/es2017/search/hubSearch.js.map +1 -1
  8. package/dist/es2017/urls/getUserHomeUrl.js +12 -0
  9. package/dist/es2017/urls/getUserHomeUrl.js.map +1 -0
  10. package/dist/es2017/urls/index.js +1 -0
  11. package/dist/es2017/urls/index.js.map +1 -1
  12. package/dist/es2017/users/HubUsers.js +64 -0
  13. package/dist/es2017/users/HubUsers.js.map +1 -0
  14. package/dist/es2017/users/_internal/enrichments.js +85 -0
  15. package/dist/es2017/users/_internal/enrichments.js.map +1 -0
  16. package/dist/es2017/users/index.js +2 -0
  17. package/dist/es2017/users/index.js.map +1 -0
  18. package/dist/esm/index.js +1 -0
  19. package/dist/esm/index.js.map +1 -1
  20. package/dist/esm/search/_internal/portalSearchGroups.js.map +1 -1
  21. package/dist/esm/search/_internal/portalSearchUsers.js +104 -0
  22. package/dist/esm/search/_internal/portalSearchUsers.js.map +1 -0
  23. package/dist/esm/search/hubSearch.js +4 -1
  24. package/dist/esm/search/hubSearch.js.map +1 -1
  25. package/dist/esm/urls/getUserHomeUrl.js +12 -0
  26. package/dist/esm/urls/getUserHomeUrl.js.map +1 -0
  27. package/dist/esm/urls/index.js +1 -0
  28. package/dist/esm/urls/index.js.map +1 -1
  29. package/dist/esm/users/HubUsers.js +66 -0
  30. package/dist/esm/users/HubUsers.js.map +1 -0
  31. package/dist/esm/users/_internal/enrichments.js +86 -0
  32. package/dist/esm/users/_internal/enrichments.js.map +1 -0
  33. package/dist/esm/users/index.js +2 -0
  34. package/dist/esm/users/index.js.map +1 -0
  35. package/dist/node/index.js +1 -0
  36. package/dist/node/index.js.map +1 -1
  37. package/dist/node/search/_internal/portalSearchGroups.js.map +1 -1
  38. package/dist/node/search/_internal/portalSearchUsers.js +93 -0
  39. package/dist/node/search/_internal/portalSearchUsers.js.map +1 -0
  40. package/dist/node/search/hubSearch.js +4 -1
  41. package/dist/node/search/hubSearch.js.map +1 -1
  42. package/dist/node/urls/getUserHomeUrl.js +16 -0
  43. package/dist/node/urls/getUserHomeUrl.js.map +1 -0
  44. package/dist/node/urls/index.js +1 -0
  45. package/dist/node/urls/index.js.map +1 -1
  46. package/dist/node/users/HubUsers.js +68 -0
  47. package/dist/node/users/HubUsers.js.map +1 -0
  48. package/dist/node/users/_internal/enrichments.js +89 -0
  49. package/dist/node/users/_internal/enrichments.js.map +1 -0
  50. package/dist/node/users/index.js +5 -0
  51. package/dist/node/users/index.js.map +1 -0
  52. package/dist/types/index.d.ts +1 -0
  53. package/dist/types/search/_internal/portalSearchUsers.d.ts +8 -0
  54. package/dist/types/search/types/types.d.ts +17 -1
  55. package/dist/types/urls/getUserHomeUrl.d.ts +10 -0
  56. package/dist/types/urls/index.d.ts +1 -0
  57. package/dist/types/users/HubUsers.d.ts +11 -0
  58. package/dist/types/users/_internal/enrichments.d.ts +28 -0
  59. package/dist/types/users/index.d.ts +1 -0
  60. package/dist/umd/common.umd.js +274 -23
  61. package/dist/umd/common.umd.js.map +1 -1
  62. 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,2 @@
1
+ export * from "./HubUsers";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/users/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -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");
@@ -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;AAEtB,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
+ {"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":"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"}
1
+ {"version":3,"file":"portalSearchGroups.js","sourceRoot":"","sources":["../../../../src/search/_internal/portalSearchGroups.ts"],"names":[],"mappings":"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"}
@@ -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;AASrC,mCAAoC;AACpC,2CAIqB;AAErB;;;;;;;;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;SAC1B;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,YAAY,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AArDD,8BAqDC"}
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"}
@@ -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;AAElC,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"}
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,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./HubUsers"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/users/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B"}
@@ -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
- groups?: string | string[] | IMatchOptions;
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;
@@ -16,6 +16,7 @@ export * from "./convert-urls-to-anchor-tags";
16
16
  export * from "./getHubApiFromPortalUrl";
17
17
  export * from "./getPortalBaseFromOrgUrl";
18
18
  export * from "./getGroupHomeUrl";
19
+ export * from "./getUserHomeUrl";
19
20
  /**
20
21
  *
21
22
  * @param url