@esri/hub-common 13.37.2 → 13.38.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 (234) hide show
  1. package/dist/esm/ArcGISContext.js +31 -0
  2. package/dist/esm/ArcGISContext.js.map +1 -1
  3. package/dist/esm/ArcGISContextManager.js +44 -0
  4. package/dist/esm/ArcGISContextManager.js.map +1 -1
  5. package/dist/esm/capabilities/_internal/checkCapabilityAccess.js +2 -0
  6. package/dist/esm/capabilities/_internal/checkCapabilityAccess.js.map +1 -1
  7. package/dist/esm/capabilities/checkCapability.js +2 -0
  8. package/dist/esm/capabilities/checkCapability.js.map +1 -1
  9. package/dist/esm/capabilities/getWorkspaceCapabilities.js +3 -1
  10. package/dist/esm/capabilities/getWorkspaceCapabilities.js.map +1 -1
  11. package/dist/esm/capabilities/processEntityCapabilities.js +2 -0
  12. package/dist/esm/capabilities/processEntityCapabilities.js.map +1 -1
  13. package/dist/esm/content/_internal/ContentBusinessRules.js +6 -6
  14. package/dist/esm/content/_internal/ContentBusinessRules.js.map +1 -1
  15. package/dist/esm/content/_internal/getPropertyMap.js +1 -0
  16. package/dist/esm/content/_internal/getPropertyMap.js.map +1 -1
  17. package/dist/esm/core/EntityEditor.js +4 -0
  18. package/dist/esm/core/EntityEditor.js.map +1 -1
  19. package/dist/esm/core/HubItemEntity.js +3 -0
  20. package/dist/esm/core/HubItemEntity.js.map +1 -1
  21. package/dist/esm/core/_internal/getBasePropertyMap.js +1 -0
  22. package/dist/esm/core/_internal/getBasePropertyMap.js.map +1 -1
  23. package/dist/esm/core/schemas/getEntityEditorSchemas.js +7 -0
  24. package/dist/esm/core/schemas/getEntityEditorSchemas.js.map +1 -1
  25. package/dist/esm/core/schemas/internal/getEditorConfigOptions.js +6 -0
  26. package/dist/esm/core/schemas/internal/getEditorConfigOptions.js.map +1 -1
  27. package/dist/esm/core/schemas/internal/getEntityEditorSchemas.js +7 -0
  28. package/dist/esm/core/schemas/internal/getEntityEditorSchemas.js.map +1 -1
  29. package/dist/esm/core/schemas/types.js +2 -0
  30. package/dist/esm/core/schemas/types.js.map +1 -1
  31. package/dist/esm/core/types/ISystemStatus.js +20 -0
  32. package/dist/esm/core/types/ISystemStatus.js.map +1 -1
  33. package/dist/esm/core/types/index.js +1 -0
  34. package/dist/esm/core/types/index.js.map +1 -1
  35. package/dist/esm/discussions/_internal/DiscussionBusinessRules.js +11 -4
  36. package/dist/esm/discussions/_internal/DiscussionBusinessRules.js.map +1 -1
  37. package/dist/esm/groups/HubGroup.js +78 -0
  38. package/dist/esm/groups/HubGroup.js.map +1 -1
  39. package/dist/esm/groups/HubGroups.js +2 -36
  40. package/dist/esm/groups/HubGroups.js.map +1 -1
  41. package/dist/esm/groups/_internal/GroupBusinessRules.js +12 -6
  42. package/dist/esm/groups/_internal/GroupBusinessRules.js.map +1 -1
  43. package/dist/esm/groups/_internal/GroupSchema.js +17 -0
  44. package/dist/esm/groups/_internal/GroupSchema.js.map +1 -0
  45. package/dist/esm/groups/_internal/GroupUiSchemaEdit.js +58 -0
  46. package/dist/esm/groups/_internal/GroupUiSchemaEdit.js.map +1 -0
  47. package/dist/esm/groups/_internal/convertGroupToHubGroup.js +14 -0
  48. package/dist/esm/groups/_internal/convertGroupToHubGroup.js.map +1 -0
  49. package/dist/esm/groups/_internal/convertHubGroupToGroup.js +26 -0
  50. package/dist/esm/groups/_internal/convertHubGroupToGroup.js.map +1 -0
  51. package/dist/esm/groups/deleteGroupThumbnail.js +14 -0
  52. package/dist/esm/groups/deleteGroupThumbnail.js.map +1 -0
  53. package/dist/esm/groups/setGroupThumbnail.js +32 -0
  54. package/dist/esm/groups/setGroupThumbnail.js.map +1 -0
  55. package/dist/esm/initiatives/_internal/InitiativeBusinessRules.js +36 -8
  56. package/dist/esm/initiatives/_internal/InitiativeBusinessRules.js.map +1 -1
  57. package/dist/esm/initiatives/_internal/computeProps.js +8 -2
  58. package/dist/esm/initiatives/_internal/computeProps.js.map +1 -1
  59. package/dist/esm/initiatives/defaults.js +2 -0
  60. package/dist/esm/initiatives/defaults.js.map +1 -1
  61. package/dist/esm/pages/_internal/PageBusinessRules.js +17 -11
  62. package/dist/esm/pages/_internal/PageBusinessRules.js.map +1 -1
  63. package/dist/esm/pages/_internal/computeProps.js +9 -2
  64. package/dist/esm/pages/_internal/computeProps.js.map +1 -1
  65. package/dist/esm/permissions/_internal/checkAlphaGating.js +3 -1
  66. package/dist/esm/permissions/_internal/checkAlphaGating.js.map +1 -1
  67. package/dist/esm/permissions/_internal/checkAvailability.js +46 -0
  68. package/dist/esm/permissions/_internal/checkAvailability.js.map +1 -0
  69. package/dist/esm/permissions/_internal/checkEntityFeature.js +26 -0
  70. package/dist/esm/permissions/_internal/checkEntityFeature.js.map +1 -0
  71. package/dist/esm/permissions/_internal/checkEnvironment.js +28 -0
  72. package/dist/esm/permissions/_internal/checkEnvironment.js.map +1 -0
  73. package/dist/esm/permissions/_internal/checkParents.js +23 -0
  74. package/dist/esm/permissions/_internal/checkParents.js.map +1 -0
  75. package/dist/esm/permissions/_internal/checkServiceStatus.js +24 -0
  76. package/dist/esm/permissions/_internal/checkServiceStatus.js.map +1 -0
  77. package/dist/esm/permissions/_internal/getPolicyResponseCode.js +8 -0
  78. package/dist/esm/permissions/_internal/getPolicyResponseCode.js.map +1 -1
  79. package/dist/esm/permissions/_internal/processEntityFeatures.js +26 -0
  80. package/dist/esm/permissions/_internal/processEntityFeatures.js.map +1 -0
  81. package/dist/esm/permissions/checkPermission.js +10 -0
  82. package/dist/esm/permissions/checkPermission.js.map +1 -1
  83. package/dist/esm/projects/_internal/ProjectBusinessRules.js +37 -11
  84. package/dist/esm/projects/_internal/ProjectBusinessRules.js.map +1 -1
  85. package/dist/esm/projects/_internal/computeProps.js +8 -2
  86. package/dist/esm/projects/_internal/computeProps.js.map +1 -1
  87. package/dist/esm/projects/defaults.js +2 -0
  88. package/dist/esm/projects/defaults.js.map +1 -1
  89. package/dist/esm/sites/_internal/SiteBusinessRules.js +37 -8
  90. package/dist/esm/sites/_internal/SiteBusinessRules.js.map +1 -1
  91. package/dist/esm/sites/_internal/computeProps.js +8 -2
  92. package/dist/esm/sites/_internal/computeProps.js.map +1 -1
  93. package/dist/esm/sites/defaults.js +2 -0
  94. package/dist/esm/sites/defaults.js.map +1 -1
  95. package/dist/esm/utils/getEnvironmentFromPortalUrl.js +20 -0
  96. package/dist/esm/utils/getEnvironmentFromPortalUrl.js.map +1 -0
  97. package/dist/esm/utils/index.js +1 -0
  98. package/dist/esm/utils/index.js.map +1 -1
  99. package/dist/node/ArcGISContext.js +31 -0
  100. package/dist/node/ArcGISContext.js.map +1 -1
  101. package/dist/node/ArcGISContextManager.js +44 -0
  102. package/dist/node/ArcGISContextManager.js.map +1 -1
  103. package/dist/node/capabilities/_internal/checkCapabilityAccess.js +2 -0
  104. package/dist/node/capabilities/_internal/checkCapabilityAccess.js.map +1 -1
  105. package/dist/node/capabilities/checkCapability.js +2 -0
  106. package/dist/node/capabilities/checkCapability.js.map +1 -1
  107. package/dist/node/capabilities/getWorkspaceCapabilities.js +3 -1
  108. package/dist/node/capabilities/getWorkspaceCapabilities.js.map +1 -1
  109. package/dist/node/capabilities/processEntityCapabilities.js +2 -0
  110. package/dist/node/capabilities/processEntityCapabilities.js.map +1 -1
  111. package/dist/node/content/_internal/ContentBusinessRules.js +6 -6
  112. package/dist/node/content/_internal/ContentBusinessRules.js.map +1 -1
  113. package/dist/node/content/_internal/getPropertyMap.js +1 -0
  114. package/dist/node/content/_internal/getPropertyMap.js.map +1 -1
  115. package/dist/node/core/EntityEditor.js +4 -0
  116. package/dist/node/core/EntityEditor.js.map +1 -1
  117. package/dist/node/core/HubItemEntity.js +3 -0
  118. package/dist/node/core/HubItemEntity.js.map +1 -1
  119. package/dist/node/core/_internal/getBasePropertyMap.js +1 -0
  120. package/dist/node/core/_internal/getBasePropertyMap.js.map +1 -1
  121. package/dist/node/core/schemas/getEntityEditorSchemas.js +7 -0
  122. package/dist/node/core/schemas/getEntityEditorSchemas.js.map +1 -1
  123. package/dist/node/core/schemas/internal/getEditorConfigOptions.js +6 -0
  124. package/dist/node/core/schemas/internal/getEditorConfigOptions.js.map +1 -1
  125. package/dist/node/core/schemas/internal/getEntityEditorSchemas.js +7 -0
  126. package/dist/node/core/schemas/internal/getEntityEditorSchemas.js.map +1 -1
  127. package/dist/node/core/schemas/types.js +2 -0
  128. package/dist/node/core/schemas/types.js.map +1 -1
  129. package/dist/node/core/types/ISystemStatus.js +22 -1
  130. package/dist/node/core/types/ISystemStatus.js.map +1 -1
  131. package/dist/node/core/types/index.js +1 -0
  132. package/dist/node/core/types/index.js.map +1 -1
  133. package/dist/node/discussions/_internal/DiscussionBusinessRules.js +11 -4
  134. package/dist/node/discussions/_internal/DiscussionBusinessRules.js.map +1 -1
  135. package/dist/node/groups/HubGroup.js +78 -0
  136. package/dist/node/groups/HubGroup.js.map +1 -1
  137. package/dist/node/groups/HubGroups.js +6 -40
  138. package/dist/node/groups/HubGroups.js.map +1 -1
  139. package/dist/node/groups/_internal/GroupBusinessRules.js +12 -6
  140. package/dist/node/groups/_internal/GroupBusinessRules.js.map +1 -1
  141. package/dist/node/groups/_internal/GroupSchema.js +20 -0
  142. package/dist/node/groups/_internal/GroupSchema.js.map +1 -0
  143. package/dist/node/groups/_internal/GroupUiSchemaEdit.js +61 -0
  144. package/dist/node/groups/_internal/GroupUiSchemaEdit.js.map +1 -0
  145. package/dist/node/groups/_internal/convertGroupToHubGroup.js +18 -0
  146. package/dist/node/groups/_internal/convertGroupToHubGroup.js.map +1 -0
  147. package/dist/node/groups/_internal/convertHubGroupToGroup.js +30 -0
  148. package/dist/node/groups/_internal/convertHubGroupToGroup.js.map +1 -0
  149. package/dist/node/groups/deleteGroupThumbnail.js +18 -0
  150. package/dist/node/groups/deleteGroupThumbnail.js.map +1 -0
  151. package/dist/node/groups/setGroupThumbnail.js +36 -0
  152. package/dist/node/groups/setGroupThumbnail.js.map +1 -0
  153. package/dist/node/initiatives/_internal/InitiativeBusinessRules.js +37 -9
  154. package/dist/node/initiatives/_internal/InitiativeBusinessRules.js.map +1 -1
  155. package/dist/node/initiatives/_internal/computeProps.js +7 -1
  156. package/dist/node/initiatives/_internal/computeProps.js.map +1 -1
  157. package/dist/node/initiatives/defaults.js +2 -0
  158. package/dist/node/initiatives/defaults.js.map +1 -1
  159. package/dist/node/pages/_internal/PageBusinessRules.js +18 -12
  160. package/dist/node/pages/_internal/PageBusinessRules.js.map +1 -1
  161. package/dist/node/pages/_internal/computeProps.js +8 -1
  162. package/dist/node/pages/_internal/computeProps.js.map +1 -1
  163. package/dist/node/permissions/_internal/checkAlphaGating.js +3 -1
  164. package/dist/node/permissions/_internal/checkAlphaGating.js.map +1 -1
  165. package/dist/node/permissions/_internal/checkAvailability.js +50 -0
  166. package/dist/node/permissions/_internal/checkAvailability.js.map +1 -0
  167. package/dist/node/permissions/_internal/checkEntityFeature.js +30 -0
  168. package/dist/node/permissions/_internal/checkEntityFeature.js.map +1 -0
  169. package/dist/node/permissions/_internal/checkEnvironment.js +32 -0
  170. package/dist/node/permissions/_internal/checkEnvironment.js.map +1 -0
  171. package/dist/node/permissions/_internal/checkParents.js +27 -0
  172. package/dist/node/permissions/_internal/checkParents.js.map +1 -0
  173. package/dist/node/permissions/_internal/checkServiceStatus.js +28 -0
  174. package/dist/node/permissions/_internal/checkServiceStatus.js.map +1 -0
  175. package/dist/node/permissions/_internal/getPolicyResponseCode.js +8 -0
  176. package/dist/node/permissions/_internal/getPolicyResponseCode.js.map +1 -1
  177. package/dist/node/permissions/_internal/processEntityFeatures.js +30 -0
  178. package/dist/node/permissions/_internal/processEntityFeatures.js.map +1 -0
  179. package/dist/node/permissions/checkPermission.js +10 -0
  180. package/dist/node/permissions/checkPermission.js.map +1 -1
  181. package/dist/node/projects/_internal/ProjectBusinessRules.js +38 -12
  182. package/dist/node/projects/_internal/ProjectBusinessRules.js.map +1 -1
  183. package/dist/node/projects/_internal/computeProps.js +7 -1
  184. package/dist/node/projects/_internal/computeProps.js.map +1 -1
  185. package/dist/node/projects/defaults.js +2 -0
  186. package/dist/node/projects/defaults.js.map +1 -1
  187. package/dist/node/sites/_internal/SiteBusinessRules.js +38 -9
  188. package/dist/node/sites/_internal/SiteBusinessRules.js.map +1 -1
  189. package/dist/node/sites/_internal/computeProps.js +7 -1
  190. package/dist/node/sites/_internal/computeProps.js.map +1 -1
  191. package/dist/node/sites/defaults.js +2 -0
  192. package/dist/node/sites/defaults.js.map +1 -1
  193. package/dist/node/utils/getEnvironmentFromPortalUrl.js +24 -0
  194. package/dist/node/utils/getEnvironmentFromPortalUrl.js.map +1 -0
  195. package/dist/node/utils/index.js +1 -0
  196. package/dist/node/utils/index.js.map +1 -1
  197. package/dist/types/ArcGISContext.d.ts +37 -4
  198. package/dist/types/ArcGISContextManager.d.ts +8 -2
  199. package/dist/types/capabilities/getWorkspaceCapabilities.d.ts +1 -1
  200. package/dist/types/content/_internal/ContentBusinessRules.d.ts +3 -0
  201. package/dist/types/content/_internal/internalContentUtils.d.ts +2 -1
  202. package/dist/types/core/HubItemEntity.d.ts +1 -0
  203. package/dist/types/core/behaviors/IWithPermissionBehavior.d.ts +3 -0
  204. package/dist/types/core/schemas/types.d.ts +1 -1
  205. package/dist/types/core/traits/IWithPermissions.d.ts +9 -1
  206. package/dist/types/core/types/IHubGroup.d.ts +16 -2
  207. package/dist/types/core/types/IHubItemEntity.d.ts +4 -0
  208. package/dist/types/core/types/ISystemStatus.d.ts +17 -0
  209. package/dist/types/core/types/index.d.ts +1 -0
  210. package/dist/types/discussions/_internal/DiscussionBusinessRules.d.ts +3 -1
  211. package/dist/types/groups/HubGroup.d.ts +20 -2
  212. package/dist/types/groups/_internal/GroupBusinessRules.d.ts +3 -1
  213. package/dist/types/groups/_internal/GroupSchema.d.ts +7 -0
  214. package/dist/types/groups/_internal/GroupUiSchemaEdit.d.ts +7 -0
  215. package/dist/types/groups/_internal/convertGroupToHubGroup.d.ts +9 -0
  216. package/dist/types/groups/_internal/convertHubGroupToGroup.d.ts +7 -0
  217. package/dist/types/groups/deleteGroupThumbnail.d.ts +9 -0
  218. package/dist/types/groups/setGroupThumbnail.d.ts +9 -0
  219. package/dist/types/initiatives/_internal/InitiativeBusinessRules.d.ts +6 -2
  220. package/dist/types/pages/_internal/PageBusinessRules.d.ts +8 -2
  221. package/dist/types/permissions/_internal/checkAlphaGating.d.ts +1 -1
  222. package/dist/types/permissions/_internal/checkAvailability.d.ts +13 -0
  223. package/dist/types/permissions/_internal/checkEntityFeature.d.ts +4 -0
  224. package/dist/types/permissions/_internal/checkEnvironment.d.ts +13 -0
  225. package/dist/types/permissions/_internal/checkParents.d.ts +12 -0
  226. package/dist/types/permissions/_internal/checkServiceStatus.d.ts +4 -0
  227. package/dist/types/permissions/_internal/processEntityFeatures.d.ts +9 -0
  228. package/dist/types/permissions/types/IPermissionPolicy.d.ts +55 -4
  229. package/dist/types/permissions/types/PolicyResponse.d.ts +1 -1
  230. package/dist/types/projects/_internal/ProjectBusinessRules.d.ts +8 -2
  231. package/dist/types/sites/_internal/SiteBusinessRules.d.ts +9 -2
  232. package/dist/types/utils/getEnvironmentFromPortalUrl.d.ts +2 -0
  233. package/dist/types/utils/index.d.ts +1 -0
  234. package/package.json +1 -1
