@esri/hub-common 9.7.0 → 9.8.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 (76) hide show
  1. package/dist/es2017/content.js +17 -6
  2. package/dist/es2017/content.js.map +1 -1
  3. package/dist/es2017/search/_searchContent.js +66 -53
  4. package/dist/es2017/search/_searchContent.js.map +1 -1
  5. package/dist/es2017/search/_searchGroups.js +71 -36
  6. package/dist/es2017/search/_searchGroups.js.map +1 -1
  7. package/dist/es2017/search/_searchUsers.js +83 -0
  8. package/dist/es2017/search/_searchUsers.js.map +1 -0
  9. package/dist/es2017/search/index.js +2 -0
  10. package/dist/es2017/search/index.js.map +1 -1
  11. package/dist/es2017/search/user-utils.js +132 -0
  12. package/dist/es2017/search/user-utils.js.map +1 -0
  13. package/dist/es2017/search/utils.js +76 -37
  14. package/dist/es2017/search/utils.js.map +1 -1
  15. package/dist/es2017/sites/upgrade-site-schema.js +3 -0
  16. package/dist/es2017/sites/upgrade-site-schema.js.map +1 -1
  17. package/dist/es2017/urls/index.js +1 -0
  18. package/dist/es2017/urls/index.js.map +1 -1
  19. package/dist/es2017/urls/upgrade-protocol.js +14 -0
  20. package/dist/es2017/urls/upgrade-protocol.js.map +1 -0
  21. package/dist/esm/content.js +17 -6
  22. package/dist/esm/content.js.map +1 -1
  23. package/dist/esm/search/_searchContent.js +71 -62
  24. package/dist/esm/search/_searchContent.js.map +1 -1
  25. package/dist/esm/search/_searchGroups.js +75 -40
  26. package/dist/esm/search/_searchGroups.js.map +1 -1
  27. package/dist/esm/search/_searchUsers.js +88 -0
  28. package/dist/esm/search/_searchUsers.js.map +1 -0
  29. package/dist/esm/search/index.js +2 -0
  30. package/dist/esm/search/index.js.map +1 -1
  31. package/dist/esm/search/user-utils.js +136 -0
  32. package/dist/esm/search/user-utils.js.map +1 -0
  33. package/dist/esm/search/utils.js +76 -37
  34. package/dist/esm/search/utils.js.map +1 -1
  35. package/dist/esm/sites/upgrade-site-schema.js +3 -0
  36. package/dist/esm/sites/upgrade-site-schema.js.map +1 -1
  37. package/dist/esm/urls/index.js +1 -0
  38. package/dist/esm/urls/index.js.map +1 -1
  39. package/dist/esm/urls/upgrade-protocol.js +14 -0
  40. package/dist/esm/urls/upgrade-protocol.js.map +1 -0
  41. package/dist/node/content.js +18 -7
  42. package/dist/node/content.js.map +1 -1
  43. package/dist/node/search/_searchContent.js +65 -52
  44. package/dist/node/search/_searchContent.js.map +1 -1
  45. package/dist/node/search/_searchGroups.js +71 -36
  46. package/dist/node/search/_searchGroups.js.map +1 -1
  47. package/dist/node/search/_searchUsers.js +87 -0
  48. package/dist/node/search/_searchUsers.js.map +1 -0
  49. package/dist/node/search/index.js +2 -0
  50. package/dist/node/search/index.js.map +1 -1
  51. package/dist/node/search/user-utils.js +138 -0
  52. package/dist/node/search/user-utils.js.map +1 -0
  53. package/dist/node/search/utils.js +81 -39
  54. package/dist/node/search/utils.js.map +1 -1
  55. package/dist/node/sites/upgrade-site-schema.js +3 -0
  56. package/dist/node/sites/upgrade-site-schema.js.map +1 -1
  57. package/dist/node/urls/index.js +1 -0
  58. package/dist/node/urls/index.js.map +1 -1
  59. package/dist/node/urls/upgrade-protocol.js +18 -0
  60. package/dist/node/urls/upgrade-protocol.js.map +1 -0
  61. package/dist/types/content.d.ts +11 -0
  62. package/dist/types/search/_searchContent.d.ts +3 -2
  63. package/dist/types/search/_searchGroups.d.ts +3 -2
  64. package/dist/types/search/_searchUsers.d.ts +28 -0
  65. package/dist/types/search/index.d.ts +2 -0
  66. package/dist/types/search/types.d.ts +20 -2
  67. package/dist/types/search/user-utils.d.ts +35 -0
  68. package/dist/types/search/utils.d.ts +39 -8
  69. package/dist/types/types.d.ts +17 -0
  70. package/dist/types/urls/index.d.ts +1 -0
  71. package/dist/types/urls/upgrade-protocol.d.ts +5 -0
  72. package/dist/umd/common.umd.js +489 -142
  73. package/dist/umd/common.umd.js.map +1 -1
  74. package/dist/umd/common.umd.min.js +1 -1
  75. package/dist/umd/common.umd.min.js.map +1 -1
  76. package/package.json +2 -2
