@esri/hub-common 11.0.0-beta.4 → 11.1.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 (123) hide show
  1. package/dist/esm/core/HubItemEntity.js +142 -0
  2. package/dist/esm/core/HubItemEntity.js.map +1 -0
  3. package/dist/esm/core/_internal/getBasePropertyMap.js +53 -0
  4. package/dist/esm/core/_internal/getBasePropertyMap.js.map +1 -0
  5. package/dist/esm/core/traits/IWithCatalog.js +1 -0
  6. package/dist/esm/core/traits/IWithCatalog.js.map +1 -0
  7. package/dist/esm/core/traits/index.js +1 -0
  8. package/dist/esm/core/traits/index.js.map +1 -1
  9. package/dist/esm/core/types/IEntityResource.js +1 -0
  10. package/dist/esm/core/types/IEntityResource.js.map +1 -0
  11. package/dist/esm/core/types/IItemResource.js +1 -0
  12. package/dist/esm/core/types/IItemResource.js.map +1 -0
  13. package/dist/esm/core/types/index.js +0 -2
  14. package/dist/esm/core/types/index.js.map +1 -1
  15. package/dist/esm/index.js +1 -2
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/initiatives/HubInitiative.js +147 -0
  18. package/dist/esm/initiatives/HubInitiative.js.map +1 -0
  19. package/dist/esm/initiatives/HubInitiatives.js +205 -0
  20. package/dist/esm/initiatives/HubInitiatives.js.map +1 -0
  21. package/dist/esm/initiatives/defaults.js +31 -0
  22. package/dist/esm/initiatives/defaults.js.map +1 -0
  23. package/dist/esm/initiatives/index.js +3 -0
  24. package/dist/esm/initiatives/index.js.map +1 -0
  25. package/dist/esm/projects/HubProject.js +8 -66
  26. package/dist/esm/projects/HubProject.js.map +1 -1
  27. package/dist/esm/projects/HubProjects.js +13 -86
  28. package/dist/esm/projects/HubProjects.js.map +1 -1
  29. package/dist/esm/projects/defaults.js +2 -1
  30. package/dist/esm/projects/defaults.js.map +1 -1
  31. package/dist/esm/search/_internal/index.js +0 -2
  32. package/dist/esm/search/_internal/index.js.map +1 -1
  33. package/dist/esm/sites/HubSites.js +7 -34
  34. package/dist/esm/sites/HubSites.js.map +1 -1
  35. package/dist/node/core/HubItemEntity.js +146 -0
  36. package/dist/node/core/HubItemEntity.js.map +1 -0
  37. package/dist/node/core/_internal/getBasePropertyMap.js +57 -0
  38. package/dist/node/core/_internal/getBasePropertyMap.js.map +1 -0
  39. package/dist/node/core/{types/IHubEntityManager.js → traits/IWithCatalog.js} +1 -1
  40. package/dist/node/core/traits/IWithCatalog.js.map +1 -0
  41. package/dist/node/core/traits/index.js +1 -0
  42. package/dist/node/core/traits/index.js.map +1 -1
  43. package/dist/node/core/types/{IHubItemEntityManager.js → IEntityResource.js} +1 -1
  44. package/dist/node/core/types/IEntityResource.js.map +1 -0
  45. package/dist/node/core/{traits/IWithCatalogDefinition.js → types/IItemResource.js} +1 -1
  46. package/dist/node/core/types/IItemResource.js.map +1 -0
  47. package/dist/node/core/types/index.js +0 -2
  48. package/dist/node/core/types/index.js.map +1 -1
  49. package/dist/node/index.js +1 -2
  50. package/dist/node/index.js.map +1 -1
  51. package/dist/node/initiatives/HubInitiative.js +151 -0
  52. package/dist/node/initiatives/HubInitiative.js.map +1 -0
  53. package/dist/node/initiatives/HubInitiatives.js +214 -0
  54. package/dist/node/initiatives/HubInitiatives.js.map +1 -0
  55. package/dist/node/initiatives/defaults.js +34 -0
  56. package/dist/node/initiatives/defaults.js.map +1 -0
  57. package/dist/node/initiatives/index.js +6 -0
  58. package/dist/node/initiatives/index.js.map +1 -0
  59. package/dist/node/projects/HubProject.js +8 -66
  60. package/dist/node/projects/HubProject.js.map +1 -1
  61. package/dist/node/projects/HubProjects.js +14 -88
  62. package/dist/node/projects/HubProjects.js.map +1 -1
  63. package/dist/node/projects/defaults.js +2 -1
  64. package/dist/node/projects/defaults.js.map +1 -1
  65. package/dist/node/search/_internal/index.js +0 -2
  66. package/dist/node/search/_internal/index.js.map +1 -1
  67. package/dist/node/sites/HubSites.js +9 -37
  68. package/dist/node/sites/HubSites.js.map +1 -1
  69. package/dist/types/content/_internal.d.ts +8 -8
  70. package/dist/types/core/HubItemEntity.d.ts +55 -0
  71. package/dist/types/core/_internal/getBasePropertyMap.d.ts +7 -0
  72. package/dist/types/core/behaviors/IWithStoreBehavior.d.ts +10 -0
  73. package/dist/types/core/traits/{IWithCatalogDefinition.d.ts → IWithCatalog.d.ts} +0 -0
  74. package/dist/types/core/traits/IWithPermissions.d.ts +1 -1
  75. package/dist/types/core/traits/index.d.ts +1 -0
  76. package/dist/types/core/types/IEntityResource.d.ts +21 -0
  77. package/dist/types/core/types/IHubContent.d.ts +1 -1
  78. package/dist/types/core/types/IHubInitiative.d.ts +2 -2
  79. package/dist/types/core/types/IHubItemEntity.d.ts +25 -16
  80. package/dist/types/core/types/IHubProject.d.ts +3 -3
  81. package/dist/types/core/types/IItemResource.d.ts +9 -0
  82. package/dist/types/core/types/index.d.ts +0 -2
  83. package/dist/types/index.d.ts +1 -0
  84. package/dist/types/initiatives/HubInitiative.d.ts +67 -0
  85. package/dist/types/initiatives/HubInitiatives.d.ts +55 -0
  86. package/dist/types/initiatives/defaults.d.ts +11 -0
  87. package/dist/types/initiatives/index.d.ts +2 -0
  88. package/dist/types/projects/HubProject.d.ts +8 -34
  89. package/dist/types/projects/HubProjects.d.ts +2 -12
  90. package/dist/types/search/_internal/index.d.ts +0 -2
  91. package/dist/types/sites/HubSites.d.ts +2 -9
  92. package/package.json +1 -1
  93. package/dist/esm/core/traits/IWithCatalogDefinition.js +0 -1
  94. package/dist/esm/core/traits/IWithCatalogDefinition.js.map +0 -1
  95. package/dist/esm/core/types/IHubEntityManager.js +0 -1
  96. package/dist/esm/core/types/IHubEntityManager.js.map +0 -1
  97. package/dist/esm/core/types/IHubItemEntityManager.js +0 -1
  98. package/dist/esm/core/types/IHubItemEntityManager.js.map +0 -1
  99. package/dist/esm/projects/HubProjectManager.js +0 -241
  100. package/dist/esm/projects/HubProjectManager.js.map +0 -1
  101. package/dist/esm/search/_internal/createQueryFromString.js +0 -22
  102. package/dist/esm/search/_internal/createQueryFromString.js.map +0 -1
  103. package/dist/esm/search/_internal/searchEntities.js +0 -73
  104. package/dist/esm/search/_internal/searchEntities.js.map +0 -1
  105. package/dist/esm/sites/HubSiteManager.js +0 -155
  106. package/dist/esm/sites/HubSiteManager.js.map +0 -1
  107. package/dist/node/core/traits/IWithCatalogDefinition.js.map +0 -1
  108. package/dist/node/core/types/IHubEntityManager.js.map +0 -1
  109. package/dist/node/core/types/IHubItemEntityManager.js.map +0 -1
  110. package/dist/node/projects/HubProjectManager.js +0 -245
  111. package/dist/node/projects/HubProjectManager.js.map +0 -1
  112. package/dist/node/search/_internal/createQueryFromString.js +0 -26
  113. package/dist/node/search/_internal/createQueryFromString.js.map +0 -1
  114. package/dist/node/search/_internal/searchEntities.js +0 -78
  115. package/dist/node/search/_internal/searchEntities.js.map +0 -1
  116. package/dist/node/sites/HubSiteManager.js +0 -159
  117. package/dist/node/sites/HubSiteManager.js.map +0 -1
  118. package/dist/types/core/types/IHubEntityManager.d.ts +0 -46
  119. package/dist/types/core/types/IHubItemEntityManager.d.ts +0 -25
  120. package/dist/types/projects/HubProjectManager.d.ts +0 -153
  121. package/dist/types/search/_internal/createQueryFromString.d.ts +0 -10
  122. package/dist/types/search/_internal/searchEntities.d.ts +0 -23
  123. package/dist/types/sites/HubSiteManager.d.ts +0 -104
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HubItemEntity = void 0;
4
+ const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
5
+ const util_1 = require("../util");
6
+ const utils_1 = require("../utils");
7
+ const sharedWith_1 = require("./_internal/sharedWith");
8
+ /**
9
+ * Base class for all Hub Entities backed by items
10
+ */
11
+ class HubItemEntity {
12
+ constructor(entity, context) {
13
+ this.isDestroyed = false;
14
+ this.context = context;
15
+ this.entity = entity;
16
+ }
17
+ //#region IWithStoreBehavior
18
+ /**
19
+ * Return the backing entity as an object literal
20
+ * @returns
21
+ */
22
+ toJson() {
23
+ if (this.isDestroyed) {
24
+ throw new Error("Entity is already destroyed.");
25
+ }
26
+ return util_1.cloneObject(this.entity);
27
+ }
28
+ /**
29
+ * Can the current user edit the Entity?
30
+ * In order to edit an item, the user must be the owner of the item
31
+ * or be a member of a shared editing group, to which the item is shared.
32
+ * @returns
33
+ */
34
+ async canEdit() {
35
+ const user = this.context.currentUser;
36
+ // owner can always edit
37
+ if (user.username === this.entity.owner) {
38
+ return Promise.resolve(true);
39
+ }
40
+ // Fetch the user's groups by fetching the user
41
+ // we do this each time to ensure we have the latest groups
42
+ const u = await arcgis_rest_portal_1.getUser(user.username);
43
+ const usersGroups = u.groups;
44
+ if (!usersGroups.length) {
45
+ // if user is not owner and not in any groups they can't have edit access
46
+ return Promise.resolve(false);
47
+ }
48
+ // get the groups the entity is shared to
49
+ const entityGroups = await this.sharedWith();
50
+ // filter to shared edit groups
51
+ const editGroupIds = entityGroups
52
+ .filter((g) => {
53
+ const caps = g.capabilities || [];
54
+ return caps.includes("updateitemcontrol");
55
+ })
56
+ .map((g) => g.id);
57
+ // get the user's groups ids
58
+ const usersGroupsIds = utils_1.mapBy("id", usersGroups);
59
+ // check for any overlap
60
+ let isMemberOfEditGroup = false;
61
+ for (const id of usersGroupsIds) {
62
+ isMemberOfEditGroup = editGroupIds.includes(id);
63
+ if (isMemberOfEditGroup) {
64
+ break;
65
+ }
66
+ }
67
+ return Promise.resolve(isMemberOfEditGroup);
68
+ }
69
+ /**
70
+ * Can the current user delete the Entity?
71
+ * In order to delete an item, the user must be the owner of the item or a full org_admin
72
+ * in the owner's organization.
73
+ * @returns
74
+ */
75
+ async canDelete() {
76
+ const user = this.context.currentUser;
77
+ // owner can always delete
78
+ if (user.username === this.entity.owner) {
79
+ return Promise.resolve(true);
80
+ }
81
+ // if not owner, check if user is org_admin in same org as owner
82
+ if (user.role === "org_admin" && !user.roleId) {
83
+ // need to get the owner, and see if the orgid matches
84
+ const ownerUser = await arcgis_rest_portal_1.getUser({
85
+ username: this.entity.owner,
86
+ authentication: this.context.session,
87
+ });
88
+ // ensure owner orgId is not null and matched current user
89
+ const adminCanDelete = ownerUser.orgId && ownerUser.orgId === user.orgId;
90
+ return Promise.resolve(adminCanDelete);
91
+ }
92
+ else {
93
+ // not org admin, can't edit
94
+ return Promise.resolve(false);
95
+ }
96
+ }
97
+ //#endregion IWithStoreBehavior
98
+ //#region IWithSharingBehavior
99
+ /**
100
+ * Share the Entity with the specified group id
101
+ * @param groupId
102
+ */
103
+ async shareWithGroup(groupId) {
104
+ await arcgis_rest_portal_1.shareItemWithGroup({
105
+ id: this.entity.id,
106
+ groupId,
107
+ owner: this.entity.owner,
108
+ authentication: this.context.session,
109
+ });
110
+ }
111
+ /**
112
+ * Unshare the Entity with the specified group id
113
+ * @param groupId
114
+ */
115
+ async unshareWithGroup(groupId) {
116
+ await arcgis_rest_portal_1.unshareItemWithGroup({
117
+ id: this.entity.id,
118
+ groupId,
119
+ owner: this.entity.owner,
120
+ authentication: this.context.session,
121
+ });
122
+ }
123
+ /**
124
+ * Set the access level of the backing item
125
+ * @param access
126
+ */
127
+ async setAccess(access) {
128
+ await arcgis_rest_portal_1.setItemAccess({
129
+ id: this.entity.id,
130
+ access,
131
+ authentication: this.context.session,
132
+ });
133
+ // if this succeeded, update the entity
134
+ this.entity.access = access;
135
+ }
136
+ /**
137
+ * Return a list of groups the Entity is shared to.
138
+ * @returns
139
+ */
140
+ async sharedWith() {
141
+ // delegate to a util that merges the three arrays returned from the api, into a single array
142
+ return sharedWith_1.sharedWith(this.entity.id, this.context.requestOptions);
143
+ }
144
+ }
145
+ exports.HubItemEntity = HubItemEntity;
146
+ //# sourceMappingURL=HubItemEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HubItemEntity.js","sourceRoot":"","sources":["../../../src/core/HubItemEntity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBasePropertyMap = void 0;
4
+ /**
5
+ * Returns an Array of IPropertyMap objects
6
+ * that define the standard projection of properties from a IModel an entity interface
7
+ * @returns
8
+ */
9
+ function getBasePropertyMap() {
10
+ const itemProps = [
11
+ "access",
12
+ "created",
13
+ "culture",
14
+ "description",
15
+ "extent",
16
+ "id",
17
+ "modified",
18
+ "owner",
19
+ "snippet",
20
+ "tags",
21
+ "type",
22
+ "typeKeywords",
23
+ "url",
24
+ ];
25
+ const dataProps = ["display", "geometry", "location"];
26
+ const map = [];
27
+ itemProps.forEach((entry) => {
28
+ map.push({ objectKey: entry, modelKey: `item.${entry}` });
29
+ });
30
+ dataProps.forEach((entry) => {
31
+ map.push({ objectKey: entry, modelKey: `data.${entry}` });
32
+ });
33
+ // Deeper mappings
34
+ map.push({
35
+ objectKey: "slug",
36
+ modelKey: "item.properties.slug",
37
+ });
38
+ map.push({
39
+ objectKey: "schemaVersion",
40
+ modelKey: "item.properties.schemaVersion",
41
+ });
42
+ map.push({
43
+ objectKey: "orgUrlKey",
44
+ modelKey: "item.properties.orgUrlKey",
45
+ });
46
+ map.push({
47
+ objectKey: "name",
48
+ modelKey: "item.title",
49
+ });
50
+ map.push({
51
+ objectKey: "boundary",
52
+ modelKey: "item.properties.boundary",
53
+ });
54
+ return map;
55
+ }
56
+ exports.getBasePropertyMap = getBasePropertyMap;
57
+ //# sourceMappingURL=getBasePropertyMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBasePropertyMap.js","sourceRoot":"","sources":["../../../../src/core/_internal/getBasePropertyMap.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,SAAgB,kBAAkB;IAChC,MAAM,SAAS,GAAG;QAChB,QAAQ;QACR,SAAS;QACT,SAAS;QACT,aAAa;QACb,QAAQ;QACR,IAAI;QACJ,UAAU;QACV,OAAO;QACP,SAAS;QACT,MAAM;QACN,MAAM;QACN,cAAc;QACd,KAAK;KACN,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,kBAAkB;IAClB,GAAG,CAAC,IAAI,CAAC;QACP,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,sBAAsB;KACjC,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC;QACP,SAAS,EAAE,eAAe;QAC1B,QAAQ,EAAE,+BAA+B;KAC1C,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC;QACP,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,2BAA2B;KACtC,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC;QACP,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC;QACP,SAAS,EAAE,UAAU;QACrB,QAAQ,EAAE,0BAA0B;KACrC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AA9CD,gDA8CC"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IHubEntityManager.js.map
3
+ //# sourceMappingURL=IWithCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IWithCatalog.js","sourceRoot":"","sources":["../../../../src/core/traits/IWithCatalog.ts"],"names":[],"mappings":""}
@@ -5,4 +5,5 @@ tslib_1.__exportStar(require("./IWithBannerImage"), exports);
5
5
  tslib_1.__exportStar(require("./IWithLayout"), exports);
