@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.
Files changed (335) hide show
  1. package/dist/es2017/ArcGISContext.js +202 -120
  2. package/dist/es2017/ArcGISContext.js.map +1 -1
  3. package/dist/es2017/ArcGISContextManager.js +171 -0
  4. package/dist/es2017/ArcGISContextManager.js.map +1 -0
  5. package/dist/es2017/Hub.js +70 -0
  6. package/dist/es2017/Hub.js.map +1 -0
  7. package/dist/es2017/HubError.js +34 -0
  8. package/dist/es2017/HubError.js.map +1 -0
  9. package/dist/es2017/collections.js +23 -0
  10. package/dist/es2017/collections.js.map +1 -1
  11. package/dist/es2017/content/_internal.js.map +1 -1
  12. package/dist/es2017/content/index.js +25 -17
  13. package/dist/es2017/content/index.js.map +1 -1
  14. package/dist/es2017/core/helpers/PropertyMapper.js +95 -0
  15. package/dist/es2017/core/helpers/PropertyMapper.js.map +1 -0
  16. package/dist/es2017/core/index.js +3 -0
  17. package/dist/es2017/core/index.js.map +1 -0
  18. package/dist/es2017/core/traits/WithBannerImage.js +1 -0
  19. package/dist/es2017/core/traits/WithBannerImage.js.map +1 -0
  20. package/dist/es2017/core/traits/WithLayout.js +1 -0
  21. package/dist/es2017/core/traits/WithLayout.js.map +1 -0
  22. package/dist/es2017/core/traits/WithSlug.js +1 -0
  23. package/dist/es2017/core/traits/WithSlug.js.map +1 -0
  24. package/dist/es2017/core/traits/index.js +4 -0
  25. package/dist/es2017/core/traits/index.js.map +1 -0
  26. package/dist/es2017/core/types/IContentEnrichments.js +1 -0
  27. package/dist/es2017/core/types/IContentEnrichments.js.map +1 -0
  28. package/dist/es2017/core/types/IHubContent.js +1 -0
  29. package/dist/es2017/core/types/IHubContent.js.map +1 -0
  30. package/dist/es2017/core/types/IHubEntityBase.js +1 -0
  31. package/dist/es2017/core/types/IHubEntityBase.js.map +1 -0
  32. package/dist/es2017/core/types/IHubEntityManager.js +1 -0
  33. package/dist/es2017/core/types/IHubEntityManager.js.map +1 -0
  34. package/dist/es2017/core/types/IHubEvent.js +1 -0
  35. package/dist/es2017/core/types/IHubEvent.js.map +1 -0
  36. package/dist/es2017/core/types/IHubImage.js +1 -0
  37. package/dist/es2017/core/types/IHubImage.js.map +1 -0
  38. package/dist/es2017/core/types/IHubInitiative.js +1 -0
  39. package/dist/es2017/core/types/IHubInitiative.js.map +1 -0
  40. package/dist/es2017/core/types/IHubItemEntity.js +1 -0
  41. package/dist/es2017/core/types/IHubItemEntity.js.map +1 -0
  42. package/dist/es2017/core/types/IHubLayout.js +1 -0
  43. package/dist/es2017/core/types/IHubLayout.js.map +1 -0
  44. package/dist/es2017/core/types/IHubPage.js +1 -0
  45. package/dist/es2017/core/types/IHubPage.js.map +1 -0
  46. package/dist/es2017/core/types/IHubProject.js +1 -0
  47. package/dist/es2017/core/types/IHubProject.js.map +1 -0
  48. package/dist/es2017/core/types/IHubSite.js +1 -0
  49. package/dist/es2017/core/types/IHubSite.js.map +1 -0
  50. package/dist/es2017/core/types/IHubTimeline.js +1 -0
  51. package/dist/es2017/core/types/IHubTimeline.js.map +1 -0
  52. package/dist/es2017/core/types/IItemEnrichments.js +1 -0
  53. package/dist/es2017/core/types/IItemEnrichments.js.map +1 -0
  54. package/dist/es2017/core/types/index.js +15 -0
  55. package/dist/es2017/core/types/index.js.map +1 -0
  56. package/dist/es2017/index.js +11 -5
  57. package/dist/es2017/index.js.map +1 -1
  58. package/dist/es2017/items/fail-safe-update.js +2 -2
  59. package/dist/es2017/items/fail-safe-update.js.map +1 -1
  60. package/dist/es2017/items/get-model-from-options.js +2 -2
  61. package/dist/es2017/items/get-model-from-options.js.map +1 -1
  62. package/dist/es2017/items/index.js +2 -3
  63. package/dist/es2017/items/index.js.map +1 -1
  64. package/dist/es2017/items/slugs.js +92 -0
  65. package/dist/es2017/items/slugs.js.map +1 -0
  66. package/dist/es2017/models/index.js +98 -0
  67. package/dist/es2017/models/index.js.map +1 -0
  68. package/dist/es2017/{items/serialize-model.js → models/serializeModel.js} +1 -1
  69. package/dist/es2017/models/serializeModel.js.map +1 -0
  70. package/dist/es2017/projects/HubProjectManager.js +115 -0
  71. package/dist/es2017/projects/HubProjectManager.js.map +1 -0
  72. package/dist/es2017/projects/HubProjects.js +194 -0
  73. package/dist/es2017/projects/HubProjects.js.map +1 -0
  74. package/dist/es2017/projects/index.js +3 -0
  75. package/dist/es2017/projects/index.js.map +1 -0
  76. package/dist/es2017/search/_searchContent.js +18 -7
  77. package/dist/es2017/search/_searchContent.js.map +1 -1
  78. package/dist/es2017/search/_searchGroups.js +1 -11
  79. package/dist/es2017/search/_searchGroups.js.map +1 -1
  80. package/dist/es2017/search/utils.js +1 -1
  81. package/dist/es2017/urls/getHubApiFromPortalUrl.js +21 -0
  82. package/dist/es2017/urls/getHubApiFromPortalUrl.js.map +1 -0
  83. package/dist/es2017/urls/getPortalBaseFromOrgUrl.js +25 -0
  84. package/dist/es2017/urls/getPortalBaseFromOrgUrl.js.map +1 -0
  85. package/dist/es2017/urls/index.js +2 -0
  86. package/dist/es2017/urls/index.js.map +1 -1
  87. package/dist/es2017/utils/dasherize.js +25 -0
  88. package/dist/es2017/utils/dasherize.js.map +1 -0
  89. package/dist/es2017/utils/index.js +1 -0
  90. package/dist/es2017/utils/index.js.map +1 -1
  91. package/dist/esm/ArcGISContext.js +308 -180
  92. package/dist/esm/ArcGISContext.js.map +1 -1
  93. package/dist/esm/ArcGISContextManager.js +215 -0
  94. package/dist/esm/ArcGISContextManager.js.map +1 -0
  95. package/dist/esm/Hub.js +89 -0
  96. package/dist/esm/Hub.js.map +1 -0
  97. package/dist/esm/HubError.js +40 -0
  98. package/dist/esm/HubError.js.map +1 -0
  99. package/dist/esm/collections.js +23 -0
  100. package/dist/esm/collections.js.map +1 -1
  101. package/dist/esm/content/_internal.js.map +1 -1
  102. package/dist/esm/content/index.js +25 -17
  103. package/dist/esm/content/index.js.map +1 -1
  104. package/dist/esm/core/helpers/PropertyMapper.js +97 -0
  105. package/dist/esm/core/helpers/PropertyMapper.js.map +1 -0
  106. package/dist/esm/core/index.js +3 -0
  107. package/dist/esm/core/index.js.map +1 -0
  108. package/dist/esm/core/traits/WithBannerImage.js +1 -0
  109. package/dist/esm/core/traits/WithBannerImage.js.map +1 -0
  110. package/dist/esm/core/traits/WithLayout.js +1 -0
  111. package/dist/esm/core/traits/WithLayout.js.map +1 -0
  112. package/dist/esm/core/traits/WithSlug.js +1 -0
  113. package/dist/esm/core/traits/WithSlug.js.map +1 -0
  114. package/dist/esm/core/traits/index.js +4 -0
  115. package/dist/esm/core/traits/index.js.map +1 -0
  116. package/dist/esm/core/types/IContentEnrichments.js +1 -0
  117. package/dist/esm/core/types/IContentEnrichments.js.map +1 -0
  118. package/dist/esm/core/types/IHubContent.js +1 -0
  119. package/dist/esm/core/types/IHubContent.js.map +1 -0
  120. package/dist/esm/core/types/IHubEntityBase.js +1 -0
  121. package/dist/esm/core/types/IHubEntityBase.js.map +1 -0
  122. package/dist/esm/core/types/IHubEntityManager.js +1 -0
  123. package/dist/esm/core/types/IHubEntityManager.js.map +1 -0
  124. package/dist/esm/core/types/IHubEvent.js +1 -0
  125. package/dist/esm/core/types/IHubEvent.js.map +1 -0
  126. package/dist/esm/core/types/IHubImage.js +1 -0
  127. package/dist/esm/core/types/IHubImage.js.map +1 -0
  128. package/dist/esm/core/types/IHubInitiative.js +1 -0
  129. package/dist/esm/core/types/IHubInitiative.js.map +1 -0
  130. package/dist/esm/core/types/IHubItemEntity.js +1 -0
  131. package/dist/esm/core/types/IHubItemEntity.js.map +1 -0
  132. package/dist/esm/core/types/IHubLayout.js +1 -0
  133. package/dist/esm/core/types/IHubLayout.js.map +1 -0
  134. package/dist/esm/core/types/IHubPage.js +1 -0
  135. package/dist/esm/core/types/IHubPage.js.map +1 -0
  136. package/dist/esm/core/types/IHubProject.js +1 -0
  137. package/dist/esm/core/types/IHubProject.js.map +1 -0
  138. package/dist/esm/core/types/IHubSite.js +1 -0
  139. package/dist/esm/core/types/IHubSite.js.map +1 -0
  140. package/dist/esm/core/types/IHubTimeline.js +1 -0
  141. package/dist/esm/core/types/IHubTimeline.js.map +1 -0
  142. package/dist/esm/core/types/IItemEnrichments.js +1 -0
  143. package/dist/esm/core/types/IItemEnrichments.js.map +1 -0
  144. package/dist/esm/core/types/index.js +15 -0
  145. package/dist/esm/core/types/index.js.map +1 -0
  146. package/dist/esm/index.js +11 -5
  147. package/dist/esm/index.js.map +1 -1
  148. package/dist/esm/items/fail-safe-update.js +2 -2
  149. package/dist/esm/items/fail-safe-update.js.map +1 -1
  150. package/dist/esm/items/get-model-from-options.js +2 -2
  151. package/dist/esm/items/get-model-from-options.js.map +1 -1
  152. package/dist/esm/items/index.js +2 -3
  153. package/dist/esm/items/index.js.map +1 -1
  154. package/dist/esm/items/slugs.js +93 -0
  155. package/dist/esm/items/slugs.js.map +1 -0
  156. package/dist/esm/models/index.js +99 -0
  157. package/dist/esm/models/index.js.map +1 -0
  158. package/dist/esm/{items/serialize-model.js → models/serializeModel.js} +1 -1
  159. package/dist/esm/models/serializeModel.js.map +1 -0
  160. package/dist/esm/projects/HubProjectManager.js +142 -0
  161. package/dist/esm/projects/HubProjectManager.js.map +1 -0
  162. package/dist/esm/projects/HubProjects.js +225 -0
  163. package/dist/esm/projects/HubProjects.js.map +1 -0
  164. package/dist/esm/projects/index.js +3 -0
  165. package/dist/esm/projects/index.js.map +1 -0
  166. package/dist/esm/search/_searchContent.js +18 -7
  167. package/dist/esm/search/_searchContent.js.map +1 -1
  168. package/dist/esm/search/_searchGroups.js +3 -13
  169. package/dist/esm/search/_searchGroups.js.map +1 -1
  170. package/dist/esm/search/utils.js +1 -1
  171. package/dist/esm/urls/getHubApiFromPortalUrl.js +21 -0
  172. package/dist/esm/urls/getHubApiFromPortalUrl.js.map +1 -0
  173. package/dist/esm/urls/getPortalBaseFromOrgUrl.js +25 -0
  174. package/dist/esm/urls/getPortalBaseFromOrgUrl.js.map +1 -0
  175. package/dist/esm/urls/index.js +2 -0
  176. package/dist/esm/urls/index.js.map +1 -1
  177. package/dist/esm/utils/dasherize.js +25 -0
  178. package/dist/esm/utils/dasherize.js.map +1 -0
  179. package/dist/esm/utils/index.js +1 -0
  180. package/dist/esm/utils/index.js.map +1 -1
  181. package/dist/node/ArcGISContext.js +203 -121
  182. package/dist/node/ArcGISContext.js.map +1 -1
  183. package/dist/node/ArcGISContextManager.js +175 -0
  184. package/dist/node/ArcGISContextManager.js.map +1 -0
  185. package/dist/node/Hub.js +74 -0
  186. package/dist/node/Hub.js.map +1 -0
  187. package/dist/node/HubError.js +37 -0
  188. package/dist/node/HubError.js.map +1 -0
  189. package/dist/node/collections.js +24 -1
  190. package/dist/node/collections.js.map +1 -1
  191. package/dist/node/content/_internal.js.map +1 -1
  192. package/dist/node/content/index.js +25 -17
  193. package/dist/node/content/index.js.map +1 -1
  194. package/dist/node/core/helpers/PropertyMapper.js +101 -0
  195. package/dist/node/core/helpers/PropertyMapper.js.map +1 -0
  196. package/dist/node/core/index.js +6 -0
  197. package/dist/node/core/index.js.map +1 -0
  198. package/dist/node/core/traits/WithBannerImage.js +3 -0
  199. package/dist/node/core/traits/WithBannerImage.js.map +1 -0
  200. package/dist/node/core/traits/WithLayout.js +3 -0
  201. package/dist/node/core/traits/WithLayout.js.map +1 -0
  202. package/dist/node/core/traits/WithSlug.js +3 -0
  203. package/dist/node/core/traits/WithSlug.js.map +1 -0
  204. package/dist/node/core/traits/index.js +7 -0
  205. package/dist/node/core/traits/index.js.map +1 -0
  206. package/dist/node/core/types/IContentEnrichments.js +3 -0
  207. package/dist/node/core/types/IContentEnrichments.js.map +1 -0
  208. package/dist/node/core/types/IHubContent.js +3 -0
  209. package/dist/node/core/types/IHubContent.js.map +1 -0
  210. package/dist/node/core/types/IHubEntityBase.js +3 -0
  211. package/dist/node/core/types/IHubEntityBase.js.map +1 -0
  212. package/dist/node/core/types/IHubEntityManager.js +3 -0
  213. package/dist/node/core/types/IHubEntityManager.js.map +1 -0
  214. package/dist/node/core/types/IHubEvent.js +3 -0
  215. package/dist/node/core/types/IHubEvent.js.map +1 -0
  216. package/dist/node/core/types/IHubImage.js +3 -0
  217. package/dist/node/core/types/IHubImage.js.map +1 -0
  218. package/dist/node/core/types/IHubInitiative.js +3 -0
  219. package/dist/node/core/types/IHubInitiative.js.map +1 -0
  220. package/dist/node/core/types/IHubItemEntity.js +3 -0
  221. package/dist/node/core/types/IHubItemEntity.js.map +1 -0
  222. package/dist/node/core/types/IHubLayout.js +3 -0
  223. package/dist/node/core/types/IHubLayout.js.map +1 -0
  224. package/dist/node/core/types/IHubPage.js +3 -0
  225. package/dist/node/core/types/IHubPage.js.map +1 -0
  226. package/dist/node/core/types/IHubProject.js +3 -0
  227. package/dist/node/core/types/IHubProject.js.map +1 -0
  228. package/dist/node/core/types/IHubSite.js +3 -0
  229. package/dist/node/core/types/IHubSite.js.map +1 -0
  230. package/dist/node/core/types/IHubTimeline.js +3 -0
  231. package/dist/node/core/types/IHubTimeline.js.map +1 -0
  232. package/dist/node/core/types/IItemEnrichments.js +3 -0
  233. package/dist/node/core/types/IItemEnrichments.js.map +1 -0
  234. package/dist/node/core/types/index.js +18 -0
  235. package/dist/node/core/types/index.js.map +1 -0
  236. package/dist/node/index.js +12 -5
  237. package/dist/node/index.js.map +1 -1
  238. package/dist/node/items/fail-safe-update.js +3 -3
  239. package/dist/node/items/fail-safe-update.js.map +1 -1
  240. package/dist/node/items/get-model-from-options.js +3 -3
  241. package/dist/node/items/get-model-from-options.js.map +1 -1
  242. package/dist/node/items/index.js +2 -3
  243. package/dist/node/items/index.js.map +1 -1
  244. package/dist/node/items/slugs.js +99 -0
  245. package/dist/node/items/slugs.js.map +1 -0
  246. package/dist/node/models/index.js +106 -0
  247. package/dist/node/models/index.js.map +1 -0
  248. package/dist/node/{items/serialize-model.js → models/serializeModel.js} +1 -1
  249. package/dist/node/models/serializeModel.js.map +1 -0
  250. package/dist/node/projects/HubProjectManager.js +119 -0
  251. package/dist/node/projects/HubProjectManager.js.map +1 -0
  252. package/dist/node/projects/HubProjects.js +201 -0
  253. package/dist/node/projects/HubProjects.js.map +1 -0
  254. package/dist/node/projects/index.js +6 -0
  255. package/dist/node/projects/index.js.map +1 -0
  256. package/dist/node/search/_searchContent.js +17 -6
  257. package/dist/node/search/_searchContent.js.map +1 -1
  258. package/dist/node/search/_searchGroups.js +1 -11
  259. package/dist/node/search/_searchGroups.js.map +1 -1
  260. package/dist/node/search/utils.js +1 -1
  261. package/dist/node/urls/getHubApiFromPortalUrl.js +25 -0
  262. package/dist/node/urls/getHubApiFromPortalUrl.js.map +1 -0
  263. package/dist/node/urls/getPortalBaseFromOrgUrl.js +29 -0
  264. package/dist/node/urls/getPortalBaseFromOrgUrl.js.map +1 -0
  265. package/dist/node/urls/index.js +2 -0
  266. package/dist/node/urls/index.js.map +1 -1
  267. package/dist/node/utils/dasherize.js +29 -0
  268. package/dist/node/utils/dasherize.js.map +1 -0
  269. package/dist/node/utils/index.js +1 -0
  270. package/dist/node/utils/index.js.map +1 -1
  271. package/dist/types/ArcGISContext.d.ts +280 -58
  272. package/dist/types/ArcGISContextManager.d.ts +130 -0
  273. package/dist/types/Hub.d.ts +72 -0
  274. package/dist/types/HubError.d.ts +17 -0
  275. package/dist/types/collections.d.ts +12 -0
  276. package/dist/types/content/_internal.d.ts +57 -38
  277. package/dist/types/content/index.d.ts +8 -8
  278. package/dist/types/core/helpers/PropertyMapper.d.ts +69 -0
  279. package/dist/types/core/index.d.ts +2 -0
  280. package/dist/types/core/traits/WithBannerImage.d.ts +30 -0
  281. package/dist/types/core/traits/WithLayout.d.ts +54 -0
  282. package/dist/types/core/traits/WithSlug.d.ts +15 -0
  283. package/dist/types/core/traits/index.d.ts +3 -0
  284. package/dist/types/core/types/IContentEnrichments.d.ts +10 -0
  285. package/dist/types/core/types/IHubContent.d.ts +77 -0
  286. package/dist/types/core/types/IHubEntityBase.d.ts +41 -0
  287. package/dist/types/core/types/IHubEntityManager.d.ts +33 -0
  288. package/dist/types/core/types/IHubEvent.d.ts +10 -0
  289. package/dist/types/core/types/IHubImage.d.ts +25 -0
  290. package/dist/types/core/types/IHubInitiative.d.ts +8 -0
  291. package/dist/types/core/types/IHubItemEntity.d.ts +42 -0
  292. package/dist/types/core/types/IHubLayout.d.ts +20 -0
  293. package/dist/types/core/types/IHubPage.d.ts +8 -0
  294. package/dist/types/core/types/IHubProject.d.ts +15 -0
  295. package/dist/types/core/types/IHubSite.d.ts +11 -0
  296. package/dist/types/core/types/IHubTimeline.d.ts +41 -0
  297. package/dist/types/core/types/IItemEnrichments.d.ts +23 -0
  298. package/dist/types/core/types/index.d.ts +14 -0
  299. package/dist/types/index.d.ts +11 -5
  300. package/dist/types/items/index.d.ts +2 -3
  301. package/dist/types/items/slugs.d.ts +43 -0
  302. package/dist/types/models/index.d.ts +42 -0
  303. package/dist/types/{items/serialize-model.d.ts → models/serializeModel.d.ts} +0 -0
  304. package/dist/types/projects/HubProjectManager.d.ts +81 -0
  305. package/dist/types/projects/HubProjects.d.ts +31 -0
  306. package/dist/types/projects/index.d.ts +2 -0
  307. package/dist/types/search/utils.d.ts +1 -1
  308. package/dist/types/types.d.ts +2 -92
  309. package/dist/types/urls/getHubApiFromPortalUrl.d.ts +8 -0
  310. package/dist/types/urls/getPortalBaseFromOrgUrl.d.ts +9 -0
  311. package/dist/types/urls/index.d.ts +2 -0
  312. package/dist/types/utils/dasherize.d.ts +17 -0
  313. package/dist/types/utils/index.d.ts +1 -0
  314. package/dist/umd/common.umd.js +4632 -3668
  315. package/dist/umd/common.umd.js.map +1 -1
  316. package/dist/umd/common.umd.min.js +1 -1
  317. package/dist/umd/common.umd.min.js.map +1 -1
  318. package/package.json +1 -1
  319. package/dist/es2017/ArcGISContextState.js +0 -203
  320. package/dist/es2017/ArcGISContextState.js.map +0 -1
  321. package/dist/es2017/items/get-model.js +0 -19
  322. package/dist/es2017/items/get-model.js.map +0 -1
  323. package/dist/es2017/items/serialize-model.js.map +0 -1
  324. package/dist/esm/ArcGISContextState.js +0 -285
  325. package/dist/esm/ArcGISContextState.js.map +0 -1
  326. package/dist/esm/items/get-model.js +0 -19
  327. package/dist/esm/items/get-model.js.map +0 -1
  328. package/dist/esm/items/serialize-model.js.map +0 -1
  329. package/dist/node/ArcGISContextState.js +0 -207
  330. package/dist/node/ArcGISContextState.js.map +0 -1
  331. package/dist/node/items/get-model.js +0 -23
  332. package/dist/node/items/get-model.js.map +0 -1
  333. package/dist/node/items/serialize-model.js.map +0 -1
  334. package/dist/types/ArcGISContextState.d.ts +0 -129
  335. package/dist/types/items/get-model.d.ts +0 -8
