@esri/hub-common 20.5.1 → 20.5.2

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 (278) hide show
  1. package/dist/esm/access/compareAccess.js +15 -0
  2. package/dist/esm/access/compareAccess.js.map +1 -0
  3. package/dist/esm/channels/_internal/channelEditorTypes.js +9 -0
  4. package/dist/esm/channels/_internal/channelEditorTypes.js.map +1 -0
  5. package/dist/esm/content/HubContent.js +1 -1
  6. package/dist/esm/content/HubContent.js.map +1 -1
  7. package/dist/esm/content/_internal/ContentUiSchemaSettings.js +4 -2
  8. package/dist/esm/content/_internal/ContentUiSchemaSettings.js.map +1 -1
  9. package/dist/esm/content/_internal/contentEditorTypes.js +7 -0
  10. package/dist/esm/content/_internal/contentEditorTypes.js.map +1 -0
  11. package/dist/esm/content/_internal/shouldFetchData.js +29 -0
  12. package/dist/esm/content/_internal/shouldFetchData.js.map +1 -0
  13. package/dist/esm/content/_internal/shouldShowDownloadsConfiguration.js +6 -1
  14. package/dist/esm/content/_internal/shouldShowDownloadsConfiguration.js.map +1 -1
  15. package/dist/esm/content/edit.js +11 -7
  16. package/dist/esm/content/edit.js.map +1 -1
  17. package/dist/esm/content/isSiteType.js +12 -0
  18. package/dist/esm/content/isSiteType.js.map +1 -0
  19. package/dist/esm/core/_internal/getTemplate.js +212 -0
  20. package/dist/esm/core/_internal/getTemplate.js.map +1 -0
  21. package/dist/esm/core/schemas/internal/embed/EmbedSchema.js +8 -0
  22. package/dist/esm/core/schemas/internal/embed/EmbedSchema.js.map +1 -0
  23. package/dist/esm/core/schemas/internal/embed/EmbedUiSchema.js +15 -0
  24. package/dist/esm/core/schemas/internal/embed/EmbedUiSchema.js.map +1 -0
  25. package/dist/esm/core/schemas/internal/getLayoutSetupUiSchemaElement.js +31 -0
  26. package/dist/esm/core/schemas/internal/getLayoutSetupUiSchemaElement.js.map +1 -0
  27. package/dist/esm/core/types/IServiceQueryOptions.js +1 -0
  28. package/dist/esm/core/types/IServiceQueryOptions.js.map +1 -0
  29. package/dist/esm/core/types/ServiceAggregation.js +1 -0
  30. package/dist/esm/core/types/ServiceAggregation.js.map +1 -0
  31. package/dist/esm/discussions/_internal/discussionEditorTypes.js +7 -0
  32. package/dist/esm/discussions/_internal/discussionEditorTypes.js.map +1 -0
  33. package/dist/esm/events/_internal/eventEditorTypes.js +6 -0
  34. package/dist/esm/events/_internal/eventEditorTypes.js.map +1 -0
  35. package/dist/esm/groups/_internal/groupEditorTypes.js +13 -0
  36. package/dist/esm/groups/_internal/groupEditorTypes.js.map +1 -0
  37. package/dist/esm/groups/enrichGroupSearchResult.js +61 -0
  38. package/dist/esm/groups/enrichGroupSearchResult.js.map +1 -0
  39. package/dist/esm/initiative-templates/_internal/initiativeTemplateEditorTypes.js +4 -0
  40. package/dist/esm/initiative-templates/_internal/initiativeTemplateEditorTypes.js.map +1 -0
  41. package/dist/esm/initiatives/_internal/initiativeEditorTypes.js +9 -0
  42. package/dist/esm/initiatives/_internal/initiativeEditorTypes.js.map +1 -0
  43. package/dist/esm/models/createModel.js +28 -0
  44. package/dist/esm/models/createModel.js.map +1 -0
  45. package/dist/esm/models/fetchModelFromItem.js +18 -0
  46. package/dist/esm/models/fetchModelFromItem.js.map +1 -0
  47. package/dist/esm/models/fetchModelResource.js +34 -0
  48. package/dist/esm/models/fetchModelResource.js.map +1 -0
  49. package/dist/esm/models/getModel.js +19 -0
  50. package/dist/esm/models/getModel.js.map +1 -0
  51. package/dist/esm/models/getModelBySlug.js +40 -0
  52. package/dist/esm/models/getModelBySlug.js.map +1 -0
  53. package/dist/esm/models/updateModel.js +55 -0
  54. package/dist/esm/models/updateModel.js.map +1 -0
  55. package/dist/esm/models/upsertModelResource.js +37 -0
  56. package/dist/esm/models/upsertModelResource.js.map +1 -0
  57. package/dist/esm/pages/_internal/pageEditorTypes.js +2 -0
  58. package/dist/esm/pages/_internal/pageEditorTypes.js.map +1 -0
  59. package/dist/esm/permissions/_internal/checkPlatformVersion.js +43 -0
  60. package/dist/esm/permissions/_internal/checkPlatformVersion.js.map +1 -0
  61. package/dist/esm/permissions/_internal/checkReleaseGating.js +61 -0
  62. package/dist/esm/permissions/_internal/checkReleaseGating.js.map +1 -0
  63. package/dist/esm/projects/_internal/projectEditorTypes.js +8 -0
  64. package/dist/esm/projects/_internal/projectEditorTypes.js.map +1 -0
  65. package/dist/esm/search/_internal/applyWellKnownItemPredicates.js +104 -0
  66. package/dist/esm/search/_internal/applyWellKnownItemPredicates.js.map +1 -0
  67. package/dist/esm/search/_internal/bboxStringToGeoJSONPolygon.js +28 -0
  68. package/dist/esm/search/_internal/bboxStringToGeoJSONPolygon.js.map +1 -0
  69. package/dist/esm/search/_internal/constants.js +145 -0
  70. package/dist/esm/search/_internal/constants.js.map +1 -0
  71. package/dist/esm/search/_internal/expandPredicates.js +17 -0
  72. package/dist/esm/search/_internal/expandPredicates.js.map +1 -0
  73. package/dist/esm/search/_internal/hubDiscussionsHelpers/postToSearchResult.js +28 -0
  74. package/dist/esm/search/_internal/hubDiscussionsHelpers/postToSearchResult.js.map +1 -0
  75. package/dist/esm/search/_internal/hubDiscussionsHelpers/processPostFilters.js +87 -0
  76. package/dist/esm/search/_internal/hubDiscussionsHelpers/processPostFilters.js.map +1 -0
  77. package/dist/esm/search/_internal/hubDiscussionsHelpers/processPostOptions.js +48 -0
  78. package/dist/esm/search/_internal/hubDiscussionsHelpers/processPostOptions.js.map +1 -0
  79. package/dist/esm/search/_internal/hubDiscussionsHelpers/processRelations.js +25 -0
  80. package/dist/esm/search/_internal/hubDiscussionsHelpers/processRelations.js.map +1 -0
  81. package/dist/esm/search/_internal/hubSearchPosts.js +83 -0
  82. package/dist/esm/search/_internal/hubSearchPosts.js.map +1 -0
  83. package/dist/esm/search/_internal/isFamilyExpansionType.js +20 -0
  84. package/dist/esm/search/_internal/isFamilyExpansionType.js.map +1 -0
  85. package/dist/esm/search/_internal/isWellKnownTypeFilter.js +18 -0
  86. package/dist/esm/search/_internal/isWellKnownTypeFilter.js.map +1 -0
  87. package/dist/esm/search/_internal/types.js +1 -0
  88. package/dist/esm/search/_internal/types.js.map +1 -0
  89. package/dist/esm/search/getCOrgOrEOrgId.js +17 -0
  90. package/dist/esm/search/getCOrgOrEOrgId.js.map +1 -0
  91. package/dist/esm/search/relativeDateToDateRange.js +44 -0
  92. package/dist/esm/search/relativeDateToDateRange.js.map +1 -0
  93. package/dist/esm/search/types/ICatalogSearchResponse.js +1 -0
  94. package/dist/esm/search/types/ICatalogSearchResponse.js.map +1 -0
  95. package/dist/esm/search/types/IHubSearchResponseHash.js +1 -0
  96. package/dist/esm/search/types/IHubSearchResponseHash.js.map +1 -0
  97. package/dist/esm/search/types/ISearchAssociatedContentOptions.js +1 -0
  98. package/dist/esm/search/types/ISearchAssociatedContentOptions.js.map +1 -0
  99. package/dist/esm/search/valueToMatchOptions.js +26 -0
  100. package/dist/esm/search/valueToMatchOptions.js.map +1 -0
  101. package/dist/esm/sites/_internal/removeCatalogFromUpgradedSite.js +20 -0
  102. package/dist/esm/sites/_internal/removeCatalogFromUpgradedSite.js.map +1 -0
  103. package/dist/esm/sites/_internal/removeCatalogV1FromUpgradedSite.js +20 -0
  104. package/dist/esm/sites/_internal/removeCatalogV1FromUpgradedSite.js.map +1 -0
  105. package/dist/esm/sites/_internal/siteEditorTypes.js +9 -0
  106. package/dist/esm/sites/_internal/siteEditorTypes.js.map +1 -0
  107. package/dist/esm/templates/_internal/templateEditorTypes.js +2 -0
  108. package/dist/esm/templates/_internal/templateEditorTypes.js.map +1 -0
  109. package/dist/esm/urls/feature-service-urls.js +22 -0
  110. package/dist/esm/urls/feature-service-urls.js.map +1 -0
  111. package/dist/esm/users/_internal/userEditorTypes.js +2 -0
  112. package/dist/esm/users/_internal/userEditorTypes.js.map +1 -0
  113. package/dist/node/access/compareAccess.js +19 -0
  114. package/dist/node/access/compareAccess.js.map +1 -0
  115. package/dist/node/channels/_internal/channelEditorTypes.js +12 -0
  116. package/dist/node/channels/_internal/channelEditorTypes.js.map +1 -0
  117. package/dist/node/content/HubContent.js +1 -1
  118. package/dist/node/content/HubContent.js.map +1 -1
  119. package/dist/node/content/_internal/ContentUiSchemaSettings.js +4 -2
  120. package/dist/node/content/_internal/ContentUiSchemaSettings.js.map +1 -1
  121. package/dist/node/content/_internal/contentEditorTypes.js +10 -0
  122. package/dist/node/content/_internal/contentEditorTypes.js.map +1 -0
  123. package/dist/node/content/_internal/shouldFetchData.js +32 -0
  124. package/dist/node/content/_internal/shouldFetchData.js.map +1 -0
  125. package/dist/node/content/_internal/shouldShowDownloadsConfiguration.js +6 -1
  126. package/dist/node/content/_internal/shouldShowDownloadsConfiguration.js.map +1 -1
  127. package/dist/node/content/edit.js +11 -7
  128. package/dist/node/content/edit.js.map +1 -1
  129. package/dist/node/content/isSiteType.js +16 -0
  130. package/dist/node/content/isSiteType.js.map +1 -0
  131. package/dist/node/core/_internal/getTemplate.js +216 -0
  132. package/dist/node/core/_internal/getTemplate.js.map +1 -0
  133. package/dist/node/core/schemas/internal/embed/EmbedSchema.js +11 -0
  134. package/dist/node/core/schemas/internal/embed/EmbedSchema.js.map +1 -0
  135. package/dist/node/core/schemas/internal/embed/EmbedUiSchema.js +18 -0
  136. package/dist/node/core/schemas/internal/embed/EmbedUiSchema.js.map +1 -0
  137. package/dist/node/core/schemas/internal/getLayoutSetupUiSchemaElement.js +35 -0
  138. package/dist/node/core/schemas/internal/getLayoutSetupUiSchemaElement.js.map +1 -0
  139. package/dist/node/core/types/IServiceQueryOptions.js +3 -0
  140. package/dist/node/core/types/IServiceQueryOptions.js.map +1 -0
  141. package/dist/node/core/types/ServiceAggregation.js +3 -0
  142. package/dist/node/core/types/ServiceAggregation.js.map +1 -0
  143. package/dist/node/discussions/_internal/discussionEditorTypes.js +10 -0
  144. package/dist/node/discussions/_internal/discussionEditorTypes.js.map +1 -0
  145. package/dist/node/events/_internal/eventEditorTypes.js +9 -0
  146. package/dist/node/events/_internal/eventEditorTypes.js.map +1 -0
  147. package/dist/node/groups/_internal/groupEditorTypes.js +16 -0
  148. package/dist/node/groups/_internal/groupEditorTypes.js.map +1 -0
  149. package/dist/node/groups/enrichGroupSearchResult.js +65 -0
  150. package/dist/node/groups/enrichGroupSearchResult.js.map +1 -0
  151. package/dist/node/initiative-templates/_internal/initiativeTemplateEditorTypes.js +7 -0
  152. package/dist/node/initiative-templates/_internal/initiativeTemplateEditorTypes.js.map +1 -0
  153. package/dist/node/initiatives/_internal/initiativeEditorTypes.js +12 -0
  154. package/dist/node/initiatives/_internal/initiativeEditorTypes.js.map +1 -0
  155. package/dist/node/models/createModel.js +32 -0
  156. package/dist/node/models/createModel.js.map +1 -0
  157. package/dist/node/models/fetchModelFromItem.js +22 -0
  158. package/dist/node/models/fetchModelFromItem.js.map +1 -0
  159. package/dist/node/models/fetchModelResource.js +38 -0
  160. package/dist/node/models/fetchModelResource.js.map +1 -0
  161. package/dist/node/models/getModel.js +23 -0
  162. package/dist/node/models/getModel.js.map +1 -0
  163. package/dist/node/models/getModelBySlug.js +44 -0
  164. package/dist/node/models/getModelBySlug.js.map +1 -0
  165. package/dist/node/models/updateModel.js +59 -0
  166. package/dist/node/models/updateModel.js.map +1 -0
  167. package/dist/node/models/upsertModelResource.js +41 -0
  168. package/dist/node/models/upsertModelResource.js.map +1 -0
  169. package/dist/node/pages/_internal/pageEditorTypes.js +5 -0
  170. package/dist/node/pages/_internal/pageEditorTypes.js.map +1 -0
  171. package/dist/node/permissions/_internal/checkPlatformVersion.js +47 -0
  172. package/dist/node/permissions/_internal/checkPlatformVersion.js.map +1 -0
  173. package/dist/node/permissions/_internal/checkReleaseGating.js +65 -0
  174. package/dist/node/permissions/_internal/checkReleaseGating.js.map +1 -0
  175. package/dist/node/projects/_internal/projectEditorTypes.js +11 -0
  176. package/dist/node/projects/_internal/projectEditorTypes.js.map +1 -0
  177. package/dist/node/search/_internal/applyWellKnownItemPredicates.js +108 -0
  178. package/dist/node/search/_internal/applyWellKnownItemPredicates.js.map +1 -0
  179. package/dist/node/search/_internal/bboxStringToGeoJSONPolygon.js +32 -0
  180. package/dist/node/search/_internal/bboxStringToGeoJSONPolygon.js.map +1 -0
  181. package/dist/node/search/_internal/constants.js +148 -0
  182. package/dist/node/search/_internal/constants.js.map +1 -0
  183. package/dist/node/search/_internal/expandPredicates.js +21 -0
  184. package/dist/node/search/_internal/expandPredicates.js.map +1 -0
  185. package/dist/node/search/_internal/hubDiscussionsHelpers/postToSearchResult.js +32 -0
  186. package/dist/node/search/_internal/hubDiscussionsHelpers/postToSearchResult.js.map +1 -0
  187. package/dist/node/search/_internal/hubDiscussionsHelpers/processPostFilters.js +91 -0
  188. package/dist/node/search/_internal/hubDiscussionsHelpers/processPostFilters.js.map +1 -0
  189. package/dist/node/search/_internal/hubDiscussionsHelpers/processPostOptions.js +52 -0
  190. package/dist/node/search/_internal/hubDiscussionsHelpers/processPostOptions.js.map +1 -0
  191. package/dist/node/search/_internal/hubDiscussionsHelpers/processRelations.js +29 -0
  192. package/dist/node/search/_internal/hubDiscussionsHelpers/processRelations.js.map +1 -0
  193. package/dist/node/search/_internal/hubSearchPosts.js +87 -0
  194. package/dist/node/search/_internal/hubSearchPosts.js.map +1 -0
  195. package/dist/node/search/_internal/isFamilyExpansionType.js +24 -0
  196. package/dist/node/search/_internal/isFamilyExpansionType.js.map +1 -0
  197. package/dist/node/search/_internal/isWellKnownTypeFilter.js +22 -0
  198. package/dist/node/search/_internal/isWellKnownTypeFilter.js.map +1 -0
  199. package/dist/node/search/_internal/types.js +3 -0
  200. package/dist/node/search/_internal/types.js.map +1 -0
  201. package/dist/node/search/getCOrgOrEOrgId.js +21 -0
  202. package/dist/node/search/getCOrgOrEOrgId.js.map +1 -0
  203. package/dist/node/search/relativeDateToDateRange.js +48 -0
  204. package/dist/node/search/relativeDateToDateRange.js.map +1 -0
  205. package/dist/node/search/types/ICatalogSearchResponse.js +3 -0
  206. package/dist/node/search/types/ICatalogSearchResponse.js.map +1 -0
  207. package/dist/node/search/types/IHubSearchResponseHash.js +3 -0
  208. package/dist/node/search/types/IHubSearchResponseHash.js.map +1 -0
  209. package/dist/node/search/types/ISearchAssociatedContentOptions.js +3 -0
  210. package/dist/node/search/types/ISearchAssociatedContentOptions.js.map +1 -0
  211. package/dist/node/search/valueToMatchOptions.js +30 -0
  212. package/dist/node/search/valueToMatchOptions.js.map +1 -0
  213. package/dist/node/sites/_internal/removeCatalogFromUpgradedSite.js +24 -0
  214. package/dist/node/sites/_internal/removeCatalogFromUpgradedSite.js.map +1 -0
  215. package/dist/node/sites/_internal/removeCatalogV1FromUpgradedSite.js +24 -0
  216. package/dist/node/sites/_internal/removeCatalogV1FromUpgradedSite.js.map +1 -0
  217. package/dist/node/sites/_internal/siteEditorTypes.js +12 -0
  218. package/dist/node/sites/_internal/siteEditorTypes.js.map +1 -0
  219. package/dist/node/templates/_internal/templateEditorTypes.js +5 -0
  220. package/dist/node/templates/_internal/templateEditorTypes.js.map +1 -0
  221. package/dist/node/urls/feature-service-urls.js +25 -0
  222. package/dist/node/urls/feature-service-urls.js.map +1 -0
  223. package/dist/node/users/_internal/userEditorTypes.js +5 -0
  224. package/dist/node/users/_internal/userEditorTypes.js.map +1 -0
  225. package/dist/types/access/compareAccess.d.ts +11 -0
  226. package/dist/types/channels/_internal/channelEditorTypes.d.ts +10 -0
  227. package/dist/types/content/_internal/contentEditorTypes.d.ts +2 -0
  228. package/dist/types/content/_internal/shouldFetchData.d.ts +7 -0
  229. package/dist/types/content/_internal/shouldShowDownloadsConfiguration.d.ts +3 -1
  230. package/dist/types/content/isSiteType.d.ts +7 -0
  231. package/dist/types/core/_internal/getTemplate.d.ts +9 -0
  232. package/dist/types/core/schemas/internal/embed/EmbedSchema.d.ts +2 -0
  233. package/dist/types/core/schemas/internal/embed/EmbedUiSchema.d.ts +4 -0
  234. package/dist/types/core/schemas/internal/getLayoutSetupUiSchemaElement.d.ts +10 -0
  235. package/dist/types/core/types/IServiceQueryOptions.d.ts +22 -0
  236. package/dist/types/core/types/ServiceAggregation.d.ts +4 -0
  237. package/dist/types/discussions/_internal/discussionEditorTypes.d.ts +2 -0
  238. package/dist/types/events/_internal/eventEditorTypes.d.ts +2 -0
  239. package/dist/types/groups/_internal/groupEditorTypes.d.ts +2 -0
  240. package/dist/types/groups/enrichGroupSearchResult.d.ts +11 -0
  241. package/dist/types/initiative-templates/_internal/initiativeTemplateEditorTypes.d.ts +2 -0
  242. package/dist/types/initiatives/_internal/initiativeEditorTypes.d.ts +2 -0
  243. package/dist/types/models/createModel.d.ts +10 -0
  244. package/dist/types/models/fetchModelFromItem.d.ts +10 -0
  245. package/dist/types/models/fetchModelResource.d.ts +17 -0
  246. package/dist/types/models/getModel.d.ts +8 -0
  247. package/dist/types/models/getModelBySlug.d.ts +16 -0
  248. package/dist/types/models/updateModel.d.ts +12 -0
  249. package/dist/types/models/upsertModelResource.d.ts +20 -0
  250. package/dist/types/pages/_internal/pageEditorTypes.d.ts +2 -0
  251. package/dist/types/permissions/_internal/checkPlatformVersion.d.ts +14 -0
  252. package/dist/types/permissions/_internal/checkReleaseGating.d.ts +13 -0
  253. package/dist/types/projects/_internal/projectEditorTypes.d.ts +2 -0
  254. package/dist/types/search/_internal/applyWellKnownItemPredicates.d.ts +19 -0
  255. package/dist/types/search/_internal/bboxStringToGeoJSONPolygon.d.ts +8 -0
  256. package/dist/types/search/_internal/constants.d.ts +2 -0
  257. package/dist/types/search/_internal/expandPredicates.d.ts +8 -0
  258. package/dist/types/search/_internal/hubDiscussionsHelpers/postToSearchResult.d.ts +8 -0
  259. package/dist/types/search/_internal/hubDiscussionsHelpers/processPostFilters.d.ts +8 -0
  260. package/dist/types/search/_internal/hubDiscussionsHelpers/processPostOptions.d.ts +8 -0
  261. package/dist/types/search/_internal/hubDiscussionsHelpers/processRelations.d.ts +7 -0
  262. package/dist/types/search/_internal/hubSearchPosts.d.ts +59 -0
  263. package/dist/types/search/_internal/isFamilyExpansionType.d.ts +9 -0
  264. package/dist/types/search/_internal/isWellKnownTypeFilter.d.ts +11 -0
  265. package/dist/types/search/_internal/types.d.ts +15 -0
  266. package/dist/types/search/getCOrgOrEOrgId.d.ts +8 -0
  267. package/dist/types/search/relativeDateToDateRange.d.ts +8 -0
  268. package/dist/types/search/types/ICatalogSearchResponse.d.ts +9 -0
  269. package/dist/types/search/types/IHubSearchResponseHash.d.ts +7 -0
  270. package/dist/types/search/types/ISearchAssociatedContentOptions.d.ts +32 -0
  271. package/dist/types/search/valueToMatchOptions.d.ts +8 -0
  272. package/dist/types/sites/_internal/removeCatalogFromUpgradedSite.d.ts +13 -0
  273. package/dist/types/sites/_internal/removeCatalogV1FromUpgradedSite.d.ts +13 -0
  274. package/dist/types/sites/_internal/siteEditorTypes.d.ts +2 -0
  275. package/dist/types/templates/_internal/templateEditorTypes.d.ts +2 -0
  276. package/dist/types/urls/feature-service-urls.d.ts +13 -0
  277. package/dist/types/users/_internal/userEditorTypes.d.ts +2 -0
  278. package/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ import { fetchGroupEnrichments } from "./_internal/enrichments";
