@esri/hub-common 9.14.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 (291) hide show
  1. package/dist/es2017/ArcGISContext.js +11 -0
  2. package/dist/es2017/ArcGISContext.js.map +1 -1
  3. package/dist/es2017/ArcGISContextManager.js +13 -5
  4. package/dist/es2017/ArcGISContextManager.js.map +1 -1
  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 +13 -14
  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 -6
  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/utils/dasherize.js +25 -0
  77. package/dist/es2017/utils/dasherize.js.map +1 -0
  78. package/dist/es2017/utils/index.js +1 -0
  79. package/dist/es2017/utils/index.js.map +1 -1
  80. package/dist/esm/ArcGISContext.js +15 -0
  81. package/dist/esm/ArcGISContext.js.map +1 -1
  82. package/dist/esm/ArcGISContextManager.js +13 -5
  83. package/dist/esm/ArcGISContextManager.js.map +1 -1
  84. package/dist/esm/Hub.js +89 -0
  85. package/dist/esm/Hub.js.map +1 -0
  86. package/dist/esm/HubError.js +40 -0
  87. package/dist/esm/HubError.js.map +1 -0
  88. package/dist/esm/collections.js +23 -0
  89. package/dist/esm/collections.js.map +1 -1
  90. package/dist/esm/content/_internal.js.map +1 -1
  91. package/dist/esm/content/index.js +13 -14
  92. package/dist/esm/content/index.js.map +1 -1
  93. package/dist/esm/core/helpers/PropertyMapper.js +97 -0
  94. package/dist/esm/core/helpers/PropertyMapper.js.map +1 -0
  95. package/dist/esm/core/index.js +3 -0
  96. package/dist/esm/core/index.js.map +1 -0
  97. package/dist/esm/core/traits/WithBannerImage.js +1 -0
  98. package/dist/esm/core/traits/WithBannerImage.js.map +1 -0
  99. package/dist/esm/core/traits/WithLayout.js +1 -0
  100. package/dist/esm/core/traits/WithLayout.js.map +1 -0
  101. package/dist/esm/core/traits/WithSlug.js +1 -0
  102. package/dist/esm/core/traits/WithSlug.js.map +1 -0
  103. package/dist/esm/core/traits/index.js +4 -0
  104. package/dist/esm/core/traits/index.js.map +1 -0
  105. package/dist/esm/core/types/IContentEnrichments.js +1 -0
  106. package/dist/esm/core/types/IContentEnrichments.js.map +1 -0
  107. package/dist/esm/core/types/IHubContent.js +1 -0
  108. package/dist/esm/core/types/IHubContent.js.map +1 -0
  109. package/dist/esm/core/types/IHubEntityBase.js +1 -0
  110. package/dist/esm/core/types/IHubEntityBase.js.map +1 -0
  111. package/dist/esm/core/types/IHubEntityManager.js +1 -0
  112. package/dist/esm/core/types/IHubEntityManager.js.map +1 -0
  113. package/dist/esm/core/types/IHubEvent.js +1 -0
  114. package/dist/esm/core/types/IHubEvent.js.map +1 -0
  115. package/dist/esm/core/types/IHubImage.js +1 -0
  116. package/dist/esm/core/types/IHubImage.js.map +1 -0
  117. package/dist/esm/core/types/IHubInitiative.js +1 -0
  118. package/dist/esm/core/types/IHubInitiative.js.map +1 -0
  119. package/dist/esm/core/types/IHubItemEntity.js +1 -0
  120. package/dist/esm/core/types/IHubItemEntity.js.map +1 -0
  121. package/dist/esm/core/types/IHubLayout.js +1 -0
  122. package/dist/esm/core/types/IHubLayout.js.map +1 -0
  123. package/dist/esm/core/types/IHubPage.js +1 -0
  124. package/dist/esm/core/types/IHubPage.js.map +1 -0
  125. package/dist/esm/core/types/IHubProject.js +1 -0
  126. package/dist/esm/core/types/IHubProject.js.map +1 -0
  127. package/dist/esm/core/types/IHubSite.js +1 -0
  128. package/dist/esm/core/types/IHubSite.js.map +1 -0
  129. package/dist/esm/core/types/IHubTimeline.js +1 -0
  130. package/dist/esm/core/types/IHubTimeline.js.map +1 -0
  131. package/dist/esm/core/types/IItemEnrichments.js +1 -0
  132. package/dist/esm/core/types/IItemEnrichments.js.map +1 -0
  133. package/dist/esm/core/types/index.js +15 -0
  134. package/dist/esm/core/types/index.js.map +1 -0
  135. package/dist/esm/index.js +11 -6
  136. package/dist/esm/index.js.map +1 -1
  137. package/dist/esm/items/fail-safe-update.js +2 -2
  138. package/dist/esm/items/fail-safe-update.js.map +1 -1
  139. package/dist/esm/items/get-model-from-options.js +2 -2
  140. package/dist/esm/items/get-model-from-options.js.map +1 -1
  141. package/dist/esm/items/index.js +2 -3
  142. package/dist/esm/items/index.js.map +1 -1
  143. package/dist/esm/items/slugs.js +93 -0
  144. package/dist/esm/items/slugs.js.map +1 -0
  145. package/dist/esm/models/index.js +99 -0
  146. package/dist/esm/models/index.js.map +1 -0
  147. package/dist/esm/{items/serialize-model.js → models/serializeModel.js} +1 -1
  148. package/dist/esm/models/serializeModel.js.map +1 -0
  149. package/dist/esm/projects/HubProjectManager.js +142 -0
  150. package/dist/esm/projects/HubProjectManager.js.map +1 -0
  151. package/dist/esm/projects/HubProjects.js +225 -0
  152. package/dist/esm/projects/HubProjects.js.map +1 -0
  153. package/dist/esm/projects/index.js +3 -0
  154. package/dist/esm/projects/index.js.map +1 -0
  155. package/dist/esm/utils/dasherize.js +25 -0
  156. package/dist/esm/utils/dasherize.js.map +1 -0
  157. package/dist/esm/utils/index.js +1 -0
  158. package/dist/esm/utils/index.js.map +1 -1
  159. package/dist/node/ArcGISContext.js +11 -0
  160. package/dist/node/ArcGISContext.js.map +1 -1
  161. package/dist/node/ArcGISContextManager.js +13 -5
  162. package/dist/node/ArcGISContextManager.js.map +1 -1
  163. package/dist/node/Hub.js +74 -0
  164. package/dist/node/Hub.js.map +1 -0
  165. package/dist/node/HubError.js +37 -0
  166. package/dist/node/HubError.js.map +1 -0
  167. package/dist/node/collections.js +24 -1
  168. package/dist/node/collections.js.map +1 -1
  169. package/dist/node/content/_internal.js.map +1 -1
  170. package/dist/node/content/index.js +13 -14
  171. package/dist/node/content/index.js.map +1 -1
  172. package/dist/node/core/helpers/PropertyMapper.js +101 -0
  173. package/dist/node/core/helpers/PropertyMapper.js.map +1 -0
  174. package/dist/node/core/index.js +6 -0
  175. package/dist/node/core/index.js.map +1 -0
  176. package/dist/node/core/traits/WithBannerImage.js +3 -0
  177. package/dist/node/core/traits/WithBannerImage.js.map +1 -0
  178. package/dist/node/core/traits/WithLayout.js +3 -0
  179. package/dist/node/core/traits/WithLayout.js.map +1 -0
  180. package/dist/node/core/traits/WithSlug.js +3 -0
  181. package/dist/node/core/traits/WithSlug.js.map +1 -0
  182. package/dist/node/core/traits/index.js +7 -0
  183. package/dist/node/core/traits/index.js.map +1 -0
  184. package/dist/node/core/types/IContentEnrichments.js +3 -0
  185. package/dist/node/core/types/IContentEnrichments.js.map +1 -0
  186. package/dist/node/core/types/IHubContent.js +3 -0
  187. package/dist/node/core/types/IHubContent.js.map +1 -0
  188. package/dist/node/core/types/IHubEntityBase.js +3 -0
  189. package/dist/node/core/types/IHubEntityBase.js.map +1 -0
  190. package/dist/node/core/types/IHubEntityManager.js +3 -0
  191. package/dist/node/core/types/IHubEntityManager.js.map +1 -0
  192. package/dist/node/core/types/IHubEvent.js +3 -0
  193. package/dist/node/core/types/IHubEvent.js.map +1 -0
  194. package/dist/node/core/types/IHubImage.js +3 -0
  195. package/dist/node/core/types/IHubImage.js.map +1 -0
  196. package/dist/node/core/types/IHubInitiative.js +3 -0
  197. package/dist/node/core/types/IHubInitiative.js.map +1 -0
  198. package/dist/node/core/types/IHubItemEntity.js +3 -0
  199. package/dist/node/core/types/IHubItemEntity.js.map +1 -0
  200. package/dist/node/core/types/IHubLayout.js +3 -0
  201. package/dist/node/core/types/IHubLayout.js.map +1 -0
  202. package/dist/node/core/types/IHubPage.js +3 -0
  203. package/dist/node/core/types/IHubPage.js.map +1 -0
  204. package/dist/node/core/types/IHubProject.js +3 -0
  205. package/dist/node/core/types/IHubProject.js.map +1 -0
  206. package/dist/node/core/types/IHubSite.js +3 -0
  207. package/dist/node/core/types/IHubSite.js.map +1 -0
  208. package/dist/node/core/types/IHubTimeline.js +3 -0
  209. package/dist/node/core/types/IHubTimeline.js.map +1 -0
  210. package/dist/node/core/types/IItemEnrichments.js +3 -0
  211. package/dist/node/core/types/IItemEnrichments.js.map +1 -0
  212. package/dist/node/core/types/index.js +18 -0
  213. package/dist/node/core/types/index.js.map +1 -0
  214. package/dist/node/index.js +12 -6
  215. package/dist/node/index.js.map +1 -1
  216. package/dist/node/items/fail-safe-update.js +3 -3
  217. package/dist/node/items/fail-safe-update.js.map +1 -1
  218. package/dist/node/items/get-model-from-options.js +3 -3
  219. package/dist/node/items/get-model-from-options.js.map +1 -1
  220. package/dist/node/items/index.js +2 -3
  221. package/dist/node/items/index.js.map +1 -1
  222. package/dist/node/items/slugs.js +99 -0
  223. package/dist/node/items/slugs.js.map +1 -0
  224. package/dist/node/models/index.js +106 -0
  225. package/dist/node/models/index.js.map +1 -0
  226. package/dist/node/{items/serialize-model.js → models/serializeModel.js} +1 -1
  227. package/dist/node/models/serializeModel.js.map +1 -0
  228. package/dist/node/projects/HubProjectManager.js +119 -0
  229. package/dist/node/projects/HubProjectManager.js.map +1 -0
  230. package/dist/node/projects/HubProjects.js +201 -0
  231. package/dist/node/projects/HubProjects.js.map +1 -0
  232. package/dist/node/projects/index.js +6 -0
  233. package/dist/node/projects/index.js.map +1 -0
  234. package/dist/node/utils/dasherize.js +29 -0
  235. package/dist/node/utils/dasherize.js.map +1 -0
  236. package/dist/node/utils/index.js +1 -0
  237. package/dist/node/utils/index.js.map +1 -1
  238. package/dist/types/ArcGISContext.d.ts +16 -1
  239. package/dist/types/ArcGISContextManager.d.ts +14 -0
  240. package/dist/types/Hub.d.ts +72 -0
  241. package/dist/types/HubError.d.ts +17 -0
  242. package/dist/types/collections.d.ts +12 -0
  243. package/dist/types/content/_internal.d.ts +57 -38
  244. package/dist/types/content/index.d.ts +8 -8
  245. package/dist/types/core/helpers/PropertyMapper.d.ts +69 -0
  246. package/dist/types/core/index.d.ts +2 -0
  247. package/dist/types/core/traits/WithBannerImage.d.ts +30 -0
  248. package/dist/types/core/traits/WithLayout.d.ts +54 -0
  249. package/dist/types/core/traits/WithSlug.d.ts +15 -0
  250. package/dist/types/core/traits/index.d.ts +3 -0
  251. package/dist/types/core/types/IContentEnrichments.d.ts +10 -0
  252. package/dist/types/core/types/IHubContent.d.ts +77 -0
  253. package/dist/types/core/types/IHubEntityBase.d.ts +41 -0
  254. package/dist/types/core/types/IHubEntityManager.d.ts +33 -0
  255. package/dist/types/core/types/IHubEvent.d.ts +10 -0
  256. package/dist/types/core/types/IHubImage.d.ts +25 -0
  257. package/dist/types/core/types/IHubInitiative.d.ts +8 -0
  258. package/dist/types/core/types/IHubItemEntity.d.ts +42 -0
  259. package/dist/types/core/types/IHubLayout.d.ts +20 -0
  260. package/dist/types/core/types/IHubPage.d.ts +8 -0
  261. package/dist/types/core/types/IHubProject.d.ts +15 -0
  262. package/dist/types/core/types/IHubSite.d.ts +11 -0
  263. package/dist/types/core/types/IHubTimeline.d.ts +41 -0
  264. package/dist/types/core/types/IItemEnrichments.d.ts +23 -0
  265. package/dist/types/core/types/index.d.ts +14 -0
  266. package/dist/types/index.d.ts +11 -6
  267. package/dist/types/items/index.d.ts +2 -3
  268. package/dist/types/items/slugs.d.ts +43 -0
  269. package/dist/types/models/index.d.ts +42 -0
  270. package/dist/types/{items/serialize-model.d.ts → models/serializeModel.d.ts} +0 -0
  271. package/dist/types/projects/HubProjectManager.d.ts +81 -0
  272. package/dist/types/projects/HubProjects.d.ts +31 -0
  273. package/dist/types/projects/index.d.ts +2 -0
  274. package/dist/types/types.d.ts +2 -92
  275. package/dist/types/utils/dasherize.d.ts +17 -0
  276. package/dist/types/utils/index.d.ts +1 -0
  277. package/dist/umd/common.umd.js +4557 -3687
  278. package/dist/umd/common.umd.js.map +1 -1
  279. package/dist/umd/common.umd.min.js +1 -1
  280. package/dist/umd/common.umd.min.js.map +1 -1
  281. package/package.json +1 -1
  282. package/dist/es2017/items/get-model.js +0 -19
  283. package/dist/es2017/items/get-model.js.map +0 -1
  284. package/dist/es2017/items/serialize-model.js.map +0 -1
  285. package/dist/esm/items/get-model.js +0 -19
  286. package/dist/esm/items/get-model.js.map +0 -1
  287. package/dist/esm/items/serialize-model.js.map +0 -1
  288. package/dist/node/items/get-model.js +0 -23
  289. package/dist/node/items/get-model.js.map +0 -1
  290. package/dist/node/items/serialize-model.js.map +0 -1
  291. package/dist/types/items/get-model.d.ts +0 -8