@@ -1,98 +1,320 @@
1
- import { UserSession } from "@esri/arcgis-rest-auth";
2
- import { IArcGISContextState } from "./ArcGISContextState";
1
+ import { IUser, IUserRequestOptions, UserSession } from "@esri/arcgis-rest-auth";
2
+ import { IPortal } from "@esri/arcgis-rest-portal";
3
+ import { IRequestOptions } from "@esri/arcgis-rest-request";
4
+ import { IHubRequestOptions } from ".";
3
5
  /**
4
- * Options that can be passed into `ArcGISContext.create`
6
+ * Defines the properties of the ArcGISContext.
7
+ * Typically components or functions will get an instance
8
+ * of `ArcGISContext` from `ArcGISContetManager`.
9
+ *
10
+ * `ArcGISContext` implements this interface, and uses
11
+ * getters to simplify the derivation of various complex properties.
12
+ *
13
+ */
14
+ export interface IArcGISContext {
15
+ /**
16
+ * Unique id from the ArcGISContextManager that created
17
+ * this instance. Primarily useful for debugging possible
18
+ * race-conditions that can result in multiple ArcGISContextManager
19
+ * instances being created.
20
+ */
21
+ id: number;
22
+ /**
23
+ * Return the UserSession if authenticated
24
+ */
25
+ session: UserSession;
26
+ /**
27
+ * Return boolean indicating if authenticatio is present
28
+ */
29
+ isAuthenticated: boolean;
30
+ /**
31
+ * Return `IUserRequestOptions`, which is used for REST-JS
32
+ * functions which require authentication information.
33
+ *
34
+ * If context is not authenticated, this function will return `undefined`
35
+ */
36
+ userRequestOptions: IUserRequestOptions;
37
+ /**
38
+ * Return `IRequestOptions`, which is used by REST-JS functions
39
+ * which *may* use authentication information if provided.
40
+ *
41
+ * If context is not authenticated, this function just returns
42
+ * the `portal` property, which informs REST-JS what Sharing API
43
+ * instance to use (i.e. AGO, Enterprise etc)
44
+ */
45
+ requestOptions: IRequestOptions;
46
+ /**
47
+ * Return a `IHubRequestOptions` object
48
+ *
49
+ * If context is not authenticated, this function will return `undefined`
50
+ */
51
+ hubRequestOptions: IHubRequestOptions;
52
+ /**
53
+ * Return the portal url.
54
+ *
55
+ * If authenticated @ ArcGIS Online, it will return
56
+ * the https://org.env.arcgis.com
57
+ *
58
+ * If authenticated @ ArcGIS Enterprise, it will return
59
+ * https://{portalHostname}/{webadaptor}
60
+ */
61
+ portalUrl: string;
62
+ /**
63
+ * Returns the url to the sharing api composed from portalUrl
64
+ * i.e. https://myorg.maps.arcgis.com/sharing/rest
65
+ */
66
+ sharingApiUrl: string;
67
+ /**
68
+ * Returns the Hub url, based on the portalUrl
69
+ *
70
+ * For ArcGIS Enterprise this will return `undefined`
71
+ */
72
+ hubUrl: string;
73
+ /**
74
+ * Returns boolean indicating if the backing system
75
+ * is ArcGIS Enterprise (formerly ArcGIS Portal) or not
76
+ */
77
+ isPortal: boolean;
78
+ /**
79
+ * Returns the discussions API URL
80
+ */
81
+ discussionsServiceUrl: string;
82
+ /**
83
+ * Returns the Hub Search API URL
84
+ */
85
+ hubSearchServiceUrl: string;
86
+ /**
87
+ * Returns Hub Domain Service URL
88
+ */
89
+ domainServiceUrl: string;
90
+ /**
91
+ * Returns the Events configuration object from portal/self
92
+ *
93
+ * `{serviceId: '3ef..', publicViewId: 'bc3...'}`
94
+ */
95
+ eventsConfig: any;
96
+ /**
97
+ * Returns boolean indicating if the current user
98
+ * belongs to an organization that has licensed
99
+ * ArcGIS Hub
100
+ */
101
+ hubEnabled: boolean;
102
+ /**
103
+ * Return Hub Community Org Id, if defined
104
+ */
105
+ communityOrgId: string;
106
+ /**
107
+ * Returns the Community Org Hostname, if defined
108
+ */
109
+ communityOrgHostname: string;
110
+ /**
111
+ * Returns the Hub Community Org url
112
+ *
113
+ * i.e. https://c-org.maps.arcgis.com
114
+ */
115
+ communityOrgUrl: string;
116
+ /**
117
+ * Returns the hash of helper services from portal self
118
+ */
119
+ helperServices: any;
120
+ /**
121
+ * Returns the current user
122
+ */
123
+ currentUser: IUser;
124
+ /**
125
+ * Returns the portal object
126
+ */
127
+ portal: IPortal;
128
+ /**
129
+ * Additional app-specific context
130
+ */
131
+ properties: Record<string, any>;
132
+ }
133
+ /**
134
+ * Options for the ArcGISContext constructor
5
135
  */
