trm-core 9.10.6 → 10.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 (384) hide show
  1. package/README.md +20 -0
  2. package/changelog.txt +11 -0
  3. package/dist/actions/cg3y/download.js +34 -4
  4. package/dist/actions/cg3y/index.d.ts +23 -0
  5. package/dist/actions/cg3y/index.js +13 -10
  6. package/dist/actions/cg3z/index.d.ts +67 -3
  7. package/dist/actions/cg3z/index.js +25 -14
  8. package/dist/actions/cg3z/upload.d.ts +20 -0
  9. package/dist/actions/cg3z/upload.js +165 -36
  10. package/dist/actions/checkEngines/analyze.d.ts +11 -0
  11. package/dist/actions/checkEngines/analyze.js +294 -0
  12. package/dist/actions/checkEngines/index.d.ts +87 -0
  13. package/dist/actions/checkEngines/index.js +38 -0
  14. package/dist/actions/checkEngines/init.d.ts +11 -0
  15. package/dist/actions/checkEngines/init.js +45 -0
  16. package/dist/actions/checkPackageDependencies/analyze.d.ts +10 -0
  17. package/dist/actions/checkPackageDependencies/analyze.js +37 -39
  18. package/dist/actions/checkPackageDependencies/index.d.ts +56 -0
  19. package/dist/actions/checkPackageDependencies/index.js +13 -10
  20. package/dist/actions/checkPackageDependencies/init.d.ts +8 -0
  21. package/dist/actions/checkPackageDependencies/init.js +24 -2
  22. package/dist/actions/checkSapEntries/analyze.d.ts +12 -0
  23. package/dist/actions/checkSapEntries/analyze.js +63 -47
  24. package/dist/actions/checkSapEntries/index.d.ts +35 -0
  25. package/dist/actions/checkSapEntries/index.js +12 -10
  26. package/dist/actions/checkSapEntries/init.d.ts +8 -0
  27. package/dist/actions/checkSapEntries/init.js +10 -2
  28. package/dist/actions/commons/IActionContext.d.ts +10 -0
  29. package/dist/actions/commons/checkServerAuth.d.ts +7 -0
  30. package/dist/actions/commons/checkServerAuth.js +10 -5
  31. package/dist/actions/commons/index.d.ts +1 -1
  32. package/dist/actions/commons/index.js +1 -1
  33. package/dist/actions/commons/prompts/index.d.ts +1 -0
  34. package/dist/actions/commons/prompts/index.js +1 -0
  35. package/dist/actions/commons/prompts/setLandscapeTarget.d.ts +14 -0
  36. package/dist/actions/commons/prompts/setLandscapeTarget.js +40 -0
  37. package/dist/actions/commons/prompts/setTransportTarget.d.ts +15 -0
  38. package/dist/actions/commons/prompts/setTransportTarget.js +20 -2
  39. package/dist/actions/commons/setSystemPackages.d.ts +7 -0
  40. package/dist/actions/commons/setSystemPackages.js +12 -2
  41. package/dist/actions/commons/utils/actionLocks.d.ts +32 -0
  42. package/dist/actions/commons/utils/actionLocks.js +135 -0
  43. package/dist/actions/commons/utils/dirtyEntries.d.ts +12 -0
  44. package/dist/actions/commons/utils/dirtyEntries.js +54 -0
  45. package/dist/actions/commons/utils/index.d.ts +10 -0
  46. package/dist/actions/commons/utils/index.js +26 -0
  47. package/dist/actions/commons/utils/installRegistry.d.ts +18 -0
  48. package/dist/actions/commons/utils/installRegistry.js +46 -0
  49. package/dist/actions/commons/utils/installedDependency.d.ts +15 -0
  50. package/dist/actions/commons/utils/installedDependency.js +30 -0
  51. package/dist/actions/commons/utils/owningInstallation.d.ts +6 -0
  52. package/dist/actions/commons/utils/owningInstallation.js +47 -0
  53. package/dist/actions/commons/utils/packageCleanup.d.ts +168 -0
  54. package/dist/actions/commons/utils/packageCleanup.js +1017 -0
  55. package/dist/actions/commons/utils/releaseDeletionTransport.d.ts +5 -0
  56. package/dist/actions/commons/utils/releaseDeletionTransport.js +67 -0
  57. package/dist/actions/commons/utils/restoreTransport.d.ts +6 -0
  58. package/dist/actions/commons/utils/restoreTransport.js +50 -0
  59. package/dist/actions/commons/utils/retainedWorkflow.d.ts +6 -0
  60. package/dist/actions/commons/utils/retainedWorkflow.js +49 -0
  61. package/dist/actions/commons/utils/withScopedPrefix.d.ts +5 -0
  62. package/dist/actions/commons/utils/withScopedPrefix.js +32 -0
  63. package/dist/actions/commons/workflowCallbacks.d.ts +21 -0
  64. package/dist/actions/commons/workflowCallbacks.js +157 -0
  65. package/dist/actions/index.d.ts +3 -0
  66. package/dist/actions/index.js +5 -0
  67. package/dist/actions/install/addNamespace.d.ts +18 -0
  68. package/dist/actions/install/addNamespace.js +121 -51
  69. package/dist/actions/install/checkDependants.d.ts +15 -0
  70. package/dist/actions/install/checkDependants.js +74 -0
  71. package/dist/actions/install/checkDependencies.d.ts +11 -0
  72. package/dist/actions/install/checkDependencies.js +32 -13
  73. package/dist/actions/install/checkDependencyCycles.d.ts +17 -0
  74. package/dist/actions/install/checkDependencyCycles.js +105 -0
  75. package/dist/actions/install/checkEngines.d.ts +11 -0
  76. package/dist/actions/install/checkEngines.js +100 -0
  77. package/dist/actions/install/checkInstallDevclass.d.ts +24 -0
  78. package/dist/actions/install/checkInstallDevclass.js +110 -0
  79. package/dist/actions/install/checkSapEntries.d.ts +9 -0
  80. package/dist/actions/install/checkSapEntries.js +20 -12
  81. package/dist/actions/install/checkTransports.d.ts +34 -0
  82. package/dist/actions/install/checkTransports.js +329 -170
  83. package/dist/actions/install/cleanupCheckpoint.d.ts +11 -0
  84. package/dist/actions/install/cleanupCheckpoint.js +62 -0
  85. package/dist/actions/install/defaultTransportLayer.d.ts +5 -0
  86. package/dist/actions/install/defaultTransportLayer.js +36 -0
  87. package/dist/actions/install/executePostActivities.d.ts +6 -0
  88. package/dist/actions/install/executePostActivities.js +28 -38
  89. package/dist/actions/install/generateDevclass.d.ts +10 -0
  90. package/dist/actions/install/generateDevclass.js +66 -20
  91. package/dist/actions/install/generateLandscapeTransport.d.ts +23 -0
  92. package/dist/actions/install/generateLandscapeTransport.js +136 -0
  93. package/dist/actions/install/generateUpdateTransport.d.ts +20 -0
  94. package/dist/actions/install/generateUpdateTransport.js +122 -0
  95. package/dist/actions/install/importBatch.d.ts +22 -0
  96. package/dist/actions/install/importBatch.js +0 -0
  97. package/dist/actions/install/index.d.ts +273 -44
  98. package/dist/actions/install/index.js +139 -59
  99. package/dist/actions/install/init.d.ts +14 -0
  100. package/dist/actions/install/init.js +215 -108
  101. package/dist/actions/install/installDependencies.d.ts +14 -0
  102. package/dist/actions/install/installDependencies.js +122 -45
  103. package/dist/actions/install/lockResources.d.ts +8 -0
  104. package/dist/actions/install/lockResources.js +100 -0
  105. package/dist/actions/install/prepareCust.d.ts +13 -0
  106. package/dist/actions/install/prepareCust.js +138 -0
  107. package/dist/actions/install/prepareDevc.d.ts +15 -0
  108. package/dist/actions/install/prepareDevc.js +113 -0
  109. package/dist/actions/install/prepareLang.d.ts +13 -0
  110. package/dist/actions/install/prepareLang.js +110 -0
  111. package/dist/actions/install/prepareTadir.d.ts +13 -0
  112. package/dist/actions/install/prepareTadir.js +95 -0
  113. package/dist/actions/install/releaseLandscapeTransport.d.ts +11 -0
  114. package/dist/actions/install/releaseLandscapeTransport.js +79 -0
  115. package/dist/actions/install/setInstallDevclass.d.ts +10 -0
  116. package/dist/actions/install/setInstallDevclass.js +140 -54
  117. package/dist/actions/install/updatePackageData.d.ts +9 -0
  118. package/dist/actions/install/updatePackageData.js +117 -13
  119. package/dist/actions/installDependency/checkInstalledRelease.d.ts +13 -0
  120. package/dist/actions/installDependency/checkInstalledRelease.js +50 -0
  121. package/dist/actions/installDependency/confirmDowngrade.d.ts +11 -0
  122. package/dist/actions/installDependency/confirmDowngrade.js +53 -0
  123. package/dist/actions/installDependency/findInstallRelease.d.ts +24 -0
  124. package/dist/actions/installDependency/findInstallRelease.js +42 -19
  125. package/dist/actions/installDependency/index.d.ts +64 -3
  126. package/dist/actions/installDependency/index.js +30 -13
  127. package/dist/actions/installDependency/init.d.ts +14 -0
  128. package/dist/actions/installDependency/init.js +24 -3
  129. package/dist/actions/installDependency/installRelease.d.ts +6 -0
  130. package/dist/actions/installDependency/installRelease.js +22 -12
  131. package/dist/actions/publish/enginesUi.d.ts +53 -0
  132. package/dist/actions/publish/enginesUi.js +289 -0
  133. package/dist/actions/publish/findDependencies.d.ts +19 -0
  134. package/dist/actions/publish/findDependencies.js +72 -37
  135. package/dist/actions/publish/generateCustTransport.d.ts +6 -0
  136. package/dist/actions/publish/generateCustTransport.js +42 -19
  137. package/dist/actions/publish/generateDevcTransport.d.ts +6 -0
  138. package/dist/actions/publish/generateDevcTransport.js +16 -18
  139. package/dist/actions/publish/generateLangTransport.d.ts +6 -0
  140. package/dist/actions/publish/generateLangTransport.js +20 -23
  141. package/dist/actions/publish/generateTadirTransport.d.ts +6 -0
  142. package/dist/actions/publish/generateTadirTransport.js +18 -17
  143. package/dist/actions/publish/getSystemEngines.d.ts +27 -0
  144. package/dist/actions/publish/getSystemEngines.js +112 -0
  145. package/dist/actions/publish/index.d.ts +162 -37
  146. package/dist/actions/publish/index.js +51 -34
  147. package/dist/actions/publish/init.d.ts +28 -0
  148. package/dist/actions/publish/init.js +304 -120
  149. package/dist/actions/publish/lockResources.d.ts +4 -0
  150. package/dist/actions/{install/refreshTmsTxt.js → publish/lockResources.js} +14 -17
  151. package/dist/actions/publish/publishToRegistry.d.ts +8 -0
  152. package/dist/actions/publish/publishToRegistry.js +18 -8
  153. package/dist/actions/publish/releaseTransports.d.ts +6 -0
  154. package/dist/actions/publish/releaseTransports.js +48 -20
  155. package/dist/actions/publish/setCustomizingTransports.d.ts +6 -0
  156. package/dist/actions/publish/setCustomizingTransports.js +227 -101
  157. package/dist/actions/publish/setManifestValues.d.ts +22 -0
  158. package/dist/actions/publish/setManifestValues.js +455 -119
  159. package/dist/actions/publish/setOptionalPublishData.d.ts +11 -0
  160. package/dist/actions/publish/setOptionalPublishData.js +133 -0
  161. package/dist/actions/publish/updatePackageData.d.ts +8 -0
  162. package/dist/actions/publish/updatePackageData.js +20 -7
  163. package/dist/actions/stopWarning.d.ts +5 -0
  164. package/dist/actions/stopWarning.js +5 -0
  165. package/dist/actions/uninstall/checkDependants.d.ts +7 -0
  166. package/dist/actions/uninstall/checkDependants.js +55 -0
  167. package/dist/actions/uninstall/forwardDeletionTransport.d.ts +10 -0
  168. package/dist/actions/uninstall/forwardDeletionTransport.js +51 -0
  169. package/dist/actions/uninstall/generateDeletionTransport.d.ts +10 -0
  170. package/dist/actions/uninstall/generateDeletionTransport.js +45 -0
  171. package/dist/actions/uninstall/index.d.ts +153 -0
  172. package/dist/actions/uninstall/index.js +141 -0
  173. package/dist/actions/uninstall/init.d.ts +17 -0
  174. package/dist/actions/uninstall/init.js +146 -0
  175. package/dist/actions/uninstall/lockResources.d.ts +4 -0
  176. package/dist/actions/{publish/setTransportTarget.js → uninstall/lockResources.js} +16 -7
  177. package/dist/actions/uninstall/removePackageData.d.ts +9 -0
  178. package/dist/actions/uninstall/removePackageData.js +64 -0
  179. package/dist/actions/uninstall/uninstallNestedPackages.d.ts +26 -0
  180. package/dist/actions/uninstall/uninstallNestedPackages.js +174 -0
  181. package/dist/client/ClientError.d.ts +3 -1
  182. package/dist/client/ClientError.js +2 -1
  183. package/dist/client/RESTClient.d.ts +18 -5
  184. package/dist/client/RESTClient.js +194 -52
  185. package/dist/client/RESTClientError.d.ts +1 -2
  186. package/dist/client/RESTClientError.js +3 -2
  187. package/dist/client/RFCClient.d.ts +28 -7
  188. package/dist/client/RFCClient.js +325 -77
  189. package/dist/client/RFCClientError.d.ts +1 -1
  190. package/dist/client/RFCClientError.js +2 -2
  191. package/dist/client/TransportEntries.d.ts +8 -0
  192. package/dist/client/TransportEntries.js +2 -0
  193. package/dist/client/components/BORM_ID.d.ts +1 -0
  194. package/dist/client/components/BORM_ID.js +2 -0
  195. package/dist/client/components/BORM_NAME.d.ts +1 -0
  196. package/dist/client/components/BORM_NAME.js +2 -0
  197. package/dist/client/components/BORM_NAMEL.d.ts +1 -0
  198. package/dist/client/components/BORM_NAMEL.js +2 -0
  199. package/dist/client/components/BORM_VEND.d.ts +1 -0
  200. package/dist/client/components/BORM_VEND.js +2 -0
  201. package/dist/client/components/BORM_VERS.d.ts +1 -0
  202. package/dist/client/components/BORM_VERS.js +2 -0
  203. package/dist/client/components/CWBNTNUMM.d.ts +1 -0
  204. package/dist/client/components/CWBNTNUMM.js +2 -0
  205. package/dist/client/components/CWBNTSTAT.d.ts +1 -0
  206. package/dist/client/components/CWBNTSTAT.js +2 -0
  207. package/dist/client/components/CWBNTVERS.d.ts +1 -0
  208. package/dist/client/components/CWBNTVERS.js +2 -0
  209. package/dist/client/components/CWBPRSTAT.d.ts +1 -0
  210. package/dist/client/components/CWBPRSTAT.js +2 -0
  211. package/dist/client/components/INSTSTATE.d.ts +1 -0
  212. package/dist/client/components/INSTSTATE.js +2 -0
  213. package/dist/client/components/RELC_TYPE.d.ts +1 -0
  214. package/dist/client/components/RELC_TYPE.js +2 -0
  215. package/dist/client/components/SAPPATCHLV.d.ts +1 -0
  216. package/dist/client/components/SAPPATCHLV.js +2 -0
  217. package/dist/client/components/SAPRELEASE.d.ts +1 -0
  218. package/dist/client/components/SAPRELEASE.js +2 -0
  219. package/dist/client/components/SYSYSID.d.ts +1 -0
  220. package/dist/client/components/SYSYSID.js +2 -0
  221. package/dist/client/components/ZTRM_INSTALLTR_TYPE.d.ts +1 -0
  222. package/dist/client/components/ZTRM_INSTALLTR_TYPE.js +2 -0
  223. package/dist/client/components/index.d.ts +15 -0
  224. package/dist/client/components/index.js +15 -0
  225. package/dist/client/index.d.ts +1 -0
  226. package/dist/client/index.js +1 -0
  227. package/dist/client/messageLog.d.ts +7 -0
  228. package/dist/client/messageLog.js +21 -0
  229. package/dist/client/struct/ActionLockKey.d.ts +6 -0
  230. package/dist/client/struct/ActionLockKey.js +2 -0
  231. package/dist/client/struct/CVERS.d.ts +7 -0
  232. package/dist/client/struct/CVERS.js +2 -0
  233. package/dist/client/struct/CWBNTCUST.d.ts +6 -0
  234. package/dist/client/struct/CWBNTCUST.js +2 -0
  235. package/dist/client/struct/CWBNTHEAD.d.ts +5 -0
  236. package/dist/client/struct/CWBNTHEAD.js +2 -0
  237. package/dist/client/struct/E070.d.ts +2 -1
  238. package/dist/client/struct/E071K.d.ts +9 -0
  239. package/dist/client/struct/E071K.js +2 -0
  240. package/dist/client/struct/PRDVERS.d.ts +9 -0
  241. package/dist/client/struct/PRDVERS.js +2 -0
  242. package/dist/client/struct/SCOMPKDTLN.d.ts +21 -0
  243. package/dist/client/struct/STMSCALERT.d.ts +21 -0
  244. package/dist/client/struct/STMSCALERT.js +2 -0
  245. package/dist/client/struct/STMS_TP_IMPORT.d.ts +14 -0
  246. package/dist/client/struct/STMS_TP_IMPORT.js +2 -0
  247. package/dist/client/struct/STMS_TR_REQUEST.d.ts +8 -0
  248. package/dist/client/struct/STMS_TR_REQUEST.js +2 -0
  249. package/dist/client/struct/TDEVC.d.ts +38 -0
  250. package/dist/client/struct/TPLOGPTR.d.ts +13 -0
  251. package/dist/client/struct/TPLOGPTR.js +2 -0
  252. package/dist/client/struct/TPSTDOUT.d.ts +3 -0
  253. package/dist/client/struct/TPSTDOUT.js +2 -0
  254. package/dist/client/struct/ZTRM_INSTALLTR.d.ts +8 -0
  255. package/dist/client/struct/ZTRM_INSTALLTR.js +2 -0
  256. package/dist/client/struct/index.d.ts +12 -0
  257. package/dist/client/struct/index.js +12 -0
  258. package/dist/commons/checkCoreTrmDependencies.js +1 -1
  259. package/dist/commons/getAxiosInstance.js +8 -17
  260. package/dist/commons/getNodePackage.js +7 -0
  261. package/dist/commons/getPackageHierarchy.js +2 -0
  262. package/dist/commons/getPackagesNamespace.d.ts +9 -0
  263. package/dist/commons/getPackagesNamespace.js +19 -0
  264. package/dist/commons/index.d.ts +4 -0
  265. package/dist/commons/index.js +4 -0
  266. package/dist/commons/packageDataFromTdevc.d.ts +12 -0
  267. package/dist/commons/packageDataFromTdevc.js +25 -0
  268. package/dist/commons/resolveCoreVersion.d.ts +10 -0
  269. package/dist/commons/resolveCoreVersion.js +24 -0
  270. package/dist/commons/summarizeForLog.d.ts +22 -0
  271. package/dist/commons/summarizeForLog.js +120 -0
  272. package/dist/connection/OpenRFCConnect.d.ts +13 -0
  273. package/dist/connection/OpenRFCConnect.js +23 -0
  274. package/dist/connection/index.d.ts +1 -0
  275. package/dist/connection/index.js +17 -0
  276. package/dist/dependencies/PackageDependencies.d.ts +2 -0
  277. package/dist/dependencies/PackageDependencies.js +24 -0
  278. package/dist/index.d.ts +1 -0
  279. package/dist/index.js +1 -0
  280. package/dist/lockfile/Lockfile.d.ts +23 -1
  281. package/dist/lockfile/Lockfile.js +45 -9
  282. package/dist/manifest/Manifest.d.ts +9 -5
  283. package/dist/manifest/Manifest.js +82 -29
  284. package/dist/manifest/PostActivity.js +3 -3
  285. package/dist/manifest/TrmManifest.d.ts +0 -2
  286. package/dist/manifest/TrmManifestBase.d.ts +2 -0
  287. package/dist/manifest/TrmManifestEngines.d.ts +64 -0
  288. package/dist/manifest/TrmManifestEngines.js +2 -0
  289. package/dist/manifest/engines/index.d.ts +2 -0
  290. package/dist/manifest/engines/index.js +18 -0
  291. package/dist/manifest/engines/sapRange.d.ts +38 -0
  292. package/dist/manifest/engines/sapRange.js +135 -0
  293. package/dist/manifest/engines/validateEngines.d.ts +44 -0
  294. package/dist/manifest/engines/validateEngines.js +282 -0
  295. package/dist/manifest/index.d.ts +3 -0
  296. package/dist/manifest/index.js +3 -0
  297. package/dist/manifest/sapEntries.d.ts +14 -0
  298. package/dist/manifest/sapEntries.js +63 -0
  299. package/dist/protocol/Protocol.js +7 -0
  300. package/dist/registry/AbstractRegistry.d.ts +18 -3
  301. package/dist/registry/FileSystem.d.ts +22 -13
  302. package/dist/registry/FileSystem.js +69 -18
  303. package/dist/registry/RegistryDeletionTransportUnauthorizedError.d.ts +4 -0
  304. package/dist/registry/RegistryDeletionTransportUnauthorizedError.js +12 -0
  305. package/dist/registry/RegistryDeletionTransportUnavailableError.d.ts +9 -0
  306. package/dist/registry/RegistryDeletionTransportUnavailableError.js +17 -0
  307. package/dist/registry/RegistryPackageNotFoundError.d.ts +7 -0
  308. package/dist/registry/RegistryPackageNotFoundError.js +14 -0
  309. package/dist/registry/RegistryV2.d.ts +15 -5
  310. package/dist/registry/RegistryV2.js +308 -48
  311. package/dist/registry/index.d.ts +4 -0
  312. package/dist/registry/index.js +4 -0
  313. package/dist/registry/registryKey.d.ts +7 -0
  314. package/dist/registry/registryKey.js +21 -0
  315. package/dist/systemConnector/ActionLock.d.ts +1 -0
  316. package/dist/systemConnector/ActionLock.js +2 -0
  317. package/dist/systemConnector/ISystemConnector.d.ts +21 -4
  318. package/dist/systemConnector/ISystemConnectorBase.d.ts +16 -0
  319. package/dist/systemConnector/InstallTransport.d.ts +6 -0
  320. package/dist/systemConnector/InstallTransport.js +2 -0
  321. package/dist/systemConnector/OpenRFCSystemConnector.d.ts +12 -0
  322. package/dist/systemConnector/OpenRFCSystemConnector.js +51 -0
  323. package/dist/systemConnector/RESTSystemConnector.d.ts +22 -7
  324. package/dist/systemConnector/RESTSystemConnector.js +95 -23
  325. package/dist/systemConnector/RFCConnection.d.ts +0 -1
  326. package/dist/systemConnector/RFCSystemConnector.d.ts +25 -7
  327. package/dist/systemConnector/RFCSystemConnector.js +75 -16
  328. package/dist/systemConnector/SystemConnector.d.ts +38 -6
  329. package/dist/systemConnector/SystemConnector.js +138 -12
  330. package/dist/systemConnector/SystemConnectorBase.d.ts +24 -1
  331. package/dist/systemConnector/SystemConnectorBase.js +174 -22
  332. package/dist/systemConnector/index.d.ts +3 -0
  333. package/dist/systemConnector/index.js +3 -0
  334. package/dist/transport/E071KOwner.d.ts +10 -0
  335. package/dist/transport/E071KOwner.js +15 -0
  336. package/dist/transport/R3transLogParser.d.ts +19 -0
  337. package/dist/transport/R3transLogParser.js +148 -0
  338. package/dist/transport/Transport.d.ts +36 -3
  339. package/dist/transport/Transport.js +304 -138
  340. package/dist/transport/index.d.ts +2 -0
  341. package/dist/transport/index.js +2 -0
  342. package/dist/trmPackage/TransportBinary.d.ts +4 -1
  343. package/dist/trmPackage/TrmArtifact.d.ts +12 -8
  344. package/dist/trmPackage/TrmArtifact.js +93 -74
  345. package/dist/trmPackage/TrmPackage.d.ts +20 -6
  346. package/dist/trmPackage/TrmPackage.js +27 -1
  347. package/dist/validators/validateDevclass.js +4 -0
  348. package/package.json +15 -7
  349. package/dist/actions/commons/trmServerPa.d.ts +0 -3
  350. package/dist/actions/commons/trmServerPa.js +0 -40
  351. package/dist/actions/install/checkAlreadyInstalled.d.ts +0 -3
  352. package/dist/actions/install/checkAlreadyInstalled.js +0 -71
  353. package/dist/actions/install/checkObjectTypes.d.ts +0 -3
  354. package/dist/actions/install/checkObjectTypes.js +0 -50
  355. package/dist/actions/install/checkObjectsLock.d.ts +0 -3
  356. package/dist/actions/install/checkObjectsLock.js +0 -52
  357. package/dist/actions/install/generateInstallTransports.d.ts +0 -3
  358. package/dist/actions/install/generateInstallTransports.js +0 -128
  359. package/dist/actions/install/importCustTransport.d.ts +0 -3
  360. package/dist/actions/install/importCustTransport.js +0 -73
  361. package/dist/actions/install/importDevcTransport.d.ts +0 -3
  362. package/dist/actions/install/importDevcTransport.js +0 -93
  363. package/dist/actions/install/importLangTransport.d.ts +0 -3
  364. package/dist/actions/install/importLangTransport.js +0 -72
  365. package/dist/actions/install/importTadirTransport.d.ts +0 -3
  366. package/dist/actions/install/importTadirTransport.js +0 -83
  367. package/dist/actions/install/readDevc.d.ts +0 -3
  368. package/dist/actions/install/readDevc.js +0 -33
  369. package/dist/actions/install/readTadir.d.ts +0 -3
  370. package/dist/actions/install/readTadir.js +0 -101
  371. package/dist/actions/install/refreshTmsTxt.d.ts +0 -3
  372. package/dist/actions/install/releaseInstallTransport.d.ts +0 -3
  373. package/dist/actions/install/releaseInstallTransport.js +0 -80
  374. package/dist/actions/publish/checkAllObjectsReleased.d.ts +0 -3
  375. package/dist/actions/publish/checkAllObjectsReleased.js +0 -46
  376. package/dist/actions/publish/getSourceCode.d.ts +0 -3
  377. package/dist/actions/publish/getSourceCode.js +0 -49
  378. package/dist/actions/publish/setChangelog.d.ts +0 -3
  379. package/dist/actions/publish/setChangelog.js +0 -69
  380. package/dist/actions/publish/setDevclass.d.ts +0 -3
  381. package/dist/actions/publish/setDevclass.js +0 -74
  382. package/dist/actions/publish/setReadme.d.ts +0 -3
  383. package/dist/actions/publish/setReadme.js +0 -52
  384. package/dist/actions/publish/setTransportTarget.d.ts +0 -3
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.releaseLandscapeTransport = void 0;
13
+ const trm_commons_1 = require("trm-commons");
14
+ const transport_1 = require("../../transport");
15
+ const utils_1 = require("../commons/utils");
16
+ /**
17
+ * Workflow step that releases the generated landscape transport, when present.
18
+ *
19
+ * 1- add upgrade transport to target transport queue
20
+ *
21
+ * 2- release
22
+ *
23
+ */
24
+ exports.releaseLandscapeTransport = {
25
+ name: 'release-install-transports',
26
+ filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
27
+ if (context.output.transport) {
28
+ return true;
29
+ }
30
+ else {
31
+ trm_commons_1.Logger.log(`Skipping release of landscape transport (transport was not generated)`, true);
32
+ return false;
33
+ }
34
+ }),
35
+ run: (context) => __awaiter(void 0, void 0, void 0, function* () {
36
+ yield (0, utils_1.withScopedPrefix)(`(${transport_1.Transport.getTransportIcon()} Landscape) `, () => __awaiter(void 0, void 0, void 0, function* () {
37
+ //1- add upgrade transport to target transport queue
38
+ //if previous package was temporary, don't add deletion entries
39
+ if ((0, utils_1.isDeletionForwardable)(context)) {
40
+ yield (0, utils_1.forwardDeletionTransport)(context, context.rawInput.installData.landscapeTransport.targetSystem);
41
+ }
42
+ //2- release
43
+ trm_commons_1.Logger.loading(`Releasing...`);
44
+ // Mark before the release: SAP may export the transport and still fail.
45
+ context.revert.landscapeReleaseStarted = true;
46
+ yield context.output.transport.release(true, false, context.rawInput.contextData.logTemporaryFolder);
47
+ }));
48
+ }),
49
+ revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
50
+ let firstError;
51
+ try {
52
+ yield (0, utils_1.revertForwardedDeletionTransport)(context, context.rawInput.installData.landscapeTransport.targetSystem);
53
+ }
54
+ catch (error) {
55
+ firstError = error;
56
+ }
57
+ const transport = context.output.transport;
58
+ const targetSystem = context.rawInput.installData.landscapeTransport.targetSystem;
59
+ try {
60
+ if (yield transport.canBeDeleted()) {
61
+ yield transport.delete();
62
+ context.output.transport = undefined;
63
+ }
64
+ else if (context.revert.landscapeReleaseStarted) {
65
+ // A released transport can't be deleted: take it out of the target import queue instead.
66
+ yield (0, utils_1.removeFromImportQueue)(transport.trkorr, targetSystem, `Released landscape transport`);
67
+ }
68
+ }
69
+ catch (error) {
70
+ firstError || (firstError = error);
71
+ if (context.revert.landscapeReleaseStarted) {
72
+ trm_commons_1.Logger.warning(`Released landscape transport ${transport.trkorr} may be in the ${targetSystem} import queue: check it in STMS.`, { important: true });
73
+ }
74
+ }
75
+ if (firstError) {
76
+ throw firstError;
77
+ }
78
+ })
79
+ };
@@ -1,3 +1,13 @@
1
1
  import { Step } from "@simonegaffurini/sammarksworkflow";