@@ -3,6 +3,7 @@ import { IPermissionPolicy } from "../../permissions";
3
3
  /**
4
4
  * Default capabilities for a Group.
5
5
  * If not listed here, the capability will not be available
6
+ * TODO: Remove capabilities
6
7
  * @private
7
8
  */
8
9
  export declare const GroupDefaultCapabilities: EntityCapabilities;
@@ -10,6 +11,7 @@ export declare const GroupDefaultCapabilities: EntityCapabilities;
10
11
  * List of all the Group Capability Permissions
11
12
  * These are considered Hub Business Rules and are not intended
12
13
  * to be modified by consumers
14
+ * TODO: Remove capabilities
13
15
  * @private
14
16
  */
15
17
  export declare const GroupCapabilityPermissions: ICapabilityPermission[];
@@ -18,7 +20,7 @@ export declare const GroupCapabilityPermissions: ICapabilityPermission[];
18
20
  * These define the requirements any user must meet to perform related actions
19
21
  * @private
20
22
  */
21
- export declare const GroupPermissions: readonly ["hub:group:create", "hub:group:delete", "hub:group:edit", "hub:group:view", "hub:group:owner"];
23
+ export declare const GroupPermissions: readonly ["hub:group", "hub:group:create", "hub:group:delete", "hub:group:edit", "hub:group:view", "hub:group:owner"];
22
24
  /**
23
25
  * Group permission policies
24
26
  * @private
@@ -0,0 +1,7 @@
1
+ import { IConfigurationSchema } from "../../core";
2
+ export declare type GroupEditorType = (typeof GroupEditorTypes)[number];
3
+ export declare const GroupEditorTypes: readonly ["hub:group:edit"];
4
+ /**
5
+ * Defines the JSON schema for a Hub Group's editable fields
6
+ */
7
+ export declare const GroupSchema: IConfigurationSchema;
@@ -0,0 +1,7 @@
1
+ import { IUiSchema } from "../../core";
2
+ /**
3
+ * Complete edit uiSchema for Hub Groups - this defines
4
+ * how the schema properties should be rendered in the
5
+ * group editing experience
6
+ */
7
+ export declare const uiSchema: IUiSchema;
@@ -0,0 +1,9 @@
1
+ import { IGroup } from "@esri/arcgis-rest-types";
2
+ import { IHubGroup } from "../../core/types/IHubGroup";
3
+ import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
4
+ /**
5
+ * Convert an IGroup to a Hub Group
6
+ * @param group
7
+ * @param requestOptions
8
+ */
9
+ export declare function convertGroupToHubGroup(group: IGroup, requestOptions: IUserRequestOptions): IHubGroup;
@@ -0,0 +1,7 @@
1
+ import { IGroup } from "@esri/arcgis-rest-types";
2
+ import { IHubGroup } from "../../core/types/IHubGroup";
3
+ /**
4
+ * Convert a Hub Group to an IGroup
5
+ * @param hubGroup
6
+ */
7
+ export declare function convertHubGroupToGroup(hubGroup: IHubGroup): IGroup;
@@ -0,0 +1,9 @@
1
+ import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
2
+ /**
3
+ * Delete a group's thumbnail
4
+ * @param id
5
+ * @param owner
6
+ * @param requestOptions
7
+ * @returns
8
+ */
9
+ export declare function deleteGroupThumbnail(id: string, requestOptions: IUserRequestOptions): Promise<any>;
@@ -0,0 +1,9 @@
1
+ import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
2
+ /**
3
+ * Upload a file to be used as the thumbnail for a group
4
+ * @param id
5
+ * @param file
6
+ * @param filename
7
+ * @param requestOptions
8
+ */
9
+ export declare function setGroupThumbnail(id: string, file: any, filename: string, requestOptions: IUserRequestOptions, owner: string): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { EntityCapabilities, ICapabilityPermission } from "../../capabilities";
2
- import { IPermissionPolicy } from "../../permissions";
2
+ import { IEntityFeatures, IPermissionPolicy } from "../../permissions";
3
3
  /**
4
4
  * Default capabilities for a Initiative. If not listed here, the capability will not be available
5
5
  * This hash is combined with the capabilities hash stored in the item data. Regardless of what
@@ -14,12 +14,16 @@ export declare const InitiativeDefaultCapabilities: EntityCapabilities;
14
14
  * @private
15
15
  */
