@esri/solution-common 4.1.2 → 5.0.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 (261) hide show
  1. package/dist/cjs/completeItem.d.ts +29 -29
  2. package/dist/cjs/completeItem.js +81 -81
  3. package/dist/cjs/create-hub-request-options.d.ts +29 -29
  4. package/dist/cjs/create-hub-request-options.js +63 -63
  5. package/dist/cjs/deleteHelpers/deleteEmptyGroups.d.ts +24 -24
  6. package/dist/cjs/deleteHelpers/deleteEmptyGroups.js +41 -41
  7. package/dist/cjs/deleteHelpers/deleteGroupIfEmpty.d.ts +27 -27
  8. package/dist/cjs/deleteHelpers/deleteGroupIfEmpty.js +96 -96
  9. package/dist/cjs/deleteHelpers/deleteSolutionContents.d.ts +38 -38
  10. package/dist/cjs/deleteHelpers/deleteSolutionContents.js +129 -129
  11. package/dist/cjs/deleteHelpers/deleteSolutionFolder.d.ts +29 -29
  12. package/dist/cjs/deleteHelpers/deleteSolutionFolder.js +78 -78
  13. package/dist/cjs/deleteHelpers/deleteSolutionItem.d.ts +30 -30
  14. package/dist/cjs/deleteHelpers/deleteSolutionItem.js +53 -53
  15. package/dist/cjs/deleteHelpers/index.d.ts +22 -22
  16. package/dist/cjs/deleteHelpers/index.js +25 -25
  17. package/dist/cjs/deleteHelpers/reconstructBuildOrderIds.d.ts +27 -27
  18. package/dist/cjs/deleteHelpers/reconstructBuildOrderIds.js +33 -33
  19. package/dist/cjs/deleteHelpers/removeItems.d.ts +34 -34
  20. package/dist/cjs/deleteHelpers/removeItems.js +111 -111
  21. package/dist/cjs/deleteHelpers/reportProgress.d.ts +27 -27
  22. package/dist/cjs/deleteHelpers/reportProgress.js +45 -45
  23. package/dist/cjs/deleteSolution.d.ts +55 -55
  24. package/dist/cjs/deleteSolution.js +106 -106
  25. package/dist/cjs/dependencies.d.ts +26 -26
  26. package/dist/cjs/dependencies.js +170 -170
  27. package/dist/cjs/featureServiceHelpers.d.ts +791 -791
  28. package/dist/cjs/featureServiceHelpers.js +2420 -2420
  29. package/dist/cjs/generalHelpers.d.ts +392 -385
  30. package/dist/cjs/generalHelpers.js +857 -854
  31. package/dist/cjs/generalHelpers.js.map +1 -1
  32. package/dist/cjs/get-subscription-info.d.ts +27 -27
  33. package/dist/cjs/get-subscription-info.js +38 -38
  34. package/dist/cjs/getDeletableSolutionInfo.d.ts +29 -29
  35. package/dist/cjs/getDeletableSolutionInfo.js +52 -52
  36. package/dist/cjs/getItemTypeAbbrev.d.ts +19 -19
  37. package/dist/cjs/getItemTypeAbbrev.js +184 -184
  38. package/dist/cjs/getSolutionSummary.d.ts +27 -27
  39. package/dist/cjs/getSolutionSummary.js +100 -100
  40. package/dist/cjs/index.d.ts +43 -44
  41. package/dist/cjs/index.js +46 -47
  42. package/dist/cjs/index.js.map +1 -1
  43. package/dist/cjs/interfaces.d.ts +1334 -1334
  44. package/dist/cjs/interfaces.js +74 -74
  45. package/dist/cjs/interfaces.js.map +1 -1
  46. package/dist/cjs/libConnectors.d.ts +73 -73
  47. package/dist/cjs/libConnectors.js +114 -114
  48. package/dist/cjs/migrations/apply-schema.d.ts +24 -24
  49. package/dist/cjs/migrations/apply-schema.js +35 -35
  50. package/dist/cjs/migrations/is-legacy-solution.d.ts +24 -24
  51. package/dist/cjs/migrations/is-legacy-solution.js +39 -39
  52. package/dist/cjs/migrations/upgrade-three-dot-one.d.ts +27 -27
  53. package/dist/cjs/migrations/upgrade-three-dot-one.js +48 -48
  54. package/dist/cjs/migrations/upgrade-three-dot-zero.d.ts +27 -27
  55. package/dist/cjs/migrations/upgrade-three-dot-zero.js +42 -42
  56. package/dist/cjs/migrations/upgrade-two-dot-five.d.ts +24 -24
  57. package/dist/cjs/migrations/upgrade-two-dot-five.js +72 -72
  58. package/dist/cjs/migrations/upgrade-two-dot-four.d.ts +24 -24
  59. package/dist/cjs/migrations/upgrade-two-dot-four.js +71 -71
  60. package/dist/cjs/migrations/upgrade-two-dot-one.d.ts +7 -7
  61. package/dist/cjs/migrations/upgrade-two-dot-one.js +38 -38
  62. package/dist/cjs/migrations/upgrade-two-dot-seven.d.ts +23 -23
  63. package/dist/cjs/migrations/upgrade-two-dot-seven.js +57 -57
  64. package/dist/cjs/migrations/upgrade-two-dot-six.d.ts +27 -27
  65. package/dist/cjs/migrations/upgrade-two-dot-six.js +60 -60
  66. package/dist/cjs/migrations/upgrade-two-dot-three.d.ts +23 -23
  67. package/dist/cjs/migrations/upgrade-two-dot-three.js +54 -54
  68. package/dist/cjs/migrations/upgrade-two-dot-two.d.ts +23 -23
  69. package/dist/cjs/migrations/upgrade-two-dot-two.js +57 -57
  70. package/dist/cjs/migrations/upgrade-two-dot-zero.d.ts +44 -44
  71. package/dist/cjs/migrations/upgrade-two-dot-zero.js +94 -94
  72. package/dist/cjs/migrator.d.ts +25 -25
  73. package/dist/cjs/migrator.js +76 -76
  74. package/dist/cjs/resourceHelpers.d.ts +191 -191
  75. package/dist/cjs/resourceHelpers.js +383 -390
  76. package/dist/cjs/resourceHelpers.js.map +1 -1
  77. package/dist/cjs/resources/add-resource-from-blob.d.ts +26 -26
  78. package/dist/cjs/resources/add-resource-from-blob.js +51 -51
  79. package/dist/cjs/resources/addMetadataFromBlob.d.ts +25 -25
  80. package/dist/cjs/resources/addMetadataFromBlob.js +42 -42
  81. package/dist/cjs/resources/convert-item-resource-to-storage-resource.d.ts +32 -32
  82. package/dist/cjs/resources/convert-item-resource-to-storage-resource.js +69 -69
  83. package/dist/cjs/resources/convert-storage-resource-to-item-resource.d.ts +29 -29
  84. package/dist/cjs/resources/convert-storage-resource-to-item-resource.js +69 -69
  85. package/dist/cjs/resources/copyAssociatedFiles.d.ts +67 -67
  86. package/dist/cjs/resources/copyAssociatedFiles.js +301 -301
  87. package/dist/cjs/resources/copyDataIntoItem.d.ts +33 -33
  88. package/dist/cjs/resources/copyDataIntoItem.js +61 -62
  89. package/dist/cjs/resources/copyDataIntoItem.js.map +1 -1
  90. package/dist/cjs/resources/copyMetadataIntoItem.d.ts +26 -26
  91. package/dist/cjs/resources/copyMetadataIntoItem.js +45 -45
  92. package/dist/cjs/resources/copyResourceIntoZip.d.ts +33 -33
  93. package/dist/cjs/resources/copyResourceIntoZip.js +77 -77
  94. package/dist/cjs/resources/copyZipIntoItem.d.ts +25 -25
  95. package/dist/cjs/resources/copyZipIntoItem.js +53 -53
  96. package/dist/cjs/resources/createCopyResults.d.ts +25 -25
  97. package/dist/cjs/resources/createCopyResults.js +35 -35
  98. package/dist/cjs/resources/get-blob.d.ts +26 -26
  99. package/dist/cjs/resources/get-blob.js +26 -26
  100. package/dist/cjs/resources/getItemResourcesFilesFromPaths.d.ts +24 -24
  101. package/dist/cjs/resources/getItemResourcesFilesFromPaths.js +48 -48
  102. package/dist/cjs/resources/getItemResourcesPaths.d.ts +26 -26
  103. package/dist/cjs/resources/getItemResourcesPaths.js +72 -72
  104. package/dist/cjs/resources/index.d.ts +29 -29
  105. package/dist/cjs/resources/index.js +32 -32
  106. package/dist/cjs/resources/solution-resource.d.ts +35 -35
  107. package/dist/cjs/resources/solution-resource.js +30 -30
  108. package/dist/cjs/resources/solution-resource.js.map +1 -1
  109. package/dist/cjs/resources/transform-resource-paths-to-solution-resources.d.ts +56 -56
  110. package/dist/cjs/resources/transform-resource-paths-to-solution-resources.js +145 -145
  111. package/dist/cjs/restHelpers.d.ts +586 -585
  112. package/dist/cjs/restHelpers.js +1889 -1883
  113. package/dist/cjs/restHelpers.js.map +1 -1
  114. package/dist/cjs/restHelpersGet.d.ts +288 -288
  115. package/dist/cjs/restHelpersGet.js +803 -803
  116. package/dist/cjs/sharing/index.d.ts +16 -16
  117. package/dist/cjs/sharing/index.js +19 -19
  118. package/dist/cjs/sharing/share-item-to-groups.d.ts +26 -26
  119. package/dist/cjs/sharing/share-item-to-groups.js +43 -43
  120. package/dist/cjs/templatization.d.ts +139 -139
  121. package/dist/cjs/templatization.js +313 -313
  122. package/dist/cjs/trackingHelpers.d.ts +116 -116
  123. package/dist/cjs/trackingHelpers.js +216 -216
  124. package/dist/cjs/velocityHelpers.d.ts +57 -57
  125. package/dist/cjs/velocityHelpers.js +134 -134
  126. package/dist/cjs/workforceHelpers.d.ts +115 -115
  127. package/dist/cjs/workforceHelpers.js +746 -746
  128. package/dist/cjs/workforceHelpers.js.map +1 -1
  129. package/dist/esm/completeItem.d.ts +29 -29
  130. package/dist/esm/completeItem.js +76 -76
  131. package/dist/esm/create-hub-request-options.d.ts +29 -29
  132. package/dist/esm/create-hub-request-options.js +59 -59
  133. package/dist/esm/deleteHelpers/deleteEmptyGroups.d.ts +24 -24
  134. package/dist/esm/deleteHelpers/deleteEmptyGroups.js +37 -37
  135. package/dist/esm/deleteHelpers/deleteGroupIfEmpty.d.ts +27 -27
  136. package/dist/esm/deleteHelpers/deleteGroupIfEmpty.js +91 -91
  137. package/dist/esm/deleteHelpers/deleteSolutionContents.d.ts +38 -38
  138. package/dist/esm/deleteHelpers/deleteSolutionContents.js +124 -124
  139. package/dist/esm/deleteHelpers/deleteSolutionFolder.d.ts +29 -29
  140. package/dist/esm/deleteHelpers/deleteSolutionFolder.js +73 -73
  141. package/dist/esm/deleteHelpers/deleteSolutionItem.d.ts +30 -30
  142. package/dist/esm/deleteHelpers/deleteSolutionItem.js +48 -48
  143. package/dist/esm/deleteHelpers/index.d.ts +22 -22
  144. package/dist/esm/deleteHelpers/index.js +22 -22
  145. package/dist/esm/deleteHelpers/reconstructBuildOrderIds.d.ts +27 -27
  146. package/dist/esm/deleteHelpers/reconstructBuildOrderIds.js +28 -28
  147. package/dist/esm/deleteHelpers/removeItems.d.ts +34 -34
  148. package/dist/esm/deleteHelpers/removeItems.js +106 -106
  149. package/dist/esm/deleteHelpers/reportProgress.d.ts +27 -27
  150. package/dist/esm/deleteHelpers/reportProgress.js +41 -41
  151. package/dist/esm/deleteSolution.d.ts +55 -55
  152. package/dist/esm/deleteSolution.js +100 -100
  153. package/dist/esm/dependencies.d.ts +26 -26
  154. package/dist/esm/dependencies.js +166 -166
  155. package/dist/esm/featureServiceHelpers.d.ts +791 -791
  156. package/dist/esm/featureServiceHelpers.js +2336 -2336
  157. package/dist/esm/generalHelpers.d.ts +392 -385
  158. package/dist/esm/generalHelpers.js +810 -808
  159. package/dist/esm/generalHelpers.js.map +1 -1
  160. package/dist/esm/get-subscription-info.d.ts +27 -27
  161. package/dist/esm/get-subscription-info.js +34 -34
  162. package/dist/esm/getDeletableSolutionInfo.d.ts +29 -29
  163. package/dist/esm/getDeletableSolutionInfo.js +47 -47
  164. package/dist/esm/getItemTypeAbbrev.d.ts +19 -19
  165. package/dist/esm/getItemTypeAbbrev.js +180 -180
  166. package/dist/esm/getSolutionSummary.d.ts +27 -27
  167. package/dist/esm/getSolutionSummary.js +95 -95
  168. package/dist/esm/index.d.ts +43 -44
  169. package/dist/esm/index.js +43 -44
  170. package/dist/esm/index.js.map +1 -1
  171. package/dist/esm/interfaces.d.ts +1334 -1334
  172. package/dist/esm/interfaces.js +70 -70
  173. package/dist/esm/libConnectors.d.ts +73 -73
  174. package/dist/esm/libConnectors.js +104 -104
  175. package/dist/esm/migrations/apply-schema.d.ts +24 -24
  176. package/dist/esm/migrations/apply-schema.js +31 -31
  177. package/dist/esm/migrations/is-legacy-solution.d.ts +24 -24
  178. package/dist/esm/migrations/is-legacy-solution.js +35 -35
  179. package/dist/esm/migrations/upgrade-three-dot-one.d.ts +27 -27
  180. package/dist/esm/migrations/upgrade-three-dot-one.js +44 -44
  181. package/dist/esm/migrations/upgrade-three-dot-zero.d.ts +27 -27
  182. package/dist/esm/migrations/upgrade-three-dot-zero.js +38 -38
  183. package/dist/esm/migrations/upgrade-two-dot-five.d.ts +24 -24
  184. package/dist/esm/migrations/upgrade-two-dot-five.js +68 -68
  185. package/dist/esm/migrations/upgrade-two-dot-four.d.ts +24 -24
  186. package/dist/esm/migrations/upgrade-two-dot-four.js +67 -67
  187. package/dist/esm/migrations/upgrade-two-dot-one.d.ts +7 -7
  188. package/dist/esm/migrations/upgrade-two-dot-one.js +34 -34
  189. package/dist/esm/migrations/upgrade-two-dot-seven.d.ts +23 -23
  190. package/dist/esm/migrations/upgrade-two-dot-seven.js +53 -53
  191. package/dist/esm/migrations/upgrade-two-dot-six.d.ts +27 -27
  192. package/dist/esm/migrations/upgrade-two-dot-six.js +56 -56
  193. package/dist/esm/migrations/upgrade-two-dot-three.d.ts +23 -23
  194. package/dist/esm/migrations/upgrade-two-dot-three.js +50 -50
  195. package/dist/esm/migrations/upgrade-two-dot-two.d.ts +23 -23
  196. package/dist/esm/migrations/upgrade-two-dot-two.js +53 -53
  197. package/dist/esm/migrations/upgrade-two-dot-zero.d.ts +44 -44
  198. package/dist/esm/migrations/upgrade-two-dot-zero.js +87 -87
  199. package/dist/esm/migrator.d.ts +25 -25
  200. package/dist/esm/migrator.js +72 -72
  201. package/dist/esm/resourceHelpers.d.ts +191 -191
  202. package/dist/esm/resourceHelpers.js +364 -371
  203. package/dist/esm/resourceHelpers.js.map +1 -1
  204. package/dist/esm/resources/add-resource-from-blob.d.ts +26 -26
  205. package/dist/esm/resources/add-resource-from-blob.js +47 -47
  206. package/dist/esm/resources/addMetadataFromBlob.d.ts +25 -25
  207. package/dist/esm/resources/addMetadataFromBlob.js +38 -38
  208. package/dist/esm/resources/convert-item-resource-to-storage-resource.d.ts +32 -32
  209. package/dist/esm/resources/convert-item-resource-to-storage-resource.js +65 -65
  210. package/dist/esm/resources/convert-storage-resource-to-item-resource.d.ts +29 -29
  211. package/dist/esm/resources/convert-storage-resource-to-item-resource.js +65 -65
  212. package/dist/esm/resources/copyAssociatedFiles.d.ts +67 -67
  213. package/dist/esm/resources/copyAssociatedFiles.js +293 -293
  214. package/dist/esm/resources/copyDataIntoItem.d.ts +33 -33
  215. package/dist/esm/resources/copyDataIntoItem.js +56 -57
  216. package/dist/esm/resources/copyDataIntoItem.js.map +1 -1
  217. package/dist/esm/resources/copyMetadataIntoItem.d.ts +26 -26
  218. package/dist/esm/resources/copyMetadataIntoItem.js +41 -41
  219. package/dist/esm/resources/copyResourceIntoZip.d.ts +33 -33
  220. package/dist/esm/resources/copyResourceIntoZip.js +72 -72
  221. package/dist/esm/resources/copyZipIntoItem.d.ts +25 -25
  222. package/dist/esm/resources/copyZipIntoItem.js +49 -49
  223. package/dist/esm/resources/createCopyResults.d.ts +25 -25
  224. package/dist/esm/resources/createCopyResults.js +31 -31
  225. package/dist/esm/resources/get-blob.d.ts +26 -26
  226. package/dist/esm/resources/get-blob.js +22 -22
  227. package/dist/esm/resources/getItemResourcesFilesFromPaths.d.ts +24 -24
  228. package/dist/esm/resources/getItemResourcesFilesFromPaths.js +44 -44
  229. package/dist/esm/resources/getItemResourcesPaths.d.ts +26 -26
  230. package/dist/esm/resources/getItemResourcesPaths.js +68 -68
  231. package/dist/esm/resources/index.d.ts +29 -29
  232. package/dist/esm/resources/index.js +29 -29
  233. package/dist/esm/resources/solution-resource.d.ts +35 -35
  234. package/dist/esm/resources/solution-resource.js +27 -27
  235. package/dist/esm/resources/transform-resource-paths-to-solution-resources.d.ts +56 -56
  236. package/dist/esm/resources/transform-resource-paths-to-solution-resources.js +137 -137
  237. package/dist/esm/restHelpers.d.ts +586 -585
  238. package/dist/esm/restHelpers.js +1828 -1823
  239. package/dist/esm/restHelpers.js.map +1 -1
  240. package/dist/esm/restHelpersGet.d.ts +288 -288
  241. package/dist/esm/restHelpersGet.js +763 -763
  242. package/dist/esm/sharing/index.d.ts +16 -16
  243. package/dist/esm/sharing/index.js +16 -16
  244. package/dist/esm/sharing/share-item-to-groups.d.ts +26 -26
  245. package/dist/esm/sharing/share-item-to-groups.js +39 -39
  246. package/dist/esm/templatization.d.ts +139 -139
  247. package/dist/esm/templatization.js +293 -293
  248. package/dist/esm/trackingHelpers.d.ts +116 -116
  249. package/dist/esm/trackingHelpers.js +204 -204
  250. package/dist/esm/velocityHelpers.d.ts +57 -57
  251. package/dist/esm/velocityHelpers.js +128 -128
  252. package/dist/esm/workforceHelpers.d.ts +115 -115
  253. package/dist/esm/workforceHelpers.js +717 -717
  254. package/dist/esm/workforceHelpers.js.map +1 -1
  255. package/package.json +3 -3
  256. package/dist/cjs/polyfills.d.ts +0 -40
  257. package/dist/cjs/polyfills.js +0 -98
  258. package/dist/cjs/polyfills.js.map +0 -1
  259. package/dist/esm/polyfills.d.ts +0 -40
  260. package/dist/esm/polyfills.js +0 -93
  261. package/dist/esm/polyfills.js.map +0 -1