2
2
  import { InstallWorkflowContext } from ".";
3
+ /**
4
+ * Workflow step that resolves publisher ABAP packages to target-system package names.
5
+ *
6
+ * 1- find already defined replacements in system
7
+ *
8
+ * 2- get root devclass and find namespace
9
+ *
10
+ * 3- if all package names like origin, import devc transport
11
+ *
12
+ */
3
13
  export declare const setInstallDevclass: Step<InstallWorkflowContext>;
@@ -13,20 +13,39 @@ exports.setInstallDevclass = void 0;
13
13
  const commons_1 = require("../../commons");
14
14
  const systemConnector_1 = require("../../systemConnector");
15
15
  const trm_commons_1 = require("trm-commons");
16
- const registry_1 = require("../../registry");
16
+ const addNamespace_1 = require("./addNamespace");
17
+ const checkInstallDevclass_1 = require("./checkInstallDevclass");
18
+ function escapeRegExp(value) {
19
+ return value.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&');
20
+ }
17
21
  function _validateDevclass(input, namespaces) {
18
22
  const sInput = input.trim().toUpperCase();
19
- namespaces = [...new Set(namespaces)];
20
23
  if (sInput.length > 30) {
21
24
  return `Package name must not exceede 30 characters limit.`;
22
25
  }
23
- if (!namespaces.some(ns => sInput.startsWith(ns))) {
24
- return `Package name must use one of the following namespaces: ${namespaces.join(', ')}.`;
26
+ if (namespaces) {
27
+ namespaces = [...new Set(namespaces)]; //unique
28
+ if (!namespaces.some(ns => sInput.startsWith(ns))) {
29
+ return `Package name must use one of the following namespaces: ${namespaces.join(', ')}.`;
30
+ }
31
+ else {
32
+ return true;
33
+ }
25
34
  }
26
35
  else {
27
36
  return true;
28
37
  }
29
38
  }
39
+ /**
40
+ * Workflow step that resolves publisher ABAP packages to target-system package names.
41
+ *
42
+ * 1- find already defined replacements in system
43
+ *
44
+ * 2- get root devclass and find namespace
45
+ *
46
+ * 3- if all package names like origin, import devc transport
47
+ *
48
+ */
30
49
  exports.setInstallDevclass = {
31
50
  name: 'set-install-devclass',
32
51
  filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
@@ -39,43 +58,115 @@ exports.setInstallDevclass = {
39
58
  }
40
59
  }),