16
16
  export declare const InitiativeCapabilityPermissions: ICapabilityPermission[];
17
+ /**
18
+ * Default features for a Initiative. These are the features that can be enabled / disabled by the entity owner
19
+ */
20
+ export declare const InitiativeDefaultFeatures: IEntityFeatures;
17
21
  /**
18
22
  * Initiative Permission Policies
19
23
  * These define the requirements any user must meet to perform related actions
20
24
  * @private
21
25
  */
22
- export declare const InitiativePermissions: readonly ["hub:initiative:create", "hub:initiative:delete", "hub:initiative:edit", "hub:initiative:view"];
26
+ export declare const InitiativePermissions: readonly ["hub:initiative", "hub:initiative:create", "hub:initiative:delete", "hub:initiative:edit", "hub:initiative:view", "hub:initiative:events", "hub:initiative:content", "hub:initiative:discussions"];
23
27
  /**
24
28
  * Initiative permission policies
25
29
  * @private
@@ -1,25 +1,31 @@
1
1
  import { EntityCapabilities, ICapabilityPermission } from "../../capabilities";
2
- import { IPermissionPolicy } from "../../permissions";
2
+ import { IEntityFeatures, IPermissionPolicy } from "../../permissions";
3
3
  /**
4
4
  * Default capabilities for a Page. If not listed here, the capability will not be available
5
5
  * This hash is combined with the capabilities hash stored in the item data. Regardless of what
6
6
  * properties are defined in the item data, only the capabilities defined here will be available
7
7
  * @private
8
+ * TODO: Remove capabilities
8
9
  */