6
136
  export interface IArcGISContextOptions {
7
137
  /**
8
- * Existing user session, which may be created from Identity Manager
9
- * `const session = UserSession.fromCredential(idMgr.getCredential());`
138
+ * Unique id from the ArcGISContextManager that created
139
+ * this instance. Primarily useful for debugging possible
140
+ * race-conditions that can result in multiple ArcGISContextManager
141
+ * instances being created.
142
+ */
143
+ id: number;
144
+ /**
145
+ * Portal base url
146
+ * For ArcGIS Online - https://org.env.arcgis.com
147
+ * For ArcGIS Enterprise - https://{portalHostname}/{webadaptor}
148
+ */
149
+ portalUrl: string;
150
+ /**
151
+ * Hub Url that corresponds to the portal url is appropritate
152
+ */
153
+ hubUrl?: string;
154
+ /**
155
+ * The current UserSession
10
156
  */
11
157
  authentication?: UserSession;
12
158
  /**
13
- * ArcGIS Online or ArcGIS Enterprise portal url.
14
- * Do not include `/sharing/rest`
15
- * Defaults to `https://www.arcgis.com`
16
- * For ArcGIS Enterprise, you must include the webadaptor name.
17
- * i.e. https://gis.mytown.gov/portal
159
+ * If the user is authenticated, the portal should be passed in
160
+ * so various getters can work as expected.
18
161
  *
19
- * When Authentication is present, the UserSession.portal value is
20
- * used instead of this property.
162
+ * ArcGISContextManager handles this internally
21
163
  */
22
- portalUrl?: string;
164
+ portalSelf?: IPortal;
23
165
  /**
24
- * If set to `true` additional logging will be sent to the console
25
- * Defaults to false.
166
+ * If the user is authenticated, the user should be passed in
167
+ * so various getters can work as expected.
168
+ *
169
+ * ArcGISContextManager handles this internally
26
170
  */
27
- debug?: boolean;
171
+ currentUser?: IUser;
172
+ /**
173
+ * Optional hash of additional context
174
+ */
175
+ properties?: Record<string, any>;
28
176
  }