41
60
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
42
- var _a;
43
- trm_commons_1.Logger.log('Set install devclass step', true);
61
+ var _a, _b, _c;
62
+ //1- find already defined replacements in system
44
63
  if (context.rawInput.installData.installDevclass.replacements.length <= 0) {
45
- context.rawInput.installData.installDevclass.replacements = yield systemConnector_1.SystemConnector.getInstallPackages(context.rawInput.packageData.name, context.rawInput.packageData.registry);
64
+ //no input replacements = get from the trm table devclass replacements the corresponding name
65
+ trm_commons_1.Logger.loading(`Checking package replacements...`);
66
+ context.rawInput.installData.installDevclass.replacements = yield systemConnector_1.SystemConnector.getInstallPackages(context.rawInput.packageData.name, context.runtime.installRegistry);
67
+ }
68
+ else if (context.runtime.update) {
69
+ //explicit replacements win; stored ones keep the devclasses they don't mention renamed
70
+ const explicit = new Set(context.rawInput.installData.installDevclass.replacements.map(o => o.originalDevclass));
71
+ const stored = (context.runtime.previousInstallPackages || []).filter(o => !explicit.has(o.originalDevclass));
72
+ stored.forEach(o => trm_commons_1.Logger.log(`Keeping stored package replacement ${o.originalDevclass} -> ${o.installDevclass}`, true));
73
+ context.rawInput.installData.installDevclass.replacements = [
74
+ ...context.rawInput.installData.installDevclass.replacements,
75
+ ...stored.map(o => ({ originalDevclass: o.originalDevclass, installDevclass: o.installDevclass }))
76
+ ];
46
77
  }