2
+ import { parseInclude } from "../search/_internal/parseInclude";
3
+ import { unique } from "../util";
4
+ import { computeLinks } from "./_internal/computeLinks";
5
+ import { mapBy } from "../utils/map-by";
6
+ import { getProp } from "../objects/get-prop";
7
+ /**
8
+ * Enrich a generic search result
9
+ * @param group
10
+ * @param includes
11
+ * @param requestOptions
12
+ * @returns
13
+ */
14
+ export async function enrichGroupSearchResult(group, include, requestOptions) {
15
+ // Create the basic structure
16
+ const result = {
17
+ access: group.access,
18
+ id: group.id,
19
+ type: "Group",
20
+ name: group.title,
21
+ owner: group.owner,
22
+ summary: group.snippet || group.description,
23
+ createdDate: new Date(group.created),
24
+ createdDateSource: "group.created",
25
+ updatedDate: new Date(group.modified),
26
+ updatedDateSource: "group.modified",
27
+ family: "team",
28
+ links: {
29
+ self: "not-implemented",
30
+ siteRelative: "not-implemented",
31
+ thumbnail: "not-implemented",
32
+ },
33
+ rawResult: group,
34
+ };
35
+ // Informal Enrichments - basically adding type-specific props
36
+ // derived directly from the entity
37
+ result.isSharedUpdate = (group.capabilities || []).includes("updateitemcontrol");
38
+ result.membershipAccess = group.membershipAccess;
39
+ result.isOpenData = !!group.isOpenData;
40
+ // default includes
41
+ const DEFAULTS = [];
42
+ // merge includes
43
+ include = [...DEFAULTS, ...include].filter(unique);
44
+ // Parse the includes into a valid set of enrichments
45
+ const specs = include.map(parseInclude);
46
+ // Extract out the low-level enrichments needed
47
+ const enrichments = mapBy("enrichment", specs).filter(unique);
48
+ // fetch the enrichments
49
+ let enriched = {};
50
+ if (enrichments.length) {
51
+ enriched = await fetchGroupEnrichments(group, enrichments, requestOptions);
52
+ }
53
+ // map the enriched props onto the result
54
+ specs.forEach((spec) => {
55
+ result[spec.prop] = getProp(enriched, spec.path);
56
+ });
57
+ // Handle links
58
+ result.links = computeLinks(group, requestOptions);
59
+ return result;
60
+ }
61
+ //# sourceMappingURL=enrichGroupSearchResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichGroupSearchResult.js","sourceRoot":"","sources":["../../../src/groups/enrichGroupSearchResult.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAa,EACb,OAAiB,EACjB,cAAkC;IAElC,6BAA6B;IAC7B,MAAM,MAAM,GAAqB;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK,CAAC,KAAK;QACjB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW;QAC3C,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACpC,iBAAiB,EAAE,eAAe;QAClC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,iBAAiB,EAAE,gBAAgB;QACnC,MAAM,EAAE,MAAM;QACd,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE,iBAAiB;YAC/B,SAAS,EAAE,iBAAiB;SAC7B;QACD,SAAS,EAAE,KAAK;KACjB,CAAC;IAEF,8DAA8D;IAC9D,mCAAmC;IACnC,MAAM,CAAC,cAAc,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,QAAQ,CACzD,mBAAmB,CACpB,CAAC;IACF,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACjD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAEvC,mBAAmB;IACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,iBAAiB;IACjB,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,qDAAqD;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,+CAA+C;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9D,wBAAwB;IACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,WAAW,CAAC,MAAM,EAAE;QACtB,QAAQ,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;KAC5E;IAED,yCAAyC;IACzC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAEnD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const InitiativeTemplateEditorTypes = [
2
+ "hub:initiativeTemplate:edit",
3
+ ];
4
+ //# sourceMappingURL=initiativeTemplateEditorTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiativeTemplateEditorTypes.js","sourceRoot":"","sources":["../../../../src/initiative-templates/_internal/initiativeTemplateEditorTypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,6BAA6B;CACrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const InitiativeEditorTypes = [
2
+ "hub:initiative:edit",
3
+ "hub:initiative:create",
4
+ "hub:initiative:create2",
5
+ "hub:initiative:metrics",
6
+ "hub:initiative:associations",
7
+ "hub:initiative:settings",
8
+ ];
9
+ //# sourceMappingURL=initiativeEditorTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiativeEditorTypes.js","sourceRoot":"","sources":["../../../../src/initiatives/_internal/initiativeEditorTypes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,qBAAqB;IACrB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,6BAA6B;IAC7B,yBAAyB;CACjB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { createItem } from "../rest/portal/wrappers";
2
+ import { bboxToString } from "../extent";
3
+ import { cloneObject } from "../util";
4
+ import { getModel } from "./getModel";
5
+ /**
6
+ * Create an item to back and IModel.
7
+ *
8
+ * @param {IModel}
9
+ * @param {IRequestOptions} requestOptions
10
+ * @returns {Promise<IModel>}
11
+ */
12
+ export async function createModel(model, requestOptions) {
13
+ // const clone = cloneObject(model) as IModel;
14
+ const item = cloneObject(model.item);
15
+ item.data = cloneObject(model.data);
16
+ // Update extent from bbox to string
17
+ // TODO: remove below logic once rest.js is fixed.
18
+ if (item.extent && typeof item.extent !== "string") {
19
+ // THIS IS A HACK TO WORK AROUND REST.JS BUG
20
+ // and normally should never be done.
21
+ item.extent = bboxToString(item.extent);
22
+ }
23
+ // Create the item
24
+ const createResponse = await createItem(Object.assign({ item }, requestOptions));
25
+ // Re-fetch the model and return that so it has all the latest prop values
26
+ return getModel(createResponse.id, requestOptions);
27
+ }
28
+ //# sourceMappingURL=createModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createModel.js","sourceRoot":"","sources":["../../../src/models/createModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,cAAmC;IAEnC,8CAA8C;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,oCAAoC;IACpC,kDAAkD;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;QAClD,4CAA4C;QAC5C,qCAAqC;QACrC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAA0B,CAAC;KAClE;IAED,kBAAkB;IAClB,MAAM,cAAc,GAAG,MAAM,UAAU,iBACrC,IAAI,IACD,cAAc,EACjB,CAAC;IAEH,0EAA0E;IAC1E,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { getItemData } from "@esri/arcgis-rest-portal";
2
+ import { shouldFetchData } from "../content/_internal/shouldFetchData";
3
+ /**
4
+ * Given an Item, fetch the data json and return an IModel
5
+ * @param item
6
+ * @param requestOptions
7
+ * @returns
8
+ */
9
+ export async function fetchModelFromItem(item, requestOptions) {
10
+ const data = shouldFetchData(item)
11
+ ? (await getItemData(item.id, requestOptions).catch(() => null))
12
+ : null;
13
+ return {
14
+ item,
15
+ data,
16
+ };
17
+ }
18
+ //# sourceMappingURL=fetchModelFromItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchModelFromItem.js","sourceRoot":"","sources":["../../../src/models/fetchModelFromItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAW,EACX,cAA+B;IAE/B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QAChC,CAAC,CAAE,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,KAAK,CAChD,GAAS,EAAE,CAAC,IAAI,CACjB,CAA6B;QAChC,CAAC,CAAC,IAAI,CAAC;IACT,OAAO;QACL,IAAI;QACJ,IAAI;KACK,CAAC;AACd,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { getItemResource, } from "@esri/arcgis-rest-portal";
2
+ import { failSafe } from "../utils/fail-safe";
3
+ /**
4
+ * Given an item, and a list of resource name/prop pairs,
5
+ * fetch the resources and return as an object for the IModel
6
+ *
7
+ * @export
8
+ * @param {IItem} item
9
+ * @param {{
10
+ * [key: string]: string
11
+ * }} resourceNamePairs
12
+ * @param {IRequestOptions} requestOptions
13
+ * @return {*} {Promise<Record<string, any>>}
14
+ */
15
+ // we should actually resolve this lint error
16
+ // eslint-disable-next-line @typescript-eslint/require-await
17
+ export async function fetchModelResources(item, resourceNamePairs, requestOptions) {
18
+ // Iterate through the resource name/prop pairs and fetch the resources
19
+ return Object.entries(resourceNamePairs).reduce(async (acc, [key, value]) => {
20
+ // failsafe to prevent errors returns falsy if error
21
+ const failSafeGetResource = failSafe(getItemResource, null);
22
+ // get the resource
23
+ const resp = await failSafeGetResource(item.id, Object.assign({ fileName: value,
24
+ // Must be "arrayBuffer" | "blob" | "formData" | "json" | "text";
25
+ readAs: value.split(".").pop() }, requestOptions));
26
+ // if the failsafe succeeds
27
+ if (resp) {
28
+ // Update the acc with the prop and resource
29
+ acc[key] = resp;
30
+ }
31
+ return acc;
32
+ }, {});
33
+ }
34
+ //# sourceMappingURL=fetchModelResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchModelResource.js","sourceRoot":"","sources":["../../../src/models/fetchModelResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAEhB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,6CAA6C;AAC7C,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAW,EACX,iBAEC,EACD,cAA+B;IAE/B,uEAAuE;IACvE,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAC7C,KAAK,EAAE,GAAwB,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC/C,oDAAoD;QACpD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC5D,mBAAmB;QACnB,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,EAAE,kBAC5C,QAAQ,EAAE,KAAK;YACf,iEAAiE;YACjE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAyB,IAClD,cAAc,EACjB,CAAC;QACH,2BAA2B;QAC3B,IAAI,IAAI,EAAE;YACR,4CAA4C;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;SACjB;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { getItem, getItemData } from "@esri/arcgis-rest-portal";
2
+ /**
3
+ * Gets the full item/data model for an item id
4
+ * @param {string} id
5
+ * @param {Object} requestOptions
6
+ */
7
+ export function getModel(id, requestOptions) {
8
+ return Promise.all([
9
+ getItem(id, requestOptions),
10
+ getItemData(id, requestOptions),
11
+ ]).then((result) => {
12
+ // shape this into a model
13
+ return {
14
+ item: result[0],
15
+ data: result[1],
16
+ };
17
+ });
18
+ }
19
+ //# sourceMappingURL=getModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getModel.js","sourceRoot":"","sources":["../../../src/models/getModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAS,MAAM,0BAA0B,CAAC;AAIvE;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAU,EACV,cAA+B;IAE/B,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC;QAC3B,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC;KAChC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAoB,EAAE,EAAE;QAC/B,0BAA0B;QAC1B,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { getItemData } from "@esri/arcgis-rest-portal";
2
+ import { getItemBySlug } from "../items/slugs";
3
+ /**
4
+ * Get a model by it's slug
5
+ *
6
+ * This uses the [Filter](https://developers.arcgis.com/rest/users-groups-and-items/search-reference.htm) option of the
7
+ * to search for an item that has a typekeyword of `slug|{slug-value}`
8
+ *
9
+ * This is useful for applications that want to use human-readable urls instead
10
+ * of using item ids.
11
+ *
12
+ * @param slug
13
+ * @param requestOptions
14
+ * @returns
15
+ */
16
+ export function getModelBySlug(slug, requestOptions) {
17
+ return getItemBySlug(slug, requestOptions)
18
+ .then((item) => {
19
+ const prms = [Promise.resolve(item)];
20
+ if (item) {
21
+ prms.push(getItemData(item.id, requestOptions));
22
+ }
23
+ else {
24
+ prms.push(Promise.resolve(null));
25
+ }
26
+ return Promise.all(prms);
27
+ })
28
+ .then((result) => {
29
+ if (result[0]) {
30
+ return {
31
+ item: result[0],
32
+ data: result[1],
33
+ };
34
+ }
35
+ else {
36
+ return null;
37
+ }
38
+ });
39
+ }
40
+ //# sourceMappingURL=getModelBySlug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getModelBySlug.js","sourceRoot":"","sources":["../../../src/models/getModelBySlug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,cAA+B;IAE/B,OAAO,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC;SACvC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;SACjD;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SAClC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,MAAa,EAAE,EAAE;QACtB,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACb,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;aAChB,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { getItem } from "@esri/arcgis-rest-portal";
2
+ import { bboxToString } from "../extent";
3
+ import { cloneObject } from "../util";
4
+ import { getModel } from "./getModel";
5
+ import { updateItem } from "../rest/portal/wrappers";
6
+ /**
7
+ * Update an IModel. Generic function that will be used across all
8
+ * type-specific update functions
9
+ *
10
+ * @export
11
+ * @param {IModel} "model" object (i.e. `{item:{...}, data:{...}}`)
12
+ * @param {IRequestOptions} requestOptions
13
+ * @returns {Promise<IModel>}
14
+ */
15
+ export function updateModel(model, requestOptions) {
16
+ // const clone = cloneObject(model);
17
+ const item = cloneObject(model.item);
18
+ item.data = cloneObject(model.data);
19
+ // Update extent from bbox to string
20
+ // TODO: remove below logic once rest.js is fixed.
21
+ if (item.extent && typeof item.extent !== "string") {
22
+ // THIS IS A HACK TO WORK AROUND REST.JS BUG
23
+ // and normally should never be done.
24
+ item.extent = bboxToString(item.extent);
25
+ }
26
+ // If we have a field we are trying to clear (by making it an empty string like description / snippet)
27
+ // We need to send clearEmptyFields: true to the updateItem call
28
+ if (shouldClearEmptyFields(item)) {
29
+ requestOptions.params = Object.assign(Object.assign({}, requestOptions.params), { clearEmptyFields: true });
30
+ }
31
+ const opts = Object.assign({ item }, requestOptions);
32
+ return updateItem(opts).then(() => {
33
+ // To ensure we have the exact modified timestamp, we need to
34
+ // get the item again
35
+ // Also, we can't just call getModel because we need to be able
36
+ // to properly handle other types like PDFs that don't have JSON data
37
+ return item.data
38
+ ? getModel(item.id, requestOptions)
39
+ : getItem(item.id, requestOptions).then((i) => ({ item: i }));
40
+ // // update the modified prop
41
+ // // this won't be exact, but it will be very close
42
+ // clone.item.modified = new Date().getTime();
43
+ // return clone;
44
+ });
45
+ }
46
+ /**
47
+ * Given an Item, determine if there are any fields to be cleared
48
+ *
49
+ * @param {IItem} item
50
+ * @return {*} boolean
51
+ */
52
+ function shouldClearEmptyFields(item) {
53
+ return ["description", "snippet", "tags", "categories", "licenseInfo"].some((field) => { var _a; return item[field] === "" || ((_a = item[field]) === null || _a === void 0 ? void 0 : _a.length) === 0; });
54
+ }
55
+ //# sourceMappingURL=updateModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateModel.js","sourceRoot":"","sources":["../../../src/models/updateModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA6B,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,cAAmC;IAEnC,oCAAoC;IACpC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,oCAAoC;IACpC,kDAAkD;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;QAClD,4CAA4C;QAC5C,qCAAqC;QACrC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAA0B,CAAC;KAClE;IAED,sGAAsG;IACtG,gEAAgE;IAChE,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;QAChC,cAAc,CAAC,MAAM,mCAChB,cAAc,CAAC,MAAM,KACxB,gBAAgB,EAAE,IAAI,GACvB,CAAC;KACH;IAED,MAAM,IAAI,mBACR,IAAI,IACD,cAAc,CAClB,CAAC;IAEF,OAAO,UAAU,CAAC,IAA0B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACtD,6DAA6D;QAC7D,qBAAqB;QACrB,+DAA+D;QAC/D,qEAAqE;QACrE,OAAO,IAAI,CAAC,IAAI;YACd,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;YACnC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,8BAA8B;QAC9B,oDAAoD;QACpD,8CAA8C;QAC9C,gBAAgB;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,IAAW;IACzC,OAAO,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,IAAI,CACzE,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,OAAA,IAAI,CAAC,KAAK,CAAC,0CAAE,MAAM,MAAK,CAAC,CAAA,EAAA,CAC3D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { upsertResource } from "../resources/upsertResource";
2
+ /**
3
+ * Takes an IModel and an array of resources and upserts them to the
4
+ * backing item. Then searches for the resources that were upserted
5
+ * and attaches them to the model, which is returned.
6
+ *
7
+ * @export
8
+ * @param {IModel} model
9
+ * @param {Array<{
10
+ * resource: Record<string, any>;
11
+ * filename: string;
12
+ * }>} resources
13
+ * @param {IUserRequestOptions} requestOptions
14
+ * @return {*} {Promise<IModel>}
15
+ */
16
+ export async function upsertModelResources(model, resources, requestOptions) {
17
+ // Set up promises array
18
+ const upsertPromises = [];
19
+ const expectedResourceNames = [];
20
+ // loop through resources and create them
21
+ resources.forEach((value) => {
22
+ upsertPromises.push(upsertResource(model.item.id, model.item.owner, value.resource, value.filename, requestOptions));
23
+ expectedResourceNames.push(value.filename);
24
+ });
25
+ // Promise.all to wait for all resources to be created
26
+ return Promise.all(upsertPromises).then(() => {
27
+ // Create a new object with the resources
28
+ const updatedResources = resources.reduce((acc, resource) => {
29
+ // Get the property name from the resource name
30
+ const prop = resource.filename.split(".").shift();
31
+ acc[prop] = resource.resource;
32
+ return acc;
33
+ }, {});
34
+ return Object.assign({ resources: updatedResources }, model);
35
+ });
36
+ }
37
+ //# sourceMappingURL=upsertModelResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsertModelResource.js","sourceRoot":"","sources":["../../../src/models/upsertModelResource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAa,EACb,SAGE,EACF,cAAmC;IAEnC,wBAAwB;IACxB,MAAM,cAAc,GAAwB,EAAE,CAAC;IAC/C,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAC3C,yCAAyC;IACzC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;QAC/B,cAAc,CAAC,IAAI,CACjB,cAAc,CACZ,KAAK,CAAC,IAAI,CAAC,EAAE,EACb,KAAK,CAAC,IAAI,CAAC,KAAK,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,cAAc,CACf,CACF,CAAC;QACF,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,sDAAsD;IACtD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAC3C,yCAAyC;QACzC,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,QAAQ,EAAE,EAAE;YAC/D,+CAA+C;YAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,uBACE,SAAS,EAAE,gBAAgB,IACxB,KAAK,EACR;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const PageEditorTypes = ["hub:page:edit", "hub:page:create"];
2
+ //# sourceMappingURL=pageEditorTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageEditorTypes.js","sourceRoot":"","sources":["../../../../src/pages/_internal/pageEditorTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAU,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { getPolicyResponseCode } from "./getPolicyResponseCode";
2
+ /**
3
+ * Gate access based on the platform version (portal.currentVersion).
4
+ * If the currentVersion is less than the policy.platformVersion, access is denied.
5
+ * This is used to limit access to features that need to roll out with a
6
+ * specific ArcGISOnline version. This should not be used with Enterprise.
7
+ * @param policy
8
+ * @param context
9
+ * @param _entity
10
+ * @returns
11
+ */
12
+ export function checkPlatformVersion(policy, context, _entity) {
13
+ const checks = [];
14
+ // only apply if a platformVersion is specified in the policy
15
+ if (policy.platformVersion) {
16
+ // parse the currentVersion as a float (e.g. "2024.1" -> 2024.1)
17
+ // and compare to the policy.platformVersion
18
+ // which is also a float (e.g. 2024.1)
19
+ // if currentVersion < platformVersion, deny access
20
+ // e.g. currentVersion 2024.0 < platformVersion 2024.1 -> deny
21
+ // e.g. currentVersion 2024.1 >= platformVersion 2024.1 -> allow
22
+ // e.g. currentVersion 2024.2 >= platformVersion 2024.1 -> allow
23
+ const currentVersion = parseFloat(context.portal.currentVersion);
24
+ if (currentVersion < policy.platformVersion) {
25
+ checks.push({
26
+ response: "platform-version-not-met",
27
+ value: context.portal.currentVersion,
28
+ code: getPolicyResponseCode("platform-version-not-met"),
29
+ name: "Platform Version Check",
30
+ });
31
+ }
32
+ else {
33
+ checks.push({
34
+ response: "granted",
35
+ value: context.portal.currentVersion,
36
+ code: getPolicyResponseCode("granted"),
37
+ name: "Platform Version Check",
38
+ });
39
+ }
40
+ }
41
+ return checks;
42
+ }
43
+ //# sourceMappingURL=checkPlatformVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkPlatformVersion.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkPlatformVersion.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAyB,EACzB,OAAuB,EACvB,OAA6B;IAE7B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,6DAA6D;IAC7D,IAAI,MAAM,CAAC,eAAe,EAAE;QAC1B,gEAAgE;QAChE,4CAA4C;QAC5C,sCAAsC;QACtC,mDAAmD;QACnD,8DAA8D;QAC9D,gEAAgE;QAChE,gEAAgE;QAChE,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,cAAc,GAAG,MAAM,CAAC,eAAe,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,0BAA0B;gBACpC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAwB;gBAC9C,IAAI,EAAE,qBAAqB,CAAC,0BAA0B,CAAC;gBACvD,IAAI,EAAE,wBAAwB;aAC/B,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAwB;gBAC9C,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC;gBACtC,IAAI,EAAE,wBAAwB;aAC/B,CAAC,CAAC;SACJ;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { getPolicyResponseCode } from "./getPolicyResponseCode";
2
+ /**
3
+ * @internal
4
+ * Verify that the policy.releaseAfter and policy.retireAfter requirements are met.
5
+ * These checks only apply in the "production" environment.
6
+ * @param policy
7
+ * @param context
8
+ * @param entity
9
+ * @returns
10
+ */
11
+ export function checkReleaseGating(policy, context, _entity) {
12
+ const checks = [];
13
+ // if neither value is specified, we return an empty array
14
+ if (!policy.releaseAfter && !policy.retireAfter) {
15
+ return checks;
16
+ }
17
+ // We only apply release gating in the production environment
18
+ if (context.environment === "production") {
19
+ const now = new Date();
20
+ if (policy.releaseAfter) {
21
+ const releaseDate = new Date(policy.releaseAfter);
22
+ let result = "release-date-not-reached";
23
+ if (now > releaseDate) {
24
+ result = "granted";
25
+ }
26
+ const check = {
27
+ name: `feature released`,
28
+ value: policy.releaseAfter,
29
+ code: getPolicyResponseCode(result),
30
+ response: result,
31
+ };
32
+ checks.push(check);
33
+ }
34
+ if (policy.retireAfter) {
35
+ const retireDate = new Date(policy.retireAfter);
36
+ let result = "retire-date-not-reached";
37
+ if (now > retireDate) {
38
+ result = "granted";
39
+ }
40
+ const check = {
41
+ name: `feature retired`,
42
+ value: policy.retireAfter,
43
+ code: getPolicyResponseCode(result),
44
+ response: result,
45
+ };
46
+ checks.push(check);
47
+ }
48
+ }
49
+ else {
50
+ // if not in production, we always grant access
51
+ const check = {
52
+ name: `release gating only applies to production`,
53
+ value: policy.releaseAfter,
54
+ code: getPolicyResponseCode("granted"),
55
+ response: "granted",
56
+ };
57
+ checks.push(check);
58
+ }
59
+ return checks;
60
+ }
61
+ //# sourceMappingURL=checkReleaseGating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkReleaseGating.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkReleaseGating.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAyB,EACzB,OAAuB,EACvB,OAA6B;IAE7B,MAAM,MAAM,GAAG,EAAoB,CAAC;IAEpC,0DAA0D;IAC1D,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QAC/C,OAAO,MAAM,CAAC;KACf;IACD,6DAA6D;IAC7D,IAAI,OAAO,CAAC,WAAW,KAAK,YAAY,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,MAAM,GAAmB,0BAA0B,CAAC;YACxD,IAAI,GAAG,GAAG,WAAW,EAAE;gBACrB,MAAM,GAAG,SAAS,CAAC;aACpB;YACD,MAAM,KAAK,GAAiB;gBAC1B,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,MAAM,CAAC,YAAY;gBAC1B,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE,MAAM;aACjB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;QAED,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,MAAM,GAAmB,yBAAyB,CAAC;YACvD,IAAI,GAAG,GAAG,UAAU,EAAE;gBACpB,MAAM,GAAG,SAAS,CAAC;aACpB;YACD,MAAM,KAAK,GAAiB;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,MAAM,CAAC,WAAW;gBACzB,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE,MAAM;aACjB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;KACF;SAAM;QACL,+CAA+C;QAC/C,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,2CAA2C;YACjD,KAAK,EAAE,MAAM,CAAC,YAAY;YAC1B,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC;YACtC,QAAQ,EAAE,SAAS;SACpB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export const ProjectEditorTypes = [
2
+ "hub:project:create",
3
+ "hub:project:create2",
4
+ "hub:project:edit",
5
+ "hub:project:metrics",
6
+ "hub:project:settings",
7
+ ];
8
+ //# sourceMappingURL=projectEditorTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectEditorTypes.js","sourceRoot":"","sources":["../../../../src/projects/_internal/projectEditorTypes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,qBAAqB;IACrB,sBAAsB;CACd,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { cloneObject } from "../../util";
2
+ import { getFamilyTypes } from "../../content/get-family";
3
+ import { WellKnownItemPredicates } from "./constants";
4
+ import { isWellKnownTypeFilter } from "./isWellKnownTypeFilter";
5
+ import { isFamilyExpansionType } from "./isFamilyExpansionType";
6
+ /**
7
+ * Return the predicates for a well-known type
8
+ * @param key
9
+ * @returns
10
+ */
11
+ function lookupTypePredicates(key) {
12
+ return WellKnownItemPredicates[key];
13
+ }
14
+ /**
15
+ * @private
16
+ * Convert a Filter Group to expand well-known type filters
17
+ *
18
+ * The purpose of this function is to allow for the use of short-hand
19
+ * names for commonly used, complex queries.
20
+ *
21
+ * It works by looking for filters using the .type property, the value
22
+ * of which is a key in the WellKnownItemFilters hash. If found in the
23
+ * hash, the filters array of the active filterGroup is replaced with the
24
+ * filters specified in the hash.
25
+ *
26
+ * NOTE: Any other properties specified in a filter will be removed
27
+ *
28
+ * Only exported to enable extensive testing
29
+ * @param query
30
+ */
31
+ export function applyWellKnownItemPredicates(query) {
32
+ const queryClone = cloneObject(query);
33
+ // iterate the filters
34
+ queryClone.filters = queryClone.filters.map((filter) => {
35
+ // replace predicates with well-known types
36
+ let replacedPredicates = false;
37
+ filter.predicates = filter.predicates.reduce((acc, predicate) => {
38
+ // if the predicate has a well-known type
39
+ // we replace it with the set of predicates defined
40
+ // for the well-known type
41
+ if (isWellKnownTypeFilter(predicate.type)) {
42
+ const replacements = lookupTypePredicates(predicate.type);
43
+ acc = [...acc, ...replacements];
44
+ replacedPredicates = true;
45
+ }
46
+ else if (
47
+ /**
48
+ * NOTE: as of Nov. 26 2024, we have elected to start using the family types
49
+ * for a type replacement rather than the entire replacement itself. This updates
50
+ * a well-known predicate to only have type values, rather than types, typekeywords, etc etc.
51
+ * We also use the family types to replace the type values. Almost all of our current type
52
+ * replacements include typekeywords only to also retrieve old items -- i.e. having -- we need to be aware
53
+ * that by using family types, we are not including these old items in results in these cases.
54
+ *
55
+ * This clause is primarily used by custom-build catalogs using the new catalog editor.
56
+ *
57
+ * We specifically do not say that we have replaced filters here either as we want to leave the
58
+ * operator as is.
59
+ */
60
+ predicate.type &&
61
+ typeof predicate.type !== "string" &&
62
+ !Array.isArray(predicate.type)) {
63
+ // we have an IMatchOptions object, so we have to iterate over the all/any/not
64
+ Object.keys(predicate.type).forEach((key) => {
65
+ const types = predicate.type[key];
66
+ // try to reduce the array if it is an array
67
+ if (Array.isArray(types)) {
68
+ // for each type, try to replace it with the family types if it is an expansion
69
+ predicate.type[key] = types.reduce((typesAcc, type) => {
70
+ if (isFamilyExpansionType(type)) {
71
+ // we need the type keyword without the dollar sign
72
+ const family = type.slice(1);
73
+ // get the family types from the given expansion
74
+ const familyTypes = getFamilyTypes(family);
75
+ typesAcc = [...typesAcc, ...familyTypes];
76
+ }
77
+ else {
78
+ typesAcc.push(type);
79
+ }
80
+ return typesAcc;
81
+ }, []);
82
+ }
83
+ });
84
+ // keep the updated predicate
85
+ acc.push(predicate);
86
+ }
87
+ else {
88
+ // this predicate does not have a well-known type
89
+ // so we just keep it
90
+ acc.push(predicate);
91
+ }
92
+ return acc;
93
+ }, []);
94
+ if (replacedPredicates) {
95
+ // Any filter who's predicates were replaced with
96
+ // well-known predicates, needs to use "OR" to ensure
97
+ // correct query logic
98
+ filter.operation = "OR";
99
+ }
100
+ return filter;
101
+ });
102
+ return queryClone;
103
+ }
104
+ //# sourceMappingURL=applyWellKnownItemPredicates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyWellKnownItemPredicates.js","sourceRoot":"","sources":["../../../../src/search/_internal/applyWellKnownItemPredicates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,GAAyC;IAEzC,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACtC,sBAAsB;IACtB,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACrD,2CAA2C;QAC3C,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAC1C,CAAC,GAAiB,EAAE,SAAS,EAAE,EAAE;YAC/B,yCAAyC;YACzC,mDAAmD;YACnD,0BAA0B;YAC1B,IAAI,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACzC,MAAM,YAAY,GAAG,oBAAoB,CACvC,SAAS,CAAC,IAA4C,CACvD,CAAC;gBACF,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC;gBAChC,kBAAkB,GAAG,IAAI,CAAC;aAC3B;iBAAM;YACL;;;;;;;;;;;;eAYG;YACH,SAAS,CAAC,IAAI;gBACd,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;gBAClC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAC9B;gBACA,8EAA8E;gBAC9E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAElC,4CAA4C;oBAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACxB,+EAA+E;wBAC/E,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAChC,CAAC,QAAkB,EAAE,IAAY,EAAE,EAAE;4BACnC,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE;gCAC/B,mDAAmD;gCACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCAC7B,gDAAgD;gCAChD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAmB,CAAC,CAAC;gCACxD,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,WAAW,CAAC,CAAC;6BAC1C;iCAAM;gCACL,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;6BACrB;4BACD,OAAO,QAAQ,CAAC;wBAClB,CAAC,EACD,EAAE,CACH,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;gBAEH,6BAA6B;gBAC7B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrB;iBAAM;gBACL,iDAAiD;gBACjD,qBAAqB;gBACrB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrB;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;QACF,IAAI,kBAAkB,EAAE;YACtB,iDAAiD;YACjD,qDAAqD;YACrD,sBAAsB;YACtB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Given a bounding box string, e.g. "126.2274169922485, -42.559149812106845, -25.647583007805757, 83.1100826092665",
3
+ * convert it into a geojson Polygon object
4
+ * @param bbox The bounding box string
5
+ * @returns a geojson Polygon object derived from the given bounding box string
6
+ */
7
+ export function bboxStringToGeoJSONPolygon(bbox) {
8
+ const [lon1, lat1, lon2, lat2] = bbox
9
+ .split(",")
10
+ .map((vertex) => parseFloat(vertex.trim()));
11
+ const minLon = Math.min(lon1, lon2);
12
+ const minLat = Math.min(lat1, lat2);
13
+ const maxLon = Math.max(lon1, lon2);
14
+ const maxLat = Math.max(lat1, lat2);
15
+ return {
16
+ type: "Polygon",
17
+ coordinates: [
18
+ [
19
+ [minLon, minLat],
20
+ [maxLon, minLat],
21
+ [maxLon, maxLat],
22
+ [minLon, maxLat],
23
+ [minLon, minLat],
24
+ ],
25
+ ],
26
+ };
27
+ }
28
+ //# sourceMappingURL=bboxStringToGeoJSONPolygon.js.map