@esri/hub-common 9.13.2 → 9.14.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 (70) hide show
  1. package/dist/es2017/ArcGISContext.js +158 -147
  2. package/dist/es2017/ArcGISContext.js.map +1 -1
  3. package/dist/es2017/ArcGISContextManager.js +160 -0
  4. package/dist/es2017/ArcGISContextManager.js.map +1 -0
  5. package/dist/es2017/index.js +1 -0
  6. package/dist/es2017/index.js.map +1 -1
  7. package/dist/es2017/search/_searchContent.js +18 -7
  8. package/dist/es2017/search/_searchContent.js.map +1 -1
  9. package/dist/es2017/search/_searchGroups.js +1 -11
  10. package/dist/es2017/search/_searchGroups.js.map +1 -1
  11. package/dist/es2017/search/utils.js +1 -1
  12. package/dist/es2017/urls/getHubApiFromPortalUrl.js +21 -0
  13. package/dist/es2017/urls/getHubApiFromPortalUrl.js.map +1 -0
  14. package/dist/es2017/urls/getPortalBaseFromOrgUrl.js +25 -0
  15. package/dist/es2017/urls/getPortalBaseFromOrgUrl.js.map +1 -0
  16. package/dist/es2017/urls/index.js +2 -0
  17. package/dist/es2017/urls/index.js.map +1 -1
  18. package/dist/esm/ArcGISContext.js +251 -202
  19. package/dist/esm/ArcGISContext.js.map +1 -1
  20. package/dist/esm/ArcGISContextManager.js +204 -0
  21. package/dist/esm/ArcGISContextManager.js.map +1 -0
  22. package/dist/esm/index.js +1 -0
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/search/_searchContent.js +18 -7
  25. package/dist/esm/search/_searchContent.js.map +1 -1
  26. package/dist/esm/search/_searchGroups.js +3 -13
  27. package/dist/esm/search/_searchGroups.js.map +1 -1
  28. package/dist/esm/search/utils.js +1 -1
  29. package/dist/esm/urls/getHubApiFromPortalUrl.js +21 -0
  30. package/dist/esm/urls/getHubApiFromPortalUrl.js.map +1 -0
  31. package/dist/esm/urls/getPortalBaseFromOrgUrl.js +25 -0
  32. package/dist/esm/urls/getPortalBaseFromOrgUrl.js.map +1 -0
  33. package/dist/esm/urls/index.js +2 -0
  34. package/dist/esm/urls/index.js.map +1 -1
  35. package/dist/node/ArcGISContext.js +158 -147
  36. package/dist/node/ArcGISContext.js.map +1 -1
  37. package/dist/node/ArcGISContextManager.js +164 -0
  38. package/dist/node/ArcGISContextManager.js.map +1 -0
  39. package/dist/node/index.js +1 -0
  40. package/dist/node/index.js.map +1 -1
  41. package/dist/node/search/_searchContent.js +17 -6
  42. package/dist/node/search/_searchContent.js.map +1 -1
  43. package/dist/node/search/_searchGroups.js +1 -11
  44. package/dist/node/search/_searchGroups.js.map +1 -1
  45. package/dist/node/search/utils.js +1 -1
  46. package/dist/node/urls/getHubApiFromPortalUrl.js +25 -0
  47. package/dist/node/urls/getHubApiFromPortalUrl.js.map +1 -0
  48. package/dist/node/urls/getPortalBaseFromOrgUrl.js +29 -0
  49. package/dist/node/urls/getPortalBaseFromOrgUrl.js.map +1 -0
  50. package/dist/node/urls/index.js +2 -0
  51. package/dist/node/urls/index.js.map +1 -1
  52. package/dist/types/ArcGISContext.d.ts +103 -77
  53. package/dist/types/ArcGISContextManager.d.ts +113 -0
  54. package/dist/types/index.d.ts +1 -0
  55. package/dist/types/search/utils.d.ts +1 -1
  56. package/dist/types/urls/getHubApiFromPortalUrl.d.ts +8 -0
  57. package/dist/types/urls/getPortalBaseFromOrgUrl.d.ts +9 -0
  58. package/dist/types/urls/index.d.ts +2 -0
  59. package/dist/umd/common.umd.js +144 -125
  60. package/dist/umd/common.umd.js.map +1 -1
  61. package/dist/umd/common.umd.min.js +1 -1
  62. package/dist/umd/common.umd.min.js.map +1 -1
  63. package/package.json +1 -1
  64. package/dist/es2017/ArcGISContextState.js +0 -203
  65. package/dist/es2017/ArcGISContextState.js.map +0 -1
  66. package/dist/esm/ArcGISContextState.js +0 -285
  67. package/dist/esm/ArcGISContextState.js.map +0 -1
  68. package/dist/node/ArcGISContextState.js +0 -207
  69. package/dist/node/ArcGISContextState.js.map +0 -1
  70. package/dist/types/ArcGISContextState.d.ts +0 -129
