@esri/hub-common 11.23.1 → 12.0.0-alpha.1

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 (242) hide show
  1. package/dist/esm/ArcGISContext.js +24 -1
  2. package/dist/esm/ArcGISContext.js.map +1 -1
  3. package/dist/esm/ArcGISContextManager.js +48 -0
  4. package/dist/esm/ArcGISContextManager.js.map +1 -1
  5. package/dist/esm/content/compose.js +12 -0
  6. package/dist/esm/content/compose.js.map +1 -1
  7. package/dist/esm/core/HubItemEntity.js +39 -57
  8. package/dist/esm/core/HubItemEntity.js.map +1 -1
  9. package/dist/esm/core/_internal/PropertyMapper.js +10 -2
  10. package/dist/esm/core/_internal/PropertyMapper.js.map +1 -1
  11. package/dist/esm/core/_internal/getBasePropertyMap.js +1 -0
  12. package/dist/esm/core/_internal/getBasePropertyMap.js.map +1 -1
  13. package/dist/esm/core/behaviors/IWithPermissionBehavior.js +0 -68
  14. package/dist/esm/core/behaviors/IWithPermissionBehavior.js.map +1 -1
  15. package/dist/esm/core/fetchHubEntity.js +28 -0
  16. package/dist/esm/core/fetchHubEntity.js.map +1 -0
  17. package/dist/esm/core/getTypeFromEntity.js +26 -0
  18. package/dist/esm/core/getTypeFromEntity.js.map +1 -0
  19. package/dist/esm/core/index.js +2 -1
  20. package/dist/esm/core/index.js.map +1 -1
  21. package/dist/esm/core/types/HubEntity.js +1 -0
  22. package/dist/esm/core/types/HubEntity.js.map +1 -0
  23. package/dist/esm/core/types/HubEntityType.js +1 -0
  24. package/dist/esm/core/types/HubEntityType.js.map +1 -0
  25. package/dist/esm/core/types/ISystemStatus.js +21 -0
  26. package/dist/esm/core/types/ISystemStatus.js.map +1 -0
  27. package/dist/esm/core/types/index.js +3 -2
  28. package/dist/esm/core/types/index.js.map +1 -1
  29. package/dist/esm/index.js +1 -0
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/initiatives/HubInitiative.js +0 -13
  32. package/dist/esm/initiatives/HubInitiative.js.map +1 -1
  33. package/dist/esm/permissions/HubPermissionPolicies.js +18 -0
  34. package/dist/esm/permissions/HubPermissionPolicies.js.map +1 -0
  35. package/dist/esm/permissions/_internal/checkAuthentication.js +24 -0
  36. package/dist/esm/permissions/_internal/checkAuthentication.js.map +1 -0
  37. package/dist/esm/permissions/_internal/checkEdit.js +35 -0
  38. package/dist/esm/permissions/_internal/checkEdit.js.map +1 -0
  39. package/dist/esm/permissions/_internal/checkEntityPolicy.js +56 -0
  40. package/dist/esm/permissions/_internal/checkEntityPolicy.js.map +1 -0
  41. package/dist/esm/permissions/_internal/checkLicense.js +27 -0
  42. package/dist/esm/permissions/_internal/checkLicense.js.map +1 -0
  43. package/dist/esm/permissions/_internal/checkOwner.js +36 -0
  44. package/dist/esm/permissions/_internal/checkOwner.js.map +1 -0
  45. package/dist/esm/permissions/_internal/checkPrivileges.js +27 -0
  46. package/dist/esm/permissions/_internal/checkPrivileges.js.map +1 -0
  47. package/dist/esm/permissions/_internal/getPolicyResponseCode.js +29 -0
  48. package/dist/esm/permissions/_internal/getPolicyResponseCode.js.map +1 -0
  49. package/dist/esm/permissions/checkPermission.js +88 -0
  50. package/dist/esm/permissions/checkPermission.js.map +1 -0
  51. package/dist/esm/permissions/index.js +5 -0
  52. package/dist/esm/permissions/index.js.map +1 -0
  53. package/dist/esm/permissions/types/HubLicense.js +1 -0
  54. package/dist/esm/permissions/types/HubLicense.js.map +1 -0
  55. package/dist/esm/permissions/types/IAccessResponse.js +1 -0
  56. package/dist/esm/permissions/types/IAccessResponse.js.map +1 -0
  57. package/dist/esm/permissions/types/IEntityPermissionPolicy.js +1 -0
  58. package/dist/esm/permissions/types/IEntityPermissionPolicy.js.map +1 -0
  59. package/dist/esm/permissions/types/IPermissionPolicy.js +1 -0
  60. package/dist/esm/permissions/types/IPermissionPolicy.js.map +1 -0
  61. package/dist/esm/permissions/types/IPolicyCheck.js +1 -0
  62. package/dist/esm/permissions/types/IPolicyCheck.js.map +1 -0
  63. package/dist/esm/permissions/types/Permission.js +24 -0
  64. package/dist/esm/permissions/types/Permission.js.map +1 -0
  65. package/dist/esm/permissions/types/PlatformPrivilege.js +5 -0
  66. package/dist/esm/permissions/types/PlatformPrivilege.js.map +1 -0
  67. package/dist/esm/permissions/types/PolicyResponse.js +4 -0
  68. package/dist/esm/permissions/types/PolicyResponse.js.map +1 -0
  69. package/dist/esm/permissions/types/index.js +9 -0
  70. package/dist/esm/permissions/types/index.js.map +1 -0
  71. package/dist/esm/permissions/utils.js +26 -0
  72. package/dist/esm/permissions/utils.js.map +1 -0
  73. package/dist/esm/projects/HubProject.js +5 -14
  74. package/dist/esm/projects/HubProject.js.map +1 -1
  75. package/dist/esm/projects/_internal/ProjectPermissionPolicies.js +35 -0
  76. package/dist/esm/projects/_internal/ProjectPermissionPolicies.js.map +1 -0
  77. package/dist/esm/projects/_internal.js +43 -0
  78. package/dist/esm/projects/_internal.js.map +1 -0
  79. package/dist/esm/projects/edit.js +115 -0
  80. package/dist/esm/projects/edit.js.map +1 -0
  81. package/dist/esm/projects/fetch.js +104 -0
  82. package/dist/esm/projects/fetch.js.map +1 -0
  83. package/dist/esm/projects/index.js +2 -1
  84. package/dist/esm/projects/index.js.map +1 -1
  85. package/dist/esm/search/Catalog.js.map +1 -1
  86. package/dist/esm/sites/HubSite.js +0 -13
  87. package/dist/esm/sites/HubSite.js.map +1 -1
  88. package/dist/esm/sites/_internal/SitesPermissionPolicies.js +34 -0
  89. package/dist/esm/sites/_internal/SitesPermissionPolicies.js.map +1 -0
  90. package/dist/esm/util.js +3 -1
  91. package/dist/esm/util.js.map +1 -1
  92. package/dist/node/ArcGISContext.js +28 -5
  93. package/dist/node/ArcGISContext.js.map +1 -1
  94. package/dist/node/ArcGISContextManager.js +48 -0
  95. package/dist/node/ArcGISContextManager.js.map +1 -1
  96. package/dist/node/content/compose.js +12 -0
  97. package/dist/node/content/compose.js.map +1 -1
  98. package/dist/node/core/HubItemEntity.js +38 -56
  99. package/dist/node/core/HubItemEntity.js.map +1 -1
  100. package/dist/node/core/_internal/PropertyMapper.js +9 -1
  101. package/dist/node/core/_internal/PropertyMapper.js.map +1 -1
  102. package/dist/node/core/_internal/getBasePropertyMap.js +1 -0
  103. package/dist/node/core/_internal/getBasePropertyMap.js.map +1 -1
  104. package/dist/node/core/behaviors/IWithPermissionBehavior.js +0 -73
  105. package/dist/node/core/behaviors/IWithPermissionBehavior.js.map +1 -1
  106. package/dist/node/core/fetchHubEntity.js +32 -0
  107. package/dist/node/core/fetchHubEntity.js.map +1 -0
  108. package/dist/node/core/getTypeFromEntity.js +30 -0
  109. package/dist/node/core/getTypeFromEntity.js.map +1 -0
  110. package/dist/node/core/index.js +2 -1
  111. package/dist/node/core/index.js.map +1 -1
  112. package/dist/node/core/types/{IHubPermission.js → HubEntity.js} +1 -1
  113. package/dist/node/core/types/HubEntity.js.map +1 -0
  114. package/dist/node/core/types/HubEntityType.js +3 -0
  115. package/dist/node/core/types/HubEntityType.js.map +1 -0
  116. package/dist/node/core/types/ISystemStatus.js +25 -0
  117. package/dist/node/core/types/ISystemStatus.js.map +1 -0
  118. package/dist/node/core/types/index.js +3 -2
  119. package/dist/node/core/types/index.js.map +1 -1
  120. package/dist/node/index.js +1 -0
  121. package/dist/node/index.js.map +1 -1
  122. package/dist/node/initiatives/HubInitiative.js +0 -13
  123. package/dist/node/initiatives/HubInitiative.js.map +1 -1
  124. package/dist/node/permissions/HubPermissionPolicies.js +22 -0
  125. package/dist/node/permissions/HubPermissionPolicies.js.map +1 -0
  126. package/dist/node/permissions/_internal/checkAuthentication.js +28 -0
  127. package/dist/node/permissions/_internal/checkAuthentication.js.map +1 -0
  128. package/dist/node/permissions/_internal/checkEdit.js +39 -0
  129. package/dist/node/permissions/_internal/checkEdit.js.map +1 -0
  130. package/dist/node/permissions/_internal/checkEntityPolicy.js +60 -0
  131. package/dist/node/permissions/_internal/checkEntityPolicy.js.map +1 -0
  132. package/dist/node/permissions/_internal/checkLicense.js +31 -0
  133. package/dist/node/permissions/_internal/checkLicense.js.map +1 -0
  134. package/dist/node/permissions/_internal/checkOwner.js +40 -0
  135. package/dist/node/permissions/_internal/checkOwner.js.map +1 -0
  136. package/dist/node/permissions/_internal/checkPrivileges.js +31 -0
  137. package/dist/node/permissions/_internal/checkPrivileges.js.map +1 -0
  138. package/dist/node/permissions/_internal/getPolicyResponseCode.js +33 -0
  139. package/dist/node/permissions/_internal/getPolicyResponseCode.js.map +1 -0
  140. package/dist/node/permissions/checkPermission.js +92 -0
  141. package/dist/node/permissions/checkPermission.js.map +1 -0
  142. package/dist/node/permissions/index.js +8 -0
  143. package/dist/node/permissions/index.js.map +1 -0
  144. package/dist/node/permissions/types/HubLicense.js +3 -0
  145. package/dist/node/permissions/types/HubLicense.js.map +1 -0
  146. package/dist/node/permissions/types/IAccessResponse.js +3 -0
  147. package/dist/node/permissions/types/IAccessResponse.js.map +1 -0
  148. package/dist/node/permissions/types/IEntityPermissionPolicy.js +3 -0
  149. package/dist/node/permissions/types/IEntityPermissionPolicy.js.map +1 -0
  150. package/dist/node/permissions/types/IPermissionPolicy.js +3 -0
  151. package/dist/node/permissions/types/IPermissionPolicy.js.map +1 -0
  152. package/dist/node/permissions/types/IPolicyCheck.js +3 -0
  153. package/dist/node/permissions/types/IPolicyCheck.js.map +1 -0
  154. package/dist/node/permissions/types/Permission.js +28 -0
  155. package/dist/node/permissions/types/Permission.js.map +1 -0
  156. package/dist/node/permissions/types/PlatformPrivilege.js +7 -0
  157. package/dist/node/permissions/types/PlatformPrivilege.js.map +1 -0
  158. package/dist/node/permissions/types/PolicyResponse.js +6 -0
  159. package/dist/node/permissions/types/PolicyResponse.js.map +1 -0
  160. package/dist/node/permissions/types/index.js +12 -0
  161. package/dist/node/permissions/types/index.js.map +1 -0
  162. package/dist/node/permissions/utils.js +31 -0
  163. package/dist/node/permissions/utils.js.map +1 -0
  164. package/dist/node/projects/HubProject.js +10 -19
  165. package/dist/node/projects/HubProject.js.map +1 -1
  166. package/dist/node/projects/_internal/ProjectPermissionPolicies.js +38 -0
  167. package/dist/node/projects/_internal/ProjectPermissionPolicies.js.map +1 -0
  168. package/dist/node/projects/_internal.js +48 -0
  169. package/dist/node/projects/_internal.js.map +1 -0
  170. package/dist/node/projects/edit.js +122 -0
  171. package/dist/node/projects/edit.js.map +1 -0
  172. package/dist/node/projects/fetch.js +110 -0
  173. package/dist/node/projects/fetch.js.map +1 -0
  174. package/dist/node/projects/index.js +2 -1
  175. package/dist/node/projects/index.js.map +1 -1
  176. package/dist/node/search/Catalog.js.map +1 -1
  177. package/dist/node/sites/HubSite.js +0 -13
  178. package/dist/node/sites/HubSite.js.map +1 -1
  179. package/dist/node/sites/_internal/SitesPermissionPolicies.js +37 -0
  180. package/dist/node/sites/_internal/SitesPermissionPolicies.js.map +1 -0
  181. package/dist/node/util.js +3 -1
  182. package/dist/node/util.js.map +1 -1
  183. package/dist/types/ArcGISContext.d.ts +23 -1
  184. package/dist/types/ArcGISContextManager.d.ts +6 -1
  185. package/dist/types/content/_internal.d.ts +15 -5
  186. package/dist/types/core/HubItemEntity.d.ts +29 -4
  187. package/dist/types/core/behaviors/IWithPermissionBehavior.d.ts +23 -35
  188. package/dist/types/core/behaviors/IWithStoreBehavior.d.ts +10 -10
  189. package/dist/types/core/fetchHubEntity.d.ts +11 -0
  190. package/dist/types/core/getTypeFromEntity.d.ts +8 -0
  191. package/dist/types/core/index.d.ts +2 -1
  192. package/dist/types/core/traits/IWithPermissions.d.ts +3 -3
  193. package/dist/types/core/types/HubEntity.d.ts +5 -0
  194. package/dist/types/core/types/HubEntityType.d.ts +1 -0
  195. package/dist/types/core/types/IHubContent.d.ts +2 -1
  196. package/dist/types/core/types/IHubItemEntity.d.ts +19 -2
  197. package/dist/types/core/types/ISystemStatus.d.ts +22 -0
  198. package/dist/types/core/types/index.d.ts +3 -2
  199. package/dist/types/index.d.ts +1 -0
  200. package/dist/types/initiatives/HubInitiative.d.ts +1 -7
  201. package/dist/types/permissions/HubPermissionPolicies.d.ts +11 -0
  202. package/dist/types/permissions/_internal/checkAuthentication.d.ts +11 -0
  203. package/dist/types/permissions/_internal/checkEdit.d.ts +11 -0
  204. package/dist/types/permissions/_internal/checkEntityPolicy.d.ts +9 -0
  205. package/dist/types/permissions/_internal/checkLicense.d.ts +10 -0
  206. package/dist/types/permissions/_internal/checkOwner.d.ts +11 -0
  207. package/dist/types/permissions/_internal/checkPrivileges.d.ts +11 -0
  208. package/dist/types/permissions/_internal/getPolicyResponseCode.d.ts +7 -0
  209. package/dist/types/permissions/checkPermission.d.ts +11 -0
  210. package/dist/types/permissions/index.d.ts +4 -0
  211. package/dist/types/permissions/types/HubLicense.d.ts +4 -0
  212. package/dist/types/permissions/types/IAccessResponse.d.ts +29 -0
  213. package/dist/types/permissions/types/IEntityPermissionPolicy.d.ts +22 -0
  214. package/dist/types/permissions/types/IPermissionPolicy.d.ts +48 -0
  215. package/dist/types/permissions/types/IPolicyCheck.d.ts +25 -0
  216. package/dist/types/permissions/types/Permission.d.ts +17 -0
  217. package/dist/types/permissions/types/PlatformPrivilege.d.ts +5 -0
  218. package/dist/types/permissions/types/PolicyResponse.d.ts +4 -0
  219. package/dist/types/permissions/types/index.d.ts +8 -0
  220. package/dist/types/permissions/utils.d.ts +18 -0
  221. package/dist/types/projects/HubProject.d.ts +1 -7
  222. package/dist/types/projects/_internal/ProjectPermissionPolicies.d.ts +7 -0
  223. package/dist/types/projects/_internal.d.ts +20 -0
  224. package/dist/types/projects/{HubProjects.d.ts → edit.d.ts} +1 -29
  225. package/dist/types/projects/fetch.d.ts +30 -0
  226. package/dist/types/projects/index.d.ts +2 -1
  227. package/dist/types/sites/HubSite.d.ts +1 -7
  228. package/dist/types/sites/_internal/SitesPermissionPolicies.d.ts +6 -0
  229. package/package.json +1 -1
  230. package/dist/esm/core/PermissionManager.js +0 -60
  231. package/dist/esm/core/PermissionManager.js.map +0 -1
  232. package/dist/esm/core/types/IHubPermission.js +0 -1
  233. package/dist/esm/core/types/IHubPermission.js.map +0 -1
  234. package/dist/esm/projects/HubProjects.js +0 -248
  235. package/dist/esm/projects/HubProjects.js.map +0 -1
  236. package/dist/node/core/PermissionManager.js +0 -64
  237. package/dist/node/core/PermissionManager.js.map +0 -1
  238. package/dist/node/core/types/IHubPermission.js.map +0 -1
  239. package/dist/node/projects/HubProjects.js +0 -258
  240. package/dist/node/projects/HubProjects.js.map +0 -1
  241. package/dist/types/core/PermissionManager.d.ts +0 -43
  242. package/dist/types/core/types/IHubPermission.d.ts +0 -23
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkPermission = void 0;
4
+ const objects_1 = require("../objects");
5
+ const checkLicense_1 = require("./_internal/checkLicense");
6
+ const HubPermissionPolicies_1 = require("./HubPermissionPolicies");
7
+ const types_1 = require("./types");
8
+ const getPolicyResponseCode_1 = require("./_internal/getPolicyResponseCode");
9
+ const checkAuthentication_1 = require("./_internal/checkAuthentication");
10
+ const checkOwner_1 = require("./_internal/checkOwner");
11
+ const checkEdit_1 = require("./_internal/checkEdit");
12
+ const checkPrivileges_1 = require("./_internal/checkPrivileges");
13
+ const checkEntityPolicy_1 = require("./_internal/checkEntityPolicy");
14
+ /**
15
+ * Check a permission against the system policies, and possibly an entity policy
16
+ * @param permission
17
+ * @param context
18
+ * @param entity
19
+ * @returns
20
+ */
21
+ function checkPermission(permission, context, entity) {
22
+ // Early Exit: Is this even a valid permission?
23
+ if (!types_1.isPermission(permission)) {
24
+ return {
25
+ permission,
26
+ access: false,
27
+ response: "invalid-permission",
28
+ code: getPolicyResponseCode_1.getPolicyResponseCode("invalid-permission"),
29
+ checks: [],
30
+ };
31
+ }
32
+ // Get the system policy for this permission
33
+ const systemPolicy = HubPermissionPolicies_1.getPermissionPolicy(permission);
34
+ // Default to granted
35
+ const response = {
36
+ permission,
37
+ access: true,
38
+ response: "granted",
39
+ code: getPolicyResponseCode_1.getPolicyResponseCode("granted"),
40
+ checks: [],
41
+ };
42
+ // reduce over the check functions and collect all the checks
43
+ const checks = [
44
+ checkAuthentication_1.checkAuthentication,
45
+ checkLicense_1.checkLicense,
46
+ checkPrivileges_1.checkPrivileges,
47
+ checkEdit_1.checkEdit,
48
+ checkOwner_1.checkOwner,
49
+ ].reduce((acc, fn) => {
50
+ acc = [...acc, ...fn(systemPolicy, context, entity)];
51
+ return acc;
52
+ }, []);
53
+ // For system policies, all conditions must be met, so we can
54
+ // iterate through the checks and set the response to the first failure
55
+ // while still returning all the checks for observability
56
+ checks.forEach((check) => {
57
+ if (check.response !== "granted" && response.response === "granted") {
58
+ response.response = check.response;
59
+ response.code = check.code;
60
+ response.access = false;
61
+ }
62
+ });
63
+ response.checks = checks;
64
+ // Entity policies are treated as "grants" so we only need to pass one
65
+ if (entity) {
66
+ const entityPolicies = objects_1.getWithDefault(entity, "permissions", []);
67
+ const entityPermissionPolicies = entityPolicies.filter((e) => e.permission === permission);
68
+ // Entity Policies are "grants" in that only one needs to pass
69
+ // but we still want each check returned so we can see why they
70
+ // got access or got denied
71
+ const entityChecks = entityPermissionPolicies.map((policy) => {
72
+ return checkEntityPolicy_1.checkEntityPolicy(policy, context);
73
+ });
74
+ // Process them to see if any grant access
75
+ const grantedCheck = entityChecks.find((e) => e.response === "granted");
76
+ // If we did not find a check that grants access, AND we've passed
77
+ // all the system checks, then we set the response to "not-granted"
78
+ // and set the access to false
79
+ if (entityChecks.length &&
80
+ !grantedCheck &&
81
+ response.response === "granted") {
82
+ response.access = false;
83
+ response.response = "not-granted";
84
+ }
85
+ // Merge in the entity checks...
86
+ response.checks = [...response.checks, ...entityChecks];
87
+ }
88
+ // return the response
89
+ return response;
90
+ }
91
+ exports.checkPermission = checkPermission;
92
+ //# sourceMappingURL=checkPermission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkPermission.js","sourceRoot":"","sources":["../../../src/permissions/checkPermission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./HubPermissionPolicies"), exports);
5
+ tslib_1.__exportStar(require("./checkPermission"), exports);
6
+ tslib_1.__exportStar(require("./utils"), exports);
7
+ tslib_1.__exportStar(require("./types"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/permissions/index.ts"],"names":[],"mappings":";;;AAAA,kEAAwC;AACxC,4DAAkC;AAClC,kDAAwB;AACxB,kDAAwB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=HubLicense.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HubLicense.js","sourceRoot":"","sources":["../../../../src/permissions/types/HubLicense.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IAccessResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IAccessResponse.js","sourceRoot":"","sources":["../../../../src/permissions/types/IAccessResponse.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IEntityPermissionPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEntityPermissionPolicy.js","sourceRoot":"","sources":["../../../../src/permissions/types/IEntityPermissionPolicy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IPermissionPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPermissionPolicy.js","sourceRoot":"","sources":["../../../../src/permissions/types/IPermissionPolicy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IPolicyCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPolicyCheck.js","sourceRoot":"","sources":["../../../../src/permissions/types/IPolicyCheck.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPermission = void 0;
4
+ /**
5
+ * Defines the values for Permissions
6
+ * Note: This needs to be managed as a single list or typechecking does not work
7
+ * We use an array so we can check for valid permissions
8
+ */
9
+ const validPermissions = [
10
+ "hub:site:create",
11
+ "hub:site:delete",
12
+ "hub:site:edit",
13
+ "hub:site:view",
14
+ "hub:project:create",
15
+ "hub:project:delete",
16
+ "hub:project:edit",
17
+ "hub:project:view",
18
+ ];
19
+ /**
20
+ * Validate a Permission
21
+ * @param permission
22
+ * @returns
23
+ */
24
+ function isPermission(maybePermission) {
25
+ return validPermissions.includes(maybePermission);
26
+ }
27
+ exports.isPermission = isPermission;
28
+ //# sourceMappingURL=Permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../../src/permissions/types/Permission.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAM,gBAAgB,GAAG;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;CACV,CAAC;AAOX;;;;GAIG;AACH,SAAgB,YAAY,CAAC,eAAuB;IAClD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,eAA6B,CAAC,CAAC;AAClE,CAAC;AAFD,oCAEC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Type that defines Platform Privileges
4
+ * TODO: Ensure this is a complete list
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=PlatformPrivilege.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformPrivilege.js","sourceRoot":"","sources":["../../../../src/permissions/types/PlatformPrivilege.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**`
3
+ * Human readable response from a policy check
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=PolicyResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyResponse.js","sourceRoot":"","sources":["../../../../src/permissions/types/PolicyResponse.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./HubLicense"), exports);
5
+ tslib_1.__exportStar(require("./IAccessResponse"), exports);
6
+ tslib_1.__exportStar(require("./IEntityPermissionPolicy"), exports);
7
+ tslib_1.__exportStar(require("./IPermissionPolicy"), exports);
8
+ tslib_1.__exportStar(require("./IPolicyCheck"), exports);
9
+ tslib_1.__exportStar(require("./Permission"), exports);
10
+ tslib_1.__exportStar(require("./PlatformPrivilege"), exports);
11
+ tslib_1.__exportStar(require("./PolicyResponse"), exports);
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/permissions/types/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,4DAAkC;AAClC,oEAA0C;AAC1C,8DAAoC;AACpC,yDAA+B;AAC/B,uDAA6B;AAC7B,8DAAoC;AACpC,2DAAiC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removePermissionPolicy = exports.addPermissionPolicy = void 0;
4
+ const util_1 = require("../util");
5
+ /**
6
+ * Add a policy to an array of entity policies
7
+ * Returns a new array
8
+ * @param permissions
9
+ * @param policy
10
+ * @returns
11
+ */
12
+ function addPermissionPolicy(permissions = [], policy) {
13
+ const clone = removePermissionPolicy(permissions, policy.permission, policy.collaborationId);
14
+ clone.push(policy);
15
+ return clone;
16
+ }
17
+ exports.addPermissionPolicy = addPermissionPolicy;
18
+ /**
19
+ * Remove a policy from an array of entity policies
20
+ * Returns a new array
21
+ * @param permissions
22
+ * @param permission
23
+ * @param id
24
+ * @returns
25
+ */
26
+ function removePermissionPolicy(permissions = [], permission, id) {
27
+ const clone = util_1.cloneObject(permissions);
28
+ return clone.filter((p) => p.permission !== permission || p.collaborationId !== id);
29
+ }
30
+ exports.removePermissionPolicy = removePermissionPolicy;
31
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/permissions/utils.ts"],"names":[],"mappings":";;;AAAA,kCAAsC;AAGtC;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,cAAyC,EAAE,EAC3C,MAA+B;IAE/B,MAAM,KAAK,GAAG,sBAAsB,CAClC,WAAW,EACX,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,eAAe,CACvB,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,kDAWC;AAED;;;;;;;GAOG;AACH,SAAgB,sBAAsB,CACpC,cAAyC,EAAE,EAC3C,UAAsB,EACtB,EAAU;IAEV,MAAM,KAAK,GAAG,kBAAW,CAAC,WAAW,CAAC,CAAC;IAEvC,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,eAAe,KAAK,EAAE,CAC/D,CAAC;AACJ,CAAC;AAVD,wDAUC"}
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HubProject = void 0;
4
4
  const defaults_1 = require("./defaults");
5
- const core_1 = require("../core");
6
- const HubProjects_1 = require("./HubProjects");
7
5
  const Catalog_1 = require("../search/Catalog");
8
6
  const HubItemEntity_1 = require("../core/HubItemEntity");
7
+ // NOTE: this could be lazy-loaded just like the CUD functions
8
+ const fetch_1 = require("./fetch");
9
9
  /**
10
10
  * Hub Project Class
11
11
  */
@@ -18,7 +18,6 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
18
18
  constructor(project, context) {
19
19
  super(project, context);
20
20
  this._catalog = Catalog_1.Catalog.fromJson(project.catalog, this.context);
21
- this._permissionManager = core_1.PermissionManager.fromJson(project.permissions, this.context);
22
21
  }
23
22
  /**
24
23
  * Catalog instance for this project. Note: Do not hold direct references to this object; always access it from the project.
@@ -27,13 +26,6 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
27
26
  get catalog() {
28
27
  return this._catalog;
29
28
  }
30
- /**
31
- * PermissionManager instance for this project. Note: Do not hold direct references to this object; always access it from the project.
32
- * @returns
33
- */
34
- get permissions() {
35
- return this._permissionManager;
36
- }
37
29
  /**
38
30
  * Create an instance from an IHubProject object
39
31
  * @param json - JSON object to create a HubProject from
@@ -70,7 +62,7 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
70
62
  static async fetch(identifier, context) {
71
63
  // fetch the project by id or slug
72
64
  try {
73
- const project = await HubProjects_1.fetchProject(identifier, context.requestOptions);
65
+ const project = await fetch_1.fetchProject(identifier, context.requestOptions);
74
66
  // create an instance of HubProject from the project
75
67
  return HubProject.fromJson(project, context);
76
68
  }
@@ -94,8 +86,9 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
94
86
  * by the compiler.
95
87
  */
96
88
  static async getEditorConfig(i18nScope, type, options = []) {
89
+ const { getHubProjectEditorConfig } = await Promise.resolve().then(() => require("./edit"));
97
90
  // Delegate to module fn
98
- return HubProjects_1.getHubProjectEditorConfig(i18nScope, type, options);
91
+ return getHubProjectEditorConfig(i18nScope, type, options);
99
92
  }
100
93
  static applyDefaults(partialProject, context) {
101
94
  // ensure we have the orgUrlKey
@@ -120,9 +113,6 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
120
113
  if (changes.catalog) {
121
114
  this._catalog = Catalog_1.Catalog.fromJson(this.entity.catalog, this.context);
122
115
  }
123
- if (changes.permissions) {
124
- this._permissionManager = core_1.PermissionManager.fromJson(this.entity.permissions, this.context);
125
- }
126
116
  }
127
117
  /**
128
118
  * Save the HubProject to the backing store. Currently Projects are stored as Items in Portal
@@ -134,14 +124,14 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
134
124
  }
135
125
  // get the catalog, and permission configs
136
126
  this.entity.catalog = this._catalog.toJson();
137
- this.entity.permissions = this._permissionManager.toJson();
127
+ const { createProject, updateProject } = await Promise.resolve().then(() => require("./edit"));
138
128
  if (this.entity.id) {
139
129
  // update it
140
- this.entity = await HubProjects_1.updateProject(this.entity, this.context.userRequestOptions);
130
+ this.entity = await updateProject(this.entity, this.context.userRequestOptions);
141
131
  }
142
132
  else {
143
133
  // create it
144
- this.entity = await HubProjects_1.createProject(this.entity, this.context.userRequestOptions);
134
+ this.entity = await createProject(this.entity, this.context.userRequestOptions);
145
135
  }
146
136
  // call the after save hook on superclass
147
137
  await super.afterSave();
@@ -157,8 +147,9 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
157
147
  throw new Error("HubProject is already destroyed.");
158
148
  }
159
149
  this.isDestroyed = true;
150
+ const { deleteProject } = await Promise.resolve().then(() => require("./edit"));
160
151
  // Delegate to module fn
161
- await HubProjects_1.deleteProject(this.entity.id, this.context.userRequestOptions);
152
+ await deleteProject(this.entity.id, this.context.userRequestOptions);
162
153
  }
163
154
  }
164
155
  exports.HubProject = HubProject;
@@ -1 +1 @@
1
- {"version":3,"file":"HubProject.js","sourceRoot":"","sources":["../../../src/projects/HubProject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HubProject.js","sourceRoot":"","sources":["../../../src/projects/HubProject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProjectPermissionPolicies = void 0;
4
+ /**
5
+ * Project Permission Policies
6
+ * These define the requirements any user must meet to perform related actions
7
+ * @private
8
+ */
9
+ exports.ProjectPermissionPolicies = [
10
+ {
11
+ permission: "hub:project:create",
12
+ subsystems: ["projects"],
13
+ authenticated: true,
14
+ privileges: ["portal:user:createItem"],
15
+ licenses: ["hub-premium"],
16
+ },
17
+ {
18
+ permission: "hub:project:view",
19
+ subsystems: ["projects"],
20
+ authenticated: false,
21
+ licenses: ["hub-premium"],
22
+ },
23
+ {
24
+ permission: "hub:project:edit",
25
+ authenticated: true,
26
+ subsystems: ["projects"],
27
+ entityEdit: true,
28
+ licenses: ["hub-premium"],
29
+ },
30
+ {
31
+ permission: "hub:project:delete",
32
+ authenticated: true,
33
+ subsystems: ["projects"],
34
+ entityOwner: true,
35
+ licenses: ["hub-premium"],
36
+ },
37
+ ];
38
+ //# sourceMappingURL=ProjectPermissionPolicies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectPermissionPolicies.js","sourceRoot":"","sources":["../../../../src/projects/_internal/ProjectPermissionPolicies.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACU,QAAA,yBAAyB,GAAwB;IAC5D;QACE,UAAU,EAAE,oBAAoB;QAChC,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD;QACE,UAAU,EAAE,kBAAkB;QAC9B,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD;QACE,UAAU,EAAE,kBAAkB;QAC9B,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD;QACE,UAAU,EAAE,oBAAoB;QAChC,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;CACF,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPropertyMap = exports.computeProps = void 0;
4
+ const resources_1 = require("../resources");
5
+ const getBasePropertyMap_1 = require("../core/_internal/getBasePropertyMap");
6
+ /**
7
+ * Given a model and a project, set various computed properties that can't be directly mapped
8
+ * @private
9
+ * @param model
10
+ * @param project
11
+ * @param requestOptions
12
+ * @returns
13
+ */
14
+ function computeProps(model, project, requestOptions) {
15
+ let token;
16
+ if (requestOptions.authentication) {
17
+ const session = requestOptions.authentication;
18
+ token = session.token;
19
+ }
20
+ // thumbnail url
21
+ project.thumbnailUrl = resources_1.getItemThumbnailUrl(model.item, requestOptions, token);
22
+ // Handle Dates
23
+ project.createdDate = new Date(model.item.created);
24
+ project.createdDateSource = "item.created";
25
+ project.updatedDate = new Date(model.item.modified);
26
+ project.updatedDateSource = "item.modified";
27
+ // cast b/c this takes a partial but returns a full project
28
+ return project;
29
+ }
30
+ exports.computeProps = computeProps;
31
+ /**
32
+ * Returns an Array of IPropertyMap objects
33
+ * that define the projection of properties from a IModel to an IHubProject
34
+ * @returns
35
+ * @private
36
+ */
37
+ function getPropertyMap() {
38
+ const map = getBasePropertyMap_1.getBasePropertyMap();
39
+ // Type specific mappings
40
+ map.push({ objectKey: "status", modelKey: "data.status" });
41
+ map.push({ objectKey: "catalog", modelKey: "data.catalog" });
42
+ map.push({ objectKey: "permissions", modelKey: "data.permissions" });
43
+ map.push({ objectKey: "contacts", modelKey: "data.contacts" });
44
+ map.push({ objectKey: "timeline", modelKey: "data.timeline" });
45
+ return map;
46
+ }
47
+ exports.getPropertyMap = getPropertyMap;
48
+ //# sourceMappingURL=_internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_internal.js","sourceRoot":"","sources":["../../../src/projects/_internal.ts"],"names":[],"mappings":";;;AAEA,4CAAmD;AAGnD,6EAA0E;AAG1E;;;;;;;GAOG;AACH,SAAgB,YAAY,CAC1B,KAAa,EACb,OAA6B,EAC7B,cAA+B;IAE/B,IAAI,KAAa,CAAC;IAClB,IAAI,cAAc,CAAC,cAAc,EAAE;QACjC,MAAM,OAAO,GAAgB,cAAc,CAAC,cAA6B,CAAC;QAC1E,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;IACD,gBAAgB;IAChB,OAAO,CAAC,YAAY,GAAG,+BAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IAC9E,eAAe;IACf,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,CAAC,iBAAiB,GAAG,cAAc,CAAC;IAC3C,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,CAAC,iBAAiB,GAAG,eAAe,CAAC;IAC5C,2DAA2D;IAC3D,OAAO,OAAsB,CAAC;AAChC,CAAC;AAnBD,oCAmBC;AAED;;;;;GAKG;AACH,SAAgB,cAAc;IAC5B,MAAM,GAAG,GAAG,uCAAkB,EAAE,CAAC;IAEjC,yBAAyB;IACzB,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3D,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7D,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACrE,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAE/D,OAAO,GAAG,CAAC;AACb,CAAC;AAXD,wCAWC"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getHubProjectEditorConfig = exports.deleteProject = exports.updateProject = exports.createProject = void 0;
4
+ // Note - we separate these imports so we can cleanly spy on things in tests
5
+ const models_1 = require("../models");
6
+ const slugs_1 = require("../items/slugs");
7
+ const index_1 = require("../index");
8
+ const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
9
+ const PropertyMapper_1 = require("../core/_internal/PropertyMapper");
10
+ const defaults_1 = require("./defaults");
11
+ const schemas_1 = require("../core/schemas");
12
+ const internal_1 = require("../core/schemas/internal");
13
+ const applyUiSchemaElementOptions_1 = require("../core/schemas/internal/applyUiSchemaElementOptions");
14
+ const _internal_1 = require("./_internal");
15
+ /**
16
+ * @private
17
+ * Create a new Hub Project item
18
+ *
19
+ * Minimal properties are name and org
20
+ *
21
+ * @param project
22
+ * @param requestOptions
23
+ */
24
+ async function createProject(partialProject, requestOptions) {
25
+ // merge incoming with the default
26
+ // this expansion solves the typing somehow
27
+ const project = Object.assign(Object.assign({}, defaults_1.DEFAULT_PROJECT), partialProject);
28
+ // Create a slug from the title if one is not passed in
29
+ if (!project.slug) {
30
+ project.slug = slugs_1.constructSlug(project.name, project.orgUrlKey);
31
+ }
32
+ // Ensure slug is unique
33
+ project.slug = await slugs_1.getUniqueSlug({ slug: project.slug }, requestOptions);
34
+ // add slug to keywords
35
+ project.typeKeywords = slugs_1.setSlugKeyword(project.typeKeywords, project.slug);
36
+ // Map project object onto a default project Model
37
+ const mapper = new PropertyMapper_1.PropertyMapper(_internal_1.getPropertyMap());
38
+ // create model from object, using the default model as a starting point
39
+ let model = mapper.objectToModel(project, index_1.cloneObject(defaults_1.DEFAULT_PROJECT_MODEL));
40
+ // create the item
41
+ model = await models_1.createModel(model, requestOptions);
42
+ // map the model back into a IHubProject
43
+ let newProject = mapper.modelToObject(model, {});
44
+ newProject = _internal_1.computeProps(model, newProject, requestOptions);
45
+ // and return it
46
+ return newProject;
47
+ }
48
+ exports.createProject = createProject;
49
+ /**
50
+ * @private
51
+ * Update a Hub Project
52
+ * @param project
53
+ * @param requestOptions
54
+ */
55
+ async function updateProject(project, requestOptions) {
56
+ // verify that the slug is unique, excluding the current project
57
+ project.slug = await slugs_1.getUniqueSlug({ slug: project.slug, existingId: project.id }, requestOptions);
58
+ // get the backing item & data
59
+ const model = await models_1.getModel(project.id, requestOptions);
60
+ // create the PropertyMapper
61
+ const mapper = new PropertyMapper_1.PropertyMapper(_internal_1.getPropertyMap());
62
+ // Note: Although we are fetching the model, and applying changes onto it,
63
+ // we are not attempting to handle "concurrent edit" conflict resolution
64
+ // but this is where we would apply that sort of logic
65
+ const modelToUpdate = mapper.objectToModel(project, model);
66
+ // update the backing item
67
+ const updatedModel = await models_1.updateModel(modelToUpdate, requestOptions);
68
+ // now map back into a project and return that
69
+ let updatedProject = mapper.modelToObject(updatedModel, project);
70
+ updatedProject = _internal_1.computeProps(model, updatedProject, requestOptions);
71
+ // the casting is needed because modelToObject returns a `Partial<T>`
72
+ // where as this function returns a `T`
73
+ return updatedProject;
74
+ }
75
+ exports.updateProject = updateProject;
76
+ /**
77
+ * @private
78
+ * Remove a Hub Project
79
+ * @param id
80
+ * @param requestOptions
81
+ */
82
+ async function deleteProject(id, requestOptions) {
83
+ const ro = Object.assign(Object.assign({}, requestOptions), { id });
84
+ await arcgis_rest_portal_1.removeItem(ro);
85
+ return;
86
+ }
87
+ exports.deleteProject = deleteProject;
88
+ /**
89
+ * Get the editor config for for the HubProject entity.
90
+ * @param i18nScope Translation scope to be interpolated into the schemas
91
+ * @param type
92
+ * @param options Optional hash of Element component options
93
+ * @returns
94
+ */
95
+ async function getHubProjectEditorConfig(i18nScope, type, options = []) {
96
+ // schema is always the entire schema
97
+ let schema = index_1.cloneObject(schemas_1.HubProjectSchema);
98
+ // uiSchema is the complete (edit) schema, unless otherwise specified
99
+ let uiSchema = index_1.cloneObject(schemas_1.HubProjectEditUiSchema);
100
+ // by default we don't need to filter the schema b/c it's the entire schema
101
+ let filterSchema = false;
102
+ // if another schema is requested, we need to use that UI schema
103
+ // and the subset the overall schema down to just the properties
104
+ // used in the UI schema
105
+ switch (type) {
106
+ case "create":
107
+ uiSchema = index_1.cloneObject(schemas_1.HubProjectCreateUiSchema);
108
+ filterSchema = true;
109
+ break;
110
+ }
111
+ if (filterSchema) {
112
+ // filter out properties not used in the UI schema
113
+ schema = internal_1.filterSchemaToUiSchema(schema, uiSchema);
114
+ }
115
+ // interpolate the i18n scope into the uiSchema
116
+ uiSchema = index_1.interpolate(uiSchema, { i18nScope });
117
+ // apply the options
118
+ uiSchema = applyUiSchemaElementOptions_1.applyUiSchemaElementOptions(uiSchema, options);
119
+ return Promise.resolve({ schema, uiSchema });
120
+ }
121
+ exports.getHubProjectEditorConfig = getHubProjectEditorConfig;
122
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/projects/edit.ts"],"names":[],"mappings":"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"}