29
177
  /**
30
- * Application Context Object
31
- *
32
- * Abstraction that combines a `UserSession` with
33
- * the `portal/self` and `user/self` responses to
34
- * provide a central lookup of platform information.
178
+ * Abstraction that holds a `UserSession`, along with
179
+ * getters to streamline access to various platform
180
+ * urls, and common constructs like `IRequestOptions`,
181
+ * `IUserRequestOptions` etc.
35
182
  *
36
- * This is a work-in-progress, and will likely expand over time.
183
+ * Instances are intended to be immutable, but this is not directly enforced.
37
184
  *
38
- * `ArcGISContext` is used in conjuction with the `arcgis-app-identity`
39
- * component to orchestrate oAuth.
185
+ * In most circumstances, this class should be created by
186
+ * the ArcGISContextManager class.
40
187
  */
41
- export declare class ArcGISContext {
188
+ export declare class ArcGISContext implements IArcGISContext {
42
189
  /**
43
- * Random identifier useful for debugging issues
44
- * where race-conditions can result in multiple
45
- * contexts getting created
190
+ * Unique id from the ArcGISContextManager that created
191
+ * this instance. Primarily useful for debugging possible
192
+ * race-conditions that can result in multiple ArcGISContextManager
193
+ * instances being created.
46
194
  */
47
195
  id: number;
48
- private _state;
49
196
  private _authentication;
50
197
  private _portalUrl;
51
198
  private _hubUrl;
52
199
  private _portalSelf;
53
200
  private _currentUser;
54
- private _debug;
201
+ private _properties;
55
202
  /**
56
- * Private constructor. Use `ArcGISContext.create(...)` to
57
- * instantiate an instance
203
+ * Create a new instance of `ArcGISContext`.
204
+ *
58
205
  * @param opts
59
206
  */
60
- private constructor();
207
+ constructor(opts: IArcGISContextOptions);
61
208
  /**
62
- * Static async Factory
63
- * @param opts
64
- * @returns
209
+ * Return the UserSession if authenticated
210
+ */
211
+ get session(): UserSession;
212
+ /**
213
+ * Return boolean indicating if authenticatio is present
214
+ */
215
+ get isAuthenticated(): boolean;
216
+ /**
217
+ * Return `IUserRequestOptions`, which is used for REST-JS
218
+ * functions which require authentication information.
219
+ *
220
+ * If context is not authenticated, this function will throw
221
+ */
222
+ get userRequestOptions(): IUserRequestOptions;
223
+ /**
224
+ * Return `IRequestOptions`, which is used by REST-JS functions
225
+ * which *may* use authentication information if provided.
226
+ *
227
+ * If context is not authenticated, this function just returns
228
+ * the `portal` property, which informs REST-JS what Sharing API
229
+ * instance to use (i.e. AGO, Enterprise etc)
230
+ */
231
+ get requestOptions(): IRequestOptions;
232
+ /**
233
+ * Return a `IHubRequestOptions` object
234
+ */
235
+ get hubRequestOptions(): IHubRequestOptions;
236
+ /**
237
+ * Return the portal url i.e. https://www.arcgis.com
238
+ *
239
+ * If authenticated @ ArcGIS Online, it will return
240
+ * the https://org.env.arcgis.com
241
+ *
242
+ * If authenticated @ ArcGIS Enterprise, it will return
243
+ * https://{portalHostname}/{webadaptor}
244
+ */
245
+ get portalUrl(): string;
246
+ /**
247
+ * Returns the url to the sharing api composed from portalUrl
248
+ * i.e. https://myorg.maps.arcgis.com/sharing/rest
249
+ */
250
+ get sharingApiUrl(): string;
251
+ /**
252
+ * Returns the Hub url, based on the portalUrl
253
+ *
254
+ * For ArcGIS Enterprise this will return `undefined`
255
+ */
256
+ get hubUrl(): string;
257
+ /**
258
+ * Returns boolean indicating if the backing system
259
+ * is ArcGIS Enterprise (formerly ArcGIS Portal) or not
260
+ */
261
+ get isPortal(): boolean;
262
+ /**
263
+ * Returns the discussions API URL
264
+ */
265
+ get discussionsServiceUrl(): string;
266
+ /**
267
+ * Returns the Hub Search API URL
65
268
  */
66
- static create(opts?: IArcGISContextOptions): Promise<ArcGISContext>;
269
+ get hubSearchServiceUrl(): string;
67
270
  /**
68
- * If we have a UserSession, fetch portal/self and
69
- * store that along with current user
271
+ * Returns Hub Domain Service URL
272
+ */
273
+ get domainServiceUrl(): string;
274
+ /**
275
+ * Returns the Events configuration object from portal/self
276
+ *
277
+ * `{serviceId: '3ef..', publicViewId: 'bc3...'}`
278
+ */
279
+ get eventsConfig(): any;
280
+ /**
281
+ * Returns boolean indicating if the current user
282
+ * belongs to an organization that has licensed
283
+ * ArcGIS Hub
284
+ */
285
+ get hubEnabled(): boolean;
286
+ /**
287
+ * Return the Hub Community Org Id, if defined
288
+ */
289
+ get communityOrgId(): string;
290
+ /**
291
+ * Returns the Hub Community Org Hostname, if defined
292
+ *
293
+ * i.e. c-org.maps.arcgis.com
294
+ */
295
+ get communityOrgHostname(): string;
296
+ /**
297
+ * Returns the Hub Community Org url
298
+ *
299
+ * i.e. https://c-org.maps.arcgis.com
70
300
  */
71
- initialize(): Promise<void>;
301
+ get communityOrgUrl(): string;
72
302
  /**
73
- * Set the Authentication (UserSession) for the context.
74
- * This should be called when a user signs into a running
75
- * application.
76
- * @param auth
303
+ * Returns the hash of helper services from portal self
77
304
  */
78
- setAuthentication(auth: UserSession): Promise<void>;
305
+ get helperServices(): any;
79
306
  /**
80
- * Clear the Authentication (UserSession). This should be
81
- * called when a user signs out of an application, but
82
- * the application continues running
307
+ * Returns the current user as IUser
83
308
  */
84
- clearAuthentication(): void;
309
+ get currentUser(): IUser;
85
310
  /**
86
- * Return a reference to the current state.
87
- * When `.setAuthentication()` or `.clearAuthenentication()` are
88
- * called, the state will be re-created. This is done so frameworks
89
- * like React or Ember can detect changes.
311
+ * Returns the portal object as IPortal
90
312
  */
91
- get state(): IArcGISContextState;
313
+ get portal(): IPortal;
92
314
  /**
93
- * @internal
94
- * Log debugging messages to the console
95
- * @param message
315
+ * Return the properties hash that was passed in.
316
+ * Useful for app-specific context such as the active
317
+ * Site for ArcGIS Hub
96
318
  */
97
- private log;
319
+ get properties(): Record<string, any>;
98
320
  }
@@ -0,0 +1,130 @@
1
+ import { IPortal } from "@esri/arcgis-rest-portal";
2
+ import { IUser, UserSession } from "@esri/arcgis-rest-auth";
3
+ import { IArcGISContext } from "./ArcGISContext";
4
+ import { Level } from ".";
5
+ /**
6
+ * Options that can be passed into `ArcGISContextManager.create`
7
+ */
8
+ export interface IArcGISContextManagerOptions {
9
+ /**
10
+ * Existing user session, which may be created from Identity Manager
11
+ * `const session = UserSession.fromCredential(idMgr.getCredential());`
12
+ */
13
+ authentication?: UserSession;
14
+ /**
15
+ * ArcGIS Online or ArcGIS Enterprise portal url.
16
+ * Do not include `/sharing/rest`
17
+ * Defaults to `https://www.arcgis.com`
18
+ * For ArcGIS Enterprise, you must include the webadaptor name.
19
+ * i.e. https://gis.mytown.gov/portal
20
+ *
21
+ * When Authentication is present, the UserSession.portal value is
22
+ * used instead of this property.
23
+ */
24
+ portalUrl?: string;
25
+ /**
26
+ * Portal self for the authenticated user. If not passed into `.create`
27
+ * with the UserSession, it will be fetched
28
+ */
29
+ portal?: IPortal;
30
+ /**
31
+ * Current user as `IUser`. If not passed into `.create` with the UserSession
32
+ * it will be fetched.
33
+ */
34
+ currentUser?: IUser;
35
+ /**
36
+ * Any additional properties to expose on the context. This allows
37
+ * an application to send additional context into the system.
38
+ * For example, in ArcGIS Hub, many times we want to pass in the
39
+ * active "Hub Site" as additional context, so we will send that in
40
+ * as a node on a properties object.
41
+ */
42
+ properties?: Record<string, any>;
43
+ /**
44
+ * Logging level
45
+ * off > error > warn > info > debug > all
46
+ * defaults to 'error'
47
+ */
48
+ logLevel?: Level;
49
+ }
50
+ /**
51
+ * The manager exposes context (`IArcGISContext`), which combines a `UserSession` with
52
+ * the `portal/self` and `user/self` responses to provide a central lookup for platform
53
+ * information, api urls, and other useful properties for developers such as IRequestOptions
54
+ * IUserRequestOptions, IHubRequestOptions etc.
55
+ *
56
+ * The context is exposed on gthe `.context` property, and as the authentication changes
57
+ * the `.context` is re-created. This is done to allow web frameworks to watch for
58
+ * changes on that single property, instead of having to leverage observers or events
59
+ * for change detection.
60
+ *
61
+ * Please see the [ArcGISContext Guide](/hub.js/guides/context) for additional information.
62
+ *
63
+ */
64
+ export declare class ArcGISContextManager {
65
+ /**
66
+ * Random identifier useful for debugging issues
67
+ * where race-conditions can result in multiple
68
+ * contexts getting created
69
+ */
70
+ id: number;
71
+ private _context;
72
+ private _authentication;
73
+ private _portalUrl;
74
+ private _properties;
75
+ private _hubUrl;
76
+ private _portalSelf;
77
+ private _currentUser;
78
+ private _logLevel;
79
+ /**
80
+ * Private constructor. Use `ArcGISContextManager.create(...)` to
81
+ * instantiate an instance
82
+ * @param opts
83
+ */
84
+ private constructor();
85
+ /**
86
+ * Used to create a new instance of the ArcGISContext class.
87
+ *
88
+ * ```js
89
+ * const ctxMgr = await ArcGISContextManager.create();
90
+ * ```
91
+ *
92
+ * @param opts
93
+ * @returns
94
+ */
95
+ static create(opts?: IArcGISContextManagerOptions): Promise<ArcGISContextManager>;
96
+ /**
97
+ * Set the Authentication (UserSession) for the context.
98
+ * This should be called when a user signs into a running
99
+ * application.
100
+ * @param auth
101
+ */
102
+ setAuthentication(auth: UserSession): Promise<void>;
103
+ /**
104
+ * Set the properties hash and re-create the context
105
+ * @param properties
106
+ */
107
+ setProperties(properties: Record<string, any>): void;
108
+ /**
109
+ * Clear the Authentication (UserSession). This should be
110
+ * called when a user signs out of an application, but
111
+ * the application continues running
112
+ */
113
+ clearAuthentication(): void;
114
+ /**
115
+ * Return a reference to the current state.
116
+ * When `.setAuthentication()` or `.clearAuthenentication()` are
117
+ * called, the state will be re-created. This is done so frameworks
118
+ * like React or Ember can detect changes.
119
+ */
120
+ get context(): IArcGISContext;
121
+ /**
122
+ * If we have a UserSession, fetch portal/self and
123
+ * store that along with current user
124
+ */
125
+ private initialize;
126
+ /**
127
+ * Getter to streamline the creation of updated Context instances
128
+ */
129
+ private get contextOpts();
130
+ }
@@ -0,0 +1,72 @@
1
+ import { ArcGISContextManager, IArcGISContextManagerOptions } from "./ArcGISContextManager";
2
+ import { HubProjectManager } from "./projects/HubProjectManager";
3
+ /**
4
+ * Options for instantiating a Hub instance
5
+ */
6
+ export interface IHubOptions {
7
+ contextManager?: ArcGISContextManager;
8
+ managerOptions?: IArcGISContextManagerOptions;
9
+ authOptions?: {
10
+ usename: string;
11
+ password: string;
12
+ portalUrl?: string;
13
+ };
14
+ }
15
+ /**
16
+ * Hub class can be used as an entry point to managing
17
+ * content, teams, sites, projects etc, in an organization's Hub.
18
+ *
19
+ * ```js
20
+ * import {Hub} from '@esri/hub-common';
21
+ * // create a Hub instance, authenticating as a specific user
22
+ * // working against arcgis online
23
+ * const myHub = await Hub.create({authOptions: {username: "casey", password: "jones"}});
24
+ *
25
+ * myHub.context.currentUser //=> {username: "casey", ...} as IUser
26
+ *
27
+ * const projectStore = await myHub.getProjectStore();
28
+ *
29
+ * const pavingProject = await projectStore.create({name: "12th Street Paving"});
30
+ * pavingProject.summary = "This is the 2024 planned paving of 12th Street, between 8th and 11th Ave";
31
+ * await projectStore.update(pavingProject);
32
+ * ```
33
+ *
34
+ * This is a convenience class. Hub Stores can be created
35
+ * directly, or the underlying functions can be imported an used
36
+ * as need for scenarios where these class structures introduce
37
+ * unwanted complexity
38
+ */
39
+ export declare class Hub {
40
+ /**
41
+ * Hold a context manager, which should be a single instance for
42
+ * an application. When authentication changes, the .context
43
+ * property on the context manager will be replaced. As long as
44
+ * all the fns in this class leverage properties on .context
45
+ * everything be kept in sync.
46
+ */
47
+ private _contextManager;
48
+ private _projectManager;
49
+ /**
50
+ * Private so we can employ a factory function should we need
51
+ * async work during creation
52
+ * @param contextManager
53
+ */
54
+ private constructor();
55
+ /**
56
+ * Factory function to construct a new HubProjectStore instance.
57
+ *
58
+ * Note: Used so that we could do async actions in the ctor.
59
+ * @param contextManager
60
+ * @returns
61
+ */
62
+ static create(options: IHubOptions): Promise<Hub>;
63
+ /**
64
+ * Getter to abstract the context manager
65
+ */
66
+ get context(): import("./ArcGISContext").IArcGISContext;
67
+ /**
68
+ * Create a Project Store connected to the current Hub
69
+ * @returns
70
+ */
71
+ get projects(): HubProjectManager;
72
+ }
@@ -0,0 +1,17 @@
1
+ import { OperationError } from ".";
2
+ /**
3
+ * Generic Hub Error with an Error stack as well
4
+ * as an optional serialized OperationStack.
5
+ *
6
+ * Also accepts a `rootCause` Error object
7
+ */
8
+ export default class HubError extends OperationError {
9
+ /**
10
+ * Creates an instance of HubError.
11
+ * @param {string} operation
12
+ * @param {string} [message]
13
+ * @param {Error} [rootCause]
14
+ * @memberof HubError
15
+ */
16
+ constructor(operation: string, message?: string, rootCause?: Error);
17
+ }
@@ -1,3 +1,15 @@
1
+ /**
2
+ * ```js
3
+ * import { getCollection } from "@esri/hub-common";
4
+ * //
5
+ * getCollection('Feature Layer')
6
+ * > 'dataset'
7
+ * ```
8
+ * Get the Hub collection for a given item type
9
+ * @param itemType The ArcGIS [item type](https://developers.arcgis.com/rest/users-groups-and-items/items-and-item-types.htm).
10
+ * @returns the Hub collection of a given item type.
11
+ */
12
+ export declare const getCollection: (type?: string) => string;
1
13
  export declare const collections: {
2
14
  [key: string]: string[];
3
15
  };