@@ -1,81 +1,88 @@
1
1
  import { __awaiter, __generator } from "tslib";
2
2
  import { expandContentFilter, serializeContentFilterForPortal, convertPortalResponseToFacets, } from "./content-utils";
3
3
  import { searchItems } from "@esri/arcgis-rest-portal";
4
- import { expandApis, mergeSearchResults } from "./utils";
5
- import { itemToContent, setContentSiteUrls } from "..";
4
+ import { expandApi, getNextFunction } from ".";
5
+ import { cloneObject, itemToContent, setContentSiteUrls, } from "..";
6
6
  /**
7
7
  * Search for content via the Portal or Hub API
8
8
  * @param filter
9
9
  * @param options
10
10
  */
11
11
  export function _searchContent(filter, options) {
12
+ var _a;
12
13
  return __awaiter(this, void 0, void 0, function () {
13
- var expanded, apis, searchPromises, results;
14
- return __generator(this, function (_a) {
15
- switch (_a.label) {
16
- case 0:
17
- expanded = expandContentFilter(filter);
18
- // APIs
19
- if (!options.apis) {
20
- // default to AGO PROD
21
- options.apis = ["arcgis"];
22
- }
23
- apis = expandApis(options.apis);
24
- searchPromises = apis.map(function (api) {
25
- var _a;
26
- // Portal Search
27
- if (api.type === "arcgis") {
28
- // serialize for portal
29
- var so = serializeContentFilterForPortal(expanded);
30
- // pass auth forward
31
- if (options.authentication) {
32
- so.authentication = options.authentication;
33
- }
34
- // Aggregations
35
- if ((_a = options.aggregations) === null || _a === void 0 ? void 0 : _a.length) {
36
- so.countFields = options.aggregations.join(",");
37
- so.countSize = 200;
38
- }
39
- // copy over various options
40
- // TODO: Dry this up
41
- if (options.num) {
42
- so.num = options.num;
43
- }
44
- if (options.sortField) {
45
- so.sortField = options.sortField;
46
- }
47
- if (options.sortOrder) {
48
- so.sortOrder = options.sortOrder;
49
- }
50
- // NOTE: I think we will end up setting
51
- // the site URL in mergeSearchResults() instead
52
- // since it applies to both items and datasets
53
- return searchPortal(so, options.site);
54
- }
55
- else {
56
- // Hub API Search
57
- // TODO: Implement hub api content search
58
- return Promise.resolve({
59
- total: 0,
60
- results: [],
61
- facets: [],
62
- });
63
- }
64
- });
65
- return [4 /*yield*/, Promise.all(searchPromises)];
66
- case 1:
67
- results = _a.sent();
68
- // merge and return
69
- return [2 /*return*/, mergeSearchResults(results)];
14
+ var expanded, api, searchPromise, so;
15
+ return __generator(this, function (_b) {
16
+ expanded = expandContentFilter(filter);
17
+ api = expandApi(options.api || "arcgis");
18
+ // map over the apis, depending on the type we issue the queries
19
+ // const searchPromises = apis.map((api) => {
20
+ // Portal Search
21
+ if (api.type === "arcgis") {
22
+ so = serializeContentFilterForPortal(expanded);
23
+ // pass auth forward
24
+ if (options.authentication) {
25
+ so.authentication = options.authentication;
26
+ }
27
+ else {
28
+ so.portal = api.url + "/sharing/rest";
29
+ }
30
+ // Aggregations
31
+ if ((_a = options.aggregations) === null || _a === void 0 ? void 0 : _a.length) {
32
+ so.countFields = options.aggregations.join(",");
33
+ so.countSize = 200;
34
+ }
35
+ // copy over various options
36
+ // TODO: Dry this up - typscript makes this... inconvenient
37
+ if (options.num) {
38
+ so.num = options.num;
39
+ }
40
+ if (options.sortField) {
41
+ so.sortField = options.sortField;
42
+ }
43
+ if (options.sortOrder) {
44
+ so.sortOrder = options.sortOrder;
45
+ }
46
+ if (options.site) {
47
+ so.site = cloneObject(options.site);
48
+ }
49
+ searchPromise = searchPortal(so);
70
50
  }
51
+ else {
52
+ // Hub API Search
53
+ // TODO: Implement hub api content search
54
+ searchPromise = Promise.resolve({
55
+ total: 0,
56
+ results: [],
57
+ facets: [],
58
+ hasNext: false,
59
+ next: function () {
60
+ Promise.resolve(null);
61
+ },
62
+ });
63
+ }
64
+ // });
65
+ // return for results
66
+ return [2 /*return*/, searchPromise];
71
67
  });
72
68
  });
73
69
  }
74
- function searchPortal(searchOptions, site) {
70
+ /**
71
+ * Internal portal search, which then converts items to Content, and
72
+ * if a Site was passed, also sets urls
73
+ *
74
+ * @param searchOptions
75
+ * @param site
76
+ * @returns
77
+ */
78
+ function searchPortal(searchOptions) {
75
79
  return searchItems(searchOptions).then(function (resp) {
80
+ var hasNext = resp.nextStart > -1;
76
81
  var content = resp.results.map(itemToContent);
77
- if (site) {
78
- content = content.map(function (entry) { return setContentSiteUrls(entry, site); });
82
+ if (searchOptions.site) {
83
+ content = content.map(function (entry) {
84
+ return setContentSiteUrls(entry, searchOptions.site);
85
+ });
79
86
  }
80
87
  // convert aggregations into facets
81
88
  var facets = convertPortalResponseToFacets(resp);
@@ -83,6 +90,8 @@ function searchPortal(searchOptions, site) {
83
90
  total: resp.total,
84
91
  results: content,
85
92
  facets: facets,
93
+ hasNext: hasNext,
94
+ next: getNextFunction(searchOptions, resp.nextStart, resp.total, searchPortal),
86
95
  };
87
96
  });
88
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"_searchContent.js","sourceRoot":"","sources":["../../../src/search/_searchContent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_searchContent.js","sourceRoot":"","sources":["../../../src/search/_searchContent.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { __awaiter, __generator } from "tslib";
2
2
  import { searchGroups as portalGroupSearch } from "@esri/arcgis-rest-portal";
3
- import { expandApis, } from ".";
3
+ import { expandApi, getNextFunction } from ".";
4
4
  import { expandGroupFilter, serializeGroupFilterForPortal, } from "./group-utils";
5
+ import { cloneObject, getGroupThumbnailUrl } from "..";
5
6
  /**
6
7
  * Search Groups using Filter<"group">
7
8
  *
@@ -13,53 +14,87 @@ import { expandGroupFilter, serializeGroupFilterForPortal, } from "./group-utils
13
14
  export function _searchGroups(filter, options) {
14
15
  var _a;
15
16
  return __awaiter(this, void 0, void 0, function () {
16
- var expanded, apis, so, token, us, portalUrl, thumbnailify;
17
+ var expanded, api, so, token, us, portalUrl;
17
18
  return __generator(this, function (_b) {
18
19
  expanded = expandGroupFilter(filter);
19
- // APIs
20
- if (!options.apis) {
21
- // default to AGO PROD
22
- options.apis = ["arcgis"];
23
- }
24
- apis = expandApis(options.apis);
25
- so = serializeGroupFilterForPortal(expanded);
26
- token = "";
27
- // if we have auth, pass it forward
28
- // otherwise set the portal property
29
- if (options.authentication) {
30
- so.authentication = options.authentication;
31
- us = options.authentication;
32
- token = us.token;
20
+ api = expandApi(options.api || "arcgis");
21
+ if (api.type === "arcgis") {
22
+ so = serializeGroupFilterForPortal(expanded);
23
+ token = "";
24
+ // if we have auth, pass it forward
25
+ // otherwise set the portal property
26
+ if (options.authentication) {
27
+ so.authentication = options.authentication;
28
+ us = options.authentication;
29
+ token = us.token;
30
+ }
31
+ else {
32
+ so.portal = api.url + "/sharing/rest";
33
+ }
34
+ // TODO: Dry this up - typscript makes this... inconvenient
35
+ if (options.num) {
36
+ so.num = options.num;
37
+ }
38
+ if (options.sortField) {
39
+ so.sortField = options.sortField;
40
+ }
41
+ if (options.sortOrder) {
42
+ so.sortOrder = options.sortOrder;
43
+ }
44
+ portalUrl = api.url + "/sharing/rest";
45
+ if ((_a = so.authentication) === null || _a === void 0 ? void 0 : _a.portal) {
46
+ portalUrl = so.authentication.portal;
47
+ }
48
+ if (options.site) {
49
+ so.site = cloneObject(options.site);
50
+ }
51
+ return [2 /*return*/, searchPortalGroups(so)];
33
52
  }
34
53
  else {
35
- so.portal = apis[0].url + "/sharing/rest";
36
- }
37
- if (options.num) {
38
- so.num = options.num;
39
- }
40
- portalUrl = "https://www.arcgis.com/sharing/rest";
41
- if ((_a = so.authentication) === null || _a === void 0 ? void 0 : _a.portal) {
42
- portalUrl = so.authentication.portal;
54
+ throw new Error("_searchGroups is not implemented for non-arcgis apis");
43
55
  }
44
- thumbnailify = function (group) {
45
- return addThumbnailUrl(portalUrl, group, token);
46
- };
47
- return [2 /*return*/, portalGroupSearch(so).then(function (response) {
48
- // upgrade thumbnail url
49
- response.results = response.results.map(thumbnailify);
50
- return response;
51
- })];
56
+ return [2 /*return*/];
52
57
  });
53
58
  });
54
59
  }
55
- // Need to decide how to handle adding the token is group is not public
56
- function addThumbnailUrl(portalUrl, group, token) {
57
- if (group.thumbnail) {
58
- group.thumnailUrl = portalUrl + "/community/groups/" + group.id + "/info/" + group.thumbnail;
59
- if (token) {
60
- group.thumbnailUrl = group.thumbnailUrl + "?token=" + token;
61
- }
60
+ /**
61
+ * Internal function that searches for groups using the ArcGIS Portal API
62
+ * @param searchOptions
63
+ * @returns
64
+ */
65
+ function searchPortalGroups(searchOptions) {
66
+ var _a;
67
+ var teamLinkify = function (group) {
68
+ group.siteTeamUrl = searchOptions.site.item.url + "/teams/" + group.id + "/about";
69
+ return group;
70
+ };
71
+ var portalUrl = ((_a = searchOptions.authentication) === null || _a === void 0 ? void 0 : _a.portal) ||
72
+ "https://www.arcgis.com/sharing/rest";
73
+ var token;
74
+ if (searchOptions.authentication) {
75
+ var us = searchOptions.authentication;
76
+ token = us.token;
62
77
  }
63
- return group;
78
+ var thumbnailify = function (group) {
79
+ group.thumbnailUrl = getGroupThumbnailUrl(portalUrl, group, token);
80
+ return group;
81
+ };
82
+ // execute the search
83
+ return portalGroupSearch(searchOptions).then(function (response) {
84
+ var _a, _b;
85
+ var hasNext = response.nextStart > -1;
86
+ // upgrade thumbnail url
87
+ var results = response.results.map(thumbnailify);
88
+ // generate the site team url if site url is provided
89
+ if ((_b = (_a = searchOptions.site) === null || _a === void 0 ? void 0 : _a.item) === null || _b === void 0 ? void 0 : _b.url) {
90
+ results = response.results.map(teamLinkify);
91
+ }
92
+ return {
93
+ hasNext: hasNext,
94
+ total: response.total,
95
+ results: results,
96
+ next: getNextFunction(searchOptions, response.nextStart, response.total, searchPortalGroups),
97
+ };
98
+ });
64
99
  }
65
100
  //# sourceMappingURL=_searchGroups.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_searchGroups.js","sourceRoot":"","sources":["../../../src/search/_searchGroups.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAEL,UAAU,GAEX,MAAM,GAAG,CAAC;AACX,OAAO,EACL,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAOvB;;;;;;;GAOG;AACH,MAAM,UAAgB,aAAa,CACjC,MAAuB,EACvB,OAA0B;;;;;YAGpB,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAE3C,OAAO;YACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACjB,sBAAsB;gBACtB,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;aAC3B;YACK,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,EAAE,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;YAC/C,KAAK,GAAG,EAAE,CAAC;YACf,mCAAmC;YACnC,oCAAoC;YACpC,IAAI,OAAO,CAAC,cAAc,EAAE;gBAC1B,EAAE,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;gBACrC,EAAE,GAAgB,OAAO,CAAC,cAA6B,CAAC;gBAC9D,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;aAClB;iBAAM;gBACL,EAAE,CAAC,MAAM,GAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAe,CAAC;aAC3C;YAED,IAAI,OAAO,CAAC,GAAG,EAAE;gBACf,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;aACtB;YAEG,SAAS,GAAG,qCAAqC,CAAC;YACtD,UAAI,EAAE,CAAC,cAAc,0CAAE,MAAM,EAAE;gBAC7B,SAAS,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;aACtC;YAEK,YAAY,GAAG,UAAC,KAAa;gBACjC,OAAO,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC,CAAC;YAEF,sBAAO,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAC,QAAQ;oBACzC,wBAAwB;oBACxB,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACtD,OAAO,QAAQ,CAAC;gBAClB,CAAC,CAAC,EAAC;;;CACJ;AAED,uEAAuE;AACvE,SAAS,eAAe,CACtB,SAAiB,EACjB,KAAa,EACb,KAAc;IAEd,IAAI,KAAK,CAAC,SAAS,EAAE;QACnB,KAAK,CAAC,WAAW,GAAM,SAAS,0BAAqB,KAAK,CAAC,EAAE,cAAS,KAAK,CAAC,SAAW,CAAC;QACxF,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,YAAY,GAAM,KAAK,CAAC,YAAY,eAAU,KAAO,CAAC;SAC7D;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"_searchGroups.js","sourceRoot":"","sources":["../../../src/search/_searchGroups.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { cloneObject, expandApi, expandUserFilter, getNextFunction, getUserThumbnailUrl, serializeUserFilterForPortal, } from "..";
3
+ import { searchUsers as portalUserSearch, } from "@esri/arcgis-rest-portal";
4
+ /**
5
+ * Search for Users via the Portal API.
6
+ *
7
+ * **Note** Authentication is required
8
+ *
9
+ * Note: in the future, there may be options to search via
10
+ * a Hub specific API
11
+ * @param filter
12
+ * @param options
13
+ * @returns
14
+ */
15
+ export function _searchUsers(filter, options) {
16
+ return __awaiter(this, void 0, void 0, function () {
17
+ var expanded, api, searchOptions;
18
+ return __generator(this, function (_a) {
19
+ // JS Clients may not pass in authentication
20
+ if (!options.authentication) {
21
+ throw new Error("Authentication required to search for users.");
22
+ }
23
+ expanded = expandUserFilter(filter);
24
+ api = expandApi(options.api || "arcgis");
25
+ if (api.type === "arcgis") {
26
+ searchOptions = serializeUserFilterForPortal(expanded);
27
+ // carry the auth forward
28
+ searchOptions.authentication = options.authentication;
29
+ // TODO: Dry this up - typscript makes this... inconvenient
30
+ if (options.num) {
31
+ searchOptions.num = options.num;
32
+ }
33
+ if (options.sortField) {
34
+ searchOptions.sortField = options.sortField;
35
+ }
36
+ if (options.sortOrder) {
37
+ searchOptions.sortOrder = options.sortOrder;
38
+ }
39
+ if (options.site) {
40
+ searchOptions.site = cloneObject(options.site);
41
+ }
42
+ return [2 /*return*/, searchPortalUsers(searchOptions)];
43
+ }
44
+ else {
45
+ throw new Error("_searchUsers is not implemented for non-arcgis apis");
46
+ }
47
+ return [2 /*return*/];
48
+ });
49
+ });
50
+ }
51
+ /**
52
+ * Internal function that executes the user search along with
53
+ * some simple enrichments
54
+ * @param searchOptions
55
+ * @returns
56
+ */
57
+ function searchPortalUsers(searchOptions) {
58
+ var portalUrl = searchOptions.authentication.portal;
59
+ var token = searchOptions.authentication.token;
60
+ // Partially applied functions for mapping over the results
61
+ var userLinkify = function (user) {
62
+ user.profileUrl = searchOptions.site.item.url + "/people/" + user.username + "/profile";
63
+ return user;
64
+ };
65
+ var thumbnailify = function (user) {
66
+ if (user.thumbnail) {
67
+ user.thumbnailUrl = getUserThumbnailUrl(portalUrl, user, token);
68
+ }
69
+ return user;
70
+ };
71
+ return portalUserSearch(searchOptions).then(function (response) {
72
+ var _a, _b;
73
+ var hasNext = response.nextStart > -1;
74
+ // upgrade thumbnail url
75
+ var results = response.results.map(thumbnailify);
76
+ // generate the site team url if site url is provided
77
+ if ((_b = (_a = searchOptions.site) === null || _a === void 0 ? void 0 : _a.item) === null || _b === void 0 ? void 0 : _b.url) {
78
+ results = response.results.map(userLinkify);
79
+ }
80
+ return {
81
+ hasNext: hasNext,
82
+ total: response.total,
83
+ results: results,
84
+ next: getNextFunction(searchOptions, response.nextStart, response.total, searchPortalUsers),
85
+ };
86
+ });
87
+ }
88
+ //# sourceMappingURL=_searchUsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_searchUsers.js","sourceRoot":"","sources":["../../../src/search/_searchUsers.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
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";
8
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/search/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/search/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,136 @@
1
+ import { __spreadArrays } from "tslib";
2
+ import { cloneObject, getProp, mergeDateRange, mergeMatchOptions, mergeSearchOptions, relativeDateToDateRange, serializeDateRange, serializeMatchOptions, setProp, valueToMatchOptions, } 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 function mergeUserFilters(filters) {
14
+ // expand all the filters so all prop types are consistent
15
+ var expanded = filters.map(expandUserFilter);
16
+ // now we can merge based on fields
17
+ var dateFields = ["created", "modified", "lastlogin"];
18
+ var specialFields = __spreadArrays(["disabled", "term", "filterType"], dateFields);
19
+ // acc is initialized as Filter<group> but also needs it
20
+ // in the function signature... for reasons?!
21
+ var result = expanded.reduce(function (acc, entry) {
22
+ // process fields
23
+ Object.entries(entry).forEach(function (_a) {
24
+ // Note: getProp/setProp are used to get around
25
+ // typescript issues with string indexing
26
+ var key = _a[0], value = _a[1];
27
+ if (acc.hasOwnProperty(key)) {
28
+ var existingValue = getProp(acc, key);
29
+ // if the key is not to a special field
30
+ if (!specialFields.includes(key)) {
31
+ // treat as an IMatchOptions
32
+ setProp(key, mergeMatchOptions(existingValue, value), acc);
33
+ }
34
+ else if (dateFields.includes(key)) {
35
+ // treat as IDateRange
36
+ setProp(key, mergeDateRange(existingValue, value), acc);
37
+ }
38
+ else if (key === "term") {
39
+ // append terms
40
+ acc[key] = acc[key] + " " + value;
41
+ }
42
+ }
43
+ else {
44
+ // Acc does not have an entry for this yet
45
+ // so just clone it
46
+ setProp(key, cloneObject(value), acc);
47
+ }
48
+ });
49
+ return acc;
50
+ }, {
51
+ filterType: "user",
52
+ });
53
+ return result;
54
+ }
55
+ /**
56
+ * Prior to serialization into the query syntax for the backing APIs, we first expand [Filters](../Filter)
57
+ *
58
+ * Filter's can express their intent in a very terse form, but to ensure consistent structures
59
+ * we expand them into their more verbose form.
60
+ *
61
+ * i.e. `firstname: "John"` expands into `firstname: { any: ["John"]}`
62
+ *
63
+ * - Fields defined as `string | string[] | MatchOptions` will be converted to a `MatchOptions`
64
+ * - RelativeDate fields are converted to DateRange<number>
65
+ * @param filter
66
+ * @returns
67
+ */
68
+ export function expandUserFilter(filter) {
69
+ var result = {};
70
+ var dateProps = ["created", "modified", "lastlogin"];
71
+ var specialProps = __spreadArrays(["disabled", "term"], dateProps);
72
+ Object.entries(filter).forEach(function (_a) {
73
+ var key = _a[0], value = _a[1];
74
+ // handle Matchish fields
75
+ if (!specialProps.includes(key)) {
76
+ // setProp side-steps typescript complaining
77
+ setProp(key, valueToMatchOptions(value), result);
78
+ }
79
+ // Handle date fields
80
+ if (dateProps.includes(key)) {
81
+ var dateFieldValue = cloneObject(getProp(filter, key));
82
+ if (getProp(filter, key + ".type") === "relative-date") {
83
+ setProp(key, relativeDateToDateRange(dateFieldValue), result);
84
+ }
85
+ else {
86
+ setProp(key, dateFieldValue, result);
87
+ }
88
+ }
89
+ });
90
+ // disabled is boolean, so we check if the prop exists
91
+ // vs checking if the value is truthy
92
+ if (filter.hasOwnProperty("disabled")) {
93
+ result.disabled = filter.disabled;
94
+ }
95
+ if (filter.term) {
96
+ result.term = filter.term;
97
+ }
98
+ return result;
99
+ }
100
+ /**
101
+ * @private
102
+ * Serialize an `IUserFilterDefinition` into an `ISearchOptions` for use
103
+ * with `searchUsers`
104
+ * @param filter
105
+ * @returns
106
+ */
107
+ export function serializeUserFilterForPortal(filter) {
108
+ var result = {
109
+ q: "",
110
+ filter: "",
111
+ };
112
+ var dateProps = ["created", "modified", "lastlogin"];
113
+ var specialProps = __spreadArrays(["term", "filterType"], dateProps);
114
+ Object.entries(filter).forEach(function (_a) {
115
+ var key = _a[0], value = _a[1];
116
+ // MatchOptions fields
117
+ if (!specialProps.includes(key)) {
118
+ result = mergeSearchOptions(result, serializeMatchOptions(key, value), "AND");
119
+ }
120
+ // Dates only go into q
121
+ if (dateProps.includes(key)) {
122
+ result = mergeSearchOptions(result, serializeDateRange(key, value), "AND");
123
+ }
124
+ });
125
+ // disabled is also a top-level property
126
+ if (filter.hasOwnProperty("disabled")) {
127
+ result.disabled = filter.disabled;
128
+ }
129
+ // add the term
130
+ if (filter.term) {
131
+ // Note: this is slightly different from other types
132
+ result.q = ("(" + filter.term + ") " + result.q).trim();
133
+ }
134
+ return result;
135
+ }
136
+ //# 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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"}