9
10
  export declare const PageDefaultCapabilities: EntityCapabilities;
10
11
  /**
11
12
  * List of all the Page Capability Permissions
12
13
  * These are considered Hub Business Rules and are not intended
13
14
  * to be modified by consumers
15
+ * TODO: Remove capabilities
14
16
  * @private
15
17
  */
16
18
  export declare const PageCapabilityPermissions: ICapabilityPermission[];
19
+ /**
20
+ * Default features for a Project. These are the features that can be enabled / disabled by the entity owner
21
+ */
22
+ export declare const PageDefaultFeatures: IEntityFeatures;
17
23
  /**
18
24
  * Page Permission Policies
19
25
  * These define the requirements any user must meet to perform related actions
20
26
  * @private
21
27
  */
22
- export declare const PagePermissions: readonly ["hub:page:create", "hub:page:delete", "hub:page:edit", "hub:page:view"];
28
+ export declare const PagePermissions: readonly ["hub:page", "hub:page:create", "hub:page:delete", "hub:page:edit", "hub:page:view"];
23
29
  /**
24
30
  * Page permission policies
25
31
  * @private
@@ -7,4 +7,4 @@ import { IPermissionPolicy, IPolicyCheck } from "../types";
7
7
  * @param entity
8
8
  * @returns
9
9
  */
