@esri/solution-common 4.1.2 → 5.0.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 (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 +1888 -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 +1827 -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 +2 -2
  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,101 +1,101 @@
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
- import * as deleteSolutionContents from "./deleteHelpers/deleteSolutionContents";
17
- import * as getDeletableSolutionInfo from "./getDeletableSolutionInfo";
18
- // ------------------------------------------------------------------------------------------------------------------ //
19
- /**
20
- * Deletes a deployed Solution item and and all of the items that were created
21
- * as part of that deployment.
22
- *
23
- * @param solutionItemId Id of a deployed Solution
24
- * @param authentication Credentials for the request
25
- * @param options Progress reporting options
26
- * @returns Promise that will resolve with a list of two solution summaries: successful deletions
27
- * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than
28
- * one Solution will not be in either list.
29
- * Note that Solution item and its deployment folder will only be deleted if all of its deployed
30
- * items were deleted (the failure list is empty). This makes it possible to re-attempted
31
- * deletion using the solutionItemId.
32
- */
33
- export function deleteSolution(solutionItemId, authentication, options) {
34
- return getDeletableSolutionInfo
35
- .getDeletableSolutionInfo(solutionItemId, authentication)
36
- .then((solutionSummary) => {
37
- return deleteSolutionContents.deleteSolutionContents(solutionItemId, solutionSummary, authentication, options);
38
- })
39
- .catch(() => {
40
- return [undefined, undefined];
41
- });
42
- }
43
- /**
44
- * Deletes a deployed Solution item and and all of the items that were created
45
- * as part of that deployment.
46
- *
47
- * @param solutionItemId Id of a deployed Solution
48
- * @param itemIds Item ids to delete; this list is reversed in this function
49
- * @param templates List of Solution's templates
50
- * @param templateDictionary Hash of facts: folder id, org URL, adlib replacements
51
- * @param authentication Credentials for the request
52
- * @param options Progress reporting options
53
- * @returns Promise that will resolve with a list of two solution summaries: successful deletions
54
- * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than
55
- * one Solution will not be in either list.
56
- * Note that Solution item and its deployment folder will only be deleted if all of its deployed
57
- * items were deleted (the failure list is empty). This makes it possible to re-attempted
58
- * deletion using the solutionItemId.
59
- */
60
- export function deleteSolutionByComponents(solutionItemId, itemIds, templates, templateDictionary, authentication, options) {
61
- // Construct a description of the solution from its id and the itemIds using the templateDictionary to fill in details
62
- const solutionSummary = {
63
- id: solutionItemId,
64
- title: "",
65
- folder: templateDictionary.folderId,
66
- items: [],
67
- groups: []
68
- };
69
- // Combine the templates and templateDictionary to create summary items
70
- let summaries = templates
71
- .map(template => {
72
- return {
73
- id: template.itemId,
74
- type: template.type,
75
- title: template.item.title,
76
- modified: 0,
77
- owner: ""
78
- };
79
- })
80
- .map(summary => {
81
- summary.id = templateDictionary[summary.id].itemId;
82
- return summary;
83
- })
84
- .filter(summary => !!summary.id);
85
- // Filter to only include items in itemIds
86
- summaries = summaries.filter(summary => itemIds.includes(summary.id));
87
- // Sort into the order of itemIds (last created is first deleted)
88
- summaries.sort((summary1, summary2) => itemIds.indexOf(summary1.id) - itemIds.indexOf(summary2.id));
89
- // Partition into items and groups
90
- summaries.forEach(summary => {
91
- if (summary.type === "Group") {
92
- solutionSummary.groups.push(summary.id);
93
- }
94
- else {
95
- solutionSummary.items.push(summary);
96
- }
97
- });
98
- // Delete the solution
99
- return deleteSolutionContents.deleteSolutionContents(solutionItemId, solutionSummary, authentication, options);
100
- }
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
+ import * as deleteSolutionContents from "./deleteHelpers/deleteSolutionContents";
17
+ import * as getDeletableSolutionInfo from "./getDeletableSolutionInfo";
18
+ // ------------------------------------------------------------------------------------------------------------------ //
19
+ /**
20
+ * Deletes a deployed Solution item and and all of the items that were created
21
+ * as part of that deployment.
22
+ *
23
+ * @param solutionItemId Id of a deployed Solution
24
+ * @param authentication Credentials for the request
25
+ * @param options Progress reporting options
26
+ * @returns Promise that will resolve with a list of two solution summaries: successful deletions
27
+ * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than
28
+ * one Solution will not be in either list.
29
+ * Note that Solution item and its deployment folder will only be deleted if all of its deployed
30
+ * items were deleted (the failure list is empty). This makes it possible to re-attempted
31
+ * deletion using the solutionItemId.
32
+ */
33
+ export function deleteSolution(solutionItemId, authentication, options) {
34
+ return getDeletableSolutionInfo
35
+ .getDeletableSolutionInfo(solutionItemId, authentication)
36
+ .then((solutionSummary) => {
37
+ return deleteSolutionContents.deleteSolutionContents(solutionItemId, solutionSummary, authentication, options);
38
+ })
39
+ .catch(() => {
40
+ return [undefined, undefined];
41
+ });
42
+ }
43
+ /**
44
+ * Deletes a deployed Solution item and and all of the items that were created
45
+ * as part of that deployment.
46
+ *
47
+ * @param solutionItemId Id of a deployed Solution
48
+ * @param itemIds Item ids to delete; this list is reversed in this function
49
+ * @param templates List of Solution's templates
50
+ * @param templateDictionary Hash of facts: folder id, org URL, adlib replacements
51
+ * @param authentication Credentials for the request
52
+ * @param options Progress reporting options
53
+ * @returns Promise that will resolve with a list of two solution summaries: successful deletions
54
+ * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than
55
+ * one Solution will not be in either list.
56
+ * Note that Solution item and its deployment folder will only be deleted if all of its deployed
57
+ * items were deleted (the failure list is empty). This makes it possible to re-attempted
58
+ * deletion using the solutionItemId.
59
+ */
60
+ export function deleteSolutionByComponents(solutionItemId, itemIds, templates, templateDictionary, authentication, options) {
61
+ // Construct a description of the solution from its id and the itemIds using the templateDictionary to fill in details
62
+ const solutionSummary = {
63
+ id: solutionItemId,
64
+ title: "",
65
+ folder: templateDictionary.folderId,
66
+ items: [],
67
+ groups: []
68
+ };
69
+ // Combine the templates and templateDictionary to create summary items
70
+ let summaries = templates
71
+ .map(template => {
72
+ return {
73
+ id: template.itemId,
74
+ type: template.type,
75
+ title: template.item.title,
76
+ modified: 0,
77
+ owner: ""
78
+ };
79
+ })
80
+ .map(summary => {
81
+ summary.id = templateDictionary[summary.id].itemId;
82
+ return summary;
83
+ })
84
+ .filter(summary => !!summary.id);
85
+ // Filter to only include items in itemIds
86
+ summaries = summaries.filter(summary => itemIds.includes(summary.id));
87
+ // Sort into the order of itemIds (last created is first deleted)
88
+ summaries.sort((summary1, summary2) => itemIds.indexOf(summary1.id) - itemIds.indexOf(summary2.id));
89
+ // Partition into items and groups
90
+ summaries.forEach(summary => {
91
+ if (summary.type === "Group") {
92
+ solutionSummary.groups.push(summary.id);
93
+ }
94
+ else {
95
+ solutionSummary.items.push(summary);
96
+ }
97
+ });
98
+ // Delete the solution
99
+ return deleteSolutionContents.deleteSolutionContents(solutionItemId, solutionSummary, authentication, options);
100
+ }
101
101
  //# sourceMappingURL=deleteSolution.js.map
@@ -1,26 +1,26 @@
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
- import { IBuildOrdering, IItemTemplate } from "./interfaces";
17
- /**
18
- * Topologically sorts a list of items into a build list.
19
- *
20
- * @param templates A collection of AGO item templates
21
- * @returns An object containing three parts: a list of ids of items in the order in which they need to be built
22
- * so that dependencies are built before items that require those dependencies, a list of item ids found in a
23
- * template's dependencies but not present in the supplied list of templates, and a dictionary containing items
24
- * that need to be post-processed due to dependency cycles.
25
- */
26
- export declare function topologicallySortItems(templates: IItemTemplate[]): IBuildOrdering;
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
+ import { IBuildOrdering, IItemTemplate } from "./interfaces";
17
+ /**
18
+ * Topologically sorts a list of items into a build list.
19
+ *
20
+ * @param templates A collection of AGO item templates
21
+ * @returns An object containing three parts: a list of ids of items in the order in which they need to be built
22
+ * so that dependencies are built before items that require those dependencies, a list of item ids found in a
23
+ * template's dependencies but not present in the supplied list of templates, and a dictionary containing items
24
+ * that need to be post-processed due to dependency cycles.
25
+ */
26
+ export declare function topologicallySortItems(templates: IItemTemplate[]): IBuildOrdering;
@@ -1,167 +1,167 @@
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
- * Provides common functions for organizing dependencies among items.
18
- *
19
- * @module dependencies
20
- */
21
- import { getProp } from "./generalHelpers";
22
- import { findTemplateInList } from "./templatization";
23
- // ------------------------------------------------------------------------------------------------------------------ //
24
- /**
25
- * Topologically sorts a list of items into a build list.
26
- *
27
- * @param templates A collection of AGO item templates
28
- * @returns An object containing three parts: a list of ids of items in the order in which they need to be built
29
- * so that dependencies are built before items that require those dependencies, a list of item ids found in a
30
- * template's dependencies but not present in the supplied list of templates, and a dictionary containing items
31
- * that need to be post-processed due to dependency cycles.
32
- */
33
- export function topologicallySortItems(templates) {
34
- // Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009)
35
- // Sections 22.3 (Depth-first search) & 22.4 (Topological sort), pp. 603-615
36
- // Introduction to Algorithms (3rd ed.), The MIT Press, ISBN 978-0-262-03384-8
37
- //
38
- // DFS(G)
39
- // 1 for each vertex u ∈ G,V
40
- // 2 u.color = WHITE (not yet visited)
41
- // 3 u.π = NIL
42
- // 4 time = 0
43
- // 5 for each vertex u ∈ G,V
44
- // 6 if u.color == WHITE
45
- // 7 DFS-VISIT(G,u)
46
- //
47
- // DFS-VISIT(G,u)
48
- // 1 time = time + 1 (white vertex u has just been discovered)
49
- // 2 u.d = time
50
- // 3 u.color = GRAY (visited, in progress)
51
- // 4 for each v ∈ G.Adj[u] (explore edge (u,v))
52
- // 5 if v.color == WHITE
53
- // 6 v.π = u
54
- // 7 DFS-VISIT(G,v)
55
- // 8 u.color = BLACK (blacken u; it is finished)
56
- // 9 time = time + 1
57
- // 10 u.f = time
58
- //
59
- // TOPOLOGICAL-SORT(G)
60
- // 1 call DFS(G) to compute finishing times v.f for each vertex v
61
- // 2 as each vertex is finished, insert it onto front of a linked list
62
- // 3 return the linked list of vertices
63
- let buildOrder = []; // list of ordered vertices--don't need linked list because
64
- // we just want relative ordering
65
- const missingDependencies = [];
66
- const itemsToBePatched = {};
67
- const verticesToVisit = {};
68
- const vertexType = {};
69
- templates.forEach(function (template) {
70
- verticesToVisit[template.itemId] = ESortVisitState.NotYetVisited;
71
- vertexType[template.itemId] =
72
- template.item?.typeKeywords &&
73
- template.item.typeKeywords.includes("View Service")
74
- ? "View Service"
75
- : template.item?.tags && template.item.tags.includes("Location Tracking Group")
76
- ? "Location Tracking Group" : template.type;
77
- });
78
- // Algorithm visits each vertex once. Don't need to record times or "from' nodes ("π" in pseudocode)
79
- templates.forEach(function (template) {
80
- if (verticesToVisit[template.itemId] === ESortVisitState.NotYetVisited) {
81
- // if not yet visited
82
- visit(template.itemId);
83
- }
84
- });
85
- // Visit vertex
86
- function visit(vertexId) {
87
- verticesToVisit[vertexId] = ESortVisitState.InProgress; // visited, in progress
88
- // Visit dependents if not already visited; template has to be in templates list because calls to visit()
89
- // are based on verticiesToVisit[], which is initialized using the templates list
90
- const template = findTemplateInList(templates, vertexId);
91
- // There are two sources of dependencies
92
- const dependencies = (template.dependencies || []).concat(getProp(template, "properties.syncViews") || []);
93
- dependencies.forEach(function (dependencyId) {
94
- if (verticesToVisit[dependencyId] === ESortVisitState.NotYetVisited) {
95
- // if not yet visited
96
- visit(dependencyId);
97
- }
98
- else if (verticesToVisit[dependencyId] === ESortVisitState.InProgress) {
99
- // visited, in progress, therefore a cycle
100
- // save the dependency that needs to be patched
101
- if (itemsToBePatched[vertexId]) {
102
- itemsToBePatched[vertexId].push(dependencyId);
103
- }
104
- else {
105
- itemsToBePatched[vertexId] = [dependencyId];
106
- }
107
- }
108
- else if (verticesToVisit[dependencyId] !== ESortVisitState.Finished) {
109
- /* istanbul ignore else */
110
- if (missingDependencies.indexOf(dependencyId) < 0) {
111
- missingDependencies.push(dependencyId);
112
- }
113
- }
114
- });
115
- verticesToVisit[vertexId] = ESortVisitState.Finished;
116
- buildOrder.push(vertexId); // add to end of list of ordered vertices because we want dependents first
117
- }
118
- // Two special circumstances to deal with
119
- // 1) Location Tracking Group needs to be created before its associated view because the groupId is used in the view name
120
- // - Move tracking groups to the front of the list
121
- // 2) Feature Services need to be created before views that rely on them
122
- // - Move all of the feature services to the beginning of the build order while maintaining their relative ordering
123
- // - Distinguish between base feature services and view feature services
124
- const trackerGroupIds = [];
125
- const fsIds = [];
126
- const fsViewIds = [];
127
- const otherIds = [];
128
- do {
129
- const id = buildOrder.shift();
130
- if (id) {
131
- if (vertexType[id] === "Location Tracking Group") {
132
- trackerGroupIds.push(id);
133
- }
134
- else if (vertexType[id] === "Feature Service") {
135
- fsIds.push(id);
136
- }
137
- else if (vertexType[id] === "View Service") {
138
- fsViewIds.push(id);
139
- }
140
- else {
141
- otherIds.push(id);
142
- }
143
- }
144
- } while (buildOrder.length > 0);
145
- buildOrder = trackerGroupIds.concat(fsIds, fsViewIds, otherIds);
146
- const orderingResults = {
147
- buildOrder: buildOrder,
148
- missingDependencies: missingDependencies,
149
- itemsToBePatched: itemsToBePatched
150
- };
151
- return orderingResults;
152
- }
153
- /**
154
- * A visit flag used in the topological sort algorithm.
155
- *
156
- * @private
157
- */
158
- var ESortVisitState;
159
- (function (ESortVisitState) {
160
- /** not yet visited */
161
- ESortVisitState[ESortVisitState["NotYetVisited"] = 0] = "NotYetVisited";
162
- /** visited, in progress */
163
- ESortVisitState[ESortVisitState["InProgress"] = 1] = "InProgress";
164
- /** finished */
165
- ESortVisitState[ESortVisitState["Finished"] = 2] = "Finished"; // BLACK
166
- })(ESortVisitState || (ESortVisitState = {}));
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
+ * Provides common functions for organizing dependencies among items.
18
+ *
19
+ * @module dependencies
20
+ */
21
+ import { getProp } from "./generalHelpers";
22
+ import { findTemplateInList } from "./templatization";
23
+ // ------------------------------------------------------------------------------------------------------------------ //
24
+ /**
25
+ * Topologically sorts a list of items into a build list.
26
+ *
27
+ * @param templates A collection of AGO item templates
28
+ * @returns An object containing three parts: a list of ids of items in the order in which they need to be built
29
+ * so that dependencies are built before items that require those dependencies, a list of item ids found in a
30
+ * template's dependencies but not present in the supplied list of templates, and a dictionary containing items
31
+ * that need to be post-processed due to dependency cycles.
32
+ */
33
+ export function topologicallySortItems(templates) {
34
+ // Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009)
35
+ // Sections 22.3 (Depth-first search) & 22.4 (Topological sort), pp. 603-615
36
+ // Introduction to Algorithms (3rd ed.), The MIT Press, ISBN 978-0-262-03384-8
37
+ //
38
+ // DFS(G)
39
+ // 1 for each vertex u ∈ G,V
40
+ // 2 u.color = WHITE (not yet visited)
41
+ // 3 u.π = NIL
42
+ // 4 time = 0
43
+ // 5 for each vertex u ∈ G,V
44
+ // 6 if u.color == WHITE
45
+ // 7 DFS-VISIT(G,u)
46
+ //
47
+ // DFS-VISIT(G,u)
48
+ // 1 time = time + 1 (white vertex u has just been discovered)
49
+ // 2 u.d = time
50
+ // 3 u.color = GRAY (visited, in progress)
51
+ // 4 for each v ∈ G.Adj[u] (explore edge (u,v))
52
+ // 5 if v.color == WHITE
53
+ // 6 v.π = u
54
+ // 7 DFS-VISIT(G,v)
55
+ // 8 u.color = BLACK (blacken u; it is finished)
56
+ // 9 time = time + 1
57
+ // 10 u.f = time
58
+ //
59
+ // TOPOLOGICAL-SORT(G)
60
+ // 1 call DFS(G) to compute finishing times v.f for each vertex v
61
+ // 2 as each vertex is finished, insert it onto front of a linked list
62
+ // 3 return the linked list of vertices
63
+ let buildOrder = []; // list of ordered vertices--don't need linked list because
64
+ // we just want relative ordering
65
+ const missingDependencies = [];
66
+ const itemsToBePatched = {};
67
+ const verticesToVisit = {};
68
+ const vertexType = {};
69
+ templates.forEach(function (template) {
70
+ verticesToVisit[template.itemId] = ESortVisitState.NotYetVisited;
71
+ vertexType[template.itemId] =
72
+ template.item?.typeKeywords &&
73
+ template.item.typeKeywords.includes("View Service")
74
+ ? "View Service"
75
+ : template.item?.tags && template.item.tags.includes("Location Tracking Group")
76
+ ? "Location Tracking Group" : template.type;
77
+ });
78
+ // Algorithm visits each vertex once. Don't need to record times or "from' nodes ("π" in pseudocode)
79
+ templates.forEach(function (template) {
80
+ if (verticesToVisit[template.itemId] === ESortVisitState.NotYetVisited) {
81
+ // if not yet visited
82
+ visit(template.itemId);
83
+ }
84
+ });
85
+ // Visit vertex
86
+ function visit(vertexId) {
87
+ verticesToVisit[vertexId] = ESortVisitState.InProgress; // visited, in progress
88
+ // Visit dependents if not already visited; template has to be in templates list because calls to visit()
89
+ // are based on verticiesToVisit[], which is initialized using the templates list
90
+ const template = findTemplateInList(templates, vertexId);
91
+ // There are two sources of dependencies
92
+ const dependencies = (template.dependencies || []).concat(getProp(template, "properties.syncViews") || []);
93
+ dependencies.forEach(function (dependencyId) {
94
+ if (verticesToVisit[dependencyId] === ESortVisitState.NotYetVisited) {
95
+ // if not yet visited
96
+ visit(dependencyId);
97
+ }
98
+ else if (verticesToVisit[dependencyId] === ESortVisitState.InProgress) {
99
+ // visited, in progress, therefore a cycle
100
+ // save the dependency that needs to be patched
101
+ if (itemsToBePatched[vertexId]) {
102
+ itemsToBePatched[vertexId].push(dependencyId);
103
+ }
104
+ else {
105
+ itemsToBePatched[vertexId] = [dependencyId];
106
+ }
107
+ }
108
+ else if (verticesToVisit[dependencyId] !== ESortVisitState.Finished) {
109
+ /* istanbul ignore else */
110
+ if (missingDependencies.indexOf(dependencyId) < 0) {
111
+ missingDependencies.push(dependencyId);
112
+ }
113
+ }
114
+ });
115
+ verticesToVisit[vertexId] = ESortVisitState.Finished;
116
+ buildOrder.push(vertexId); // add to end of list of ordered vertices because we want dependents first
117
+ }
118
+ // Two special circumstances to deal with
119
+ // 1) Location Tracking Group needs to be created before its associated view because the groupId is used in the view name
120
+ // - Move tracking groups to the front of the list
121
+ // 2) Feature Services need to be created before views that rely on them
122
+ // - Move all of the feature services to the beginning of the build order while maintaining their relative ordering
123
+ // - Distinguish between base feature services and view feature services
124
+ const trackerGroupIds = [];
125
+ const fsIds = [];
126
+ const fsViewIds = [];
127
+ const otherIds = [];
128
+ do {
129
+ const id = buildOrder.shift();
130
+ if (id) {
131
+ if (vertexType[id] === "Location Tracking Group") {
132
+ trackerGroupIds.push(id);
133
+ }
134
+ else if (vertexType[id] === "Feature Service") {
135
+ fsIds.push(id);
136
+ }
137
+ else if (vertexType[id] === "View Service") {
138
+ fsViewIds.push(id);
139
+ }
140
+ else {
141
+ otherIds.push(id);
142
+ }
143
+ }
144
+ } while (buildOrder.length > 0);
145
+ buildOrder = trackerGroupIds.concat(fsIds, fsViewIds, otherIds);
146
+ const orderingResults = {
147
+ buildOrder: buildOrder,
148
+ missingDependencies: missingDependencies,
149
+ itemsToBePatched: itemsToBePatched
150
+ };
151
+ return orderingResults;
152
+ }
153
+ /**
154
+ * A visit flag used in the topological sort algorithm.
155
+ *
156
+ * @private
157
+ */
158
+ var ESortVisitState;
159
+ (function (ESortVisitState) {
160
+ /** not yet visited */
161
+ ESortVisitState[ESortVisitState["NotYetVisited"] = 0] = "NotYetVisited";
162
+ /** visited, in progress */
163
+ ESortVisitState[ESortVisitState["InProgress"] = 1] = "InProgress";
164
+ /** finished */
165
+ ESortVisitState[ESortVisitState["Finished"] = 2] = "Finished"; // BLACK
166
+ })(ESortVisitState || (ESortVisitState = {}));
167
167
  //# sourceMappingURL=dependencies.js.map