@esri/hub-common 9.13.1 → 9.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es2017/ArcGISContext.js +202 -120
- package/dist/es2017/ArcGISContext.js.map +1 -1
- package/dist/es2017/ArcGISContextManager.js +171 -0
- package/dist/es2017/ArcGISContextManager.js.map +1 -0
- package/dist/es2017/Hub.js +70 -0
- package/dist/es2017/Hub.js.map +1 -0
- package/dist/es2017/HubError.js +34 -0
- package/dist/es2017/HubError.js.map +1 -0
- package/dist/es2017/collections.js +23 -0
- package/dist/es2017/collections.js.map +1 -1
- package/dist/es2017/content/_internal.js.map +1 -1
- package/dist/es2017/content/index.js +25 -17
- package/dist/es2017/content/index.js.map +1 -1
- package/dist/es2017/core/helpers/PropertyMapper.js +95 -0
- package/dist/es2017/core/helpers/PropertyMapper.js.map +1 -0
- package/dist/es2017/core/index.js +3 -0
- package/dist/es2017/core/index.js.map +1 -0
- package/dist/es2017/core/traits/WithBannerImage.js +1 -0
- package/dist/es2017/core/traits/WithBannerImage.js.map +1 -0
- package/dist/es2017/core/traits/WithLayout.js +1 -0
- package/dist/es2017/core/traits/WithLayout.js.map +1 -0
- package/dist/es2017/core/traits/WithSlug.js +1 -0
- package/dist/es2017/core/traits/WithSlug.js.map +1 -0
- package/dist/es2017/core/traits/index.js +4 -0
- package/dist/es2017/core/traits/index.js.map +1 -0
- package/dist/es2017/core/types/IContentEnrichments.js +1 -0
- package/dist/es2017/core/types/IContentEnrichments.js.map +1 -0
- package/dist/es2017/core/types/IHubContent.js +1 -0
- package/dist/es2017/core/types/IHubContent.js.map +1 -0
- package/dist/es2017/core/types/IHubEntityBase.js +1 -0
- package/dist/es2017/core/types/IHubEntityBase.js.map +1 -0
- package/dist/es2017/core/types/IHubEntityManager.js +1 -0
- package/dist/es2017/core/types/IHubEntityManager.js.map +1 -0
- package/dist/es2017/core/types/IHubEvent.js +1 -0
- package/dist/es2017/core/types/IHubEvent.js.map +1 -0
- package/dist/es2017/core/types/IHubImage.js +1 -0
- package/dist/es2017/core/types/IHubImage.js.map +1 -0
- package/dist/es2017/core/types/IHubInitiative.js +1 -0
- package/dist/es2017/core/types/IHubInitiative.js.map +1 -0
- package/dist/es2017/core/types/IHubItemEntity.js +1 -0
- package/dist/es2017/core/types/IHubItemEntity.js.map +1 -0
- package/dist/es2017/core/types/IHubLayout.js +1 -0
- package/dist/es2017/core/types/IHubLayout.js.map +1 -0
- package/dist/es2017/core/types/IHubPage.js +1 -0
- package/dist/es2017/core/types/IHubPage.js.map +1 -0
- package/dist/es2017/core/types/IHubProject.js +1 -0
- package/dist/es2017/core/types/IHubProject.js.map +1 -0
- package/dist/es2017/core/types/IHubSite.js +1 -0
- package/dist/es2017/core/types/IHubSite.js.map +1 -0
- package/dist/es2017/core/types/IHubTimeline.js +1 -0
- package/dist/es2017/core/types/IHubTimeline.js.map +1 -0
- package/dist/es2017/core/types/IItemEnrichments.js +1 -0
- package/dist/es2017/core/types/IItemEnrichments.js.map +1 -0
- package/dist/es2017/core/types/index.js +15 -0
- package/dist/es2017/core/types/index.js.map +1 -0
- package/dist/es2017/index.js +11 -5
- package/dist/es2017/index.js.map +1 -1
- package/dist/es2017/items/fail-safe-update.js +2 -2
- package/dist/es2017/items/fail-safe-update.js.map +1 -1
- package/dist/es2017/items/get-model-from-options.js +2 -2
- package/dist/es2017/items/get-model-from-options.js.map +1 -1
- package/dist/es2017/items/index.js +2 -3
- package/dist/es2017/items/index.js.map +1 -1
- package/dist/es2017/items/slugs.js +92 -0
- package/dist/es2017/items/slugs.js.map +1 -0
- package/dist/es2017/models/index.js +98 -0
- package/dist/es2017/models/index.js.map +1 -0
- package/dist/es2017/{items/serialize-model.js → models/serializeModel.js} +1 -1
- package/dist/es2017/models/serializeModel.js.map +1 -0
- package/dist/es2017/projects/HubProjectManager.js +115 -0
- package/dist/es2017/projects/HubProjectManager.js.map +1 -0
- package/dist/es2017/projects/HubProjects.js +194 -0
- package/dist/es2017/projects/HubProjects.js.map +1 -0
- package/dist/es2017/projects/index.js +3 -0
- package/dist/es2017/projects/index.js.map +1 -0
- package/dist/es2017/search/_searchContent.js +18 -7
- package/dist/es2017/search/_searchContent.js.map +1 -1
- package/dist/es2017/search/_searchGroups.js +1 -11
- package/dist/es2017/search/_searchGroups.js.map +1 -1
- package/dist/es2017/search/utils.js +1 -1
- package/dist/es2017/urls/getHubApiFromPortalUrl.js +21 -0
- package/dist/es2017/urls/getHubApiFromPortalUrl.js.map +1 -0
- package/dist/es2017/urls/getPortalBaseFromOrgUrl.js +25 -0
- package/dist/es2017/urls/getPortalBaseFromOrgUrl.js.map +1 -0
- package/dist/es2017/urls/index.js +2 -0
- package/dist/es2017/urls/index.js.map +1 -1
- package/dist/es2017/utils/dasherize.js +25 -0
- package/dist/es2017/utils/dasherize.js.map +1 -0
- package/dist/es2017/utils/index.js +1 -0
- package/dist/es2017/utils/index.js.map +1 -1
- package/dist/esm/ArcGISContext.js +308 -180
- package/dist/esm/ArcGISContext.js.map +1 -1
- package/dist/esm/ArcGISContextManager.js +215 -0
- package/dist/esm/ArcGISContextManager.js.map +1 -0
- package/dist/esm/Hub.js +89 -0
- package/dist/esm/Hub.js.map +1 -0
- package/dist/esm/HubError.js +40 -0
- package/dist/esm/HubError.js.map +1 -0
- package/dist/esm/collections.js +23 -0
- package/dist/esm/collections.js.map +1 -1
- package/dist/esm/content/_internal.js.map +1 -1
- package/dist/esm/content/index.js +25 -17
- package/dist/esm/content/index.js.map +1 -1
- package/dist/esm/core/helpers/PropertyMapper.js +97 -0
- package/dist/esm/core/helpers/PropertyMapper.js.map +1 -0
- package/dist/esm/core/index.js +3 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/traits/WithBannerImage.js +1 -0
- package/dist/esm/core/traits/WithBannerImage.js.map +1 -0
- package/dist/esm/core/traits/WithLayout.js +1 -0
- package/dist/esm/core/traits/WithLayout.js.map +1 -0
- package/dist/esm/core/traits/WithSlug.js +1 -0
- package/dist/esm/core/traits/WithSlug.js.map +1 -0
- package/dist/esm/core/traits/index.js +4 -0
- package/dist/esm/core/traits/index.js.map +1 -0
- package/dist/esm/core/types/IContentEnrichments.js +1 -0
- package/dist/esm/core/types/IContentEnrichments.js.map +1 -0
- package/dist/esm/core/types/IHubContent.js +1 -0
- package/dist/esm/core/types/IHubContent.js.map +1 -0
- package/dist/esm/core/types/IHubEntityBase.js +1 -0
- package/dist/esm/core/types/IHubEntityBase.js.map +1 -0
- package/dist/esm/core/types/IHubEntityManager.js +1 -0
- package/dist/esm/core/types/IHubEntityManager.js.map +1 -0
- package/dist/esm/core/types/IHubEvent.js +1 -0
- package/dist/esm/core/types/IHubEvent.js.map +1 -0
- package/dist/esm/core/types/IHubImage.js +1 -0
- package/dist/esm/core/types/IHubImage.js.map +1 -0
- package/dist/esm/core/types/IHubInitiative.js +1 -0
- package/dist/esm/core/types/IHubInitiative.js.map +1 -0
- package/dist/esm/core/types/IHubItemEntity.js +1 -0
- package/dist/esm/core/types/IHubItemEntity.js.map +1 -0
- package/dist/esm/core/types/IHubLayout.js +1 -0
- package/dist/esm/core/types/IHubLayout.js.map +1 -0
- package/dist/esm/core/types/IHubPage.js +1 -0
- package/dist/esm/core/types/IHubPage.js.map +1 -0
- package/dist/esm/core/types/IHubProject.js +1 -0
- package/dist/esm/core/types/IHubProject.js.map +1 -0
- package/dist/esm/core/types/IHubSite.js +1 -0
- package/dist/esm/core/types/IHubSite.js.map +1 -0
- package/dist/esm/core/types/IHubTimeline.js +1 -0
- package/dist/esm/core/types/IHubTimeline.js.map +1 -0
- package/dist/esm/core/types/IItemEnrichments.js +1 -0
- package/dist/esm/core/types/IItemEnrichments.js.map +1 -0
- package/dist/esm/core/types/index.js +15 -0
- package/dist/esm/core/types/index.js.map +1 -0
- package/dist/esm/index.js +11 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/items/fail-safe-update.js +2 -2
- package/dist/esm/items/fail-safe-update.js.map +1 -1
- package/dist/esm/items/get-model-from-options.js +2 -2
- package/dist/esm/items/get-model-from-options.js.map +1 -1
- package/dist/esm/items/index.js +2 -3
- package/dist/esm/items/index.js.map +1 -1
- package/dist/esm/items/slugs.js +93 -0
- package/dist/esm/items/slugs.js.map +1 -0
- package/dist/esm/models/index.js +99 -0
- package/dist/esm/models/index.js.map +1 -0
- package/dist/esm/{items/serialize-model.js → models/serializeModel.js} +1 -1
- package/dist/esm/models/serializeModel.js.map +1 -0
- package/dist/esm/projects/HubProjectManager.js +142 -0
- package/dist/esm/projects/HubProjectManager.js.map +1 -0
- package/dist/esm/projects/HubProjects.js +225 -0
- package/dist/esm/projects/HubProjects.js.map +1 -0
- package/dist/esm/projects/index.js +3 -0
- package/dist/esm/projects/index.js.map +1 -0
- package/dist/esm/search/_searchContent.js +18 -7
- package/dist/esm/search/_searchContent.js.map +1 -1
- package/dist/esm/search/_searchGroups.js +3 -13
- package/dist/esm/search/_searchGroups.js.map +1 -1
- package/dist/esm/search/utils.js +1 -1
- package/dist/esm/urls/getHubApiFromPortalUrl.js +21 -0
- package/dist/esm/urls/getHubApiFromPortalUrl.js.map +1 -0
- package/dist/esm/urls/getPortalBaseFromOrgUrl.js +25 -0
- package/dist/esm/urls/getPortalBaseFromOrgUrl.js.map +1 -0
- package/dist/esm/urls/index.js +2 -0
- package/dist/esm/urls/index.js.map +1 -1
- package/dist/esm/utils/dasherize.js +25 -0
- package/dist/esm/utils/dasherize.js.map +1 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/node/ArcGISContext.js +203 -121
- package/dist/node/ArcGISContext.js.map +1 -1
- package/dist/node/ArcGISContextManager.js +175 -0
- package/dist/node/ArcGISContextManager.js.map +1 -0
- package/dist/node/Hub.js +74 -0
- package/dist/node/Hub.js.map +1 -0
- package/dist/node/HubError.js +37 -0
- package/dist/node/HubError.js.map +1 -0
- package/dist/node/collections.js +24 -1
- package/dist/node/collections.js.map +1 -1
- package/dist/node/content/_internal.js.map +1 -1
- package/dist/node/content/index.js +25 -17
- package/dist/node/content/index.js.map +1 -1
- package/dist/node/core/helpers/PropertyMapper.js +101 -0
- package/dist/node/core/helpers/PropertyMapper.js.map +1 -0
- package/dist/node/core/index.js +6 -0
- package/dist/node/core/index.js.map +1 -0
- package/dist/node/core/traits/WithBannerImage.js +3 -0
- package/dist/node/core/traits/WithBannerImage.js.map +1 -0
- package/dist/node/core/traits/WithLayout.js +3 -0
- package/dist/node/core/traits/WithLayout.js.map +1 -0
- package/dist/node/core/traits/WithSlug.js +3 -0
- package/dist/node/core/traits/WithSlug.js.map +1 -0
- package/dist/node/core/traits/index.js +7 -0
- package/dist/node/core/traits/index.js.map +1 -0
- package/dist/node/core/types/IContentEnrichments.js +3 -0
- package/dist/node/core/types/IContentEnrichments.js.map +1 -0
- package/dist/node/core/types/IHubContent.js +3 -0
- package/dist/node/core/types/IHubContent.js.map +1 -0
- package/dist/node/core/types/IHubEntityBase.js +3 -0
- package/dist/node/core/types/IHubEntityBase.js.map +1 -0
- package/dist/node/core/types/IHubEntityManager.js +3 -0
- package/dist/node/core/types/IHubEntityManager.js.map +1 -0
- package/dist/node/core/types/IHubEvent.js +3 -0
- package/dist/node/core/types/IHubEvent.js.map +1 -0
- package/dist/node/core/types/IHubImage.js +3 -0
- package/dist/node/core/types/IHubImage.js.map +1 -0
- package/dist/node/core/types/IHubInitiative.js +3 -0
- package/dist/node/core/types/IHubInitiative.js.map +1 -0
- package/dist/node/core/types/IHubItemEntity.js +3 -0
- package/dist/node/core/types/IHubItemEntity.js.map +1 -0
- package/dist/node/core/types/IHubLayout.js +3 -0
- package/dist/node/core/types/IHubLayout.js.map +1 -0
- package/dist/node/core/types/IHubPage.js +3 -0
- package/dist/node/core/types/IHubPage.js.map +1 -0
- package/dist/node/core/types/IHubProject.js +3 -0
- package/dist/node/core/types/IHubProject.js.map +1 -0
- package/dist/node/core/types/IHubSite.js +3 -0
- package/dist/node/core/types/IHubSite.js.map +1 -0
- package/dist/node/core/types/IHubTimeline.js +3 -0
- package/dist/node/core/types/IHubTimeline.js.map +1 -0
- package/dist/node/core/types/IItemEnrichments.js +3 -0
- package/dist/node/core/types/IItemEnrichments.js.map +1 -0
- package/dist/node/core/types/index.js +18 -0
- package/dist/node/core/types/index.js.map +1 -0
- package/dist/node/index.js +12 -5
- package/dist/node/index.js.map +1 -1
- package/dist/node/items/fail-safe-update.js +3 -3
- package/dist/node/items/fail-safe-update.js.map +1 -1
- package/dist/node/items/get-model-from-options.js +3 -3
- package/dist/node/items/get-model-from-options.js.map +1 -1
- package/dist/node/items/index.js +2 -3
- package/dist/node/items/index.js.map +1 -1
- package/dist/node/items/slugs.js +99 -0
- package/dist/node/items/slugs.js.map +1 -0
- package/dist/node/models/index.js +106 -0
- package/dist/node/models/index.js.map +1 -0
- package/dist/node/{items/serialize-model.js → models/serializeModel.js} +1 -1
- package/dist/node/models/serializeModel.js.map +1 -0
- package/dist/node/projects/HubProjectManager.js +119 -0
- package/dist/node/projects/HubProjectManager.js.map +1 -0
- package/dist/node/projects/HubProjects.js +201 -0
- package/dist/node/projects/HubProjects.js.map +1 -0
- package/dist/node/projects/index.js +6 -0
- package/dist/node/projects/index.js.map +1 -0
- package/dist/node/search/_searchContent.js +17 -6
- package/dist/node/search/_searchContent.js.map +1 -1
- package/dist/node/search/_searchGroups.js +1 -11
- package/dist/node/search/_searchGroups.js.map +1 -1
- package/dist/node/search/utils.js +1 -1
- package/dist/node/urls/getHubApiFromPortalUrl.js +25 -0
- package/dist/node/urls/getHubApiFromPortalUrl.js.map +1 -0
- package/dist/node/urls/getPortalBaseFromOrgUrl.js +29 -0
- package/dist/node/urls/getPortalBaseFromOrgUrl.js.map +1 -0
- package/dist/node/urls/index.js +2 -0
- package/dist/node/urls/index.js.map +1 -1
- package/dist/node/utils/dasherize.js +29 -0
- package/dist/node/utils/dasherize.js.map +1 -0
- package/dist/node/utils/index.js +1 -0
- package/dist/node/utils/index.js.map +1 -1
- package/dist/types/ArcGISContext.d.ts +280 -58
- package/dist/types/ArcGISContextManager.d.ts +130 -0
- package/dist/types/Hub.d.ts +72 -0
- package/dist/types/HubError.d.ts +17 -0
- package/dist/types/collections.d.ts +12 -0
- package/dist/types/content/_internal.d.ts +57 -38
- package/dist/types/content/index.d.ts +8 -8
- package/dist/types/core/helpers/PropertyMapper.d.ts +69 -0
- package/dist/types/core/index.d.ts +2 -0
- package/dist/types/core/traits/WithBannerImage.d.ts +30 -0
- package/dist/types/core/traits/WithLayout.d.ts +54 -0
- package/dist/types/core/traits/WithSlug.d.ts +15 -0
- package/dist/types/core/traits/index.d.ts +3 -0
- package/dist/types/core/types/IContentEnrichments.d.ts +10 -0
- package/dist/types/core/types/IHubContent.d.ts +77 -0
- package/dist/types/core/types/IHubEntityBase.d.ts +41 -0
- package/dist/types/core/types/IHubEntityManager.d.ts +33 -0
- package/dist/types/core/types/IHubEvent.d.ts +10 -0
- package/dist/types/core/types/IHubImage.d.ts +25 -0
- package/dist/types/core/types/IHubInitiative.d.ts +8 -0
- package/dist/types/core/types/IHubItemEntity.d.ts +42 -0
- package/dist/types/core/types/IHubLayout.d.ts +20 -0
- package/dist/types/core/types/IHubPage.d.ts +8 -0
- package/dist/types/core/types/IHubProject.d.ts +15 -0
- package/dist/types/core/types/IHubSite.d.ts +11 -0
- package/dist/types/core/types/IHubTimeline.d.ts +41 -0
- package/dist/types/core/types/IItemEnrichments.d.ts +23 -0
- package/dist/types/core/types/index.d.ts +14 -0
- package/dist/types/index.d.ts +11 -5
- package/dist/types/items/index.d.ts +2 -3
- package/dist/types/items/slugs.d.ts +43 -0
- package/dist/types/models/index.d.ts +42 -0
- package/dist/types/{items/serialize-model.d.ts → models/serializeModel.d.ts} +0 -0
- package/dist/types/projects/HubProjectManager.d.ts +81 -0
- package/dist/types/projects/HubProjects.d.ts +31 -0
- package/dist/types/projects/index.d.ts +2 -0
- package/dist/types/search/utils.d.ts +1 -1
- package/dist/types/types.d.ts +2 -92
- package/dist/types/urls/getHubApiFromPortalUrl.d.ts +8 -0
- package/dist/types/urls/getPortalBaseFromOrgUrl.d.ts +9 -0
- package/dist/types/urls/index.d.ts +2 -0
- package/dist/types/utils/dasherize.d.ts +17 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/umd/common.umd.js +4632 -3668
- package/dist/umd/common.umd.js.map +1 -1
- package/dist/umd/common.umd.min.js +1 -1
- package/dist/umd/common.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/es2017/ArcGISContextState.js +0 -203
- package/dist/es2017/ArcGISContextState.js.map +0 -1
- package/dist/es2017/items/get-model.js +0 -19
- package/dist/es2017/items/get-model.js.map +0 -1
- package/dist/es2017/items/serialize-model.js.map +0 -1
- package/dist/esm/ArcGISContextState.js +0 -285
- package/dist/esm/ArcGISContextState.js.map +0 -1
- package/dist/esm/items/get-model.js +0 -19
- package/dist/esm/items/get-model.js.map +0 -1
- package/dist/esm/items/serialize-model.js.map +0 -1
- package/dist/node/ArcGISContextState.js +0 -207
- package/dist/node/ArcGISContextState.js.map +0 -1
- package/dist/node/items/get-model.js +0 -23
- package/dist/node/items/get-model.js.map +0 -1
- package/dist/node/items/serialize-model.js.map +0 -1
- package/dist/types/ArcGISContextState.d.ts +0 -129
- package/dist/types/items/get-model.d.ts +0 -8
|
@@ -1,169 +1,251 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ArcGISContextState, } from "./ArcGISContextState";
|
|
1
|
+
import { getProp, getWithDefault } from ".";
|
|
3
2
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
* Hash of Hub API end points so updates
|
|
4
|
+
* are centralized
|
|
5
|
+
*/
|
|
6
|
+
const hubApiEndpoints = {
|
|
7
|
+
domains: "/api/v3/domains",
|
|
8
|
+
search: "/api/v3/datasets",
|
|
9
|
+
discussions: "/api/discussions/v1",
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Abstraction that holds a `UserSession`, along with
|
|
13
|
+
* getters to streamline access to various platform
|
|
14
|
+
* urls, and common constructs like `IRequestOptions`,
|
|
15
|
+
* `IUserRequestOptions` etc.
|
|
9
16
|
*
|
|
10
|
-
*
|
|
17
|
+
* Instances are intended to be immutable, but this is not directly enforced.
|
|
11
18
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
19
|
+
* In most circumstances, this class should be created by
|
|
20
|
+
* the ArcGISContextManager class.
|
|
14
21
|
*/
|
|
15
22
|
export class ArcGISContext {
|
|
16
23
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
24
|
+
* Create a new instance of `ArcGISContext`.
|
|
25
|
+
*
|
|
19
26
|
* @param opts
|
|
20
27
|
*/
|
|
21
28
|
constructor(opts) {
|
|
22
29
|
this._portalUrl = "https://www.arcgis.com";
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
this.
|
|
26
|
-
if (opts.debug) {
|
|
27
|
-
this._debug = opts.debug;
|
|
28
|
-
}
|
|
29
|
-
this.log(`ArcGISContext:ctor: Creating ${this.id}`);
|
|
30
|
+
this.id = opts.id;
|
|
31
|
+
this._portalUrl = opts.portalUrl;
|
|
32
|
+
this._hubUrl = opts.hubUrl;
|
|
30
33
|
if (opts.authentication) {
|
|
31
34
|
this._authentication = opts.authentication;
|
|
32
|
-
this._portalUrl = this._authentication.portal.replace("/sharing/rest", "");
|
|
33
|
-
this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
|
|
36
|
+
if (opts.portalSelf) {
|
|
37
|
+
this._portalSelf = opts.portalSelf;
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
this.
|
|
39
|
+
if (opts.currentUser) {
|
|
40
|
+
this._currentUser = opts.currentUser;
|
|
41
|
+
}
|
|
42
|
+
if (opts.properties) {
|
|
43
|
+
this._properties = opts.properties;
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
46
|
/**
|
|
44
|
-
*
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
* Return the UserSession if authenticated
|
|
48
|
+
*/
|
|
49
|
+
get session() {
|
|
50
|
+
return this._authentication;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Return boolean indicating if authenticatio is present
|
|
54
|
+
*/
|
|
55
|
+
get isAuthenticated() {
|
|
56
|
+
return !!this._authentication;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Return `IUserRequestOptions`, which is used for REST-JS
|
|
60
|
+
* functions which require authentication information.
|
|
61
|
+
*
|
|
62
|
+
* If context is not authenticated, this function will throw
|
|
47
63
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
64
|
+
get userRequestOptions() {
|
|
65
|
+
if (this.isAuthenticated) {
|
|
66
|
+
return {
|
|
67
|
+
authentication: this._authentication,
|
|
68
|
+
portal: this.sharingApiUrl,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
52
71
|
}
|
|
53
72
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
73
|
+
* Return `IRequestOptions`, which is used by REST-JS functions
|
|
74
|
+
* which *may* use authentication information if provided.
|
|
75
|
+
*
|
|
76
|
+
* If context is not authenticated, this function just returns
|
|
77
|
+
* the `portal` property, which informs REST-JS what Sharing API
|
|
78
|
+
* instance to use (i.e. AGO, Enterprise etc)
|
|
56
79
|
*/
|
|
57
|
-
|
|
58
|
-
let
|
|
59
|
-
|
|
60
|
-
portalUrl: this._portalUrl,
|
|
61
|
-
hubUrl: this._hubUrl,
|
|
80
|
+
get requestOptions() {
|
|
81
|
+
let ro = {
|
|
82
|
+
portal: this.sharingApiUrl,
|
|
62
83
|
};
|
|
63
|
-
if (this.
|
|
64
|
-
|
|
65
|
-
const ps = await getSelf({ authentication: this._authentication });
|
|
66
|
-
this._portalSelf = ps;
|
|
67
|
-
this._currentUser = ps.user;
|
|
68
|
-
stateOpts = {
|
|
69
|
-
id: this.id,
|
|
70
|
-
portalUrl: this._portalUrl,
|
|
71
|
-
hubUrl: this._hubUrl,
|
|
72
|
-
portalSelf: this._portalSelf,
|
|
73
|
-
currentUser: this._currentUser,
|
|
84
|
+
if (this.isAuthenticated) {
|
|
85
|
+
ro = {
|
|
74
86
|
authentication: this._authentication,
|
|
87
|
+
portal: this.sharingApiUrl,
|
|
75
88
|
};
|
|
76
89
|
}
|
|
77
|
-
|
|
78
|
-
this._state = new ArcGISContextState(stateOpts);
|
|
90
|
+
return ro;
|
|
79
91
|
}
|
|
80
92
|
/**
|
|
81
|
-
*
|
|
82
|
-
* This should be called when a user signs into a running
|
|
83
|
-
* application.
|
|
84
|
-
* @param auth
|
|
93
|
+
* Return a `IHubRequestOptions` object
|
|
85
94
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this.
|
|
89
|
-
|
|
95
|
+
get hubRequestOptions() {
|
|
96
|
+
// We may add more logic around what is returned in some corner cases
|
|
97
|
+
if (this.isAuthenticated) {
|
|
98
|
+
return {
|
|
99
|
+
authentication: this.session,
|
|
100
|
+
isPortal: this.isPortal,
|
|
101
|
+
portalSelf: this.portal,
|
|
102
|
+
hubApiUrl: this.hubUrl,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
90
105
|
}
|
|
91
106
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
107
|
+
* Return the portal url i.e. https://www.arcgis.com
|
|
108
|
+
*
|
|
109
|
+
* If authenticated @ ArcGIS Online, it will return
|
|
110
|
+
* the https://org.env.arcgis.com
|
|
111
|
+
*
|
|
112
|
+
* If authenticated @ ArcGIS Enterprise, it will return
|
|
113
|
+
* https://{portalHostname}/{webadaptor}
|
|
95
114
|
*/
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
115
|
+
get portalUrl() {
|
|
116
|
+
if (this.isAuthenticated) {
|
|
117
|
+
if (this.isPortal) {
|
|
118
|
+
return `https://${this._portalSelf.portalHostname}`;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return `https://${this._portalSelf.urlKey}.${this._portalSelf.customBaseUrl}`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return this._portalUrl;
|
|
101
126
|
}
|
|
102
|
-
// Clear the auth, portalSelf and currentUser props
|
|
103
|
-
this._authentication = null;
|
|
104
|
-
this._portalSelf = null;
|
|
105
|
-
this._currentUser = null;
|
|
106
|
-
this._state = new ArcGISContextState({
|
|
107
|
-
id: this.id,
|
|
108
|
-
portalUrl: this._portalUrl,
|
|
109
|
-
hubUrl: this._hubUrl,
|
|
110
|
-
});
|
|
111
127
|
}
|
|
112
128
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
|
|
116
|
-
|
|
129
|
+
* Returns the url to the sharing api composed from portalUrl
|
|
130
|
+
* i.e. https://myorg.maps.arcgis.com/sharing/rest
|
|
131
|
+
*/
|
|
132
|
+
get sharingApiUrl() {
|
|
133
|
+
return `${this.portalUrl}/sharing/rest`;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Returns the Hub url, based on the portalUrl
|
|
137
|
+
*
|
|
138
|
+
* For ArcGIS Enterprise this will return `undefined`
|
|
139
|
+
*/
|
|
140
|
+
get hubUrl() {
|
|
141
|
+
return this._hubUrl;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Returns boolean indicating if the backing system
|
|
145
|
+
* is ArcGIS Enterprise (formerly ArcGIS Portal) or not
|
|
117
146
|
*/
|
|
118
|
-
get
|
|
119
|
-
return this.
|
|
147
|
+
get isPortal() {
|
|
148
|
+
return this._portalSelf
|
|
149
|
+
? this._portalSelf.isPortal
|
|
150
|
+
: this._portalUrl.indexOf("arcgis.com") === -1;
|
|
120
151
|
}
|
|
121
152
|
/**
|
|
122
|
-
*
|
|
123
|
-
* Log debugging messages to the console
|
|
124
|
-
* @param message
|
|
153
|
+
* Returns the discussions API URL
|
|
125
154
|
*/
|
|
126
|
-
|
|
127
|
-
if (this.
|
|
128
|
-
|
|
129
|
-
console.info(message);
|
|
155
|
+
get discussionsServiceUrl() {
|
|
156
|
+
if (this._hubUrl) {
|
|
157
|
+
return `${this._hubUrl}${hubApiEndpoints.discussions}`;
|
|
130
158
|
}
|
|
131
159
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
*/
|
|
140
|
-
function getHubApiFromPortalUrl(portalUrl) {
|
|
141
|
-
let result;
|
|
142
|
-
if (portalUrl.match(/(qaext|\.mapsqa)\.arcgis.com/)) {
|
|
143
|
-
result = "https://hubqa.arcgis.com";
|
|
160
|
+
/**
|
|
161
|
+
* Returns the Hub Search API URL
|
|
162
|
+
*/
|
|
163
|
+
get hubSearchServiceUrl() {
|
|
164
|
+
if (this._hubUrl) {
|
|
165
|
+
return `${this._hubUrl}${hubApiEndpoints.search}`;
|
|
166
|
+
}
|
|
144
167
|
}
|
|
145
|
-
|
|
146
|
-
|
|
168
|
+
/**
|
|
169
|
+
* Returns Hub Domain Service URL
|
|
170
|
+
*/
|
|
171
|
+
get domainServiceUrl() {
|
|
172
|
+
if (this._hubUrl) {
|
|
173
|
+
return `${this._hubUrl}${hubApiEndpoints.domains}`;
|
|
174
|
+
}
|
|
147
175
|
}
|
|
148
|
-
|
|
149
|
-
|
|
176
|
+
/**
|
|
177
|
+
* Returns the Events configuration object from portal/self
|
|
178
|
+
*
|
|
179
|
+
* `{serviceId: '3ef..', publicViewId: 'bc3...'}`
|
|
180
|
+
*/
|
|
181
|
+
get eventsConfig() {
|
|
182
|
+
if (this._portalSelf) {
|
|
183
|
+
return getProp(this._portalSelf, "portalProperties.hub.settings.events");
|
|
184
|
+
}
|
|
150
185
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
186
|
+
/**
|
|
187
|
+
* Returns boolean indicating if the current user
|
|
188
|
+
* belongs to an organization that has licensed
|
|
189
|
+
* ArcGIS Hub
|
|
190
|
+
*/
|
|
191
|
+
get hubEnabled() {
|
|
192
|
+
return getWithDefault(this._portalSelf, "portalProperties.hub.enabled", false);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Return the Hub Community Org Id, if defined
|
|
196
|
+
*/
|
|
197
|
+
get communityOrgId() {
|
|
198
|
+
if (this._portalSelf) {
|
|
199
|
+
return getProp(this._portalSelf, "portalProperties.hub.settings.communityOrg.orgId");
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Returns the Hub Community Org Hostname, if defined
|
|
204
|
+
*
|
|
205
|
+
* i.e. c-org.maps.arcgis.com
|
|
206
|
+
*/
|
|
207
|
+
get communityOrgHostname() {
|
|
208
|
+
if (this._portalSelf) {
|
|
209
|
+
return getProp(this._portalSelf, "portalProperties.hub.settings.communityOrg.portalHostname");
|
|
210
|
+
}
|
|
157
211
|
}
|
|
158
|
-
|
|
159
|
-
|
|
212
|
+
/**
|
|
213
|
+
* Returns the Hub Community Org url
|
|
214
|
+
*
|
|
215
|
+
* i.e. https://c-org.maps.arcgis.com
|
|
216
|
+
*/
|
|
217
|
+
get communityOrgUrl() {
|
|
218
|
+
if (this.communityOrgHostname) {
|
|
219
|
+
return `https://${this.communityOrgHostname}`;
|
|
220
|
+
}
|
|
160
221
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
222
|
+
/**
|
|
223
|
+
* Returns the hash of helper services from portal self
|
|
224
|
+
*/
|
|
225
|
+
get helperServices() {
|
|
226
|
+
if (this._portalSelf) {
|
|
227
|
+
return this._portalSelf.helperServices;
|
|
165
228
|
}
|
|
166
229
|
}
|
|
167
|
-
|
|
230
|
+
/**
|
|
231
|
+
* Returns the current user as IUser
|
|
232
|
+
*/
|
|
233
|
+
get currentUser() {
|
|
234
|
+
return this._currentUser;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Returns the portal object as IPortal
|
|
238
|
+
*/
|
|
239
|
+
get portal() {
|
|
240
|
+
return this._portalSelf;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Return the properties hash that was passed in.
|
|
244
|
+
* Useful for app-specific context such as the active
|
|
245
|
+
* Site for ArcGIS Hub
|
|
246
|
+
*/
|
|
247
|
+
get properties() {
|
|
248
|
+
return this._properties;
|
|
249
|
+
}
|
|
168
250
|
}
|
|
169
251
|
//# sourceMappingURL=ArcGISContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGISContext.js","sourceRoot":"","sources":["../../src/ArcGISContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ArcGISContext.js","sourceRoot":"","sources":["../../src/ArcGISContext.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAsB,MAAM,GAAG,CAAC;AAEhE;;;GAGG;AACH,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE,kBAAkB;IAC1B,WAAW,EAAE,qBAAqB;CACnC,CAAC;AAmLF;;;;;;;;;;GAUG;AACH,MAAM,OAAO,aAAa;IAoBxB;;;;OAIG;IACH,YAAY,IAA2B;QAf/B,eAAU,GAAW,wBAAwB,CAAC;QAgBpD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;SACpC;IACH,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,IAAW,kBAAkB;QAC3B,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO;gBACL,cAAc,EAAE,IAAI,CAAC,eAAe;gBACpC,MAAM,EAAE,IAAI,CAAC,aAAa;aAC3B,CAAC;SACH;IACH,CAAC;IAED;;;;;;;OAOG;IACH,IAAW,cAAc;QACvB,IAAI,EAAE,GAAQ;YACZ,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,EAAE,GAAG;gBACH,cAAc,EAAE,IAAI,CAAC,eAAe;gBACpC,MAAM,EAAE,IAAI,CAAC,aAAa;aAC3B,CAAC;SACH;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QAC1B,qEAAqE;QACrE,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO;gBACL,cAAc,EAAE,IAAI,CAAC,OAAO;gBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,SAAS,EAAE,IAAI,CAAC,MAAM;aACvB,CAAC;SACH;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,IAAW,SAAS;QAClB,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,OAAO,WAAW,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;aACrD;iBAAM;gBACL,OAAO,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;aAC/E;SACF;aAAM;YACL,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;IACH,CAAC;IAED;;;OAGG;IACH,IAAW,aAAa;QACtB,OAAO,GAAG,IAAI,CAAC,SAAS,eAAe,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,WAAW;YACrB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,IAAW,qBAAqB;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;SACxD;IACH,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;SACnD;IACH,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACzB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;SACpD;IACH,CAAC;IAED;;;;OAIG;IACH,IAAW,YAAY;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,sCAAsC,CAAC,CAAC;SAC1E;IACH,CAAC;IAED;;;;OAIG;IACH,IAAW,UAAU;QACnB,OAAO,cAAc,CACnB,IAAI,CAAC,WAAW,EAChB,8BAA8B,EAC9B,KAAK,CACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACvB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,OAAO,CACZ,IAAI,CAAC,WAAW,EAChB,kDAAkD,CACnD,CAAC;SACH;IACH,CAAC;IAED;;;;OAIG;IACH,IAAW,oBAAoB;QAC7B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,OAAO,CACZ,IAAI,CAAC,WAAW,EAChB,2DAA2D,CAC5D,CAAC;SACH;IACH,CAAC;IAED;;;;OAIG;IACH,IAAW,eAAe;QACxB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO,WAAW,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/C;IACH,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACvB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;SACxC;IACH,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { getSelf, getUser } from "@esri/arcgis-rest-portal";
|
|
2
|
+
import { ArcGISContext, } from "./ArcGISContext";
|
|
3
|
+
import { cloneObject, Logger, Level } from ".";
|
|
4
|
+
import { getHubApiFromPortalUrl } from "./urls/getHubApiFromPortalUrl";
|
|
5
|
+
import { getPortalBaseFromOrgUrl } from "./urls/getPortalBaseFromOrgUrl";
|
|
6
|
+
/**
|
|
7
|
+
* The manager exposes context (`IArcGISContext`), which combines a `UserSession` with
|
|
8
|
+
* the `portal/self` and `user/self` responses to provide a central lookup for platform
|
|
9
|
+
* information, api urls, and other useful properties for developers such as IRequestOptions
|
|
10
|
+
* IUserRequestOptions, IHubRequestOptions etc.
|
|
11
|
+
*
|
|
12
|
+
* The context is exposed on gthe `.context` property, and as the authentication changes
|
|
13
|
+
* the `.context` is re-created. This is done to allow web frameworks to watch for
|
|
14
|
+
* changes on that single property, instead of having to leverage observers or events
|
|
15
|
+
* for change detection.
|
|
16
|
+
*
|
|
17
|
+
* Please see the [ArcGISContext Guide](/hub.js/guides/context) for additional information.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
export class ArcGISContextManager {
|
|
21
|
+
/**
|
|
22
|
+
* Private constructor. Use `ArcGISContextManager.create(...)` to
|
|
23
|
+
* instantiate an instance
|
|
24
|
+
* @param opts
|
|
25
|
+
*/
|
|
26
|
+
constructor(opts) {
|
|
27
|
+
this._portalUrl = "https://www.arcgis.com";
|
|
28
|
+
this._logLevel = Level.error;
|
|
29
|
+
// Having a unique id makes debugging easier
|
|
30
|
+
this.id = new Date().getTime();
|
|
31
|
+
if (opts.logLevel) {
|
|
32
|
+
this._logLevel = opts.logLevel;
|
|
33
|
+
}
|
|
34
|
+
Logger.setLogLevel(this._logLevel);
|
|
35
|
+
Logger.debug(`ArcGISContextManager:ctor: Creating ${this.id}`);
|
|
36
|
+
if (opts.properties) {
|
|
37
|
+
this._properties = opts.properties;
|
|
38
|
+
}
|
|
39
|
+
if (opts.authentication) {
|
|
40
|
+
this._authentication = opts.authentication;
|
|
41
|
+
this._portalUrl = this._authentication.portal.replace("/sharing/rest", "");
|
|
42
|
+
this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
|
|
43
|
+
}
|
|
44
|
+
else if (opts.portalUrl) {
|
|
45
|
+
this._portalUrl = opts.portalUrl;
|
|
46
|
+
this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
|
|
50
|
+
}
|
|
51
|
+
if (opts.portal) {
|
|
52
|
+
this._portalSelf = cloneObject(opts.portal);
|
|
53
|
+
}
|
|
54
|
+
if (opts.currentUser) {
|
|
55
|
+
this._currentUser = cloneObject(opts.currentUser);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Used to create a new instance of the ArcGISContext class.
|
|
60
|
+
*
|
|
61
|
+
* ```js
|
|
62
|
+
* const ctxMgr = await ArcGISContextManager.create();
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @param opts
|
|
66
|
+
* @returns
|
|
67
|
+
*/
|
|
68
|
+
static async create(opts = {}) {
|
|
69
|
+
const ctx = new ArcGISContextManager(opts);
|
|
70
|
+
await ctx.initialize();
|
|
71
|
+
return ctx;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Set the Authentication (UserSession) for the context.
|
|
75
|
+
* This should be called when a user signs into a running
|
|
76
|
+
* application.
|
|
77
|
+
* @param auth
|
|
78
|
+
*/
|
|
79
|
+
async setAuthentication(auth) {
|
|
80
|
+
this._authentication = auth;
|
|
81
|
+
this._portalUrl = auth.portal.replace("/sharing/rest", "");
|
|
82
|
+
await this.initialize();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Set the properties hash and re-create the context
|
|
86
|
+
* @param properties
|
|
87
|
+
*/
|
|
88
|
+
setProperties(properties) {
|
|
89
|
+
this._properties = properties;
|
|
90
|
+
this._context = new ArcGISContext(this.contextOpts);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Clear the Authentication (UserSession). This should be
|
|
94
|
+
* called when a user signs out of an application, but
|
|
95
|
+
* the application continues running
|
|
96
|
+
*/
|
|
97
|
+
clearAuthentication() {
|
|
98
|
+
// Reset the portalUrl from the org url to the base url
|
|
99
|
+
// for ArcGIS Enterprise, we just leave the _portalUrl as-is
|
|
100
|
+
if (!this._context.isPortal) {
|
|
101
|
+
this._portalUrl = getPortalBaseFromOrgUrl(this._portalUrl);
|
|
102
|
+
}
|
|
103
|
+
// Clear the auth, portalSelf and currentUser props
|
|
104
|
+
this._authentication = null;
|
|
105
|
+
this._portalSelf = null;
|
|
106
|
+
this._currentUser = null;
|
|
107
|
+
this._context = new ArcGISContext(this.contextOpts);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Return a reference to the current state.
|
|
111
|
+
* When `.setAuthentication()` or `.clearAuthenentication()` are
|
|
112
|
+
* called, the state will be re-created. This is done so frameworks
|
|
113
|
+
* like React or Ember can detect changes.
|
|
114
|
+
*/
|
|
115
|
+
get context() {
|
|
116
|
+
return this._context;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* If we have a UserSession, fetch portal/self and
|
|
120
|
+
* store that along with current user
|
|
121
|
+
*/
|
|
122
|
+
async initialize() {
|
|
123
|
+
// if we have auth, and don't have portalSelf or currentUser, fetch them
|
|
124
|
+
if (this._authentication && (!this._portalSelf || !this._currentUser)) {
|
|
125
|
+
Logger.debug(`ArcGISContextManager-${this.id}: Initializing`);
|
|
126
|
+
const username = this._authentication.username;
|
|
127
|
+
const requests = [
|
|
128
|
+
getSelf({ authentication: this._authentication }),
|
|
129
|
+
getUser({ username, authentication: this._authentication }),
|
|
130
|
+
];
|
|
131
|
+
try {
|
|
132
|
+
const [portal, user] = await Promise.all(requests);
|
|
133
|
+
this._portalSelf = portal;
|
|
134
|
+
this._currentUser = user;
|
|
135
|
+
Logger.debug(`ArcGISContextManager-${this.id}: received portalSelf and currentUser`);
|
|
136
|
+
}
|
|
137
|
+
catch (ex) {
|
|
138
|
+
const msg = `ArcGISContextManager could not fetch portal & user for "${this._authentication.username}" using ${this._authentication.portal}.`;
|
|
139
|
+
Logger.error(msg);
|
|
140
|
+
// tslint:disable-next-line:no-console
|
|
141
|
+
console.error(msg);
|
|
142
|
+
throw ex;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
Logger.debug(`ArcGISContextManager-${this.id}: updating context`);
|
|
146
|
+
// update the context
|
|
147
|
+
this._context = new ArcGISContext(this.contextOpts);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Getter to streamline the creation of updated Context instances
|
|
151
|
+
*/
|
|
152
|
+
get contextOpts() {
|
|
153
|
+
const contextOpts = {
|
|
154
|
+
id: this.id,
|
|
155
|
+
portalUrl: this._portalUrl,
|
|
156
|
+
hubUrl: this._hubUrl,
|
|
157
|
+
properties: this._properties,
|
|
158
|
+
};
|
|
159
|
+
if (this._authentication) {
|
|
160
|
+
contextOpts.authentication = this._authentication;
|
|
161
|
+
}
|
|
162
|
+
if (this._portalSelf) {
|
|
163
|
+
contextOpts.portalSelf = this._portalSelf;
|
|
164
|
+
}
|
|
165
|
+
if (this._currentUser) {
|
|
166
|
+
contextOpts.currentUser = this._currentUser;
|
|
167
|
+
}
|
|
168
|
+
return contextOpts;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=ArcGISContextManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArcGISContextManager.js","sourceRoot":"","sources":["../../src/ArcGISContextManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ArcGISContextManager, } from "./ArcGISContextManager";
|
|
2
|
+
import { HubProjectManager } from "./projects/HubProjectManager";
|
|
3
|
+
/**
|
|
4
|
+
* Hub class can be used as an entry point to managing
|
|
5
|
+
* content, teams, sites, projects etc, in an organization's Hub.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* import {Hub} from '@esri/hub-common';
|
|
9
|
+
* // create a Hub instance, authenticating as a specific user
|
|
10
|
+
* // working against arcgis online
|
|
11
|
+
* const myHub = await Hub.create({authOptions: {username: "casey", password: "jones"}});
|
|
12
|
+
*
|
|
13
|
+
* myHub.context.currentUser //=> {username: "casey", ...} as IUser
|
|
14
|
+
*
|
|
15
|
+
* const projectStore = await myHub.getProjectStore();
|
|
16
|
+
*
|
|
17
|
+
* const pavingProject = await projectStore.create({name: "12th Street Paving"});
|
|
18
|
+
* pavingProject.summary = "This is the 2024 planned paving of 12th Street, between 8th and 11th Ave";
|
|
19
|
+
* await projectStore.update(pavingProject);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* This is a convenience class. Hub Stores can be created
|
|
23
|
+
* directly, or the underlying functions can be imported an used
|
|
24
|
+
* as need for scenarios where these class structures introduce
|
|
25
|
+
* unwanted complexity
|
|
26
|
+
*/
|
|
27
|
+
export class Hub {
|
|
28
|
+
/**
|
|
29
|
+
* Private so we can employ a factory function should we need
|
|
30
|
+
* async work during creation
|
|
31
|
+
* @param contextManager
|
|
32
|
+
*/
|
|
33
|
+
constructor(contextManager) {
|
|
34
|
+
this._contextManager = contextManager;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Factory function to construct a new HubProjectStore instance.
|
|
38
|
+
*
|
|
39
|
+
* Note: Used so that we could do async actions in the ctor.
|
|
40
|
+
* @param contextManager
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
static async create(options) {
|
|
44
|
+
if (options.contextManager) {
|
|
45
|
+
return new Hub(options.contextManager);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const opts = options.managerOptions || {};
|
|
49
|
+
const mgr = await ArcGISContextManager.create(opts);
|
|
50
|
+
return new Hub(mgr);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Getter to abstract the context manager
|
|
55
|
+
*/
|
|
56
|
+
get context() {
|
|
57
|
+
return this._contextManager.context;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a Project Store connected to the current Hub
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
63
|
+
get projects() {
|
|
64
|
+
if (!this._projectManager) {
|
|
65
|
+
this._projectManager = HubProjectManager.init(this._contextManager);
|
|
66
|
+
}
|
|
67
|
+
return this._projectManager;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=Hub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hub.js","sourceRoot":"","sources":["../../src/Hub.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAErB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAWjE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,GAAG;IAYd;;;;OAIG;IACH,YAAoB,cAAoC;QACtD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAoB;QACtC,IAAI,OAAO,CAAC,cAAc,EAAE;YAC1B,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SACxC;aAAM;YACL,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;SACrB;IACH,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACrE;QAED,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;CACF"}
|