47
- var rootDevclass = (_a = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === context.runtime.originalData.hierarchy.devclass)) === null || _a === void 0 ? void 0 : _a.installDevclass;
48
- if (!rootDevclass) {
49
- rootDevclass = context.runtime.originalData.hierarchy.devclass;
78
+ //the release root can have a new original name (e.g. moved to a namespace): a renamed installation keeps its root
79
+ //package, matched by position, so the installation stays where the customer put it
80
+ const releaseRoot = context.runtime.package.hierarchy.devclass;
81
+ const installedRoot = (_a = context.runtime.update) === null || _a === void 0 ? void 0 : _a.getDevclass();
82
+ if (installedRoot && !context.rawInput.installData.installDevclass.replacements.some(o => o.originalDevclass === releaseRoot)) {
83
+ const storedRoot = context.rawInput.installData.installDevclass.replacements.find(o => o.installDevclass.trim().toUpperCase() === installedRoot.trim().toUpperCase());
84
+ if (storedRoot && storedRoot.installDevclass !== storedRoot.originalDevclass) {
85
+ trm_commons_1.Logger.log(`Release root ${releaseRoot} replaces ${storedRoot.originalDevclass}: keeping installed root ${installedRoot}`, true);
86
+ context.rawInput.installData.installDevclass.replacements.push({ originalDevclass: releaseRoot, installDevclass: installedRoot });
87
+ }
88
+ }
89
+ //drop replacements of devclasses that are not part of the release (e.g. removed in this version)
90
+ const originalDevclasses = (0, addNamespace_1.flattenDevclasses)(context.runtime.package.hierarchy);
91
+ context.rawInput.installData.installDevclass.replacements = context.rawInput.installData.installDevclass.replacements.filter(replacement => {
92
+ if (originalDevclasses.includes(replacement.originalDevclass)) {
93
+ return true;
94
+ }
95
+ trm_commons_1.Logger.log(`Ignoring package replacement ${replacement.originalDevclass} -> ${replacement.installDevclass}: devclass is not part of the release`, true);
96
+ return false;
97
+ });
98
+ //if there are replacements and they all equal to original ask if you should continue
99
+ const replacementsKeepOriginal = context.rawInput.installData.installDevclass.replacements.length > 0
100
+ && context.rawInput.installData.installDevclass.replacements.every(replacement => replacement.installDevclass === replacement.originalDevclass);
101
+ if (replacementsKeepOriginal) {
102
+ let continueWithReplacements = false;
103
+ if (!context.rawInput.contextData.noInquirer) {
104
+ continueWithReplacements = (yield trm_commons_1.Inquirer.prompt({
105
+ type: 'confirm',
106
+ name: 'continueWithReplacements',
107
+ message: `Do you want to change original SAP packages name?`,
108
+ default: false
109
+ })).continueWithReplacements;
110
+ }
111
+ if (!continueWithReplacements) {
112
+ // Later workflow steps use this flag to import the original DEVC transport.
113
+ context.rawInput.installData.installDevclass.keepOriginal = true;
114
+ // Packages new in this release keep their name too, and are mapped like the others.
115
+ originalDevclasses
116
+ .filter(originalDevclass => !context.rawInput.installData.installDevclass.replacements.some(o => o.originalDevclass === originalDevclass))
117
+ .forEach(originalDevclass => context.rawInput.installData.installDevclass.replacements.push({
118
+ originalDevclass,
119
+ installDevclass: originalDevclass
120
+ }));
121
+ return;
122
+ }
50
123
  }
51
- const originalNamespace = (0, commons_1.getPackageNamespace)(rootDevclass);
52
- var updateNamespace;
53
- if (context.runtime.installData.upgradingPackage) {
54
- updateNamespace = (0, commons_1.getPackageNamespace)(context.runtime.installData.upgradingPackage.getDevclass());
124
+ //2- find the namespace of the original root, carried over onto new devclasses
125
+ const originalNamespace = (0, commons_1.getPackageNamespace)(context.runtime.package.hierarchy.devclass);
126
+ // Only carry the currently installed namespace forward onto newly introduced original
127
+ // devclasses when the package was genuinely customized before (some stored replacement
128
+ // actually renamed a package). Otherwise "currently installed" is just this package's
129
+ // own untouched default from whichever version happens to be installed right now, and
130
+ // has nothing to do with the namespace of the version being installed/rolled back to.
131
+ const hasCustomization = context.rawInput.installData.installDevclass.replacements.some(replacement => replacement.installDevclass !== replacement.originalDevclass);
132
+ let updateNamespace;
133
+ if (context.runtime.update && hasCustomization) {
134
+ //the installed root devclass can be unknown: fall back to the stored root replacement
135
+ const installedRootDevclass = context.runtime.update.getDevclass()
136
+ || ((_c = (_b = context.runtime.previousInstallPackages) === null || _b === void 0 ? void 0 : _b.find(o => o.originalDevclass === context.runtime.package.hierarchy.devclass)) === null || _c === void 0 ? void 0 : _c.installDevclass);
137
+ if (installedRootDevclass) {
138
+ updateNamespace = (0, commons_1.getPackageNamespace)(installedRootDevclass);
139
+ }
140
+ else {
141
+ trm_commons_1.Logger.log(`Installed root devclass is unknown, namespace won't be carried over`, true);
142
+ }
55
143
  }
56
- var inq1Prompts = [];
57
- trm_commons_1.Logger.loading(`Analyzing packages...`);
58
- for (const t of context.runtime.packageTransportsData.tdevc) {
59
- var adaptDevclassName = t.devclass;
60
- const replacement = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === t.devclass);
144
+ const inq1Prompts = [];
145
+ trm_commons_1.Logger.loading(`Analyzing package replacements...`);
146
+ for (const originalDevclass of originalDevclasses) {
147
+ let adaptDevclassName = originalDevclass;
148
+ const replacement = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === originalDevclass);
61
149
  if (updateNamespace) {
150
+ //only for trm-server and trm-rest with /ATRM/: if no replacement and updating from namespace $, adapt naming convention
62
151
  if (!replacement && updateNamespace === '$' && (context.runtime.isTrmServer || context.runtime.isTrmRest)) {
63
152
  adaptDevclassName = (0, commons_1.adjustTrmServerRestDevclass)(adaptDevclassName);
64
153
  }
65
154
  else {
66
- adaptDevclassName = adaptDevclassName.replace(new RegExp(`^${originalNamespace}`, 'gmi'), updateNamespace);
155
+ //original names use the original root namespace; a function keeps `$` literal
156
+ adaptDevclassName = adaptDevclassName.replace(new RegExp(`^${escapeRegExp(originalNamespace)}`, 'i'), () => updateNamespace);
67
157
  }
68
158
  }
69
159
  else if (context.runtime.isTrmRest) {
160
+ //extra guard for trm-rest first install: move /ATRM/ to $
70
161
  adaptDevclassName = (0, commons_1.adjustTrmServerRestDevclass)(adaptDevclassName);
71
162
  }
72
- const packageExists = yield systemConnector_1.SystemConnector.getDevclass(adaptDevclassName);
73
163
  if (!replacement) {
74
164
  if (context.rawInput.contextData.noInquirer || (context.runtime.isTrmServer || context.runtime.isTrmRest)) {
75
- const automaticValue = _validateDevclass(adaptDevclassName, [updateNamespace || originalNamespace, '$', originalNamespace]);
165
+ //const automaticValue = _validateDevclass(adaptDevclassName, [updateNamespace || originalNamespace, '$', originalNamespace]);
166
+ const automaticValue = _validateDevclass(adaptDevclassName);
76
167
  if (automaticValue === true) {
77
168
  context.rawInput.installData.installDevclass.replacements.push({
78
- originalDevclass: t.devclass,
169
+ originalDevclass,
79
170
  installDevclass: adaptDevclassName
80
171
  });
81
172
  }
@@ -86,57 +177,52 @@ exports.setInstallDevclass = {
86
177
  else {
87
178
  inq1Prompts.push({
88
179
  type: "input",
89
- name: t.devclass,
180
+ name: originalDevclass,
90
181
  default: adaptDevclassName,
91
- message: packageExists ? `Rename ABAP Package "${adaptDevclassName}"?` : `ABAP Package "${adaptDevclassName}" will be generated. Do you want to rename it?`,
92
- validate: (input) => {
93
- return _validateDevclass(input, [updateNamespace || originalNamespace, '$', originalNamespace]);
94
- }
182
+ message: `ABAP Package "${adaptDevclassName}" will be imported. Do you want to rename it?`,
183
+ validate: (input) => __awaiter(void 0, void 0, void 0, function* () {
184
+ //return _validateDevclass(input, [updateNamespace || originalNamespace, '$', originalNamespace]);
185
+ const valid = _validateDevclass(input);
186
+ return valid === true ? yield (0, checkInstallDevclass_1.validateInstallDevclass)(context, input.trim().toUpperCase()) : valid;
187
+ })
95
188
  });
96
189
  }
97
190
  }
98
- else {
99
- const devclassValid = _validateDevclass(replacement.installDevclass, [updateNamespace || originalNamespace, '$', originalNamespace]);
100
- if (devclassValid !== true) {
101
- throw new Error(devclassValid);
102
- }
191
+ else if (!context.rawInput.contextData.noInquirer) {
192
+ inq1Prompts.push({
193
+ type: "input",
194
+ name: originalDevclass,
195
+ default: replacement.installDevclass,
196
+ message: `Rename ABAP Package "${replacement.installDevclass}"`,
197
+ validate: (input) => __awaiter(void 0, void 0, void 0, function* () {
198
+ //return _validateDevclass(input, [updateNamespace || originalNamespace, '$', originalNamespace]);
199
+ const valid = _validateDevclass(input);
200
+ return valid === true ? yield (0, checkInstallDevclass_1.validateInstallDevclass)(context, input.trim().toUpperCase()) : valid;
201
+ })
202
+ });
103
203
  }
104
204
  }
105
205
  if (inq1Prompts.length > 0) {
106
206
  const inq1 = yield trm_commons_1.Inquirer.prompt(inq1Prompts);
107
207
  Object.keys(inq1).forEach(k => {
208
+ //clear before pushing
108
209
  context.rawInput.installData.installDevclass.replacements = context.rawInput.installData.installDevclass.replacements.filter(o => o.originalDevclass !== k);
210
+ //push
109
211
  context.rawInput.installData.installDevclass.replacements.push({
110
212
  originalDevclass: k,
111
213
  installDevclass: inq1[k].trim().toUpperCase()
112
214
  });
113
215
  });
114
216
  }
217
+ //if one install package starts with $, all must start with $
218
+ //this check is not done by the validator, so it has to be done here
115
219
  const hasTemp = context.rawInput.installData.installDevclass.replacements.some(x => x.installDevclass.startsWith('$'));
116
220
  if (hasTemp && !context.rawInput.installData.installDevclass.replacements.every(x => x.installDevclass.startsWith('$'))) {
117
221
  throw new Error(`All packages must start with prefix $ if one (or more) packages are temporary!`);
118
222
  }
119
- trm_commons_1.Logger.loading(`Updating install data...`);
120
- var installDevc = [];
121
- var packageRegistry;
122
- if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
123
- packageRegistry = registry_1.PUBLIC_RESERVED_KEYWORD;
124
- }
125
- else if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
126
- packageRegistry = registry_1.LOCAL_RESERVED_KEYWORD;
127
- }
128
- else {
129
- packageRegistry = context.rawInput.packageData.registry.endpoint;
130
- }
131
- context.rawInput.installData.installDevclass.replacements.forEach(o => {
132
- installDevc.push({
133
- package_name: context.rawInput.packageData.name,
134
- package_registry: packageRegistry,
135
- original_devclass: o.originalDevclass,
136
- install_devclass: o.installDevclass
137
- });
138
- });
139
- yield systemConnector_1.SystemConnector.setInstallDevc(installDevc);
223
+ //fail before locks and dependency installs (add-namespace checks again for original package names)
224
+ (0, addNamespace_1.getInstallNamespace)(context);
225
+ //3- if all package names like origin, import devc transport
140
226
  context.rawInput.installData.installDevclass.keepOriginal = true;
141
227
  context.rawInput.installData.installDevclass.replacements.forEach(o => {
142
228
  if (o.installDevclass !== o.originalDevclass) {
@@ -1,3 +1,12 @@
1
1
  import { Step } from "@simonegaffurini/sammarksworkflow";
2
2
  import { InstallWorkflowContext } from ".";
3
+ /**
4
+ * Workflow step that records the installed release in the target system's TRM package table.
5
+ *
6
+ * Creates/update record in TRM packages table, with its install packages and the
7
+ * customizing and translation transports imported on this system
8
+ *
9
+ * 1- commit new values
10
+ *
11
+ */
3
12
  export declare const updatePackageData: Step<InstallWorkflowContext>;
@@ -12,26 +12,130 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.updatePackageData = void 0;
13
13
  const trm_commons_1 = require("trm-commons");
14
14
  const systemConnector_1 = require("../../systemConnector");
15
- const registry_1 = require("../../registry");
15
+ const utils_1 = require("../commons/utils");
16
16
  const manifest_1 = require("../../manifest");
17
17
  const transport_1 = require("../../transport");
18
+ const generateUpdateTransport_1 = require("./generateUpdateTransport");
19
+ function installTransportRows(packageName, packageRegistry, transports) {
20
+ return transports.map(transport => ({
21
+ package_name: packageName,
22
+ package_registry: packageRegistry,
23
+ trkorr: transport.trkorr,
24
+ trm_type: transport.trmType
25
+ }));
26
+ }
27
+ function installDevcRows(packageName, packageRegistry, replacements) {
28
+ return replacements.map(replacement => ({
29
+ package_name: packageName,
30
+ package_registry: packageRegistry,
31
+ original_devclass: replacement.originalDevclass,
32
+ install_devclass: replacement.installDevclass
33
+ }));
34
+ }
35
+ /**
36
+ * Workflow step that records the installed release in the target system's TRM package table.
37
+ *
38
+ * Creates/update record in TRM packages table, with its install packages and the
39
+ * customizing and translation transports imported on this system
40
+ *
41
+ * 1- commit new values
42
+ *
43
+ */
18
44
  exports.updatePackageData = {
19
45
  name: 'update-package-data',
20
46
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
21
- trm_commons_1.Logger.log('Update package data step', true);
47
+ var _a, _b;
22
48
  trm_commons_1.Logger.loading(`Finalizing install...`);
23
- const originalTransport = context.runtime.packageTransports.tadir.binaries.trkorr;
24
- const installTransport = context.runtime.installData.transports.find(o => o.type === transport_1.TrmTransportIdentifier.TADIR);
25
- const devclass = context.rawInput.installData.installDevclass.keepOriginal ?
26
- context.runtime.originalData.hierarchy.devclass :
27
- context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass = context.runtime.originalData.hierarchy.devclass).installDevclass;
28
- yield systemConnector_1.SystemConnector.updateTrmPackageData({
29
- package_name: context.rawInput.packageData.name,
30
- package_registry: context.runtime.registry.getRegistryType() === registry_1.RegistryType.PUBLIC ? registry_1.PUBLIC_RESERVED_KEYWORD : context.runtime.registry.endpoint,
31
- manifest: Buffer.from(new manifest_1.Manifest(context.runtime.remotePackageData.manifest).getAbapXml(), 'utf8'),
32
- trkorr: installTransport && installTransport.transport ? installTransport.transport.trkorr : originalTransport,
33
- integrity: context.runtime.remotePackageData.data.checksum,
49
+ //1- commit new values
50
+ trm_commons_1.Logger.loading(`Updating TRM data...`);
51
+ const originalTransport = context.runtime.transports.tadir.instance.trkorr;
52
+ const installTransport = (_a = context.output.transport) === null || _a === void 0 ? void 0 : _a.trkorr;
53
+ const originalDevclass = context.runtime.package.hierarchy.devclass;
54
+ let devclass = originalDevclass;
55
+ if (!context.rawInput.installData.installDevclass.keepOriginal) {
56
+ const rootReplacement = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === originalDevclass);
57
+ if (!(rootReplacement === null || rootReplacement === void 0 ? void 0 : rootReplacement.installDevclass)) {
58
+ throw new Error(`Missing install devclass replacement for root package "${originalDevclass}".`);
59
+ }
60
+ devclass = rootReplacement.installDevclass;
61
+ }
62
+ const packageRegistry = (0, utils_1.installRegistryKey)(context.runtime.installRegistry);
63
+ const installDevc = installDevcRows(context.rawInput.packageData.name, packageRegistry, context.rawInput.installData.installDevclass.replacements);
64
+ // Only transports imported on this system: uninstall and update delete their customizing.
65
+ // An upgrade that kept the installed customizing still owns the rows of the previous transports.
66
+ const importedCust = (context.runtime.transports.cust || [])
67
+ .filter(cust => cust.instance)
68
+ .map(cust => ({ trkorr: cust.instance.trkorr, trmType: transport_1.TrmTransportIdentifier.CUST }));
69
+ const keptCust = context.runtime.update && (0, generateUpdateTransport_1.keepsInstalledCustomizing)(context)
70
+ ? (context.runtime.previousInstallTransports || [])
71
+ .filter(o => (o.trmType || '').trim().toUpperCase() === transport_1.TrmTransportIdentifier.CUST && !importedCust.some(k => k.trkorr === o.trkorr))
72
+ .map(o => ({ trkorr: o.trkorr, trmType: transport_1.TrmTransportIdentifier.CUST }))
73
+ : [];
74
+ const installTr = installTransportRows(context.rawInput.packageData.name, packageRegistry, [
75
+ ...keptCust,
76
+ ...importedCust,
77
+ ...(((_b = context.runtime.transports.lang) === null || _b === void 0 ? void 0 : _b.instance)
78
+ ? [{ trkorr: context.runtime.transports.lang.instance.trkorr, trmType: transport_1.TrmTransportIdentifier.LANG }]
79
+ : [])
80
+ ]);
81
+ context.revert.metadataPackageRegistry = packageRegistry;
82
+ if (context.runtime.update) {
83
+ // The installed packages may have been read without their rows: read the stored row
84
+ // before writing, so the revert restores it exactly, or removes the row it wrote.
85
+ // A failed read aborts before any write.
86
+ context.revert.metadataPreviousPackageRow = yield systemConnector_1.SystemConnector.getTrmPackageData(context.runtime.package.data.manifest.name, packageRegistry);
87
+ context.revert.metadataPreviousPackageRead = true;
88
+ }
89
+ context.revert.metadataPackageRow = {
90
+ package_name: context.runtime.package.data.manifest.name,
91
+ package_registry: packageRegistry,
92
+ manifest: Buffer.from(new manifest_1.Manifest(context.runtime.package.data.manifest).getAbapXml(), 'utf8'),
93
+ trkorr: installTransport || originalTransport,
94
+ integrity: context.runtime.package.data.checksum,
34
95
  devclass
96
+ };
97
+ // Mappings stored for devclasses that are no longer installed: the write only upserts.
98
+ const staleInstallDevc = installDevcRows(context.rawInput.packageData.name, packageRegistry, context.runtime.previousInstallPackages.filter(previous => !installDevc.some(o => o.original_devclass === previous.originalDevclass)));
99
+ context.revert.metadataInstallDevc = installDevc;
100
+ // Mark before the mutating await: SAP may commit the mapping and still
101
+ // fail while returning the response.
102
+ context.revert.metadataWriteStarted = true;
103
+ yield systemConnector_1.SystemConnector.setInstallDevc(installDevc);
104
+ if (staleInstallDevc.length > 0) {
105
+ yield systemConnector_1.SystemConnector.deleteInstallDevc(staleInstallDevc);
106
+ }
107
+ context.revert.metadataTransportsWriteStarted = true;
108
+ yield systemConnector_1.SystemConnector.setInstallTransports(context.rawInput.packageData.name, packageRegistry, installTr);
109
+ yield systemConnector_1.SystemConnector.updateTrmPackageData(context.revert.metadataPackageRow);
110
+ }),
111
+ revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
112
+ // First installs remove the newly written row through the same atomic SAP operation.
113
+ if (!context.revert.metadataWriteStarted) {
114
+ return;
115
+ }
116
+ if (!context.runtime.update) {
117
+ if (context.revert.metadataPackageRow) {
118
+ yield systemConnector_1.SystemConnector.restoreInstallMetadata({
119
+ package: context.revert.metadataPackageRow,
120
+ packageExists: false,
121
+ installDevc: [],
122
+ installTr: []
123
+ });
124
+ }
125
+ return;
126
+ }
127
+ if (!context.revert.metadataPreviousPackageRead) {
128
+ return;
129
+ }
130
+ // One atomic SAP operation restores the row read before writing (or deletes the row this
131
+ // install wrote when none was stored) and replaces the mappings and install transports.
132
+ const previousRow = context.revert.metadataPreviousPackageRow;
133
+ const packageRow = previousRow || context.revert.metadataPackageRow;
134
+ yield systemConnector_1.SystemConnector.restoreInstallMetadata({
135
+ package: packageRow,
136
+ packageExists: !!previousRow,
137
+ installDevc: installDevcRows(context.rawInput.packageData.name, packageRow.package_registry, context.runtime.previousInstallPackages),
138
+ installTr: installTransportRows(context.rawInput.packageData.name, packageRow.package_registry, context.runtime.previousInstallTransports || [])
35
139
  });
36
140
  })
37
141
  };
@@ -0,0 +1,13 @@
1
+ import { Step } from "@simonegaffurini/sammarksworkflow";
2
+ import { InstallDependencyWorkflowContext } from ".";
3
+ /**
4
+ * Workflow step that compares the dependency installed on the system with the requested range.
5
+ * A compatible installed release is kept and the dependency install becomes a no-op, unless a
6
+ * lockfile pins the dependency to a different version. A lock outside the range aborts.
7
+ *
8
+ * 1- find installed release
9
+ *
10
+ * 2- keep compatible installed release
11
+ *
12
+ */
13
+ export declare const checkInstalledRelease: Step<InstallDependencyWorkflowContext>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.checkInstalledRelease = void 0;
13
+ const trm_commons_1 = require("trm-commons");
14
+ const semver_1 = require("semver");
15
+ const utils_1 = require("../commons/utils");
16
+ /**
17
+ * Workflow step that compares the dependency installed on the system with the requested range.
18
+ * A compatible installed release is kept and the dependency install becomes a no-op, unless a
19
+ * lockfile pins the dependency to a different version. A lock outside the range aborts.
20
+ *
21
+ * 1- find installed release
22
+ *
23
+ * 2- keep compatible installed release
24
+ *
25
+ */
26
+ exports.checkInstalledRelease = {
27
+ name: 'check-installed-release',
28
+ run: (context) => __awaiter(void 0, void 0, void 0, function* () {
29
+ //1- find installed release
30
+ const dependencyName = context.rawInput.dependencyDataPackage.name;
31
+ const versionRange = context.rawInput.dependencyDataPackage.versionRange;
32
+ const installed = (0, utils_1.getInstalledDependency)(context.rawInput.contextData.systemPackages, context.runtime.trmPackage, versionRange);
33
+ if (installed.status === 'manifestUnreadable') {
34
+ throw new Error(`Cannot verify installed dependency "${dependencyName}": package is installed but its manifest is unreadable.`);
35
+ }
36
+ context.runtime.installedVersion = installed.installedVersion;
37
+ //2- keep compatible installed release
38
+ if (installed.status !== 'ok') {
39
+ return;
40
+ }
41
+ const lockfile = context.rawInput.installData.checks.lockfile;
42
+ const lock = lockfile === null || lockfile === void 0 ? void 0 : lockfile.getLock(context.runtime.trmPackage, versionRange);
43
+ if (lock && !(0, semver_1.eq)(lock.version, installed.installedVersion)) {
44
+ trm_commons_1.Logger.info(`Dependency "${dependencyName}" v${installed.installedVersion} installed, lockfile requires v${lock.version}.`);
45
+ return;
46
+ }
47
+ context.runtime.alreadyInstalled = true;
48
+ trm_commons_1.Logger.info(`Dependency "${dependencyName}" v${installed.installedVersion} already installed (${versionRange}).`);
49
+ })
50
+ };
@@ -0,0 +1,11 @@
1
+ import { Step } from "@simonegaffurini/sammarksworkflow";
2
+ import { InstallDependencyWorkflowContext } from ".";
3
+ /**
4
+ * Workflow step that requires explicit confirmation before a dependency install replaces a newer
5
+ * installed release. `installData.checks.allowDowngrade` confirms it in advance; otherwise the
6
+ * user is prompted, and without a prompt the install is aborted.
7
+ *
8
+ * 1- confirm downgrade
9
+ *
10
+ */
11
+ export declare const confirmDowngrade: Step<InstallDependencyWorkflowContext>;