@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,73 +1,73 @@
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 { _isLegacySolution } from "./migrations/is-legacy-solution";
17
- import { _applySchema } from "./migrations/apply-schema";
18
- import { _upgradeTwoDotZero } from "./migrations/upgrade-two-dot-zero";
19
- import { _upgradeTwoDotOne } from "./migrations/upgrade-two-dot-one";
20
- import { _upgradeTwoDotTwo } from "./migrations/upgrade-two-dot-two";
21
- import { _upgradeTwoDotThree } from "./migrations/upgrade-two-dot-three";
22
- import { _upgradeTwoDotFour } from "./migrations/upgrade-two-dot-four";
23
- import { _upgradeTwoDotFive } from "./migrations/upgrade-two-dot-five";
24
- import { _upgradeTwoDotSix } from "./migrations/upgrade-two-dot-six";
25
- import { _upgradeTwoDotSeven } from "./migrations/upgrade-two-dot-seven";
26
- import { _upgradeThreeDotZero } from "./migrations/upgrade-three-dot-zero";
27
- import { getProp } from "@esri/hub-common";
28
- // Starting at 3.0 because Hub has been versioning Solution items up to 2.x
29
- export const CURRENT_SCHEMA_VERSION = 3.0;
30
- /**
31
- * Apply schema migrations to a Solution item
32
- * This system allows the schema of the Solution item to change over time
33
- * while abstracting those changes into a single set of functional transforms
34
- *
35
- * @param model ISolutionItem
36
- */
37
- export function migrateSchema(model) {
38
- // ensure properties
39
- if (!getProp(model, "item.properties")) {
40
- model.item.properties = {};
41
- }
42
- const modelVersion = getProp(model, "item.properties.schemaVersion");
43
- // if it's already on the current version, return it
44
- if (modelVersion === CURRENT_SCHEMA_VERSION) {
45
- return Promise.resolve(model);
46
- }
47
- else {
48
- // check if this is a legacy solution created by Hub
49
- const isLegacy = _isLegacySolution(model);
50
- const schemaUpgrades = [];
51
- // if this is a Solution.js "native" item, it is already at 3.0
52
- if (!modelVersion && !isLegacy) {
53
- // apply the 3.0+ transforms
54
- // TEMP to allow merge to develop w/o breaking things
55
- schemaUpgrades.push(_upgradeThreeDotZero);
56
- // schemaUpgrades.push(_upgradeThreeDotZero, _upgradeThreeDotOne);
57
- }
58
- else {
59
- // Hub created a set of Solution items that are not 100% compatible
60
- // with the Solution.js deployer.
61
- schemaUpgrades.push(_applySchema, _upgradeTwoDotZero, _upgradeTwoDotOne, _upgradeTwoDotTwo, _upgradeTwoDotThree, _upgradeTwoDotFour, _upgradeTwoDotFive, _upgradeTwoDotSix, _upgradeTwoDotSeven);
62
- // Apply the 3.x upgrades
63
- schemaUpgrades.push(_upgradeThreeDotZero
64
- // _upgradeThreeDotOne // Not ready for prod yet
65
- );
66
- }
67
- // Run any migrations serially. Since we start with a promise,
68
- // individual migrations are free to return either ISolutionItem
69
- // or Promise<ISolutionItem>
70
- return schemaUpgrades.reduce((promise, upgradeFn) => promise.then((updatedModel) => upgradeFn(updatedModel)), Promise.resolve(model));
71
- }
72
- }
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 { _isLegacySolution } from "./migrations/is-legacy-solution";
17
+ import { _applySchema } from "./migrations/apply-schema";
18
+ import { _upgradeTwoDotZero } from "./migrations/upgrade-two-dot-zero";
19
+ import { _upgradeTwoDotOne } from "./migrations/upgrade-two-dot-one";
20
+ import { _upgradeTwoDotTwo } from "./migrations/upgrade-two-dot-two";
21
+ import { _upgradeTwoDotThree } from "./migrations/upgrade-two-dot-three";
22
+ import { _upgradeTwoDotFour } from "./migrations/upgrade-two-dot-four";
23
+ import { _upgradeTwoDotFive } from "./migrations/upgrade-two-dot-five";
24
+ import { _upgradeTwoDotSix } from "./migrations/upgrade-two-dot-six";
25
+ import { _upgradeTwoDotSeven } from "./migrations/upgrade-two-dot-seven";
26
+ import { _upgradeThreeDotZero } from "./migrations/upgrade-three-dot-zero";
27
+ import { getProp } from "@esri/hub-common";
28
+ // Starting at 3.0 because Hub has been versioning Solution items up to 2.x
29
+ export const CURRENT_SCHEMA_VERSION = 3.0;
30
+ /**
31
+ * Apply schema migrations to a Solution item
32
+ * This system allows the schema of the Solution item to change over time
33
+ * while abstracting those changes into a single set of functional transforms
34
+ *
35
+ * @param model ISolutionItem
36
+ */
37
+ export function migrateSchema(model) {
38
+ // ensure properties
39
+ if (!getProp(model, "item.properties")) {
40
+ model.item.properties = {};
41
+ }
42
+ const modelVersion = getProp(model, "item.properties.schemaVersion");
43
+ // if it's already on the current version, return it
44
+ if (modelVersion === CURRENT_SCHEMA_VERSION) {
45
+ return Promise.resolve(model);
46
+ }
47
+ else {
48
+ // check if this is a legacy solution created by Hub
49
+ const isLegacy = _isLegacySolution(model);
50
+ const schemaUpgrades = [];
51
+ // if this is a Solution.js "native" item, it is already at 3.0
52
+ if (!modelVersion && !isLegacy) {
53
+ // apply the 3.0+ transforms
54
+ // TEMP to allow merge to develop w/o breaking things
55
+ schemaUpgrades.push(_upgradeThreeDotZero);
56
+ // schemaUpgrades.push(_upgradeThreeDotZero, _upgradeThreeDotOne);
57
+ }
58
+ else {
59
+ // Hub created a set of Solution items that are not 100% compatible
60
+ // with the Solution.js deployer.
61
+ schemaUpgrades.push(_applySchema, _upgradeTwoDotZero, _upgradeTwoDotOne, _upgradeTwoDotTwo, _upgradeTwoDotThree, _upgradeTwoDotFour, _upgradeTwoDotFive, _upgradeTwoDotSix, _upgradeTwoDotSeven);
62
+ // Apply the 3.x upgrades
63
+ schemaUpgrades.push(_upgradeThreeDotZero
64
+ // _upgradeThreeDotOne // Not ready for prod yet
65
+ );
66
+ }
67
+ // Run any migrations serially. Since we start with a promise,
68
+ // individual migrations are free to return either ISolutionItem
69
+ // or Promise<ISolutionItem>
70
+ return schemaUpgrades.reduce((promise, upgradeFn) => promise.then((updatedModel) => upgradeFn(updatedModel)), Promise.resolve(model));
71
+ }
72
+ }
73
73
  //# sourceMappingURL=migrator.js.map