@@ -1,97 +1,97 @@
1
- "use strict";
2
- /** @license
3
- * Copyright 2021 Esri
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.deleteGroupIfEmpty = void 0;
19
- const tslib_1 = require("tslib");
20
- const portal = tslib_1.__importStar(require("@esri/arcgis-rest-portal"));
21
- // ------------------------------------------------------------------------------------------------------------------ //
22
- /**
23
- * Deletes a group if it's empty and belongs to the specified user.
24
- *
25
- * @param groupId Id of the group to be deleted
26
- * @param authentication Credentials for the request
27
- * @returns Promise indicating if group was deleted
28
- */
29
- function deleteGroupIfEmpty(groupId, authentication) {
30
- let username;
31
- let isGroupProtected;
32
- // Get the owner tied to the authentication
33
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
34
- return authentication
35
- .getUsername()
36
- .then(response => {
37
- username = response;
38
- // We need to know the owner and protection status of the group
39
- return portal.getGroup(groupId, { authentication });
40
- })
41
- .then((group) => {
42
- if (group.owner !== username) {
43
- return Promise.resolve(null); // don't delete a group we don't own
44
- }
45
- isGroupProtected = group.protected; // do we need to unprotect before deleting?
46
- // Get the number of items in the group
47
- const groupContentOptions = {
48
- paging: {
49
- num: 1 // only need 1 item to show that group is not empty
50
- },
51
- authentication
52
- };
53
- return portal.getGroupContent(groupId, groupContentOptions);
54
- })
55
- .then((groupContent) => {
56
- // should be IGroupContentResult; see https://github.com/Esri/arcgis-rest-js/pull/858/files
57
- // If groupContent is null, then we don't own the group; if the group is not empty, then we can't delete it
58
- if (!groupContent || groupContent.total > 0) {
59
- return Promise.resolve({ success: false }); // don't delete a group that's not empty
60
- }
61
- // We're going ahead with deletion; first unprotect it if necessary
62
- if (isGroupProtected) {
63
- const groupOptions = {
64
- id: groupId,
65
- authentication
66
- };
67
- return portal.unprotectGroup(groupOptions);
68
- }
69
- else {
70
- return Promise.resolve({ success: true });
71
- }
72
- })
73
- .then(response => {
74
- if (response.success) {
75
- // All is good so far: we own the group, it's empty, and it's unprotected; proceed with deletion
76
- const groupOptions = {
77
- id: groupId,
78
- authentication
79
- };
80
- return portal.removeGroup(groupOptions);
81
- }
82
- else {
83
- // We should not delete the group
84
- return Promise.resolve({ success: false });
85
- }
86
- })
87
- .then((response) => {
88
- // Return a simple response
89
- return Promise.resolve(response.success);
90
- })
91
- .catch(() => {
92
- // In case getGroup or getGroupContent fails
93
- return Promise.resolve(false);
94
- });
95
- }
96
- exports.deleteGroupIfEmpty = deleteGroupIfEmpty;
1
+ "use strict";
2
+ /** @license
3
+ * Copyright 2021 Esri
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.deleteGroupIfEmpty = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const portal = tslib_1.__importStar(require("@esri/arcgis-rest-portal"));
21
+ // ------------------------------------------------------------------------------------------------------------------ //
22
+ /**
23
+ * Deletes a group if it's empty and belongs to the specified user.
24
+ *
25
+ * @param groupId Id of the group to be deleted
26
+ * @param authentication Credentials for the request
27
+ * @returns Promise indicating if group was deleted
28
+ */
29
+ function deleteGroupIfEmpty(groupId, authentication) {
30
+ let username;
31
+ let isGroupProtected;
32
+ // Get the owner tied to the authentication
33
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
34
+ return authentication
35
+ .getUsername()
36
+ .then(response => {
37
+ username = response;
38
+ // We need to know the owner and protection status of the group
39
+ return portal.getGroup(groupId, { authentication });
40
+ })
41
+ .then((group) => {
42
+ if (group.owner !== username) {
43
+ return Promise.resolve(null); // don't delete a group we don't own
44
+ }
45
+ isGroupProtected = group.protected; // do we need to unprotect before deleting?
46
+ // Get the number of items in the group
47
+ const groupContentOptions = {
48
+ paging: {
49
+ num: 1 // only need 1 item to show that group is not empty
50
+ },
51
+ authentication
52
+ };
53
+ return portal.getGroupContent(groupId, groupContentOptions);
54
+ })
55
+ .then((groupContent) => {
56
+ // should be IGroupContentResult; see https://github.com/Esri/arcgis-rest-js/pull/858/files
57
+ // If groupContent is null, then we don't own the group; if the group is not empty, then we can't delete it
58
+ if (!groupContent || groupContent.total > 0) {
59
+ return Promise.resolve({ success: false }); // don't delete a group that's not empty
60
+ }
61
+ // We're going ahead with deletion; first unprotect it if necessary
62
+ if (isGroupProtected) {
63
+ const groupOptions = {
64
+ id: groupId,
65
+ authentication
66
+ };
67
+ return portal.unprotectGroup(groupOptions);
68
+ }
69
+ else {
70
+ return Promise.resolve({ success: true });
71
+ }
72
+ })
73
+ .then(response => {
74
+ if (response.success) {
75
+ // All is good so far: we own the group, it's empty, and it's unprotected; proceed with deletion
76
+ const groupOptions = {
77
+ id: groupId,
78
+ authentication
79
+ };
80
+ return portal.removeGroup(groupOptions);
81
+ }
82
+ else {
83
+ // We should not delete the group
84
+ return Promise.resolve({ success: false });
85
+ }
86
+ })
87
+ .then((response) => {
88
+ // Return a simple response
89
+ return Promise.resolve(response.success);
90
+ })
91
+ .catch(() => {
92
+ // In case getGroup or getGroupContent fails
93
+ return Promise.resolve(false);
94
+ });
95
+ }
96
+ exports.deleteGroupIfEmpty = deleteGroupIfEmpty;
97
97
  //# sourceMappingURL=deleteGroupIfEmpty.js.map