6
6
  tslib_1.__exportStar(require("./IWithSlug"), exports);
7
7
  tslib_1.__exportStar(require("./IWithPermissions"), exports);
8
+ tslib_1.__exportStar(require("./IWithCatalog"), exports);
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/traits/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,wDAA8B;AAC9B,sDAA4B;AAC5B,6DAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/traits/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,wDAA8B;AAC9B,sDAA4B;AAC5B,6DAAmC;AACnC,yDAA+B"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IHubItemEntityManager.js.map
3
+ //# sourceMappingURL=IEntityResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEntityResource.js","sourceRoot":"","sources":["../../../../src/core/types/IEntityResource.ts"],"names":[],"mappings":""}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IWithCatalogDefinition.js.map
3
+ //# sourceMappingURL=IItemResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IItemResource.js","sourceRoot":"","sources":["../../../../src/core/types/IItemResource.ts"],"names":[],"mappings":""}
@@ -4,12 +4,10 @@ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./IHubContent"), exports);
5
5
  tslib_1.__exportStar(require("./IHubContentEnrichments"), exports);
6
6
  tslib_1.__exportStar(require("./IHubEntityBase"), exports);
7
- tslib_1.__exportStar(require("./IHubEntityManager"), exports);
8
7
  tslib_1.__exportStar(require("./IHubEvent"), exports);