10
- export declare function checkAlphaGating(policy: IPermissionPolicy, context: IArcGISContext, entity?: Record<string, any>): IPolicyCheck[];
10
+ export declare function checkAlphaGating(policy: IPermissionPolicy, context: IArcGISContext, _entity?: Record<string, any>): IPolicyCheck[];
@@ -0,0 +1,13 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { IPermissionPolicy } from "../types/IPermissionPolicy";
3
+ import { IPolicyCheck } from "../types/IPolicyCheck";
4
+ /**
5
+ * @internal
6
+ * Verify that the policy.availability requirement is met.
7
+ * If a value is specified in the policy, the current context must be one of those values.
8
+ * @param policy
9
+ * @param context
10
+ * @param entity
11
+ * @returns
12
+ */
13
+ export declare function checkAvailability(policy: IPermissionPolicy, context: IArcGISContext, _entity?: Record<string, any>): IPolicyCheck[];
@@ -0,0 +1,4 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { IPermissionPolicy } from "../types/IPermissionPolicy";
3
+ import { IPolicyCheck } from "../types/IPolicyCheck";
4
+ export declare function checkEntityFeature(policy: IPermissionPolicy, _entitycontext: IArcGISContext, entity?: Record<string, any>): IPolicyCheck[];
@@ -0,0 +1,13 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { IPermissionPolicy } from "../types/IPermissionPolicy";
3
+ import { IPolicyCheck } from "../types/IPolicyCheck";
4
+ /**
5
+ * @internal
6
+ * Verify that the policy.environment requirement is met.
7
+ *
8
+ * @param policy
9
+ * @param context
10
+ * @param entity
11
+ * @returns
12
+ */
13
+ export declare function checkEnvironment(policy: IPermissionPolicy, context: IArcGISContext, _entity?: Record<string, any>): IPolicyCheck[];
@@ -0,0 +1,12 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { IPermissionPolicy } from "../types/IPermissionPolicy";
3
+ import { IPolicyCheck } from "../types/IPolicyCheck";
4
+ /**
5
+ * @internal
6
+ * Check the parent policies for the given policy
7
+ * @param policy
8
+ * @param context
9
+ * @param entity
10
+ * @returns
11
+ */
12
+ export declare function checkParents(policy: IPermissionPolicy, context: IArcGISContext, entity?: Record<string, any>): IPolicyCheck[];
@@ -0,0 +1,4 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { IPermissionPolicy } from "../types/IPermissionPolicy";
3
+ import { IPolicyCheck } from "../types/IPolicyCheck";
4
+ export declare function checkServiceStatus(policy: IPermissionPolicy, context: IArcGISContext, _entity?: Record<string, any>): IPolicyCheck[];
@@ -0,0 +1,9 @@
1
+ import { IEntityFeatures } from "../types/IPermissionPolicy";
2
+ /**
3
+ * Take an entity's features and merge them with the default features ensuring
4
+ * that only the featires defined in the business rules are allowed through.
5
+ * @param entityFeatures
6
+ * @param defaultFeatures
7
+ * @returns
8
+ */
9
+ export declare function processEntityFeatures(entityFeatures: IEntityFeatures, defaultFeatures: IEntityFeatures): IEntityFeatures;
@@ -1,5 +1,5 @@
1
1
  import { HubLicense } from "./HubLicense";