@@ -1,198 +1,209 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ArcGISContext = void 0;
4
- const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
5
- const ArcGISContextState_1 = require("./ArcGISContextState");
6
4
  const _1 = require(".");
7
5
  /**
8
- * Application Context Object
6
+ * Hash of Hub API end points so updates
7
+ * are centralized
8
+ */
9
+ const hubApiEndpoints = {
10
+ domains: "/api/v3/domains",
11
+ search: "/api/v3/datasets",
12
+ discussions: "/api/discussions/v1",
13
+ };
14
+ /**
15
+ * ArcGISContext
9
16
  *
10
- * Abstraction that combines a `UserSession` with
11
- * the `portal/self` and `user/self` responses to
12
- * provide a central lookup of platform information.
17
+ * Abstraction that holds a UserSession, along with
18
+ * getters to streamline access to various platform
19
+ * urls, and common constructs like IRequestOptions
13
20
  *
14
- * This is a work-in-progress, and will likely expand over time.
21
+ * Thin class just used to enable getters
15
22
  *
16
- * `ArcGISContext` is used in conjuction with the `arcgis-app-identity`
17
- * component to orchestrate oAuth.
23
+ * This class should not be used by anything other than
24
+ * the ArcGISContextManager class
18
25
  */
19
26
  class ArcGISContext {
20
- /**
21
- * Private constructor. Use `ArcGISContext.create(...)` to
22
- * instantiate an instance
23
- * @param opts
24
- */
25
27
  constructor(opts) {
26
28
  this._portalUrl = "https://www.arcgis.com";
27
- this._debug = false;
28
- // Having a unique id makes debugging easier
29
- this.id = new Date().getTime();
30
- if (opts.debug) {
31
- this._debug = opts.debug;
32
- }
33
- this.log(`ArcGISContext:ctor: Creating ${this.id}`);
29
+ this.id = opts.id;
30
+ this._portalUrl = opts.portalUrl;
31
+ this._hubUrl = opts.hubUrl;
34
32
  if (opts.authentication) {
35
33
  this._authentication = opts.authentication;
36
- this._portalUrl = this._authentication.portal.replace("/sharing/rest", "");
37
- this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
38
- }
39
- else if (opts.portalUrl) {
40
- this._portalUrl = opts.portalUrl;
41
- this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
42
34
  }
43
- else {
44
- this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
45
- }
46
- if (opts.portal) {
47
- this._portalSelf = _1.cloneObject(opts.portal);
35
+ if (opts.portalSelf) {
36
+ this._portalSelf = opts.portalSelf;
48
37
  }
49
38
  if (opts.currentUser) {
50
- this._currentUser = _1.cloneObject(opts.currentUser);
39
+ this._currentUser = opts.currentUser;
51
40
  }
52
41
  }
53
42
  /**
54
- * Static async Factory
55
- * @param opts
56
- * @returns
43
+ * Return the UserSession if authenticated
57
44
  */
58
- static async create(opts = {}) {
59
- const ctx = new ArcGISContext(opts);
60
- await ctx.initialize();
61
- return ctx;
45
+ get session() {
46
+ return this._authentication;
62
47
  }
63
48
  /**
64
- * Set the Authentication (UserSession) for the context.
65
- * This should be called when a user signs into a running
66
- * application.
67
- * @param auth
49
+ * Return boolean indicating if authenticatio is present
68
50
  */
69
- async setAuthentication(auth) {
70
- this._authentication = auth;
71
- this._portalUrl = auth.portal.replace("/sharing/rest", "");
72
- await this.initialize();
51
+ get isAuthenticated() {
52
+ return !!this._authentication;
73
53
  }
74
54
  /**
75
- * Clear the Authentication (UserSession). This should be
76
- * called when a user signs out of an application, but
77
- * the application continues running
55
+ * Return `IUserRequestOptions`, which is used for REST-JS
56
+ * functions which require authentication information.
57
+ *
58
+ * If context is not authenticated, this function will throw
78
59
  */
79
- clearAuthentication() {
80
- // Reset the portalUrl from the org url to the base url
81
- // for ArcGIS Enterprise, we just leave the _portalUrl as-is
82
- if (!this._state.isPortal) {
83
- this._portalUrl = getPortalBaseFromOrgUrl(this._portalUrl);
60
+ get userRequestOptions() {
61
+ if (this.isAuthenticated) {
62
+ return {
63
+ authentication: this._authentication,
64
+ portal: this.sharingApiUrl,
65
+ };
84
66
  }
85
- // Clear the auth, portalSelf and currentUser props
86
- this._authentication = null;
87
- this._portalSelf = null;
88
- this._currentUser = null;
89
- this._state = new ArcGISContextState_1.ArcGISContextState({
90
- id: this.id,
91
- portalUrl: this._portalUrl,
92
- hubUrl: this._hubUrl,
93
- });
94
67
  }
95
68
  /**
96
- * Return a reference to the current state.
97
- * When `.setAuthentication()` or `.clearAuthenentication()` are
98
- * called, the state will be re-created. This is done so frameworks
99
- * like React or Ember can detect changes.
69
+ * Return `IRequestOptions`, which is used by REST-JS functions
70
+ * which *may* use authentication information if provided.
71
+ *
72
+ * If context is not authenticated, this function just returns
73
+ * the `portal` property, which informs REST-JS what Sharing API
74
+ * instance to use (i.e. AGO, Enterprise etc)
100
75
  */
101
- get state() {
102
- return this._state;
76
+ get requestOptions() {
77
+ let ro = {
78
+ portal: this.sharingApiUrl,
79
+ };
80
+ if (this.isAuthenticated) {
81
+ ro = {
82
+ authentication: this._authentication,
83
+ portal: this.sharingApiUrl,
84
+ };
85
+ }
86
+ return ro;
103
87
  }
104
88
  /**
105
- * @internal
106
- * Log debugging messages to the console
107
- * @param message
89
+ * Return a `IHubRequestOptions` object
108
90
  */
109
- log(message) {
110
- if (this._debug) {
111
- // tslint:disable-next-line:no-console
112
- console.info(message);
113
- }
91
+ get hubRequestOptions() {
92
+ // We may add more logic around what is returned in some corner cases
93
+ return {
94
+ authentication: this.session,
95
+ isPortal: this.isPortal,
96
+ portalSelf: this.portal,
97
+ hubApiUrl: this.hubUrl,
98
+ };
114
99
  }
115
100
  /**
116
- * If we have a UserSession, fetch portal/self and
117
- * store that along with current user
101
+ * Return the portal url.
102
+ *
103
+ * If authenticated @ ArcGIS Online, it will return
104
+ * the https://org.env.arcgis.com
105
+ *
106
+ * If authenticated @ ArcGIS Enterprise, it will return
107
+ * https://portalHostname, which includes the web adaptor
118
108
  */
119
- async initialize() {
120
- // if we have auth, and don't have portalSelf or currentUser, fetch them
121
- if (this._authentication && (!this._portalSelf || !this._currentUser)) {
122
- this.log(`ArcGISContext-${this.id}: Initializing`);
123
- const username = this._authentication.username;
124
- const requests = [
125
- arcgis_rest_portal_1.getSelf({ authentication: this._authentication }),
126
- arcgis_rest_portal_1.getUser({ username, authentication: this._authentication }),
127
- ];
128
- try {
129
- const [portal, user] = await Promise.all(requests);
130
- this._portalSelf = portal;
131
- this._currentUser = user;
109
+ get portalUrl() {
110
+ if (this.isAuthenticated) {
111
+ if (this.isPortal) {
112
+ return `https://${this._portalSelf.portalHostname}`;
132
113
  }
133
- catch (ex) {
134
- const msg = `ArcGISContext could not fetch portal & user for "${this._authentication.username}" using ${this._authentication.portal}.`;
135
- // tslint:disable-next-line:no-console
136
- console.error(msg);
137
- throw ex;
114
+ else {
115
+ return `https://${this._portalSelf.urlKey}.${this._portalSelf.customBaseUrl}`;
138
116
  }
139
117
  }
140
- // update the state
141
- this._state = new ArcGISContextState_1.ArcGISContextState(this.stateOpts);
142
- }
143
- get stateOpts() {
144
- const stateOpts = {
145
- id: this.id,
146
- portalUrl: this._portalUrl,
147
- hubUrl: this._hubUrl,
148
- };
149
- if (this._authentication) {
150
- stateOpts.authentication = this._authentication;
118
+ else {
119
+ return this._portalUrl;
151
120
  }
152
- if (this._portalSelf) {
153
- stateOpts.portalSelf = this._portalSelf;
121
+ }
122
+ /**
123
+ * Returns the url to the sharing api
124
+ * i.e. https://myorg.maps.arcgis.com/sharing/rest
125
+ */
126
+ get sharingApiUrl() {
127
+ return `${this.portalUrl}/sharing/rest`;
128
+ }
129
+ get hubUrl() {
130
+ return this._hubUrl;
131
+ }
132
+ /**
133
+ * Returns boolean indicating if the backing system
134
+ * is ArcGIS Enterprise (formerly ArcGIS Portal) or not
135
+ */
136
+ get isPortal() {
137
+ return this._portalSelf
138
+ ? this._portalSelf.isPortal
139
+ : this._portalUrl.indexOf("arcgis.com") === -1;
140
+ }
141
+ // Hub APIs
142
+ // ----------
143
+ // Discussions
144
+ get discussionsServiceUrl() {
145
+ if (this._hubUrl) {
146
+ return `${this._hubUrl}${hubApiEndpoints.discussions}`;
154
147
  }
155
- if (this._currentUser) {
156
- stateOpts.currentUser = this._currentUser;
148
+ }
149
+ // Hub Search
150
+ get hubSearchServiceUrl() {
151
+ if (this._hubUrl) {
152
+ return `${this._hubUrl}${hubApiEndpoints.search}`;
157
153
  }
158
- return stateOpts;
159
154
  }
160
- }
161
- exports.ArcGISContext = ArcGISContext;
162
- /**
163
- * Cross-walk from a portalUrl to the corresponding Hub.
164
- *
165
- * If the passed url is not recognized, then this will return `undefined`
166
- * @param portalUrl
167
- * @returns
168
- */
169
- function getHubApiFromPortalUrl(portalUrl) {
170
- let result;
171
- if (portalUrl.match(/(qaext|\.mapsqa)\.arcgis.com/)) {
172
- result = "https://hubqa.arcgis.com";
155
+ // Domain
156
+ get domainServiceUrl() {
157
+ if (this._hubUrl) {
158
+ return `${this._hubUrl}${hubApiEndpoints.domains}`;
159
+ }
173
160
  }
174
- else if (portalUrl.match(/(devext|\.mapsdevext)\.arcgis.com/)) {
175
- result = "https://hubdev.arcgis.com";
161
+ // Events
162
+ // returns `{serviceId: '3ef..', publicViewId: 'bc3...'}
163
+ get eventsConfig() {
164
+ if (this._portalSelf) {
165
+ return _1.getProp(this._portalSelf, "portalProperties.hub.settings.events");
166
+ }
176
167
  }
177
- else if (portalUrl.match(/(www|\.maps)\.arcgis.com/)) {
178
- result = "https://hub.arcgis.com";
168
+ /**
169
+ * Returns boolean indicating if the current user
170
+ * belongs to an organization that has licensed
171
+ * ArcGIS Hub
172
+ */
173
+ get hubEnabled() {
174
+ return _1.getWithDefault(this._portalSelf, "portalProperties.hub.enabled", false);
179
175
  }
180
- return result;
181
- }
182
- function getPortalBaseFromOrgUrl(orgUrl) {
183
- let result;
184
- if (orgUrl.match(/(qaext|\.mapsqa)\.arcgis.com/)) {
185
- result = "https://qaext.arcgis.com";
186
- }
187
- else if (orgUrl.match(/(devext|\.mapsdevext)\.arcgis.com/)) {
188
- result = "https://devext.arcgis.com";
189
- }
190
- else {
191
- /* istanbul ignore else */
192
- if (orgUrl.match(/(www|\.maps)\.arcgis.com/)) {
193
- result = "https://www.arcgis.com";
176
+ /**
177
+ * Return Hub Community Org Id, if defined
178
+ */
179
+ get communityOrgId() {
180
+ if (this._portalSelf) {
181
+ return _1.getProp(this._portalSelf, "portalProperties.hub.settings.communityOrg.orgId");
182
+ }
183
+ }
184
+ get communityOrgHostname() {
185
+ if (this._portalSelf) {
186
+ return _1.getProp(this._portalSelf, "portalProperties.hub.settings.communityOrg.portalHostname");
187
+ }
188
+ }
189
+ get communityOrgUrl() {
190
+ if (this.communityOrgHostname) {
191
+ return `https://${this.communityOrgHostname}`;
194
192
  }
195
193
  }
196
- return result;
194
+ // Platform API service urls are all in helperServices
195
+ // and not consistent to expose as urls
196
+ get helperServices() {
197
+ if (this._portalSelf) {
198
+ return this._portalSelf.helperServices;
199
+ }
200
+ }
201
+ get currentUser() {
202
+ return this._currentUser;
203
+ }
204
+ get portal() {
205
+ return this._portalSelf;
206
+ }
197
207
  }
208
+ exports.ArcGISContext = ArcGISContext;
198
209
  //# sourceMappingURL=ArcGISContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGISContext.js","sourceRoot":"","sources":["../../src/ArcGISContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArcGISContext.js","sourceRoot":"","sources":["../../src/ArcGISContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArcGISContextManager = void 0;
4
+ const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
5
+ const ArcGISContext_1 = require("./ArcGISContext");
6
+ const _1 = require(".");
7
+ const getHubApiFromPortalUrl_1 = require("./urls/getHubApiFromPortalUrl");
8
+ const getPortalBaseFromOrgUrl_1 = require("./urls/getPortalBaseFromOrgUrl");
9
+ /**
10
+ * ArcGIS Context Manager
11
+ *
12
+ * The manager exposes context (`IArcGISContext`), which combines a `UserSession` with
13
+ * the `portal/self` and `user/self` responses to provide a central lookup for platform
14
+ * information, api urls, and other useful properties for developers such as IRequestOptions
15
+ * IUserRequestOptions, IHubRequestOptions etc.
16
+ *
17
+ * The context is exposed on gthe `.context` property, and as the authentication changes
18
+ * the `.context` is re-created. This is done to allow web frameworks to watch for
19
+ * changes on that single property, instead of having to leverage observers or events
20
+ * for change detection.
21
+ *
22
+ * This is a work-in-progress, and will likely expand over time.
23
+ *
24
+ */
25
+ class ArcGISContextManager {
26
+ /**
27
+ * Private constructor. Use `ArcGISContextManager.create(...)` to
28
+ * instantiate an instance
29
+ * @param opts
30
+ */
31
+ constructor(opts) {
32
+ this._portalUrl = "https://www.arcgis.com";
33
+ this._logLevel = _1.Level.error;
34
+ // Having a unique id makes debugging easier
35
+ this.id = new Date().getTime();
36
+ if (opts.logLevel) {
37
+ this._logLevel = opts.logLevel;
38
+ }
39
+ _1.Logger.setLogLevel(this._logLevel);
40
+ _1.Logger.debug(`ArcGISContextManager:ctor: Creating ${this.id}`);
41
+ if (opts.authentication) {
42
+ this._authentication = opts.authentication;
43
+ this._portalUrl = this._authentication.portal.replace("/sharing/rest", "");
44
+ this._hubUrl = getHubApiFromPortalUrl_1.getHubApiFromPortalUrl(this._portalUrl);
45
+ }
46
+ else if (opts.portalUrl) {
47
+ this._portalUrl = opts.portalUrl;
48
+ this._hubUrl = getHubApiFromPortalUrl_1.getHubApiFromPortalUrl(this._portalUrl);
49
+ }
50
+ else {
51
+ this._hubUrl = getHubApiFromPortalUrl_1.getHubApiFromPortalUrl(this._portalUrl);
52
+ }
53
+ if (opts.portal) {
54
+ this._portalSelf = _1.cloneObject(opts.portal);
55
+ }
56
+ if (opts.currentUser) {
57
+ this._currentUser = _1.cloneObject(opts.currentUser);
58
+ }
59
+ }
60
+ /**
61
+ * Static async Factory
62
+ * @param opts
63
+ * @returns
64
+ */
65
+ static async create(opts = {}) {
66
+ const ctx = new ArcGISContextManager(opts);
67
+ await ctx.initialize();
68
+ return ctx;
69
+ }
70
+ /**
71
+ * Set the Authentication (UserSession) for the context.
72
+ * This should be called when a user signs into a running
73
+ * application.
74
+ * @param auth
75
+ */
76
+ async setAuthentication(auth) {
77
+ this._authentication = auth;
78
+ this._portalUrl = auth.portal.replace("/sharing/rest", "");
79
+ await this.initialize();
80
+ }
81
+ /**
82
+ * Clear the Authentication (UserSession). This should be
83
+ * called when a user signs out of an application, but
84
+ * the application continues running
85
+ */
86
+ clearAuthentication() {
87
+ // Reset the portalUrl from the org url to the base url
88
+ // for ArcGIS Enterprise, we just leave the _portalUrl as-is
89
+ if (!this._context.isPortal) {
90
+ this._portalUrl = getPortalBaseFromOrgUrl_1.getPortalBaseFromOrgUrl(this._portalUrl);
91
+ }
92
+ // Clear the auth, portalSelf and currentUser props
93
+ this._authentication = null;
94
+ this._portalSelf = null;
95
+ this._currentUser = null;
96
+ this._context = new ArcGISContext_1.ArcGISContext({
97
+ id: this.id,
98
+ portalUrl: this._portalUrl,
99
+ hubUrl: this._hubUrl,
100
+ });
101
+ }
102
+ /**
103
+ * Return a reference to the current state.
104
+ * When `.setAuthentication()` or `.clearAuthenentication()` are
105
+ * called, the state will be re-created. This is done so frameworks
106
+ * like React or Ember can detect changes.
107
+ */
108
+ get context() {
109
+ return this._context;
110
+ }
111
+ /**
112
+ * If we have a UserSession, fetch portal/self and
113
+ * store that along with current user
114
+ */
115
+ async initialize() {
116
+ // if we have auth, and don't have portalSelf or currentUser, fetch them
117
+ if (this._authentication && (!this._portalSelf || !this._currentUser)) {
118
+ _1.Logger.debug(`ArcGISContextManager-${this.id}: Initializing`);
119
+ const username = this._authentication.username;
120
+ const requests = [
121
+ arcgis_rest_portal_1.getSelf({ authentication: this._authentication }),
122
+ arcgis_rest_portal_1.getUser({ username, authentication: this._authentication }),
123
+ ];
124
+ try {
125
+ const [portal, user] = await Promise.all(requests);
126
+ this._portalSelf = portal;
127
+ this._currentUser = user;
128
+ _1.Logger.debug(`ArcGISContextManager-${this.id}: received portalSelf and currentUser`);
129
+ }
130
+ catch (ex) {
131
+ const msg = `ArcGISContextManager could not fetch portal & user for "${this._authentication.username}" using ${this._authentication.portal}.`;
132
+ _1.Logger.error(msg);
133
+ // tslint:disable-next-line:no-console
134
+ console.error(msg);
135
+ throw ex;
136
+ }
137
+ }
138
+ _1.Logger.debug(`ArcGISContextManager-${this.id}: updating context`);
139
+ // update the context
140
+ this._context = new ArcGISContext_1.ArcGISContext(this.contextOpts);
141
+ }
142
+ /**
143
+ * Getter to streamline the creation of updated Context instances
144
+ */
145
+ get contextOpts() {
146
+ const contextOpts = {
147
+ id: this.id,
148
+ portalUrl: this._portalUrl,
149
+ hubUrl: this._hubUrl,
150
+ };
151
+ if (this._authentication) {
152
+ contextOpts.authentication = this._authentication;
153
+ }
154
+ if (this._portalSelf) {
155
+ contextOpts.portalSelf = this._portalSelf;
156
+ }
157
+ if (this._currentUser) {
158
+ contextOpts.currentUser = this._currentUser;
159
+ }
160
+ return contextOpts;
161
+ }
162
+ }
163
+ exports.ArcGISContextManager = ArcGISContextManager;
164
+ //# sourceMappingURL=ArcGISContextManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGISContextManager.js","sourceRoot":"","sources":["../../src/ArcGISContextManager.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ tslib_1.__exportStar(require("./utils"), exports);
24
24
  tslib_1.__exportStar(require("./i18n"), exports);
25
25
  tslib_1.__exportStar(require("./request"), exports);
26
26
  tslib_1.__exportStar(require("./surveys"), exports);
27
+ tslib_1.__exportStar(require("./ArcGISContextManager"), exports);
27
28
  tslib_1.__exportStar(require("./ArcGISContext"), exports);
28
29
  const OperationStack_1 = require("./OperationStack");
29
30
  exports.OperationStack = OperationStack_1.default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;;;;AAEhB,mDAAyB;AACzB,gDAAsB;AACtB,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,kDAAwB;AACxB,iDAAuB;AACvB,iDAAuB;AACvB,kDAAwB;AACxB,iDAAuB;AACvB,oDAA0B;AAC1B,oDAA0B;AAC1B,0DAAgC;AAEhC,qDAA8C;AAIrC,yBAJF,wBAAc,CAIE;AAHvB,qDAA8C;AAGrB,yBAHlB,wBAAc,CAGkB;AACvC,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,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,kDAAwB;AACxB,iDAAuB;AACvB,iDAAuB;AACvB,kDAAwB;AACxB,iDAAuB;AACvB,oDAA0B;AAC1B,oDAA0B;AAC1B,iEAAuC;AACvC,0DAAgC;AAEhC,qDAA8C;AAIrC,yBAJF,wBAAc,CAIE;AAHvB,qDAA8C;AAGrB,yBAHlB,wBAAc,CAGkB;AACvC,6BAAkC;AAAzB,4FAAA,IAAI,OAAA;AAAE,4FAAA,IAAI,OAAA"}
@@ -17,13 +17,12 @@ async function _searchContent(filter, options) {
17
17
  // API
18
18
  const api = _1.expandApi(options.api || "arcgis");
19
19
  let searchPromise;
20
- // map over the apis, depending on the type we issue the queries
21
- // const searchPromises = apis.map((api) => {
22
20
  // Portal Search
23
21
  if (api.type === "arcgis") {
24
22
  // serialize for portal
25
23
  const so = content_utils_1.serializeContentFilterForPortal(expanded);
26
- // pass auth forward
24
+ // if we have auth, pass it forward
25
+ // otherwise set the portal property
27
26
  if (options.authentication) {
28
27
  so.authentication = options.authentication;
29
28
  }
@@ -36,7 +35,6 @@ async function _searchContent(filter, options) {
36
35
  so.countSize = 200;
37
36
  }
38
37
  // copy over various options
39
- // TODO: Dry this up - typscript makes this... inconvenient
40
38
  if (options.num) {
41
39
  so.num = options.num;
42
40
  }
@@ -64,8 +62,6 @@ async function _searchContent(filter, options) {
64
62
  },
65
63
  });
66
64
  }
67
- // });
68
- // return for results
69
65
  return searchPromise;
70
66
  }
71
67
  exports._searchContent = _searchContent;
@@ -78,12 +74,27 @@ exports._searchContent = _searchContent;
78
74
  * @returns
79
75
  */
80
76
  function searchPortal(searchOptions) {
77
+ var _a;
78
+ const portalUrl = ((_a = searchOptions.authentication) === null || _a === void 0 ? void 0 : _a.portal) || searchOptions.portal;
79
+ let token;
80
+ if (searchOptions.authentication) {
81
+ const us = searchOptions.authentication;
82
+ token = us.token;
83
+ }
84
+ const thumbnailify = (content) => {
85
+ content.thumbnailUrl = __1.getItemThumbnailUrl(content, portalUrl, token);
86
+ return content;
87
+ };
81
88
  return arcgis_rest_portal_1.searchItems(searchOptions).then((resp) => {
82
89
  const hasNext = resp.nextStart > -1;
90
+ // convert items to IHubContent's
83
91
  let content = resp.results.map(__1.itemToContent);
92
+ // if we have a site, add those urls
84
93
  if (searchOptions.site) {
85
94
  content = content.map((entry) => __1.setContentSiteUrls(entry, searchOptions.site));
86
95
  }
96
+ // add thumbnailUrl
97
+ content = content.map(thumbnailify);
87
98
  // convert aggregations into facets
88
99
  const facets = content_utils_1.convertPortalResponseToFacets(resp);
89
100
  return {
@@ -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":";;;AAAA,mDAIyB;AAOzB,iEAAuE;AACvE,wBAA+C;AAC/C,0BAOY;AAGZ;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAClC,MAAyB,EACzB,OAA0B;;IAE1B,kDAAkD;IAClD,MAAM,QAAQ,GAAG,mCAAmB,CAAC,MAAM,CAAC,CAAC;IAE7C,MAAM;IACN,MAAM,GAAG,GAAG,YAAS,CAAC,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IAE/C,IAAI,aAAa,CAAC;IAClB,gBAAgB;IAChB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;QACzB,uBAAuB;QACvB,MAAM,EAAE,GAAG,+CAA+B,CAAC,QAAQ,CAAC,CAAC;QACrD,mCAAmC;QACnC,oCAAoC;QACpC,IAAI,OAAO,CAAC,cAAc,EAAE;YAC1B,EAAE,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;SAC5C;aAAM;YACL,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,eAAe,CAAC;SACvC;QACD,eAAe;QACf,UAAI,OAAO,CAAC,YAAY,0CAAE,MAAM,EAAE;YAChC,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;SACpB;QACD,4BAA4B;QAC5B,IAAI,OAAO,CAAC,GAAG,EAAE;YACf,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;SACtB;QACD,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,EAAE,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SAClC;QACD,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,EAAE,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SAClC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,EAAE,CAAC,IAAI,GAAG,eAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACrC;QACD,aAAa,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;KAClC;SAAM;QACL,iBAAiB;QACjB,yCAAyC;QACzC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAmB;YAC5B,MAAM,EAAE,EAAc;YACtB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,GAAG,EAAE;gBACT,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;SACsB,CAAC,CAAC;KAC5B;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAvDD,wCAuDC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CACnB,aAA6B;;IAE7B,MAAM,SAAS,GACb,OAAA,aAAa,CAAC,cAAc,0CAAE,MAAM,KAAI,aAAa,CAAC,MAAM,CAAC;IAC/D,IAAI,KAAa,CAAC;IAClB,IAAI,aAAa,CAAC,cAAc,EAAE;QAChC,MAAM,EAAE,GAAgB,aAAa,CAAC,cAA6B,CAAC;QACpE,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;KAClB;IAED,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,EAAE;QAC5C,OAAO,CAAC,YAAY,GAAG,uBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,gCAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAY,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAC7C,iCAAiC;QACjC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAa,CAAC,CAAC;QAC9C,oCAAoC;QACpC,IAAI,aAAa,CAAC,IAAI,EAAE;YACtB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,sBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAC9C,CAAC;SACH;QACD,mBAAmB;QACnB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpC,mCAAmC;QACnC,MAAM,MAAM,GAAG,6CAA6B,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,OAAO;YAChB,MAAM;YACN,OAAO;YACP,IAAI,EAAE,kBAAe,CACnB,aAAa,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,EACV,YAAY,CACb;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}