9
8
  tslib_1.__exportStar(require("./IHubImage"), exports);
10
9
  tslib_1.__exportStar(require("./IHubInitiative"), exports);
11
10
  tslib_1.__exportStar(require("./IHubItemEntity"), exports);
12
- tslib_1.__exportStar(require("./IHubItemEntityManager"), exports);
13
11
  tslib_1.__exportStar(require("./IHubLayout"), exports);
14
12
  tslib_1.__exportStar(require("./IHubPage"), exports);
15
13
  tslib_1.__exportStar(require("./IHubProject"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/types/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,mEAAyC;AACzC,2DAAiC;AACjC,8DAAoC;AACpC,sDAA4B;AAC5B,sDAA4B;AAC5B,2DAAiC;AACjC,2DAAiC;AACjC,kEAAwC;AACxC,uDAA6B;AAC7B,qDAA2B;AAC3B,wDAA8B;AAC9B,qDAA2B;AAC3B,0DAAgC;AAChC,yDAA+B;AAC/B,6DAAmC;AACnC,+DAAqC;AACrC,kDAAwB;AACxB,2DAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/types/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,mEAAyC;AACzC,2DAAiC;AAEjC,sDAA4B;AAC5B,sDAA4B;AAC5B,2DAAiC;AACjC,2DAAiC;AAEjC,uDAA6B;AAC7B,qDAA2B;AAC3B,wDAA8B;AAC9B,qDAA2B;AAC3B,0DAAgC;AAChC,yDAA+B;AAC/B,6DAAmC;AACnC,+DAAqC;AACrC,kDAAwB;AACxB,2DAAiC"}
@@ -21,6 +21,7 @@ tslib_1.__exportStar(require("./items"), exports);
21
21
  tslib_1.__exportStar(require("./models"), exports);
22
22
  tslib_1.__exportStar(require("./objects"), exports);
23
23
  tslib_1.__exportStar(require("./projects"), exports);
24
+ tslib_1.__exportStar(require("./initiatives"), exports);
24
25
  tslib_1.__exportStar(require("./request"), exports);
25
26
  tslib_1.__exportStar(require("./resources"), exports);
26
27
  tslib_1.__exportStar(require("./search"), exports);
@@ -43,6 +44,4 @@ exports.HubError = HubError_1.default;
43
44
  var abab_1 = require("abab");
44
45
  Object.defineProperty(exports, "btoa", { enumerable: true, get: function () { return abab_1.btoa; } });
45
46
  Object.defineProperty(exports, "atob", { enumerable: true, get: function () { return abab_1.atob; } });
46
- // This will be moved to another package
47
- // export * from "./Hub";
48
47
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;AAChB,0BAA0B;;;;AAE1B,mDAAyB;AACzB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,iDAAuB;AACvB,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,kDAAwB;AACxB,mDAAyB;AACzB,oDAA0B;AAC1B,qDAA2B;AAC3B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,iDAAuB;AACvB,iDAAuB;AACvB,kDAAwB;AAExB,kDAAwB;AACxB,gDAAsB;AACtB,kDAAwB;AACxB,kDAAwB;AAExB,qDAA8C;AAKrC,yBALF,wBAAc,CAKE;AAJvB,qDAA8C;AAIrB,yBAJlB,wBAAc,CAIkB;AAHvC,yCAAkC;AAGO,mBAHlC,kBAAQ,CAGkC;AACjD,6BAAkC;AAAzB,4FAAA,IAAI,OAAA;AAAE,4FAAA,IAAI,OAAA;AAEnB,wCAAwC;AACxC,yBAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;AAChB,0BAA0B;;;;AAE1B,mDAAyB;AACzB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,iDAAuB;AACvB,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,kDAAwB;AACxB,mDAAyB;AACzB,oDAA0B;AAC1B,qDAA2B;AAC3B,wDAA8B;AAC9B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,iDAAuB;AACvB,iDAAuB;AACvB,kDAAwB;AAExB,kDAAwB;AACxB,gDAAsB;AACtB,kDAAwB;AACxB,kDAAwB;AAExB,qDAA8C;AAKrC,yBALF,wBAAc,CAKE;AAJvB,qDAA8C;AAIrB,yBAJlB,wBAAc,CAIkB;AAHvC,yCAAkC;AAGO,mBAHlC,kBAAQ,CAGkC;AACjD,6BAAkC;AAAzB,4FAAA,IAAI,OAAA;AAAE,4FAAA,IAAI,OAAA"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HubInitiative = void 0;
4
+ const defaults_1 = require("./defaults");
5
+ const core_1 = require("../core");
6
+ const HubInitiatives_1 = require("./HubInitiatives");
7
+ const Catalog_1 = require("../search/Catalog");
8
+ const HubItemEntity_1 = require("../core/HubItemEntity");
9
+ /**
10
+ * Hub Initiative Class
11
+ */
12
+ class HubInitiative extends HubItemEntity_1.HubItemEntity {
13
+ /**
14
+ * Private constructor so we don't have `new` all over the place. Allows for
15
+ * more flexibility in how we create the HubInitiativeManager over time.
16
+ * @param context
17
+ */
18
+ constructor(entity, context) {
19
+ super(entity, context);
20
+ this._catalog = Catalog_1.Catalog.fromJson(entity.catalog, this.context);
21
+ this._permissionManager = core_1.PermissionManager.fromJson(entity.permissions, this.context);
22
+ }
23
+ /**
24
+ * Catalog instance for this Initiative. Note: Do not hold direct references to this object; always access it from the Initiative.
25
+ * @returns Catalog
26
+ */
27
+ get catalog() {
28
+ return this._catalog;
29
+ }
30
+ /**
31
+ * PermissionManager instance for this Initiative. Note: Do not hold direct references to this object; always access it from the Initiative.
32
+ * @returns PermissionManager
33
+ */
34
+ get permissions() {
35
+ return this._permissionManager;
36
+ }
37
+ /**
38
+ * Create an instance from an IHubInitiative object
39
+ * @param json - JSON object to create a HubInitiative from
40
+ * @param context - ArcGIS context
41
+ * @returns
42
+ */
43
+ static fromJson(json, context) {
44
+ // merge what we have with the default values
45
+ const pojo = this.applyDefaults(json, context);
46
+ return new HubInitiative(pojo, context);
47
+ }
48
+ /**
49
+ * Create a new HubInitiative, returning a HubInitiative instance.
50
+ * Note: This does not persist the Initiative into the backing store
51
+ * @param partialInitiative
52
+ * @param context
53
+ * @returns
54
+ */
55
+ static async create(partialInitiative, context, save = false) {
56
+ const pojo = this.applyDefaults(partialInitiative, context);
57
+ // return an instance of HubInitiative
58
+ const instance = HubInitiative.fromJson(pojo, context);
59
+ if (save) {
60
+ await instance.save();
61
+ }
62
+ return instance;
63
+ }
64
+ /**
65
+ * Fetch an Initiative from the backing store and return a HubInitiative instance.
66
+ * @param identifier - slug or item id
67
+ * @param context
68
+ * @returns
69
+ */
70
+ static async fetch(identifier, context) {
71
+ // fetch by id or slug
72
+ try {
73
+ const entity = await HubInitiatives_1.fetchInitiative(identifier, context.requestOptions);
74
+ // create an instance of HubInitiative from the entity
75
+ return HubInitiative.fromJson(entity, context);
76
+ }
77
+ catch (ex) {
78
+ if (ex.message ===
79
+ "CONT_0001: Item does not exist or is inaccessible.") {
80
+ throw new Error(`Initiative not found.`);
81
+ }
82
+ else {
83
+ throw ex;
84
+ }
85
+ }
86
+ }
87
+ static applyDefaults(partialInitiative, context) {
88
+ // ensure we have the orgUrlKey
89
+ if (!partialInitiative.orgUrlKey) {
90
+ partialInitiative.orgUrlKey = context.portal.urlKey;
91
+ }
92
+ // extend the partial over the defaults
93
+ const pojo = Object.assign(Object.assign({}, defaults_1.DEFAULT_INITIATIVE), partialInitiative);
94
+ return pojo;
95
+ }
96
+ /**
97
+ * Apply a new state to the instance
98
+ * @param changes
99
+ */
100
+ update(changes) {
101
+ if (this.isDestroyed) {
102
+ throw new Error("HubInitiative is already destroyed.");
103
+ }
104
+ // merge partial onto existing entity
105
+ this.entity = Object.assign(Object.assign({}, this.entity), changes);
106
+ // update internal instances
107
+ if (changes.catalog) {
108
+ this._catalog = Catalog_1.Catalog.fromJson(this.entity.catalog, this.context);
109
+ }
110
+ if (changes.permissions) {
111
+ this._permissionManager = core_1.PermissionManager.fromJson(this.entity.permissions, this.context);
112
+ }
113
+ }
114
+ /**
115
+ * Save the HubInitiative to the backing store.
116
+ * Currently Initiatives are stored as Items in Portal
117
+ * @returns
118
+ */
119
+ async save() {
120
+ if (this.isDestroyed) {
121
+ throw new Error("HubInitiative is already destroyed.");
122
+ }
123
+ // get the catalog, and permission configs
124
+ this.entity.catalog = this._catalog.toJson();
125
+ this.entity.permissions = this._permissionManager.toJson();
126
+ if (this.entity.id) {
127
+ // update it
128
+ this.entity = await HubInitiatives_1.updateInitiative(this.entity, this.context.userRequestOptions);
129
+ }
130
+ else {
131
+ // create it
132
+ this.entity = await HubInitiatives_1.createInitiative(this.entity, this.context.userRequestOptions);
133
+ }
134
+ return;
135
+ }
136
+ /**
137
+ * Delete the HubInitiative from the store
138
+ * set a flag to indicate that it is destroyed
139
+ * @returns
140
+ */
141
+ async delete() {
142
+ if (this.isDestroyed) {
143
+ throw new Error("HubInitiative is already destroyed.");
144
+ }
145
+ this.isDestroyed = true;
146
+ // Delegate to module fn
147
+ await HubInitiatives_1.deleteInitiative(this.entity.id, this.context.userRequestOptions);
148
+ }
149
+ }
150
+ exports.HubInitiative = HubInitiative;
151
+ //# sourceMappingURL=HubInitiative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HubInitiative.js","sourceRoot":"","sources":["../../../src/initiatives/HubInitiative.ts"],"names":[],"mappings":"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"}