2
- import { HubSubsystem } from "../../core/types/ISystemStatus";
2
+ import { HubService, HubSubsystem } from "../../core/types/ISystemStatus";
3
3
  import { Permission } from "./Permission";
4
4
  import { PlatformPrivilege } from "./PlatformPrivilege";
5
5
  /**
@@ -14,9 +14,17 @@ export interface IPermissionPolicy {
14
14
  */
15
15
  permission: Permission;
16
16
  /**
17
- * What subsystems are required to be online for this permission to be granted
17
+ * Parent permissions this permission is dependent on
18
18
  */
19
- subsystems: HubSubsystem[];
19
+ dependencies?: Permission[];
20
+ /**
21
+ * DEPRECATED: What subsystems are required to be online for this permission to be granted
22
+ */
23
+ subsystems?: HubSubsystem[];
24
+ /**
25
+ * What services are required to be online for this permission to be granted
26
+ */
27
+ services?: HubService[];
20
28
  /**
21
29
  * Must the user authenticated?
22
30
  */
@@ -27,11 +35,25 @@ export interface IPermissionPolicy {
27
35
  * e.g. If a user is in a Partner "hub-basic" org, they can not create "premium" entities (e.g. Projects)
28
36
  */
29
37
  licenses?: HubLicense[];
38
+ /**
39
+ * Is this permission gated to a specific availability?
40
+ * This is used to limit access to features that are not yet available in production
41
+ */
42
+ availability?: HubAvailability[];
43
+ /**
44
+ * Is this permission gated to a specific environment? (e.g. devext, qaext)
45
+ * This is used to limit access to features that are not yet available in production
46
+ */
47
+ environments?: HubEnvironment[];
30
48
  /**
31
49
  * Any platform level privileges required for this permission to be granted
32
50
  * e.g. "portal:user:createItem"
33
51
  */
34
52
  privileges?: PlatformPrivilege[];
53
+ /**
54
+ * Can an entity provide additional conditions to further limit access?
55
+ */
56
+ entityConfigurable?: boolean;
35
57
  /**
36
58
  * Is the user an owner of the entity being accessed?
37
59
  */
@@ -41,17 +63,46 @@ export interface IPermissionPolicy {
41
63
  */
42
64
  entityOwner?: boolean;
43
65
  /**
44
- * Is this gated to alpha orgs?
66
+ * DEPRECATED: Use `gatedAvailability: "alpha"` instead
45
67
  */
46
68
  alpha?: boolean;
47
69
  /**
48
70
  * More complex policies can be defined with a set of assertions
49
71
  */
50
72
  assertions?: IPolicyAssertion[];
73
+ /**
74
+ * Value set by the feature flagging system to override the default permission behavior. This can be used to
75
+ * demo features to specific users or groups, during a specific user session.
76
+ * If `true`, the permission will be granted as long as the license and privilege requirements are met.
77
+ * If `false`, the permission will be denied for all users - typically as a means to check for graceful degradation
78
+ * if a system is offline.
79
+ */
80
+ flagValue?: boolean;
51
81
  }
82
+ /**
83
+ * Hash of features for an entity which can be used to determine if a feature is enabled for the entity
84
+ * This can be applied to any permissin, enabling a lot of flexibility in how features are described and enabled
85
+ * If the value is set to false, then the permission will alway be set to false for all users.
86
+ */
87
+ export interface IEntityFeatures extends Record<Permission, boolean> {
88
+ }
89
+ /**
90
+ * Hub Availability levels
91
+ */
92
+ export declare type HubAvailability = "alpha" | "beta" | "general";
93
+ /**
94
+ * Hub Run-time environments
95
+ */
96
+ export declare type HubEnvironment = "devext" | "qaext" | "production" | "enterprise" | "enterprise-k8s";
97
+ /**
98
+ * Assertion used to define more complex permission policies
99
+ */
52
100
  export interface IPolicyAssertion {
53
101
  property: string;
54
102
  type: AssertionType;
55
103
  value: any;
56
104
  }
105
+ /**
106
+ * Assertion types which define the comparison operation to be performed
107
+ */
57
108
  export declare type AssertionType = "eq" | "neq" | "gt" | "lt" | "contains" | "contains-all" | "without" | "included-in" | "is-group-admin" | "is-group-member" | "is-group-owner" | "starts-with" | "ends-with" | "not-starts-with" | "not-ends-with";
@@ -1,4 +1,4 @@
1
1
  /**`
2
2
  * Human readable response from a policy check
3
3
  */
4
- export declare type PolicyResponse = "granted" | "org-member" | "not-org-member" | "group-member" | "not-group-member" | "not-group-admin" | "is-user" | "not-owner" | "not-licensed" | "not-licensed-available" | "not-available" | "not-granted" | "no-edit-access" | "edit-access" | "invalid-permission" | "invalid-capability" | "privilege-required" | "system-offline" | "system-maintenance" | "entity-required" | "not-authenticated" | "not-alpha-org" | "property-missing" | "property-not-array" | "array-contains-invalid-value" | "array-missing-required-value" | "property-mismatch" | "user-not-group-member" | "user-not-group-manager" | "user-not-group-owner" | "assertion-property-not-found" | "assertion-failed" | "assertion-requires-numeric-values" | "property-match";
4
+ export declare type PolicyResponse = "granted" | "org-member" | "not-org-member" | "group-member" | "not-group-member" | "not-group-admin" | "is-user" | "not-owner" | "not-licensed" | "not-licensed-available" | "not-available" | "not-granted" | "no-edit-access" | "edit-access" | "invalid-permission" | "invalid-capability" | "privilege-required" | "system-offline" | "system-maintenance" | "service-offline" | "service-maintenance" | "service-not-available" | "entity-required" | "not-authenticated" | "not-alpha-org" | "not-beta-org" | "property-missing" | "property-not-array" | "array-contains-invalid-value" | "array-missing-required-value" | "property-mismatch" | "user-not-group-member" | "user-not-group-manager" | "user-not-group-owner" | "assertion-property-not-found" | "assertion-failed" | "assertion-requires-numeric-values" | "property-match" | "feature-disabled" | "feature-enabled" | "not-in-environment";
@@ -1,25 +1,31 @@
1
1
  import { EntityCapabilities, ICapabilityPermission } from "../../capabilities";
2
- import { IPermissionPolicy } from "../../permissions";
2
+ import { IEntityFeatures, IPermissionPolicy } from "../../permissions";
3
3
  /**
4
4
  * Default capabilities for a Project. If not listed here, the capability will not be available
5
5
  * This hash is combined with the capabilities hash stored in the item data. Regardless of what
6
6
  * properties are defined in the item data, only the capabilities defined here will be available
7
7
  * @private
8
+ * TODO: Remove capabilities
8
9
  */
9
10
  export declare const ProjectDefaultCapabilities: EntityCapabilities;
10
11
  /**
11
12
  * List of all the Project Capability Permissions
12
13
  * These are considered Hub Business Rules and are not intended
13
14
  * to be modified by consumers
15
+ * TODO: Remove capabilities
14
16
  * @private
15
17
  */
16
18
  export declare const ProjectCapabilityPermissions: ICapabilityPermission[];
19
+ /**
20
+ * Default features for a Project. These are the features that can be enabled / disabled by the entity owner
21
+ */
22
+ export declare const ProjectDefaultFeatures: IEntityFeatures;
17
23
  /**
18
24
  * Project Permission Policies
19
25
  * These define the requirements any user must meet to perform related actions
20
26
  * @private
21
27
  */
22
- export declare const ProjectPermissions: readonly ["hub:project:create", "hub:project:delete", "hub:project:edit", "hub:project:view", "hub:project:owner"];
28
+ export declare const ProjectPermissions: readonly ["hub:project", "hub:project:create", "hub:project:delete", "hub:project:edit", "hub:project:view", "hub:project:owner", "hub:project:events", "hub:project:content", "hub:project:discussions"];
23
29
  /**
24
30
  * Project permission policies
25
31
  * @private
@@ -1,6 +1,7 @@
1
1
  import { EntityCapabilities, ICapabilityPermission } from "../../capabilities";
2
- import { IPermissionPolicy } from "../../permissions/types";
2
+ import { IEntityFeatures, IPermissionPolicy } from "../../permissions/types";
3
3
  /**
4
+ * DEPRECATED
4
5
  * Default capabilities for a Site. If not listed here, the capability will not be available
5
6
  * This hash is combined with the capabilities hash stored in the item data. Regardless of what
6
7
  * properties are defined in the item data, only the capabilities defined here will be available
@@ -8,16 +9,22 @@ import { IPermissionPolicy } from "../../permissions/types";
8
9
  */
9
10
  export declare const SiteDefaultCapabilities: EntityCapabilities;
10
11
  /**
12
+ * DEPRECATED
11
13
  * List of all the Site Capability Permissions
12
14
  * These are considered Hub Business Rules and are not intended
13
15
  * to be modified by consumers
16
+ * @private
14
17
  */
15
18
  export declare const SiteCapabilityPermissions: ICapabilityPermission[];
19
+ /**
20
+ * Default features for a Site. These are the features that can be enabled / disabled by the entity owner
21
+ */
22
+ export declare const SiteDefaultFeatures: IEntityFeatures;
16
23
  /**
17
24
  * Site Permissions
18
25
  * This feeds into the Permissions type
19
26
  */
20
- export declare const SitePermissions: readonly ["hub:site:create", "hub:site:delete", "hub:site:edit", "hub:site:view"];
27
+ export declare const SitePermissions: readonly ["hub:site", "hub:site:create", "hub:site:delete", "hub:site:edit", "hub:site:view", "hub:site:owner", "hub:site:events", "hub:site:content", "hub:site:discussions"];
21
28
  /**
22
29
  * Site permission policies
23
30
  * @private
@@ -0,0 +1,2 @@
1
+ import { HubEnvironment } from "../permissions";
2
+ export declare function getEnvironmentFromPortalUrl(portalUrl: string): HubEnvironment;
@@ -21,3 +21,4 @@ export * from "./sessionLocalStorage";
21
21
  export * from "./dasherize";
22
22
  export * from "./titleize";
23
23
  export * from "./memoize";
24
+ export * from "./getEnvironmentFromPortalUrl";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esri/hub-common",
3
- "version": "13.37.2",
3
+ "version": "13.38.0",
4
4
  "description": "Common TypeScript types and utility functions for @esri/hub.js.",
5
5
  "main": "dist/node/index.js",
6
6
  "module": "dist/esm/index.js",