@@ -1,191 +1,191 @@
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 involving the management of item and group resources.
18
- *
19
- * @module resourceHelpers
20
- *
21
- * How it works
22
- *
23
- * An item may have resources that are listed as a set of filenames and/or folder/filename combinations. It may have
24
- * a thumbnail, listed in its item info as a filename or folder/filename combination. It may have metadata, which is
25
- * not listed, but has a distinct URL. A group may have a thumbnail, but not the others.
26
- *
27
- * For storing these files in a common storage item, a new folder and filename combination is created for each. The
28
- * filename is kept as-is. The folder consists of the source item's id and an optional suffix. For thumbnails, the
29
- * suffix is "_info_thumbnail"; for metadata, the suffix is "_info_metadata"; for resources, the suffix is "_" plus
30
- * the resource's folder's name; if the resource doesn't have a folder, there is no suffix.
31
- *
32
- * Note that "thumbnail" is included in an item's thumbnail property like a folder (e.g., "thumbnail/thumbnail.png"),
33
- * and the item's thumbnail is accessed using a path such as "%lt;itemId&gt;/info/thumbnail/thumbnail.png". Groups,
34
- * on the other hand, have a property with a simple name (e.g., "thumbnail.png") and it is accessed using a path
35
- * such as "%lt;groupId&gt;/info/thumbnail.png".
36
- *
37
- * For copying these files from the common storage item to another item, one converts the unique names back into the
38
- * original names (or the special cases for thumbnails and metadata).
39
- *
40
- * Routines are provided to
41
- * 1. create full URLs to resources, thumbnails, and metadata.
42
- * 2. create a folder and filename combination that uniquely identifies these files for
43
- * storing them in a single, shared storage item
44
- * 3. copy a set of resources, thumbnails, and metadata for an item to a storage item
45
- * 4. copy a file by URL to an item using specified folder and filename
46
- * 5. undo the unique folder and filename into the original folder and filename
47
- */
48
- import { IDeployFileCopyPath, IFileMimeTyped, ISourceFile, ISourceFileCopyPath, UserSession } from "./interfaces";
49
- import { IItemResourceResponse } from "@esri/arcgis-rest-portal";
50
- export declare function addThumbnailFromBlob(blob: any, itemId: string, authentication: UserSession, isGroup?: boolean): Promise<any>;
51
- export declare function convertBlobToSupportableResource(blob: Blob, filename?: string): IFileMimeTyped;
52
- /**
53
- * Copies the files described by a list of full URLs and folder/filename combinations for
54
- * the resources and metadata of an item or group to an item.
55
- *
56
- * @param storageAuthentication Credentials for the request to the storage
57
- * @param filePaths List of item files' URLs and folder/filenames for storing the files
58
- * @param sourceItemId Id of item supplying resource/metadata
59
- * @param destinationFolderId Id of folder
60
- * @param destinationItemId Id of item to receive copy of resource/metadata
61
- * @param destinationAuthentication Credentials for the request to the destination
62
- * @param template Description of item that will receive files
63
- * @returns A promise which resolves to a boolean indicating if the copies were successful
64
- */
65
- export declare function copyFilesFromStorageItem(storageAuthentication: UserSession, filePaths: IDeployFileCopyPath[], sourceItemId: string, destinationFolderId: string, destinationItemId: string, destinationAuthentication: UserSession, template?: any): Promise<boolean>;
66
- /**
67
- * Copies the files for storing the resources, metadata, and thumbnail of an item or group to a storage item
68
- * with a specified path.
69
- *
70
- * @param files List of item files and paths for storing the files
71
- * @param storageItemId Id of item to receive copy of resource/metadata
72
- * @param storageAuthentication Credentials for the request to the storage
73
- * @returns A promise which resolves to a list of the filenames under which the resource/metadata are stored
74
- */
75
- export declare function copyFilesToStorageItem(files: ISourceFile[], storageItemId: string, storageAuthentication: UserSession): Promise<string[]>;
76
- /**
77
- * Generates a folder and filename for storing a copy of an item's metadata in a storage item.
78
- *
79
- * @param itemId Id of item
80
- * @returns Folder and filename for storage; folder is the itemID suffixed with "_info_metadata"
81
- * @see convertStorageResourceToItemResource
82
- */
83
- export declare function generateMetadataStorageFilename(itemId: string): {
84
- folder: string;
85
- filename: string;
86
- };
87
- /**
88
- * Generates a list of full URLs and storage folder/filename combinations for storing the resources, metadata,
89
- * and thumbnail of an item.
90
- *
91
- * @param portalSharingUrl Server/sharing
92
- * @param itemId Id of item
93
- * @param thumbnailUrlPart Partial path to the thumbnail held in an item's JSON
94
- * @param resourceFilenames List of resource filenames for an item, e.g., ["file1", "myFolder/file2"]
95
- * @param isGroup Boolean to indicate if the files are associated with a group or item
96
- * @param storageVersion Version of the Solution template
97
- * @returns List of item files' URLs and folder/filenames for storing the files
98
- */
99
- export declare function generateSourceFilePaths(portalSharingUrl: string, itemId: string, thumbnailUrlPart: string, resourceFilenames: string[], isGroup?: boolean, storageVersion?: number): ISourceFileCopyPath[];
100
- /**
101
- * Generates the URL for reading an item's metadata.
102
- *
103
- * @param sourcePortalSharingUrl Server/sharing
104
- * @param itemId Id of item
105
- * @param isGroup Boolean to indicate if the files are associated with a group or item
106
- * @returns URL string
107
- */
108
- export declare function generateSourceMetadataUrl(sourcePortalSharingUrl: string, itemId: string, isGroup?: boolean): string;
109
- /**
110
- * Generates the URL for reading an item's resource given the filename of the resource.
111
- *
112
- * @param sourcePortalSharingUrl Server/sharing
113
- * @param itemId Id of item
114
- * @param sourceResourceFilename Either filename or folder/filename to resource
115
- * @returns URL string
116
- */
117
- export declare function generateSourceResourceUrl(sourcePortalSharingUrl: string, itemId: string, sourceResourceFilename: string): string;
118
- /**
119
- * Generates the URL for reading an item's thumbnail.
120
- *
121
- * @param sourcePortalSharingUrl Server/sharing
122
- * @param itemId Id of item
123
- * @param thumbnailUrlPart Partial path to the thumbnail held in an item's JSON
124
- * @param isGroup Boolean to indicate if the files are associated with a group or item
125
- * @returns URL string
126
- */
127
- export declare function generateSourceThumbnailUrl(sourcePortalSharingUrl: string, itemId: string, thumbnailUrlPart: string, isGroup?: boolean): string;
128
- /**
129
- * Generates a list of full URLs and folder/filename combinations used to store the resources, metadata,
130
- * and thumbnail of an item.
131
- *
132
- * @param portalSharingUrl Server/sharing
133
- * @param storageItemId Id of storage item
134
- * @param resourceFilenames List of resource filenames for an item, e.g., ["file1", "myFolder/file2"]
135
- * @param storageVersion Version of the Solution template
136
- * @returns List of item files' URLs and folder/filenames for storing the files
137
- */
138
- export declare function generateStorageFilePaths(portalSharingUrl: string, storageItemId: string, resourceFilenames?: string[], storageVersion?: number): IDeployFileCopyPath[];
139
- /**
140
- * Generates a folder and filename for storing a copy of an item's thumbnail in a storage item.
141
- *
142
- * @param itemId Id of item
143
- * @param thumbnailUrlPart Partial path to the thumbnail held in an item's JSON; can also be a filename
144
- * @returns Folder and filename for storage; folder is the itemID suffixed with "_info_thumbnail";
145
- * file is URI-encoded thumbnailUrlPart
146
- * @see convertStorageResourceToItemResource
147
- */
148
- export declare function generateThumbnailStorageFilename(itemId: string, thumbnailurl: string): {
149
- folder: string;
150
- filename: string;
151
- };
152
- export declare function isSupportedFileType(filename: string): boolean;
153
- /**
154
- * Gets the thumbnail of an item or group.
155
- *
156
- * @param authentication Credentials for the request to the storage
157
- * @param filePaths List of item files' URLs and folder/filenames for storing the files
158
- * @returns A promise which resolves to a boolean indicating if the copies were successful
159
- */
160
- export declare function getThumbnailFromStorageItem(authentication: UserSession, filePaths: IDeployFileCopyPath[]): Promise<File>;
161
- /**
162
- * Removes the item's resource that matches the filename with new content
163
- *
164
- * @param itemId Id of the item to remove
165
- * @param filename Name of the resource file to remove
166
- * @param authentication Credentials for the request to the storage
167
- * @returns A promise which resolves with a success true/false response
168
- */
169
- export declare function removeItemResourceFile(itemId: string, filename: string, authentication: UserSession): Promise<{
170
- success: boolean;
171
- }>;
172
- /**
173
- * Updates the item's resource that matches the filename with new content
174
- *
175
- * @param itemId Id of the item to update
176
- * @param filename Name of the resource file to update; prefix optional (e.g., a/b/file.txt)
177
- * @param resource The new content to update the resource with
178
- * @param authentication Credentials for the request to the storage
179
- * @returns A promise which resolves with a success true/false response
180
- */
181
- export declare function updateItemResourceFile(itemId: string, filename: string, resource: File, authentication: UserSession): Promise<IItemResourceResponse>;
182
- /**
183
- * Updates the item's resource that matches the filename with new content
184
- *
185
- * @param itemId Id of the item to update
186
- * @param filename Name of the resource file to update
187
- * @param content The new content to update the resource with
188
- * @param authentication Credentials for the request to the storage
189
- * @returns A promise which resolves with a success true/false response
190
- */
191
- export declare function updateItemResourceText(itemId: string, filename: string, content: string, authentication: UserSession): Promise<IItemResourceResponse>;
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 involving the management of item and group resources.
18
+ *
19
+ * @module resourceHelpers
20
+ *
21
+ * How it works
22
+ *
23
+ * An item may have resources that are listed as a set of filenames and/or folder/filename combinations. It may have
24
+ * a thumbnail, listed in its item info as a filename or folder/filename combination. It may have metadata, which is
25
+ * not listed, but has a distinct URL. A group may have a thumbnail, but not the others.
26
+ *
27
+ * For storing these files in a common storage item, a new folder and filename combination is created for each. The
28
+ * filename is kept as-is. The folder consists of the source item's id and an optional suffix. For thumbnails, the
29
+ * suffix is "_info_thumbnail"; for metadata, the suffix is "_info_metadata"; for resources, the suffix is "_" plus
30
+ * the resource's folder's name; if the resource doesn't have a folder, there is no suffix.
31
+ *
32
+ * Note that "thumbnail" is included in an item's thumbnail property like a folder (e.g., "thumbnail/thumbnail.png"),
33
+ * and the item's thumbnail is accessed using a path such as "%lt;itemId&gt;/info/thumbnail/thumbnail.png". Groups,
34
+ * on the other hand, have a property with a simple name (e.g., "thumbnail.png") and it is accessed using a path
35
+ * such as "%lt;groupId&gt;/info/thumbnail.png".
36
+ *
37
+ * For copying these files from the common storage item to another item, one converts the unique names back into the
38
+ * original names (or the special cases for thumbnails and metadata).
39
+ *
40
+ * Routines are provided to
41
+ * 1. create full URLs to resources, thumbnails, and metadata.
42
+ * 2. create a folder and filename combination that uniquely identifies these files for
43
+ * storing them in a single, shared storage item
44
+ * 3. copy a set of resources, thumbnails, and metadata for an item to a storage item
45
+ * 4. copy a file by URL to an item using specified folder and filename
46
+ * 5. undo the unique folder and filename into the original folder and filename
47
+ */
48
+ import { IDeployFileCopyPath, IFileMimeTyped, ISourceFile, ISourceFileCopyPath, UserSession } from "./interfaces";
49
+ import { IItemResourceResponse } from "@esri/arcgis-rest-portal";
50
+ export declare function addThumbnailFromBlob(blob: any, itemId: string, authentication: UserSession, isGroup?: boolean): Promise<any>;
51
+ export declare function convertBlobToSupportableResource(blob: Blob, filename?: string): IFileMimeTyped;
52
+ /**
53
+ * Copies the files described by a list of full URLs and folder/filename combinations for
54
+ * the resources and metadata of an item or group to an item.
55
+ *
56
+ * @param storageAuthentication Credentials for the request to the storage
57
+ * @param filePaths List of item files' URLs and folder/filenames for storing the files
58
+ * @param sourceItemId Id of item supplying resource/metadata
59
+ * @param destinationFolderId Id of folder
60
+ * @param destinationItemId Id of item to receive copy of resource/metadata
61
+ * @param destinationAuthentication Credentials for the request to the destination
62
+ * @param template Description of item that will receive files
63
+ * @returns A promise which resolves to a boolean indicating if the copies were successful
64
+ */
65
+ export declare function copyFilesFromStorageItem(storageAuthentication: UserSession, filePaths: IDeployFileCopyPath[], sourceItemId: string, destinationFolderId: string, destinationItemId: string, destinationAuthentication: UserSession, template?: any): Promise<boolean>;
66
+ /**
67
+ * Copies the files for storing the resources, metadata, and thumbnail of an item or group to a storage item
68
+ * with a specified path.
69
+ *
70
+ * @param files List of item files and paths for storing the files
71
+ * @param storageItemId Id of item to receive copy of resource/metadata
72
+ * @param storageAuthentication Credentials for the request to the storage
73
+ * @returns A promise which resolves to a list of the filenames under which the resource/metadata are stored
74
+ */
75
+ export declare function copyFilesToStorageItem(files: ISourceFile[], storageItemId: string, storageAuthentication: UserSession): Promise<string[]>;
76
+ /**
77
+ * Generates a folder and filename for storing a copy of an item's metadata in a storage item.
78
+ *
79
+ * @param itemId Id of item
80
+ * @returns Folder and filename for storage; folder is the itemID suffixed with "_info_metadata"
81
+ * @see convertStorageResourceToItemResource
82
+ */
83
+ export declare function generateMetadataStorageFilename(itemId: string): {
84
+ folder: string;
85
+ filename: string;
86
+ };
87
+ /**
88
+ * Generates a list of full URLs and storage folder/filename combinations for storing the resources, metadata,
89
+ * and thumbnail of an item.
90
+ *
91
+ * @param portalSharingUrl Server/sharing
92
+ * @param itemId Id of item
93
+ * @param thumbnailUrlPart Partial path to the thumbnail held in an item's JSON
94
+ * @param resourceFilenames List of resource filenames for an item, e.g., ["file1", "myFolder/file2"]
95
+ * @param isGroup Boolean to indicate if the files are associated with a group or item
96
+ * @param storageVersion Version of the Solution template
97
+ * @returns List of item files' URLs and folder/filenames for storing the files
98
+ */
99
+ export declare function generateSourceFilePaths(portalSharingUrl: string, itemId: string, thumbnailUrlPart: string, resourceFilenames: string[], isGroup?: boolean, storageVersion?: number): ISourceFileCopyPath[];
100
+ /**
101
+ * Generates the full URL and storage folder/filename for storing an item's thumbnail.
102
+ *
103
+ * @param portalSharingUrl Server/sharing
104
+ * @param itemId Id of item
105
+ * @param thumbnailUrlPart Partial path to the thumbnail held in an item's JSON
106
+ * @param isGroup Boolean to indicate if the files are associated with a group or item
107
+ * @returns URL and folder/filename for storing the thumbnail
108
+ */
109
+ export declare function generateSourceThumbnailPath(portalSharingUrl: string, itemId: string, thumbnailUrlPart: string, isGroup?: boolean): ISourceFileCopyPath;
110
+ /**
111
+ * Generates the URL for reading an item's metadata.
112
+ *
113
+ * @param sourcePortalSharingUrl Server/sharing
114
+ * @param itemId Id of item
115
+ * @param isGroup Boolean to indicate if the files are associated with a group or item
116
+ * @returns URL string
117
+ */
118
+ export declare function generateSourceMetadataUrl(sourcePortalSharingUrl: string, itemId: string, isGroup?: boolean): string;
119
+ /**
120
+ * Generates the URL for reading an item's resource given the filename of the resource.
121
+ *
122
+ * @param sourcePortalSharingUrl Server/sharing
123
+ * @param itemId Id of item
124
+ * @param sourceResourceFilename Either filename or folder/filename to resource
125
+ * @returns URL string
126
+ */
127
+ export declare function generateSourceResourceUrl(sourcePortalSharingUrl: string, itemId: string, sourceResourceFilename: string): string;
128
+ /**
129
+ * Generates the URL for reading an item's thumbnail.
130
+ *
131
+ * @param sourcePortalSharingUrl Server/sharing
132
+ * @param itemId Id of item
133
+ * @param thumbnailUrlPart Partial path to the thumbnail held in an item's JSON
134
+ * @param isGroup Boolean to indicate if the files are associated with a group or item
135
+ * @returns URL string
136
+ */
137
+ export declare function generateSourceThumbnailUrl(sourcePortalSharingUrl: string, itemId: string, thumbnailUrlPart: string, isGroup?: boolean): string;
138
+ /**
139
+ * Generates a list of full URLs and folder/filename combinations used to store the resources, metadata,
140
+ * and thumbnail of an item.
141
+ *
142
+ * @param portalSharingUrl Server/sharing
143
+ * @param storageItemId Id of storage item
144
+ * @param resourceFilenames List of resource filenames for an item, e.g., ["file1", "myFolder/file2"]
145
+ * @param storageVersion Version of the Solution template
146
+ * @returns List of item files' URLs and folder/filenames for storing the files
147
+ */
148
+ export declare function generateStorageFilePaths(portalSharingUrl: string, storageItemId: string, resourceFilenames?: string[], storageVersion?: number): IDeployFileCopyPath[];
149
+ /**
150
+ * Generates a folder and filename for storing a copy of an item's thumbnail in a storage item.
151
+ *
152
+ * @param itemId Id of item
153
+ * @param thumbnailUrlPart Partial path to the thumbnail held in an item's JSON; can also be a filename
154
+ * @returns Folder and filename for storage; folder is the itemID suffixed with "_info_thumbnail";
155
+ * file is URI-encoded thumbnailUrlPart
156
+ * @see convertStorageResourceToItemResource
157
+ */
158
+ export declare function generateThumbnailStorageFilename(itemId: string, thumbnailurl: string): {
159
+ folder: string;
160
+ filename: string;
161
+ };
162
+ export declare function isSupportedFileType(filename: string): boolean;
163
+ /**
164
+ * Gets the thumbnail of an item or group.
165
+ *
166
+ * @param authentication Credentials for the request to the storage
167
+ * @param filePaths List of item files' URLs and folder/filenames for storing the files
168
+ * @returns A promise which resolves to a boolean indicating if the copies were successful
169
+ */
170
+ export declare function getThumbnailFromStorageItem(authentication: UserSession, filePaths: IDeployFileCopyPath[]): Promise<File>;
171
+ /**
172
+ * Removes the item's resource that matches the filename with new content
173
+ *
174
+ * @param itemId Id of the item to remove
175
+ * @param filename Name of the resource file to remove
176
+ * @param authentication Credentials for the request to the storage
177
+ * @returns A promise which resolves with a success true/false response
178
+ */
179
+ export declare function removeItemResourceFile(itemId: string, filename: string, authentication: UserSession): Promise<{
180
+ success: boolean;
181
+ }>;
182
+ /**
183
+ * Updates the item's resource that matches the filename with new content
184
+ *
185
+ * @param itemId Id of the item to update
186
+ * @param filename Name of the resource file to update; prefix optional (e.g., a/b/file.txt)
187
+ * @param resource The new content to update the resource with
188
+ * @param authentication Credentials for the request to the storage
189
+ * @returns A promise which resolves with a success true/false response
190
+ */
191
+ export declare function updateItemResourceFile(itemId: string, filename: string, resource: File, authentication: UserSession): Promise<IItemResourceResponse>;