@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
@@ -16,4 +16,5 @@ export * from "./logger";
16
16
  export * from "./is-update-group";
17
17
  export * from "./revertable-tasks";
18
18
  export * from "./sessionLocalStorage";
19
+ export * from "./dasherize";
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC"}
@@ -1,173 +1,255 @@
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");
4
+ const _1 = require(".");
6
5
  /**
7
- * Application Context Object
8
- *
9
- * Abstraction that combines a `UserSession` with
10
- * the `portal/self` and `user/self` responses to
11
- * provide a central lookup of platform information.
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
+ * Abstraction that holds a `UserSession`, along with
16
+ * getters to streamline access to various platform
17
+ * urls, and common constructs like `IRequestOptions`,
18
+ * `IUserRequestOptions` etc.
12
19
  *
13
- * This is a work-in-progress, and will likely expand over time.
20
+ * Instances are intended to be immutable, but this is not directly enforced.
14
21
  *
15
- * `ArcGISContext` is used in conjuction with the `arcgis-app-identity`
16
- * component to orchestrate oAuth.
22
+ * In most circumstances, this class should be created by
23
+ * the ArcGISContextManager class.
17
24
  */
18
25
  class ArcGISContext {
19
26
  /**
20
- * Private constructor. Use `ArcGISContext.create(...)` to
21
- * instantiate an instance
27
+ * Create a new instance of `ArcGISContext`.
28
+ *
22
29
  * @param opts
23
30
  */
24
31
  constructor(opts) {
25
32
  this._portalUrl = "https://www.arcgis.com";
26
- this._debug = false;
27
- // Having a unique id makes debugging easier
28
- this.id = new Date().getTime();
29
- if (opts.debug) {
30
- this._debug = opts.debug;
31
- }
32
- this.log(`ArcGISContext:ctor: Creating ${this.id}`);
33
+ this.id = opts.id;
34
+ this._portalUrl = opts.portalUrl;
35
+ this._hubUrl = opts.hubUrl;
33
36
  if (opts.authentication) {
34
37
  this._authentication = opts.authentication;
35
- this._portalUrl = this._authentication.portal.replace("/sharing/rest", "");
36
- this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
37
38
  }
38
- else if (opts.portalUrl) {
39
- this._portalUrl = opts.portalUrl;
40
- this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
39
+ if (opts.portalSelf) {
40
+ this._portalSelf = opts.portalSelf;
41
41
  }
42
- else {
43
- this._hubUrl = getHubApiFromPortalUrl(this._portalUrl);
42
+ if (opts.currentUser) {
43
+ this._currentUser = opts.currentUser;
44
+ }
45
+ if (opts.properties) {
46
+ this._properties = opts.properties;
44
47
  }
45
48
  }
46
49
  /**
47
- * Static async Factory
48
- * @param opts
49
- * @returns
50
+ * Return the UserSession if authenticated
50
51
  */
51
- static async create(opts = {}) {
52
- const ctx = new ArcGISContext(opts);
53
- await ctx.initialize();
54
- return ctx;
52
+ get session() {
53
+ return this._authentication;
55
54
  }
56
55
  /**
57
- * If we have a UserSession, fetch portal/self and
58
- * store that along with current user
56
+ * Return boolean indicating if authenticatio is present
59
57
  */
60
- async initialize() {
61
- let stateOpts = {
62
- id: this.id,
63
- portalUrl: this._portalUrl,
64
- hubUrl: this._hubUrl,
58
+ get isAuthenticated() {
59
+ return !!this._authentication;
60
+ }
61
+ /**
62
+ * Return `IUserRequestOptions`, which is used for REST-JS
63
+ * functions which require authentication information.
64
+ *
65
+ * If context is not authenticated, this function will throw
66
+ */
67
+ get userRequestOptions() {
68
+ if (this.isAuthenticated) {
69
+ return {
70
+ authentication: this._authentication,
71
+ portal: this.sharingApiUrl,
72
+ };
73
+ }
74
+ }
75
+ /**
76
+ * Return `IRequestOptions`, which is used by REST-JS functions
77
+ * which *may* use authentication information if provided.
78
+ *
79
+ * If context is not authenticated, this function just returns
80
+ * the `portal` property, which informs REST-JS what Sharing API
81
+ * instance to use (i.e. AGO, Enterprise etc)
82
+ */
83
+ get requestOptions() {
84
+ let ro = {
85
+ portal: this.sharingApiUrl,
65
86
  };
66
- if (this._authentication) {
67
- this.log(`ArcGISContext-${this.id}: Initializing`);
68
- const ps = await arcgis_rest_portal_1.getSelf({ authentication: this._authentication });
69
- this._portalSelf = ps;
70
- this._currentUser = ps.user;
71
- stateOpts = {
72
- id: this.id,
73
- portalUrl: this._portalUrl,
74
- hubUrl: this._hubUrl,
75
- portalSelf: this._portalSelf,
76
- currentUser: this._currentUser,
87
+ if (this.isAuthenticated) {
88
+ ro = {
77
89
  authentication: this._authentication,
90
+ portal: this.sharingApiUrl,
78
91
  };
79
92
  }
80
- // update the state
81
- this._state = new ArcGISContextState_1.ArcGISContextState(stateOpts);
93
+ return ro;
82
94
  }
83
95
  /**
84
- * Set the Authentication (UserSession) for the context.
85
- * This should be called when a user signs into a running
86
- * application.
87
- * @param auth
96
+ * Return a `IHubRequestOptions` object
88
97
  */
89
- async setAuthentication(auth) {
90
- this._authentication = auth;
91
- this._portalUrl = auth.portal.replace("/sharing/rest", "");
92
- await this.initialize();
98
+ get hubRequestOptions() {
99
+ // We may add more logic around what is returned in some corner cases
100
+ if (this.isAuthenticated) {
101
+ return {
102
+ authentication: this.session,
103
+ isPortal: this.isPortal,
104
+ portalSelf: this.portal,
105
+ hubApiUrl: this.hubUrl,
106
+ };
107
+ }
93
108
  }
94
109
  /**
95
- * Clear the Authentication (UserSession). This should be
96
- * called when a user signs out of an application, but
97
- * the application continues running
110
+ * Return the portal url i.e. https://www.arcgis.com
111
+ *
112
+ * If authenticated @ ArcGIS Online, it will return
113
+ * the https://org.env.arcgis.com
114
+ *
115
+ * If authenticated @ ArcGIS Enterprise, it will return
116
+ * https://{portalHostname}/{webadaptor}
98
117
  */
99
- clearAuthentication() {
100
- // Reset the portalUrl from the org url to the base url
101
- // for ArcGIS Enterprise, we just leave the _portalUrl as-is
102
- if (!this._state.isPortal) {
103
- this._portalUrl = getPortalBaseFromOrgUrl(this._portalUrl);
118
+ get portalUrl() {
119
+ if (this.isAuthenticated) {
120
+ if (this.isPortal) {
121
+ return `https://${this._portalSelf.portalHostname}`;
122
+ }
123
+ else {
124
+ return `https://${this._portalSelf.urlKey}.${this._portalSelf.customBaseUrl}`;
125
+ }
126
+ }
127
+ else {
128
+ return this._portalUrl;
104
129
  }
105
- // Clear the auth, portalSelf and currentUser props
106
- this._authentication = null;
107
- this._portalSelf = null;
108
- this._currentUser = null;
109
- this._state = new ArcGISContextState_1.ArcGISContextState({
110
- id: this.id,
111
- portalUrl: this._portalUrl,
112
- hubUrl: this._hubUrl,
113
- });
114
130
  }
115
131
  /**
116
- * Return a reference to the current state.
117
- * When `.setAuthentication()` or `.clearAuthenentication()` are
118
- * called, the state will be re-created. This is done so frameworks
119
- * like React or Ember can detect changes.
132
+ * Returns the url to the sharing api composed from portalUrl
133
+ * i.e. https://myorg.maps.arcgis.com/sharing/rest
134
+ */
135
+ get sharingApiUrl() {
136
+ return `${this.portalUrl}/sharing/rest`;
137
+ }
138
+ /**
139
+ * Returns the Hub url, based on the portalUrl
140
+ *
141
+ * For ArcGIS Enterprise this will return `undefined`
142
+ */
143
+ get hubUrl() {
144
+ return this._hubUrl;
145
+ }
146
+ /**
147
+ * Returns boolean indicating if the backing system
148
+ * is ArcGIS Enterprise (formerly ArcGIS Portal) or not
120
149
  */
121
- get state() {
122
- return this._state;
150
+ get isPortal() {
151
+ return this._portalSelf
152
+ ? this._portalSelf.isPortal
153
+ : this._portalUrl.indexOf("arcgis.com") === -1;
123
154
  }
124
155
  /**
125
- * @internal
126
- * Log debugging messages to the console
127
- * @param message
156
+ * Returns the discussions API URL
128
157
  */
129
- log(message) {
130
- if (this._debug) {
131
- // tslint:disable-next-line:no-console
132
- console.info(message);
158
+ get discussionsServiceUrl() {
159
+ if (this._hubUrl) {
160
+ return `${this._hubUrl}${hubApiEndpoints.discussions}`;
133
161
  }
134
162
  }
135
- }
136
- exports.ArcGISContext = ArcGISContext;
137
- /**
138
- * Cross-walk from a portalUrl to the corresponding Hub.
139
- *
140
- * If the passed url is not recognized, then this will return `undefined`
141
- * @param portalUrl
142
- * @returns
143
- */
144
- function getHubApiFromPortalUrl(portalUrl) {
145
- let result;
146
- if (portalUrl.match(/(qaext|\.mapsqa)\.arcgis.com/)) {
147
- result = "https://hubqa.arcgis.com";
163
+ /**
164
+ * Returns the Hub Search API URL
165
+ */
166
+ get hubSearchServiceUrl() {
167
+ if (this._hubUrl) {
168
+ return `${this._hubUrl}${hubApiEndpoints.search}`;
169
+ }
148
170
  }
149
- else if (portalUrl.match(/(devext|\.mapsdevext)\.arcgis.com/)) {
150
- result = "https://hubdev.arcgis.com";
171
+ /**
172
+ * Returns Hub Domain Service URL
173
+ */
174
+ get domainServiceUrl() {
175
+ if (this._hubUrl) {
176
+ return `${this._hubUrl}${hubApiEndpoints.domains}`;
177
+ }
151
178
  }
152
- else if (portalUrl.match(/(www|\.maps)\.arcgis.com/)) {
153
- result = "https://hub.arcgis.com";
179
+ /**
180
+ * Returns the Events configuration object from portal/self
181
+ *
182
+ * `{serviceId: '3ef..', publicViewId: 'bc3...'}`
183
+ */
184
+ get eventsConfig() {
185
+ if (this._portalSelf) {
186
+ return _1.getProp(this._portalSelf, "portalProperties.hub.settings.events");
187
+ }
154
188
  }
155
- return result;
156
- }
157
- function getPortalBaseFromOrgUrl(orgUrl) {
158
- let result;
159
- if (orgUrl.match(/(qaext|\.mapsqa)\.arcgis.com/)) {
160
- result = "https://qaext.arcgis.com";
189
+ /**
190
+ * Returns boolean indicating if the current user
191
+ * belongs to an organization that has licensed
192
+ * ArcGIS Hub
193
+ */
194
+ get hubEnabled() {
195
+ return _1.getWithDefault(this._portalSelf, "portalProperties.hub.enabled", false);
161
196
  }
162
- else if (orgUrl.match(/(devext|\.mapsdevext)\.arcgis.com/)) {
163
- result = "https://devext.arcgis.com";
197
+ /**
198
+ * Return the Hub Community Org Id, if defined
199
+ */
200
+ get communityOrgId() {
201
+ if (this._portalSelf) {
202
+ return _1.getProp(this._portalSelf, "portalProperties.hub.settings.communityOrg.orgId");
203
+ }
164
204
  }
165
- else {
166
- /* istanbul ignore else */
167
- if (orgUrl.match(/(www|\.maps)\.arcgis.com/)) {
168
- result = "https://www.arcgis.com";
205
+ /**
206
+ * Returns the Hub Community Org Hostname, if defined
207
+ *
208
+ * i.e. c-org.maps.arcgis.com
209
+ */
210
+ get communityOrgHostname() {
211
+ if (this._portalSelf) {
212
+ return _1.getProp(this._portalSelf, "portalProperties.hub.settings.communityOrg.portalHostname");
169
213
  }
170
214
  }
171
- return result;
215
+ /**
216
+ * Returns the Hub Community Org url
217
+ *
218
+ * i.e. https://c-org.maps.arcgis.com
219
+ */
220
+ get communityOrgUrl() {
221
+ if (this.communityOrgHostname) {
222
+ return `https://${this.communityOrgHostname}`;
223
+ }
224
+ }
225
+ /**
226
+ * Returns the hash of helper services from portal self
227
+ */
228
+ get helperServices() {
229
+ if (this._portalSelf) {
230
+ return this._portalSelf.helperServices;
231
+ }
232
+ }
233
+ /**
234
+ * Returns the current user as IUser
235
+ */
236
+ get currentUser() {
237
+ return this._currentUser;
238
+ }
239
+ /**
240
+ * Returns the portal object as IPortal
241
+ */
242
+ get portal() {
243
+ return this._portalSelf;
244
+ }
245
+ /**
246
+ * Return the properties hash that was passed in.
247
+ * Useful for app-specific context such as the active
248
+ * Site for ArcGIS Hub
249
+ */
250
+ get properties() {
251
+ return this._properties;
252
+ }
172
253
  }
254
+ exports.ArcGISContext = ArcGISContext;
173
255
  //# 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,175 @@
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
+ * The manager exposes context (`IArcGISContext`), which combines a `UserSession` with
11
+ * the `portal/self` and `user/self` responses to provide a central lookup for platform
12
+ * information, api urls, and other useful properties for developers such as IRequestOptions
13
+ * IUserRequestOptions, IHubRequestOptions etc.
14
+ *
15
+ * The context is exposed on gthe `.context` property, and as the authentication changes
16
+ * the `.context` is re-created. This is done to allow web frameworks to watch for
17
+ * changes on that single property, instead of having to leverage observers or events
18
+ * for change detection.
19
+ *
20
+ * Please see the [ArcGISContext Guide](/hub.js/guides/context) for additional information.
21
+ *
22
+ */
23
+ class ArcGISContextManager {
24
+ /**
25
+ * Private constructor. Use `ArcGISContextManager.create(...)` to
26
+ * instantiate an instance
27
+ * @param opts
28
+ */
29
+ constructor(opts) {
30
+ this._portalUrl = "https://www.arcgis.com";
31
+ this._logLevel = _1.Level.error;
32
+ // Having a unique id makes debugging easier
33
+ this.id = new Date().getTime();
34
+ if (opts.logLevel) {
35
+ this._logLevel = opts.logLevel;
36
+ }
37
+ _1.Logger.setLogLevel(this._logLevel);
38
+ _1.Logger.debug(`ArcGISContextManager:ctor: Creating ${this.id}`);
39
+ if (opts.properties) {
40
+ this._properties = opts.properties;
41
+ }
42
+ if (opts.authentication) {
43
+ this._authentication = opts.authentication;
44
+ this._portalUrl = this._authentication.portal.replace("/sharing/rest", "");
45
+ this._hubUrl = getHubApiFromPortalUrl_1.getHubApiFromPortalUrl(this._portalUrl);
46
+ }
47
+ else if (opts.portalUrl) {
48
+ this._portalUrl = opts.portalUrl;
49
+ this._hubUrl = getHubApiFromPortalUrl_1.getHubApiFromPortalUrl(this._portalUrl);
50
+ }
51
+ else {
52
+ this._hubUrl = getHubApiFromPortalUrl_1.getHubApiFromPortalUrl(this._portalUrl);
53
+ }
54
+ if (opts.portal) {
55
+ this._portalSelf = _1.cloneObject(opts.portal);
56
+ }
57
+ if (opts.currentUser) {
58
+ this._currentUser = _1.cloneObject(opts.currentUser);
59
+ }
60
+ }
61
+ /**
62
+ * Used to create a new instance of the ArcGISContext class.
63
+ *
64
+ * ```js
65
+ * const ctxMgr = await ArcGISContextManager.create();
66
+ * ```
67
+ *
68
+ * @param opts
69
+ * @returns
70
+ */
71
+ static async create(opts = {}) {
72
+ const ctx = new ArcGISContextManager(opts);
73
+ await ctx.initialize();
74
+ return ctx;
75
+ }
76
+ /**
77
+ * Set the Authentication (UserSession) for the context.
78
+ * This should be called when a user signs into a running
79
+ * application.
80
+ * @param auth
81
+ */
82
+ async setAuthentication(auth) {
83
+ this._authentication = auth;
84
+ this._portalUrl = auth.portal.replace("/sharing/rest", "");
85
+ await this.initialize();
86
+ }
87
+ /**
88
+ * Set the properties hash and re-create the context
89
+ * @param properties
90
+ */
91
+ setProperties(properties) {
92
+ this._properties = properties;
93
+ this._context = new ArcGISContext_1.ArcGISContext(this.contextOpts);
94
+ }
95
+ /**
96
+ * Clear the Authentication (UserSession). This should be
97
+ * called when a user signs out of an application, but
98
+ * the application continues running
99
+ */
100
+ clearAuthentication() {
101
+ // Reset the portalUrl from the org url to the base url
102
+ // for ArcGIS Enterprise, we just leave the _portalUrl as-is
103
+ if (!this._context.isPortal) {
104
+ this._portalUrl = getPortalBaseFromOrgUrl_1.getPortalBaseFromOrgUrl(this._portalUrl);
105
+ }
106
+ // Clear the auth, portalSelf and currentUser props
107
+ this._authentication = null;
108
+ this._portalSelf = null;
109
+ this._currentUser = null;
110
+ this._context = new ArcGISContext_1.ArcGISContext(this.contextOpts);
111
+ }
112
+ /**
113
+ * Return a reference to the current state.
114
+ * When `.setAuthentication()` or `.clearAuthenentication()` are
115
+ * called, the state will be re-created. This is done so frameworks
116
+ * like React or Ember can detect changes.
117
+ */
118
+ get context() {
119
+ return this._context;
120
+ }
121
+ /**
122
+ * If we have a UserSession, fetch portal/self and
123
+ * store that along with current user
124
+ */
125
+ async initialize() {
126
+ // if we have auth, and don't have portalSelf or currentUser, fetch them
127
+ if (this._authentication && (!this._portalSelf || !this._currentUser)) {
128
+ _1.Logger.debug(`ArcGISContextManager-${this.id}: Initializing`);
129
+ const username = this._authentication.username;
130
+ const requests = [
131
+ arcgis_rest_portal_1.getSelf({ authentication: this._authentication }),
132
+ arcgis_rest_portal_1.getUser({ username, authentication: this._authentication }),
133
+ ];
134
+ try {
135
+ const [portal, user] = await Promise.all(requests);
136
+ this._portalSelf = portal;
137
+ this._currentUser = user;
138
+ _1.Logger.debug(`ArcGISContextManager-${this.id}: received portalSelf and currentUser`);
139
+ }
140
+ catch (ex) {
141
+ const msg = `ArcGISContextManager could not fetch portal & user for "${this._authentication.username}" using ${this._authentication.portal}.`;
142
+ _1.Logger.error(msg);
143
+ // tslint:disable-next-line:no-console
144
+ console.error(msg);
145
+ throw ex;
146
+ }
147
+ }
148
+ _1.Logger.debug(`ArcGISContextManager-${this.id}: updating context`);
149
+ // update the context
150
+ this._context = new ArcGISContext_1.ArcGISContext(this.contextOpts);
151
+ }
152
+ /**
153
+ * Getter to streamline the creation of updated Context instances
154
+ */
155
+ get contextOpts() {
156
+ const contextOpts = {
157
+ id: this.id,
158
+ portalUrl: this._portalUrl,
159
+ hubUrl: this._hubUrl,
160
+ properties: this._properties,
161
+ };
162
+ if (this._authentication) {
163
+ contextOpts.authentication = this._authentication;
164
+ }
165
+ if (this._portalSelf) {
166
+ contextOpts.portalSelf = this._portalSelf;
167
+ }
168
+ if (this._currentUser) {
169
+ contextOpts.currentUser = this._currentUser;
170
+ }
171
+ return contextOpts;
172
+ }
173
+ }
174
+ exports.ArcGISContextManager = ArcGISContextManager;
175
+ //# sourceMappingURL=ArcGISContextManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGISContextManager.js","sourceRoot":"","sources":["../../src/ArcGISContextManager.ts"],"names":[],"mappings":"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"}