@@ -0,0 +1,69 @@
1
+ import { IModel } from "../..";
2
+ /**
3
+ * Manage forward and backward property mappings to
4
+ * streamline conversion between the Hub entities, and
5
+ * the backing IModel
6
+ */
7
+ export declare class PropertyMapper<T> {
8
+ mappings: IPropertyMap[];
9
+ /**
10
+ * Pass in the mappings between the Entity and
11
+ * it's backing structure (model or otherwise)
12
+ * @param mappings
13
+ */
14
+ constructor(mappings: IPropertyMap[]);
15
+ /**
16
+ * Map properties from a model on to the entity object.
17
+ *
18
+ * Used when constructing an entity can from a fetched model,
19
+ * in which case the entity should be an empty object (`{}`).
20
+ *
21
+ * Can also be used to apply changes to an entity from a model,
22
+ * in which case an existing entity can be passed in.
23
+ * @param model
24
+ * @param object
25
+ * @returns
26
+ */
27
+ modelToObject(model: IModel, object: T): T;
28
+ /**
29
+ * Map properties from an entity object onto a model.
30
+ *
31
+ * Typically the model will already exist, and this
32
+ * method is used to transfer changes to the model
33
+ * prior to storage.
34
+ * @param object
35
+ * @param model
36
+ * @returns
37
+ */
38
+ objectToModel(object: T, model: IModel): IModel;
39
+ }
40
+ /**
41
+ * Property Map Entry that provides a cross-walk
42
+ * between a property path (`name`) on the "object"
43
+ * to a property path on a model (`item.title`).
44
+ *
45
+ * This enables autmatic mapping of properties between
46
+ * the two types of objects.
47
+ */
48
+ export interface IPropertyMap {
49
+ objectKey: string;
50
+ modelKey: string;
51
+ }
52
+ /**
53
+ * Generic function to apply properties from an Object
54
+ * (i.e. IHubProject) onto a Model that can be persisted to an Item
55
+ * @param object
56
+ * @param model
57
+ * @param mappings
58
+ * @returns
59
+ */
60
+ export declare function mapObjectToModel<T>(object: T, model: IModel, mappings: IPropertyMap[]): IModel;
61
+ /**
62
+ * Generic function to apply properties from a Model
63
+ * onto an Object (i.e. IHubProject etc)
64
+ * @param model
65
+ * @param object
66
+ * @param mappings
67
+ * @returns
68
+ */
69
+ export declare function mapModelToObject<T>(model: IModel, object: T, mappings: IPropertyMap[]): T;
@@ -0,0 +1,2 @@
1
+ export * from "./traits";
2
+ export * from "./types";
@@ -0,0 +1,30 @@
1
+ import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
2
+ import { IHubImage, IHubImageOptions } from "../types/IHubImage";
3
+ /**
4
+ * WithBannerImage Trait
5
+ * Adds a .bannerImage property
6
+ */
7
+ export interface IWithBannerImage {
8
+ /**
9
+ * Banner Image as IHubImage
10
+ */
11
+ bannerImage?: IHubImage;
12
+ }
13
+ /**
14
+ * Defines functions for working with Banner Images
15
+ */
16
+ export interface IWithBannerImageStore {
17
+ /**
18
+ * Store a banner image
19
+ * @param id
20
+ * @param opts
21
+ * @param ro
22
+ */
23
+ setBannerImage(id: string, opts: IHubImageOptions, ro: IUserRequestOptions): Promise<IHubImage>;
24
+ /**
25
+ * Clear a banner image
26
+ * @param id
27
+ * @param ro
28
+ */
29
+ clearBannerImage(id: string, ro: IUserRequestOptions): Promise<void>;
30
+ }
@@ -0,0 +1,54 @@
1
+ import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
2
+ import { IRequestOptions } from "@esri/arcgis-rest-request";
3
+ import { IHubLayout } from "../types/IHubLayout";
4
+ /**
5
+ * Properties associated with a Layout
6
+ */
7
+ export interface IWithLayout {
8
+ /**
9
+ * Layout property
10
+ */
11
+ layout?: IHubLayout;
12
+ }
13
+ /**
14
+ * Defined layout related functions that a module
15
+ * working with IWithLayout objects must implement
16
+ */
17
+ export interface IWithLayoutStore {
18
+ /**
19
+ * Given a version name, copy that into the item's /data
20
+ * making it the "active version"
21
+ * @param id
22
+ * @param ro
23
+ */
24
+ setActiveVersion(id: string, ro: IUserRequestOptions): Promise<void>;
25
+ /**
26
+ * Return a list of all the versions by name
27
+ * @param id
28
+ * @param ro
29
+ */
30
+ listVersions(id: string, ro: IRequestOptions): Promise<string[]>;
31
+ /**
32
+ * Destroy the resource backing a version
33
+ * @param id
34
+ * @param name
35
+ * @param ro
36
+ */
37
+ destroyVersion(id: string, name: string, ro: IUserRequestOptions): Promise<void>;
38
+ /**
39
+ * Store a version as a resource, with the given name
40
+ * @param id
41
+ * @param name
42
+ * @param layout
43
+ * @param ro
44
+ */
45
+ saveVersion(id: string, name: string, layout: IHubLayout, ro: IUserRequestOptions): Promise<void>;
46
+ /**
47
+ * Fetch the layout from a specific version.
48
+ * Used when editing a specific version.
49
+ * @param id
50
+ * @param name
51
+ * @param ro
52
+ */
53
+ loadVersion(id: string, name: string, ro: IRequestOptions): Promise<IHubLayout>;
54
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Adds slug and related properties
3
+ */
4
+ export interface IWithSlug {
5
+ /**
6
+ * Slug that can be used to lookup an entity
7
+ * by something other than it's id
8
+ */
9
+ slug?: string;
10
+ /**
11
+ * Organization urlKey used to construct the
12
+ * slug
13
+ */
14
+ orgUrlKey: string;
15
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./WithBannerImage";
2
+ export * from "./WithLayout";
3
+ export * from "./WithSlug";
@@ -0,0 +1,10 @@
1
+ import { IFeatureServiceDefinition, ILayerDefinition } from "@esri/arcgis-rest-feature-layer";
2
+ import { IItemEnrichments } from "./IItemEnrichments";
3
+ export interface IContentEnrichments extends IItemEnrichments {
4
+ /** Information about the service referenced by this content (currentVersion, capabilities, maxRecordCount etc) */
5
+ server?: Partial<IFeatureServiceDefinition>;
6
+ /** Detailed information about the service's layers (geometryType, fields, etc) for related layers in the service */
7
+ layers?: Array<Partial<ILayerDefinition>>;
8
+ /** The count of records for the layer referenced by this content */
9
+ recordCount?: number;
10
+ }
@@ -0,0 +1,77 @@
1
+ import { IItem, IGroup } from "@esri/arcgis-rest-portal";
2
+ import { ILayerDefinition } from "@esri/arcgis-rest-feature-layer";
3
+ import { Visibility, AccessControl, HubFamily, IActionLink, IStructuredLicense } from "../..";
4
+ import { IHubItemEntity } from ".";
5
+ import { IContentEnrichments } from "./IContentEnrichments";
6
+ /**
7
+ * Data model for content
8
+ */
9
+ export interface IHubContent extends IHubItemEntity, IContentEnrichments, IItem {
10
+ /**
11
+ * The underlying portal item referenced by this content
12
+ */
13
+ item: IItem;
14
+ /**
15
+ * Slug that can be used to lookup an entity
16
+ * by something other than it's id
17
+ */
18
+ slug?: string;
19
+ /**
20
+ * The content's ID for use with the Hub API
21
+ * For most content this will be the item's id
22
+ * For layers this will be `<itemId>_<layerId>`
23
+ * This will be undefined for private items and in enterprise
24
+ * because only public online items are included in the Hub API
25
+ */
26
+ hubId?: string;
27
+ /**
28
+ * The preferred identifier to use for Hub URLs.
29
+ * This will be either the slug, hubId, or item id.
30
+ */
31
+ identifier: string;
32
+ /**
33
+ * Content visibility and access control, including groups
34
+ */
35
+ permissions: {
36
+ /** Visibility of the content */
37
+ visibility: Visibility;
38
+ /** Current user's control over the content */
39
+ control?: AccessControl;
40
+ /** The groups that have access to the item (as far as you know) */
41
+ groups?: IGroup[];
42
+ };
43
+ /**
44
+ * The the family of related types that this content belongs to.
45
+ */
46
+ family?: HubFamily;
47
+ /** Parsed item categories (see parseItemCategories) */
48
+ categories?: string[];
49
+ /** Whether the content is downloadable in the Hub app */
50
+ isDownloadable: boolean;
51
+ /** The content's structured license info */
52
+ structuredLicense?: IStructuredLicense;
53
+ /**
54
+ * Date the content was published (formal metadata),
55
+ * defaults to the date the content was created
56
+ */
57
+ publishedDate: Date;
58
+ /** Description of the source of the published date */
59
+ publishedDateSource?: string;
60
+ /** Frequency at which the content is updated */
61
+ updateFrequency?: string;
62
+ /** URL of the resource's page in the Portal Home application */
63
+ portalHomeUrl?: string;
64
+ /** URL of the Portal API endpoint for the resource */
65
+ portalApiUrl?: string;
66
+ /** URL of the Portal API data endpoint for the resource */
67
+ portalDataUrl?: string;
68
+ /** Optional links to show in the Hub application for this content */
69
+ actionLinks?: IActionLink[];
70
+ /** Configure which Hub application actions (i.e. create web map) are available for this content */
71
+ hubActions?: object;
72
+ /** Information about the layer referenced by this content (geometryType, fields, etc) */
73
+ layer?: Partial<ILayerDefinition>;
74
+ itemCategories?: string[];
75
+ normalizedType?: string;
76
+ orgId?: string;
77
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Base properties for Hub Entities
3
+ * This is a subset of `IItem`, that can apply to
4
+ * models that are not backed by items.
5
+ */
6
+ export interface IHubEntityBase {
7
+ /**
8
+ * Id of the entity as a string
9
+ */
10
+ id: string;
11
+ /**
12
+ * Name of the Entity
13
+ * For Entities backed by items, this is typically the title
14
+ */
15
+ name: string;
16
+ /**
17
+ * Simple summary of the Entity.
18
+ * For items, this is typically the `snippet` property.
19
+ */
20
+ summary?: string;
21
+ /**
22
+ * Date the entity was created
23
+ */
24
+ createdDate: Date;
25
+ /**
26
+ * Source of the creation date
27
+ */
28
+ createdDateSource: string;
29
+ /**
30
+ * Date the entity was last updated
31
+ */
32
+ updatedDate: Date;
33
+ /**
34
+ * Source of the updated date
35
+ */
36
+ updatedDateSource: string;
37
+ /**
38
+ * Type of entity
39
+ */
40
+ type: string;
41
+ }
@@ -0,0 +1,33 @@
1
+ import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
2
+ import { IRequestOptions } from "@esri/arcgis-rest-request";
3
+ /**
4
+ * Baseline CRUD+Search functions required for all Store classes
5
+ */
6
+ export interface IHubEntityManager<T> {
7
+ /**
8
+ * Create and Store a new Entity
9
+ * @param obj
10
+ * @param requestOptions
11
+ */
12
+ create(obj: T, requestOptions: IUserRequestOptions): Promise<T>;
13
+ /**
14
+ * Update an existing Entity
15
+ * @param obj
16
+ * @param requestOptions
17
+ */
18
+ update(obj: T, requestOptions: IUserRequestOptions): Promise<T>;
19
+ /**
20
+ * Destroy an Entity
21
+ * @param id
22
+ * @param requestOptions
23
+ */
24
+ destroy(id: string, requestOptions: IUserRequestOptions): Promise<void>;
25
+ /**
26
+ * Get an entity by an identifier. Implementations can handle this
27
+ * differently as needed. i.e. a HubProject can be fetched by item id (guid)
28
+ * or by a slug.
29
+ * @param identifier
30
+ * @param requestOptions
31
+ */
32
+ fetch(identifier: string, requestOptions: IRequestOptions): Promise<T>;
33
+ }
@@ -0,0 +1,10 @@
1
+ import { IHubEntityBase } from "./IHubEntityBase";
2
+ /**
3
+ * DRAFT: Under development and more properties will likely be added
4
+ * @internal
5
+ */
6
+ export interface IHubEvent extends IHubEntityBase {
7
+ location: string;
8
+ startDate: Date;
9
+ readonly owner: string;
10
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Hub Images can either be the name of a resource
3
+ * or a full url to a publicly accessible image
4
+ */
5
+ export interface IHubImage {
6
+ /**
7
+ * What type of image does this reference?
8
+ */
9
+ type: "resource" | "url";
10
+ /**
11
+ * The name of the resource, or the url
12
+ */
13
+ value: string;
14
+ }
15
+ /**
16
+ * Extends IHubImage with a resource property
17
+ * User to send an image file to a store
18
+ */
19
+ export interface IHubImageOptions extends IHubImage {
20
+ /**
21
+ * If defined, treated as a file and uploaded
22
+ * into a resource associated with an item
23
+ */
24
+ resource?: any;
25
+ }
@@ -0,0 +1,8 @@
1
+ import { IWithBannerImage } from "../traits/WithBannerImage";
2
+ import { IHubItemEntity } from "./IHubItemEntity";
3
+ /**
4
+ * DRAFT: Under development and more properties will likely be added
5
+ * @internal
6
+ */
7
+ export interface IHubInitiative extends IHubItemEntity, IWithBannerImage {
8
+ }
@@ -0,0 +1,42 @@
1
+ import { IHubEntityBase } from "./IHubEntityBase";
2
+ import { IHubGeography } from "../..";
3
+ /**
4
+ * Properties exposed by Entities that are backed by Items
5
+ */
6
+ export interface IHubItemEntity extends IHubEntityBase {
7
+ /**
8
+ * Thumbnail Uril (read-only)
9
+ */
10
+ thumbnailUrl?: string;
11
+ /**
12
+ * Username of the owner of the item
13
+ */
14
+ owner: string;
15
+ /**
16
+ * Description for the item
17
+ */
18
+ description?: string;
19
+ /**
20
+ * boundary will default to the item extent
21
+ * but can be overwritten by enrichments from the Hub API (inline)
22
+ * or fetched from a location such as /resources/boundary.json
23
+ */
24
+ boundary?: IHubGeography;
25
+ /**
26
+ * Culture code of the content
27
+ * i.e. `en-us`
28
+ */
29
+ culture?: string;
30
+ /**
31
+ * User configurable tags
32
+ */
33
+ tags: string[];
34
+ /**
35
+ * System configurable typekeywords
36
+ */
37
+ typeKeywords?: string[];
38
+ /**
39
+ * Canonical Url for the Entity
40
+ */
41
+ url?: string;
42
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * General interface for a Layout
3
+ *
4
+ * Optional header and footer are only used for
5
+ * a Hub Site
6
+ */
7
+ export interface IHubLayout {
8
+ /**
9
+ * Sections are required for all Layouts
10
+ */
11
+ sections: [Record<string, any>];
12
+ /**
13
+ * header is optional; Only used in Sites
14
+ */
15
+ header?: Record<string, any>;
16
+ /**
17
+ * footer is optional; Only used in Sites
18
+ */
19
+ footer?: Record<string, any>;
20
+ }
@@ -0,0 +1,8 @@
1
+ import { IWithLayout } from "../traits/WithLayout";
2
+ import { IHubItemEntity } from "./IHubItemEntity";
3
+ /**
4
+ * DRAFT: Under development and more properties will likely be added
5
+ * @internal
6
+ */
7
+ export interface IHubPage extends IHubItemEntity, IWithLayout {
8
+ }
@@ -0,0 +1,15 @@
1
+ import { IHubTimeline } from ".";
2
+ import { IHubItemEntity, IWithLayout, IWithSlug } from "..";
3
+ /**
4
+ * Defines the properties of a Hub Project object
5
+ */
6
+ export interface IHubProject extends IHubItemEntity, IWithSlug, IWithLayout {
7
+ /**
8
+ * Timeline for the project
9
+ */
10
+ timeline?: IHubTimeline;
11
+ /**
12
+ * Project Status
13
+ */
14
+ status: "inactive" | "active";
15
+ }
@@ -0,0 +1,11 @@
1
+ import { IWithLayout } from "../traits/WithLayout";
2
+ import { IHubItemEntity } from "./IHubItemEntity";
3
+ /**
4
+ * DRAFT: Under development and more properties will likely be added
5
+ * @internal
6
+ */
7
+ export interface IHubSite extends IHubItemEntity, IWithLayout {
8
+ header: Record<string, any>;
9
+ footer: Record<string, any>;
10
+ pages: Record<string, any>;
11
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Hub Timeline Definition
3
+ */
4
+ export interface IHubTimeline {
5
+ title: string;
6
+ description: string;
7
+ stages: IHubStage[];
8
+ }
9
+ /**
10
+ * Hub Timeline Stage
11
+ */
12
+ export interface IHubStage {
13
+ /**
14
+ * Stage identifier
15
+ */
16
+ id: number;
17
+ /**
18
+ * Stage Title
19
+ */
20
+ title: string;
21
+ /**
22
+ * Timeframe for the stage
23
+ * i.e. "Late Fall 2022"
24
+ */
25
+ timeframe: string;
26
+ /**
27
+ * Stage Description
28
+ */
29
+ description: string;
30
+ /**
31
+ * Stage status
32
+ */
33
+ status: string;
34
+ /**
35
+ * Icon Name
36
+ */
37
+ icon: string;
38
+ isEditing: boolean;
39
+ leadingElement: boolean;
40
+ trailingElement: boolean;
41
+ }
@@ -0,0 +1,23 @@
1
+ import { IUser, IPortal } from "@esri/arcgis-rest-portal";
2
+ import { IEnrichmentErrorInfo } from "../..";
3
+ export interface IItemEnrichments {
4
+ /** The portal item's data (if any) */
5
+ data?: {
6
+ [propName: string]: any;
7
+ };
8
+ /** The content's formal metadata */
9
+ metadata?: any;
10
+ /** The ids of any groups that the item belongs to */
11
+ groupIds?: string[];
12
+ /** The user that owns the item */
13
+ ownerUser?: IUser;
14
+ /**
15
+ * The owner's organization (portal) details (id, name, extent, etc)
16
+ */
17
+ org?: Partial<IPortal>;
18
+ /**
19
+ * Any errors encountered when fetching enrichments
20
+ * see https://github.com/ArcGIS/hub-indexer/blob/master/docs/errors.md#response-formatting-for-errors
21
+ */
22
+ errors?: IEnrichmentErrorInfo[];
23
+ }
@@ -0,0 +1,14 @@
1
+ export * from "./IContentEnrichments";
2
+ export * from "./IItemEnrichments";
3
+ export * from "./IHubContent";
4
+ export * from "./IHubEntityBase";
5
+ export * from "./IHubItemEntity";
6
+ export * from "./IHubEntityManager";
7
+ export * from "./IHubEvent";
8
+ export * from "./IHubImage";
9
+ export * from "./IHubInitiative";
10
+ export * from "./IHubLayout";
11
+ export * from "./IHubPage";
12
+ export * from "./IHubProject";
13
+ export * from "./IHubSite";
14
+ export * from "./IHubTimeline";
@@ -1,26 +1,31 @@
1
1
  export * from "./access";
2
2
  export * from "./api";
3
+ export * from "./ArcGISContext";
4
+ export * from "./ArcGISContextManager";
3
5
  export * from "./auth";
4
6
  export * from "./categories";
5
7
  export * from "./content";
8
+ export * from "./core";
6
9
  export * from "./downloads";
7
10
  export * from "./extent";
8
11
  export * from "./groups";
12
+ export * from "./i18n";
9
13
  export * from "./items";
14
+ export * from "./models";
10
15
  export * from "./objects";
16
+ export * from "./projects";
17
+ export * from "./request";
11
18
  export * from "./resources";
12
19
  export * from "./search";
13
20
  export * from "./sites";
21
+ export * from "./surveys";
14
22
  export * from "./types";
15
23
  export * from "./urls";
16
24
  export * from "./util";
17
25
  export * from "./utils";
18
- export * from "./i18n";
19
- export * from "./request";
20
- export * from "./surveys";
21
- export * from "./ArcGISContextManager";
22
- export * from "./ArcGISContext";
26
+ export * from "./Hub";
23
27
  import OperationStack from "./OperationStack";
24
28
  import OperationError from "./OperationError";
25
- export { OperationStack, OperationError };
29
+ import HubError from "./HubError";
30
+ export { OperationStack, OperationError, HubError };
26
31
  export { btoa, atob } from "abab";
@@ -2,13 +2,10 @@ export * from "./_unprotect-and-remove-item";
2
2
  export * from "./apply-properties-to-items";
3
3
  export * from "./delete-prop";
4
4
  export * from "./fail-safe-update";
5
- export * from "./get-model";
6
5
  export * from "./get-model-from-options";
7
6
  export * from "./interpolate";
8
7
  export * from "./interpolate-item-id";
9
- export * from "./normalize-solution-template-item";
10
8
  export * from "./replace-item-id";
11
- export * from "./serialize-model";
12
9
  export * from "./share-item-to-groups";
13
10
  export * from "./unprotect-model";
14
11
  export * from "./unshare-item-from-groups";
@@ -16,3 +13,5 @@ export * from "./does-item-exist-with-title";
16
13
  export * from "./get-unique-item-title";
17
14
  export * from "./fetch-all-pages";
18
15
  export * from "./get-structured-license";
16
+ export * from "./slugs";
17
+ export * from "./normalize-solution-template-item";
@@ -0,0 +1,43 @@
1
+ import { IRequestOptions } from "@esri/arcgis-rest-request";
2
+ import { IItem } from "@esri/arcgis-rest-types";
3
+ /**
4
+ * Create a slug, namespaced to an org
5
+ * Typically used to lookup items by a human readable name in urls
6
+ *
7
+ * @param title
8
+ * @param orgKey
9
+ * @returns
10
+ */
11
+ export declare function constructSlug(title: string, orgKey: string): string;
12
+ /**
13
+ * Adds/Updates the slug typekeyword
14
+ * Returns a new array of keywords
15
+ * @param typeKeywords
16
+ * @param slug
17
+ * @returns
18
+ */
19
+ export declare function setSlugKeyword(typeKeywords: string[], slug: string): string[];
20
+ /**
21
+ * Get an item by searching for items with a typeKeyword like `slug|{slug-value}`
22
+ *
23
+ * For example, if you pass a slug `"snow-map"` into this function, it will
24
+ * search for items with `slug|snow-map` in it's typeKeywords array,
25
+ *
26
+ * @param slug
27
+ * @param requestOptions
28
+ * @returns
29
+ */
30
+ export declare function getItemBySlug(slug: string, requestOptions: IRequestOptions): Promise<IItem>;
31
+ /**
32
+ * Given a slug, search for items using that slug, incrementing the slug name until
33
+ * a unique value is found
34
+ *
35
+ * For example, if a slug of `"snow-map"` into this function and some item exists
36
+ * with that slug, it would return `"snow-map-1"`.
37
+ *
38
+ * @param slug
39
+ * @param requestOptions
40
+ * @param step
41
+ * @returns
42
+ */
43
+ export declare function getUniqueSlug(slug: string, requestOptions: IRequestOptions, step?: number): Promise<string>;