@@ -1,38 +1,38 @@
1
- /** @license
2
- * Copyright 2021 Esri
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- /**
17
- * Provides a function for deleting a deployed Solution item and all of the items that were created
18
- * as part of that deployment.
19
- *
20
- * @module deleteSolution
21
- */
22
- import { IDeleteSolutionOptions, ISolutionPrecis, UserSession } from "../interfaces";
23
- /**
24
- * Deletes a deployed Solution item and and all of the items that were created
25
- * as part of that deployment.
26
- *
27
- * @param solutionItemId Id of a deployed Solution
28
- * @param solutionSummary List of items in the solution that would be deleted
29
- * @param authentication Credentials for the request
30
- * @param options Progress reporting options
31
- * @returns Promise that will resolve with a list of two solution summaries: successful deletions
32
- * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than
33
- * one Solution will not be in either list.
34
- * Note that Solution item and its deployment folder will only be deleted if all of its deployed
35
- * items were deleted (the failure list is empty). This makes it possible to re-attempted
36
- * deletion using the solutionItemId.
37
- */
38
- export declare function deleteSolutionContents(solutionItemId: string, solutionSummary: ISolutionPrecis, authentication: UserSession, options?: IDeleteSolutionOptions): Promise<ISolutionPrecis[]>;
1
+ /** @license
2
+ * Copyright 2021 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Provides a function for deleting a deployed Solution item and all of the items that were created
18
+ * as part of that deployment.
19
+ *
20
+ * @module deleteSolution
21
+ */
22
+ import { IDeleteSolutionOptions, ISolutionPrecis, UserSession } from "../interfaces";
23
+ /**
24
+ * Deletes a deployed Solution item and and all of the items that were created
25
+ * as part of that deployment.
26
+ *
27
+ * @param solutionItemId Id of a deployed Solution
28
+ * @param solutionSummary List of items in the solution that would be deleted
29
+ * @param authentication Credentials for the request
30
+ * @param options Progress reporting options
31
+ * @returns Promise that will resolve with a list of two solution summaries: successful deletions
32
+ * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than
33
+ * one Solution will not be in either list.
34
+ * Note that Solution item and its deployment folder will only be deleted if all of its deployed
35
+ * items were deleted (the failure list is empty). This makes it possible to re-attempted
36
+ * deletion using the solutionItemId.
37
+ */
38
+ export declare function deleteSolutionContents(solutionItemId: string, solutionSummary: ISolutionPrecis, authentication: UserSession, options?: IDeleteSolutionOptions): Promise<ISolutionPrecis[]>;
@@ -1,130 +1,130 @@
1
- "use strict";
2
- /** @license
3
- * Copyright 2021 Esri
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.deleteSolutionContents = void 0;
19
- const tslib_1 = require("tslib");
20
- /**
21
- * Provides a function for deleting a deployed Solution item and all of the items that were created
22
- * as part of that deployment.
23
- *
24
- * @module deleteSolution
25
- */
26
- const interfaces_1 = require("../interfaces");
27
- const deleteEmptyGroups = tslib_1.__importStar(require("./deleteEmptyGroups"));
28
- const deleteSolutionFolder = tslib_1.__importStar(require("./deleteSolutionFolder"));
29
- const deleteSolutionItem = tslib_1.__importStar(require("./deleteSolutionItem"));
30
- const removeItems = tslib_1.__importStar(require("./removeItems"));
31
- const reportProgress = tslib_1.__importStar(require("./reportProgress"));
32
- // ------------------------------------------------------------------------------------------------------------------ //
33
- /**
34
- * Deletes a deployed Solution item and and all of the items that were created
35
- * as part of that deployment.
36
- *
37
- * @param solutionItemId Id of a deployed Solution
38
- * @param solutionSummary List of items in the solution that would be deleted
39
- * @param authentication Credentials for the request
40
- * @param options Progress reporting options
41
- * @returns Promise that will resolve with a list of two solution summaries: successful deletions
42
- * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than
43
- * one Solution will not be in either list.
44
- * Note that Solution item and its deployment folder will only be deleted if all of its deployed
45
- * items were deleted (the failure list is empty). This makes it possible to re-attempted
46
- * deletion using the solutionItemId.
47
- */
48
- function deleteSolutionContents(solutionItemId, solutionSummary, authentication, options) {
49
- const deleteOptions = options || {};
50
- let progressPercentStep = 0;
51
- let percentDone = 0;
52
- let solutionDeletedSummary;
53
- let solutionFailureSummary;
54
- let solutionIds = [];
55
- return new Promise(resolve => {
56
- let removalPromise = Promise.resolve([
57
- {
58
- id: solutionSummary.id,
59
- title: solutionSummary.title,
60
- folder: solutionSummary.folder,
61
- items: [],
62
- groups: []
63
- },
64
- {
65
- id: solutionSummary.id,
66
- title: solutionSummary.title,
67
- folder: solutionSummary.folder,
68
- items: [],
69
- groups: []
70
- }
71
- ]);
72
- if (solutionSummary.items.length > 0) {
73
- // Save a copy of the Solution item ids for the deleteSolutionFolder call because removeItems
74
- // destroys the solutionSummary.items list
75
- solutionIds = solutionSummary.items
76
- .map(item => item.id)
77
- .concat([solutionItemId]);
78
- const hubSiteItemIds = solutionSummary.items
79
- .filter((item) => item.type === "Hub Site Application")
80
- .map((item) => item.id);
81
- // Delete the items
82
- progressPercentStep = 100 / (solutionSummary.items.length + 2); // one extra for starting plus one extra for solution itself
83
- reportProgress.reportProgress((percentDone += progressPercentStep), deleteOptions); // let the caller know that we've started
84
- // Proceed with the deletion
85
- removalPromise = removeItems.removeItems(solutionSummary, hubSiteItemIds, authentication, percentDone, progressPercentStep, deleteOptions);
86
- }
87
- removalPromise
88
- .then((results) => {
89
- [solutionDeletedSummary, solutionFailureSummary] = results;
90
- // Attempt to delete groups; we won't be checking success
91
- return new Promise(resolve2 => {
92
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
93
- deleteEmptyGroups
94
- .deleteEmptyGroups(solutionSummary.groups, authentication)
95
- .then(() => {
96
- resolve2(results);
97
- });
98
- });
99
- })
100
- .then(() => {
101
- // If there were no failed deletes, it's OK to delete Solution item
102
- if (solutionFailureSummary.items.length === 0) {
103
- return deleteSolutionItem.deleteSolutionItem(solutionItemId, authentication);
104
- }
105
- else {
106
- // Not all items were deleted, so don't delete solution
107
- return Promise.resolve({ success: false, itemId: solutionItemId });
108
- }
109
- })
110
- .then((solutionItemDeleteStatus) => {
111
- // If all deletes succeeded, see if we can delete the folder that contained them
112
- if (solutionItemDeleteStatus.success) {
113
- reportProgress.reportProgress(99, deleteOptions, solutionItemId, interfaces_1.EItemProgressStatus.Finished);
114
- // Can't delete if folder contains non-solution items
115
- return deleteSolutionFolder.deleteSolutionFolder(solutionIds, solutionSummary.folder, authentication);
116
- }
117
- else {
118
- return Promise.resolve(false);
119
- }
120
- })
121
- .then(() => {
122
- resolve([solutionDeletedSummary, solutionFailureSummary]);
123
- })
124
- .catch(() => {
125
- resolve([solutionDeletedSummary, solutionFailureSummary]);
126
- });
127
- });
128
- }
129
- exports.deleteSolutionContents = deleteSolutionContents;
1
+ "use strict";
2
+ /** @license
3
+ * Copyright 2021 Esri
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.deleteSolutionContents = void 0;
19
+ const tslib_1 = require("tslib");
20
+ /**
21
+ * Provides a function for deleting a deployed Solution item and all of the items that were created
22
+ * as part of that deployment.
23
+ *
24
+ * @module deleteSolution
25
+ */
26
+ const interfaces_1 = require("../interfaces");
27
+ const deleteEmptyGroups = tslib_1.__importStar(require("./deleteEmptyGroups"));
28
+ const deleteSolutionFolder = tslib_1.__importStar(require("./deleteSolutionFolder"));
29
+ const deleteSolutionItem = tslib_1.__importStar(require("./deleteSolutionItem"));
30
+ const removeItems = tslib_1.__importStar(require("./removeItems"));
31
+ const reportProgress = tslib_1.__importStar(require("./reportProgress"));
32
+ // ------------------------------------------------------------------------------------------------------------------ //
33
+ /**
34
+ * Deletes a deployed Solution item and and all of the items that were created
35
+ * as part of that deployment.
36
+ *
37
+ * @param solutionItemId Id of a deployed Solution
38
+ * @param solutionSummary List of items in the solution that would be deleted
39
+ * @param authentication Credentials for the request
40
+ * @param options Progress reporting options
41
+ * @returns Promise that will resolve with a list of two solution summaries: successful deletions
42
+ * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than
43
+ * one Solution will not be in either list.
44
+ * Note that Solution item and its deployment folder will only be deleted if all of its deployed
45
+ * items were deleted (the failure list is empty). This makes it possible to re-attempted
46
+ * deletion using the solutionItemId.
47
+ */
48
+ function deleteSolutionContents(solutionItemId, solutionSummary, authentication, options) {
49
+ const deleteOptions = options || {};
50
+ let progressPercentStep = 0;
51
+ let percentDone = 0;
52
+ let solutionDeletedSummary;
53
+ let solutionFailureSummary;
54
+ let solutionIds = [];
55
+ return new Promise(resolve => {
56
+ let removalPromise = Promise.resolve([
57
+ {
58
+ id: solutionSummary.id,
59
+ title: solutionSummary.title,
60
+ folder: solutionSummary.folder,
61
+ items: [],
62
+ groups: []
63
+ },
64
+ {
65
+ id: solutionSummary.id,
66
+ title: solutionSummary.title,
67
+ folder: solutionSummary.folder,
68
+ items: [],
69
+ groups: []
70
+ }
71
+ ]);
72
+ if (solutionSummary.items.length > 0) {
73
+ // Save a copy of the Solution item ids for the deleteSolutionFolder call because removeItems
74
+ // destroys the solutionSummary.items list
75
+ solutionIds = solutionSummary.items
76
+ .map(item => item.id)
77
+ .concat([solutionItemId]);
78
+ const hubSiteItemIds = solutionSummary.items
79
+ .filter((item) => item.type === "Hub Site Application")
80
+ .map((item) => item.id);
81
+ // Delete the items
82
+ progressPercentStep = 100 / (solutionSummary.items.length + 2); // one extra for starting plus one extra for solution itself
83
+ reportProgress.reportProgress((percentDone += progressPercentStep), deleteOptions); // let the caller know that we've started
84
+ // Proceed with the deletion
85
+ removalPromise = removeItems.removeItems(solutionSummary, hubSiteItemIds, authentication, percentDone, progressPercentStep, deleteOptions);
86
+ }
87
+ removalPromise
88
+ .then((results) => {
89
+ [solutionDeletedSummary, solutionFailureSummary] = results;
90
+ // Attempt to delete groups; we won't be checking success
91
+ return new Promise(resolve2 => {
92
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
93
+ deleteEmptyGroups
94
+ .deleteEmptyGroups(solutionSummary.groups, authentication)
95
+ .then(() => {
96
+ resolve2(results);
97
+ });
98
+ });
99
+ })
100
+ .then(() => {
101
+ // If there were no failed deletes, it's OK to delete Solution item
102
+ if (solutionFailureSummary.items.length === 0) {
103
+ return deleteSolutionItem.deleteSolutionItem(solutionItemId, authentication);
104
+ }
105
+ else {
106
+ // Not all items were deleted, so don't delete solution
107
+ return Promise.resolve({ success: false, itemId: solutionItemId });
108
+ }
109
+ })
110
+ .then((solutionItemDeleteStatus) => {
111
+ // If all deletes succeeded, see if we can delete the folder that contained them
112
+ if (solutionItemDeleteStatus.success) {
113
+ reportProgress.reportProgress(99, deleteOptions, solutionItemId, interfaces_1.EItemProgressStatus.Finished);
114
+ // Can't delete if folder contains non-solution items
115
+ return deleteSolutionFolder.deleteSolutionFolder(solutionIds, solutionSummary.folder, authentication);
116
+ }
117
+ else {
118
+ return Promise.resolve(false);
119
+ }
120
+ })
121
+ .then(() => {
122
+ resolve([solutionDeletedSummary, solutionFailureSummary]);
123
+ })
124
+ .catch(() => {
125
+ resolve([solutionDeletedSummary, solutionFailureSummary]);
126
+ });
127
+ });
128
+ }
129
+ exports.deleteSolutionContents = deleteSolutionContents;
130
130
  //# sourceMappingURL=deleteSolutionContents.js.map
