@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.
- package/dist/esm/ArcGISContext.js +24 -1
- package/dist/esm/ArcGISContext.js.map +1 -1
- package/dist/esm/ArcGISContextManager.js +48 -0
- package/dist/esm/ArcGISContextManager.js.map +1 -1
- package/dist/esm/content/compose.js +12 -0
- package/dist/esm/content/compose.js.map +1 -1
- package/dist/esm/core/HubItemEntity.js +39 -57
- package/dist/esm/core/HubItemEntity.js.map +1 -1
- package/dist/esm/core/_internal/PropertyMapper.js +10 -2
- package/dist/esm/core/_internal/PropertyMapper.js.map +1 -1
- package/dist/esm/core/_internal/getBasePropertyMap.js +1 -0
- package/dist/esm/core/_internal/getBasePropertyMap.js.map +1 -1
- package/dist/esm/core/behaviors/IWithPermissionBehavior.js +0 -68
- package/dist/esm/core/behaviors/IWithPermissionBehavior.js.map +1 -1
- package/dist/esm/core/fetchHubEntity.js +28 -0
- package/dist/esm/core/fetchHubEntity.js.map +1 -0
- package/dist/esm/core/getTypeFromEntity.js +26 -0
- package/dist/esm/core/getTypeFromEntity.js.map +1 -0
- package/dist/esm/core/index.js +2 -1
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/core/types/HubEntity.js +1 -0
- package/dist/esm/core/types/HubEntity.js.map +1 -0
- package/dist/esm/core/types/HubEntityType.js +1 -0
- package/dist/esm/core/types/HubEntityType.js.map +1 -0
- package/dist/esm/core/types/ISystemStatus.js +21 -0
- package/dist/esm/core/types/ISystemStatus.js.map +1 -0
- package/dist/esm/core/types/index.js +3 -2
- package/dist/esm/core/types/index.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/initiatives/HubInitiative.js +0 -13
- package/dist/esm/initiatives/HubInitiative.js.map +1 -1
- package/dist/esm/permissions/HubPermissionPolicies.js +18 -0
- package/dist/esm/permissions/HubPermissionPolicies.js.map +1 -0
- package/dist/esm/permissions/_internal/checkAuthentication.js +24 -0
- package/dist/esm/permissions/_internal/checkAuthentication.js.map +1 -0
- package/dist/esm/permissions/_internal/checkEdit.js +35 -0
- package/dist/esm/permissions/_internal/checkEdit.js.map +1 -0
- package/dist/esm/permissions/_internal/checkEntityPolicy.js +56 -0
- package/dist/esm/permissions/_internal/checkEntityPolicy.js.map +1 -0
- package/dist/esm/permissions/_internal/checkLicense.js +27 -0
- package/dist/esm/permissions/_internal/checkLicense.js.map +1 -0
- package/dist/esm/permissions/_internal/checkOwner.js +36 -0
- package/dist/esm/permissions/_internal/checkOwner.js.map +1 -0
- package/dist/esm/permissions/_internal/checkPrivileges.js +27 -0
- package/dist/esm/permissions/_internal/checkPrivileges.js.map +1 -0
- package/dist/esm/permissions/_internal/getPolicyResponseCode.js +29 -0
- package/dist/esm/permissions/_internal/getPolicyResponseCode.js.map +1 -0
- package/dist/esm/permissions/checkPermission.js +88 -0
- package/dist/esm/permissions/checkPermission.js.map +1 -0
- package/dist/esm/permissions/index.js +5 -0
- package/dist/esm/permissions/index.js.map +1 -0
- package/dist/esm/permissions/types/HubLicense.js +1 -0
- package/dist/esm/permissions/types/HubLicense.js.map +1 -0
- package/dist/esm/permissions/types/IAccessResponse.js +1 -0
- package/dist/esm/permissions/types/IAccessResponse.js.map +1 -0
- package/dist/esm/permissions/types/IEntityPermissionPolicy.js +1 -0
- package/dist/esm/permissions/types/IEntityPermissionPolicy.js.map +1 -0
- package/dist/esm/permissions/types/IPermissionPolicy.js +1 -0
- package/dist/esm/permissions/types/IPermissionPolicy.js.map +1 -0
- package/dist/esm/permissions/types/IPolicyCheck.js +1 -0
- package/dist/esm/permissions/types/IPolicyCheck.js.map +1 -0
- package/dist/esm/permissions/types/Permission.js +24 -0
- package/dist/esm/permissions/types/Permission.js.map +1 -0
- package/dist/esm/permissions/types/PlatformPrivilege.js +5 -0
- package/dist/esm/permissions/types/PlatformPrivilege.js.map +1 -0
- package/dist/esm/permissions/types/PolicyResponse.js +4 -0
- package/dist/esm/permissions/types/PolicyResponse.js.map +1 -0
- package/dist/esm/permissions/types/index.js +9 -0
- package/dist/esm/permissions/types/index.js.map +1 -0
- package/dist/esm/permissions/utils.js +26 -0
- package/dist/esm/permissions/utils.js.map +1 -0
- package/dist/esm/projects/HubProject.js +5 -14
- package/dist/esm/projects/HubProject.js.map +1 -1
- package/dist/esm/projects/_internal/ProjectPermissionPolicies.js +35 -0
- package/dist/esm/projects/_internal/ProjectPermissionPolicies.js.map +1 -0
- package/dist/esm/projects/_internal.js +43 -0
- package/dist/esm/projects/_internal.js.map +1 -0
- package/dist/esm/projects/edit.js +115 -0
- package/dist/esm/projects/edit.js.map +1 -0
- package/dist/esm/projects/fetch.js +104 -0
- package/dist/esm/projects/fetch.js.map +1 -0
- package/dist/esm/projects/index.js +2 -1
- package/dist/esm/projects/index.js.map +1 -1
- package/dist/esm/search/Catalog.js.map +1 -1
- package/dist/esm/sites/HubSite.js +0 -13
- package/dist/esm/sites/HubSite.js.map +1 -1
- package/dist/esm/sites/_internal/SitesPermissionPolicies.js +34 -0
- package/dist/esm/sites/_internal/SitesPermissionPolicies.js.map +1 -0
- package/dist/esm/util.js +3 -1
- package/dist/esm/util.js.map +1 -1
- package/dist/node/ArcGISContext.js +28 -5
- package/dist/node/ArcGISContext.js.map +1 -1
- package/dist/node/ArcGISContextManager.js +48 -0
- package/dist/node/ArcGISContextManager.js.map +1 -1
- package/dist/node/content/compose.js +12 -0
- package/dist/node/content/compose.js.map +1 -1
- package/dist/node/core/HubItemEntity.js +38 -56
- package/dist/node/core/HubItemEntity.js.map +1 -1
- package/dist/node/core/_internal/PropertyMapper.js +9 -1
- package/dist/node/core/_internal/PropertyMapper.js.map +1 -1
- package/dist/node/core/_internal/getBasePropertyMap.js +1 -0
- package/dist/node/core/_internal/getBasePropertyMap.js.map +1 -1
- package/dist/node/core/behaviors/IWithPermissionBehavior.js +0 -73
- package/dist/node/core/behaviors/IWithPermissionBehavior.js.map +1 -1
- package/dist/node/core/fetchHubEntity.js +32 -0
- package/dist/node/core/fetchHubEntity.js.map +1 -0
- package/dist/node/core/getTypeFromEntity.js +30 -0
- package/dist/node/core/getTypeFromEntity.js.map +1 -0
- package/dist/node/core/index.js +2 -1
- package/dist/node/core/index.js.map +1 -1
- package/dist/node/core/types/{IHubPermission.js → HubEntity.js} +1 -1
- package/dist/node/core/types/HubEntity.js.map +1 -0
- package/dist/node/core/types/HubEntityType.js +3 -0
- package/dist/node/core/types/HubEntityType.js.map +1 -0
- package/dist/node/core/types/ISystemStatus.js +25 -0
- package/dist/node/core/types/ISystemStatus.js.map +1 -0
- package/dist/node/core/types/index.js +3 -2
- package/dist/node/core/types/index.js.map +1 -1
- package/dist/node/index.js +1 -0
- package/dist/node/index.js.map +1 -1
- package/dist/node/initiatives/HubInitiative.js +0 -13
- package/dist/node/initiatives/HubInitiative.js.map +1 -1
- package/dist/node/permissions/HubPermissionPolicies.js +22 -0
- package/dist/node/permissions/HubPermissionPolicies.js.map +1 -0
- package/dist/node/permissions/_internal/checkAuthentication.js +28 -0
- package/dist/node/permissions/_internal/checkAuthentication.js.map +1 -0
- package/dist/node/permissions/_internal/checkEdit.js +39 -0
- package/dist/node/permissions/_internal/checkEdit.js.map +1 -0
- package/dist/node/permissions/_internal/checkEntityPolicy.js +60 -0
- package/dist/node/permissions/_internal/checkEntityPolicy.js.map +1 -0
- package/dist/node/permissions/_internal/checkLicense.js +31 -0
- package/dist/node/permissions/_internal/checkLicense.js.map +1 -0
- package/dist/node/permissions/_internal/checkOwner.js +40 -0
- package/dist/node/permissions/_internal/checkOwner.js.map +1 -0
- package/dist/node/permissions/_internal/checkPrivileges.js +31 -0
- package/dist/node/permissions/_internal/checkPrivileges.js.map +1 -0
- package/dist/node/permissions/_internal/getPolicyResponseCode.js +33 -0
- package/dist/node/permissions/_internal/getPolicyResponseCode.js.map +1 -0
- package/dist/node/permissions/checkPermission.js +92 -0
- package/dist/node/permissions/checkPermission.js.map +1 -0
- package/dist/node/permissions/index.js +8 -0
- package/dist/node/permissions/index.js.map +1 -0
- package/dist/node/permissions/types/HubLicense.js +3 -0
- package/dist/node/permissions/types/HubLicense.js.map +1 -0
- package/dist/node/permissions/types/IAccessResponse.js +3 -0
- package/dist/node/permissions/types/IAccessResponse.js.map +1 -0
- package/dist/node/permissions/types/IEntityPermissionPolicy.js +3 -0
- package/dist/node/permissions/types/IEntityPermissionPolicy.js.map +1 -0
- package/dist/node/permissions/types/IPermissionPolicy.js +3 -0
- package/dist/node/permissions/types/IPermissionPolicy.js.map +1 -0
- package/dist/node/permissions/types/IPolicyCheck.js +3 -0
- package/dist/node/permissions/types/IPolicyCheck.js.map +1 -0
- package/dist/node/permissions/types/Permission.js +28 -0
- package/dist/node/permissions/types/Permission.js.map +1 -0
- package/dist/node/permissions/types/PlatformPrivilege.js +7 -0
- package/dist/node/permissions/types/PlatformPrivilege.js.map +1 -0
- package/dist/node/permissions/types/PolicyResponse.js +6 -0
- package/dist/node/permissions/types/PolicyResponse.js.map +1 -0
- package/dist/node/permissions/types/index.js +12 -0
- package/dist/node/permissions/types/index.js.map +1 -0
- package/dist/node/permissions/utils.js +31 -0
- package/dist/node/permissions/utils.js.map +1 -0
- package/dist/node/projects/HubProject.js +10 -19
- package/dist/node/projects/HubProject.js.map +1 -1
- package/dist/node/projects/_internal/ProjectPermissionPolicies.js +38 -0
- package/dist/node/projects/_internal/ProjectPermissionPolicies.js.map +1 -0
- package/dist/node/projects/_internal.js +48 -0
- package/dist/node/projects/_internal.js.map +1 -0
- package/dist/node/projects/edit.js +122 -0
- package/dist/node/projects/edit.js.map +1 -0
- package/dist/node/projects/fetch.js +110 -0
- package/dist/node/projects/fetch.js.map +1 -0
- package/dist/node/projects/index.js +2 -1
- package/dist/node/projects/index.js.map +1 -1
- package/dist/node/search/Catalog.js.map +1 -1
- package/dist/node/sites/HubSite.js +0 -13
- package/dist/node/sites/HubSite.js.map +1 -1
- package/dist/node/sites/_internal/SitesPermissionPolicies.js +37 -0
- package/dist/node/sites/_internal/SitesPermissionPolicies.js.map +1 -0
- package/dist/node/util.js +3 -1
- package/dist/node/util.js.map +1 -1
- package/dist/types/ArcGISContext.d.ts +23 -1
- package/dist/types/ArcGISContextManager.d.ts +6 -1
- package/dist/types/content/_internal.d.ts +15 -5
- package/dist/types/core/HubItemEntity.d.ts +29 -4
- package/dist/types/core/behaviors/IWithPermissionBehavior.d.ts +23 -35
- package/dist/types/core/behaviors/IWithStoreBehavior.d.ts +10 -10
- package/dist/types/core/fetchHubEntity.d.ts +11 -0
- package/dist/types/core/getTypeFromEntity.d.ts +8 -0
- package/dist/types/core/index.d.ts +2 -1
- package/dist/types/core/traits/IWithPermissions.d.ts +3 -3
- package/dist/types/core/types/HubEntity.d.ts +5 -0
- package/dist/types/core/types/HubEntityType.d.ts +1 -0
- package/dist/types/core/types/IHubContent.d.ts +2 -1
- package/dist/types/core/types/IHubItemEntity.d.ts +19 -2
- package/dist/types/core/types/ISystemStatus.d.ts +22 -0
- package/dist/types/core/types/index.d.ts +3 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/initiatives/HubInitiative.d.ts +1 -7
- package/dist/types/permissions/HubPermissionPolicies.d.ts +11 -0
- package/dist/types/permissions/_internal/checkAuthentication.d.ts +11 -0
- package/dist/types/permissions/_internal/checkEdit.d.ts +11 -0
- package/dist/types/permissions/_internal/checkEntityPolicy.d.ts +9 -0
- package/dist/types/permissions/_internal/checkLicense.d.ts +10 -0
- package/dist/types/permissions/_internal/checkOwner.d.ts +11 -0
- package/dist/types/permissions/_internal/checkPrivileges.d.ts +11 -0
- package/dist/types/permissions/_internal/getPolicyResponseCode.d.ts +7 -0
- package/dist/types/permissions/checkPermission.d.ts +11 -0
- package/dist/types/permissions/index.d.ts +4 -0
- package/dist/types/permissions/types/HubLicense.d.ts +4 -0
- package/dist/types/permissions/types/IAccessResponse.d.ts +29 -0
- package/dist/types/permissions/types/IEntityPermissionPolicy.d.ts +22 -0
- package/dist/types/permissions/types/IPermissionPolicy.d.ts +48 -0
- package/dist/types/permissions/types/IPolicyCheck.d.ts +25 -0
- package/dist/types/permissions/types/Permission.d.ts +17 -0
- package/dist/types/permissions/types/PlatformPrivilege.d.ts +5 -0
- package/dist/types/permissions/types/PolicyResponse.d.ts +4 -0
- package/dist/types/permissions/types/index.d.ts +8 -0
- package/dist/types/permissions/utils.d.ts +18 -0
- package/dist/types/projects/HubProject.d.ts +1 -7
- package/dist/types/projects/_internal/ProjectPermissionPolicies.d.ts +7 -0
- package/dist/types/projects/_internal.d.ts +20 -0
- package/dist/types/projects/{HubProjects.d.ts → edit.d.ts} +1 -29
- package/dist/types/projects/fetch.d.ts +30 -0
- package/dist/types/projects/index.d.ts +2 -1
- package/dist/types/sites/HubSite.d.ts +1 -7
- package/dist/types/sites/_internal/SitesPermissionPolicies.d.ts +6 -0
- package/package.json +1 -1
- package/dist/esm/core/PermissionManager.js +0 -60
- package/dist/esm/core/PermissionManager.js.map +0 -1
- package/dist/esm/core/types/IHubPermission.js +0 -1
- package/dist/esm/core/types/IHubPermission.js.map +0 -1
- package/dist/esm/projects/HubProjects.js +0 -248
- package/dist/esm/projects/HubProjects.js.map +0 -1
- package/dist/node/core/PermissionManager.js +0 -64
- package/dist/node/core/PermissionManager.js.map +0 -1
- package/dist/node/core/types/IHubPermission.js.map +0 -1
- package/dist/node/projects/HubProjects.js +0 -258
- package/dist/node/projects/HubProjects.js.map +0 -1
- package/dist/types/core/PermissionManager.d.ts +0 -43
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"HubLicense.js","sourceRoot":"","sources":["../../../../src/permissions/types/HubLicense.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IAccessResponse.js","sourceRoot":"","sources":["../../../../src/permissions/types/IAccessResponse.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IEntityPermissionPolicy.js","sourceRoot":"","sources":["../../../../src/permissions/types/IEntityPermissionPolicy.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPermissionPolicy.js","sourceRoot":"","sources":["../../../../src/permissions/types/IPermissionPolicy.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformPrivilege.js","sourceRoot":"","sources":["../../../../src/permissions/types/PlatformPrivilege.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
127
|
+
const { createProject, updateProject } = await Promise.resolve().then(() => require("./edit"));
|
|
138
128
|
if (this.entity.id) {
|
|
139
129
|
// update it
|
|
140
|
-
this.entity = await
|
|
130
|
+
this.entity = await updateProject(this.entity, this.context.userRequestOptions);
|
|
141
131
|
}
|
|
142
132
|
else {
|
|
143
133
|
// create it
|
|
144
|
-
this.entity = await
|
|
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
|
|
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":";;;AAAA,yCAA6C;
|
|
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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"}
|