@@ -1,29 +1,29 @@
1
- /** @license
2
- * Copyright 2018 Esri
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- /**
17
- * @module deleteSolutionFolder
18
- */
19
- import { UserSession } from "../interfaces";
20
- /**
21
- * Deletes a deployed Solution's folder if the folder is empty.
22
- *
23
- * @param solutionFolderId Id of the folder of a deployed Solution
24
- * @param deletedItemIds Ids in the Solution, including the Solution item; used to deal with lagging folder deletion
25
- * @param authentication Credentials for the request
26
- * @returns Promise that will resolve if deletion was successful and fail if any part of it failed;
27
- * if the folder has a non-Solution item, it will not be deleted, but the function will return true
28
- */
29
- export declare function deleteSolutionFolder(solutionIds: string[], folderId: string, authentication: UserSession): Promise<boolean>;
1
+ /** @license
2
+ * Copyright 2018 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * @module deleteSolutionFolder
18
+ */
19
+ import { UserSession } from "../interfaces";
20
+ /**
21
+ * Deletes a deployed Solution's folder if the folder is empty.
22
+ *
23
+ * @param solutionFolderId Id of the folder of a deployed Solution
24
+ * @param deletedItemIds Ids in the Solution, including the Solution item; used to deal with lagging folder deletion
25
+ * @param authentication Credentials for the request
26
+ * @returns Promise that will resolve if deletion was successful and fail if any part of it failed;
27
+ * if the folder has a non-Solution item, it will not be deleted, but the function will return true
28
+ */
29
+ export declare function deleteSolutionFolder(solutionIds: string[], folderId: string, authentication: UserSession): Promise<boolean>;