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
@@ -1,3 +1,31 @@
1
1
  import { Step } from "@simonegaffurini/sammarksworkflow";
2
2
  import { PublishWorkflowContext } from ".";
3
+ /**
4
+ * Workflow step that validates release metadata and reads the source ABAP package.
5
+ *
6
+ * 1- fill context data
7
+ *
8
+ * 2- validate/clean package name/version
9
+ *
10
+ * 3- check publish authorization (if public registry)
11
+ *
12
+ * 4- set sap package
13
+ *
14
+ * 5- ensure package version and visibility can be published
15
+ *
16
+ * 6- set visibility if not already provided
17
+ *
18
+ * 7- validate minimum publish data with registry
19
+ *
20
+ * 8- read namespace
21
+ *
22
+ * 9- read abapGit source code (if abapgit installed)
23
+ *
24
+ * 10- remove gitignore objects (if abapgit installed)
25
+ *
26
+ * 11- check for locks
27
+ *
28
+ * 12- check/set system target
29
+ *
30
+ */
3
31
  export declare const init: Step<PublishWorkflowContext>;
@@ -19,8 +19,13 @@ const trmPackage_1 = require("../../trmPackage");
19
19
  const semver_1 = require("semver");
20
20
  const systemConnector_1 = require("../../systemConnector");
21
21
  const registry_1 = require("../../registry");
22
- const transport_1 = require("../../transport");
23
22
  const chalk_1 = __importDefault(require("chalk"));
23
+ const prompts_1 = require("../commons/prompts");
24
+ const validators_1 = require("../../validators");
25
+ const abapgit_1 = require("../../abapgit");
26
+ const minimatch_1 = require("minimatch");
27
+ const utils_1 = require("../commons/utils");
28
+ const findDependencies_1 = require("./findDependencies");
24
29
  function nextPrerelease(version, identifier) {
25
30
  const pre = (0, semver_1.prerelease)(version);
26
31
  const currentId = pre && typeof pre[0] === "string" ? String(pre[0]) : undefined;
@@ -33,6 +38,34 @@ function nextPrerelease(version, identifier) {
33
38
  return (0, semver_1.inc)(version, "prerelease", currentId);
34
39
  }
35
40
  }
41
+ /**
42
+ * Rejects a publish whose ABAP package is inside the SAP packages of another installed TRM package,
43
+ * or contains the root package of one: their objects would be shipped by two TRM packages.
44
+ */
45
+ function checkOtherTrmPackages(context) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const devclass = context.rawInput.packageData.devclass;
48
+ // The same package name published to another registry (e.g. a .trm file of the same release) is the same package here.
49
+ const others = (context.rawInput.contextData.systemPackages || []).filter(o => !o.compareName(context.rawInput.packageData.name) && o.getDevclass());
50
+ if (others.length === 0) {
51
+ return;
52
+ }
53
+ const owner = yield (0, utils_1.getOwningInstallation)(devclass, others);
54
+ if (owner) {
55
+ if (owner.getDevclass().trim().toUpperCase() === devclass) {
56
+ throw new Error(`ABAP package ${devclass} is already published as TRM package "${owner.packageName}": publish a new release of "${owner.packageName}", or publish from another package.`);
57
+ }
58
+ throw new Error(`ABAP package ${devclass} is part of TRM package "${owner.packageName}" (SAP package ${owner.getDevclass()}): publish from a package outside of it.`);
59
+ }
60
+ const roots = new Map(others.map(o => [o.getDevclass().trim().toUpperCase(), o]));
61
+ for (const subpackage of yield systemConnector_1.SystemConnector.getSubpackages(devclass)) {
62
+ const nested = roots.get(subpackage.devclass.trim().toUpperCase());
63
+ if (nested) {
64
+ throw new Error(`ABAP package ${devclass} contains package ${subpackage.devclass} of TRM package "${nested.packageName}": move it out of ${devclass}, or publish from a package that doesn't contain it.`);
65
+ }
66
+ }
67
+ });
68
+ }
36
69
  function getHighestPrerelease(versions, baseVersion, identifier) {
37
70
  const base = (0, semver_1.parse)(baseVersion);
38
71
  const filtered = versions.filter((v) => {
@@ -47,101 +80,180 @@ function getHighestPrerelease(versions, baseVersion, identifier) {
47
80
  return false;
48
81
  return identifier
49
82
  ? pre[0] === identifier
50
- : typeof pre[0] === "number" || pre.length === 1;
83
+ : typeof pre[0] === "number" || pre.length === 1; // numeric-only
51
84
  });
52
85
  if (filtered.length === 0)
53
86
  return null;
54
87
  return filtered.sort(semver_1.rcompare)[0];
55
88
  }
89
+ /**
90
+ * Workflow step that validates release metadata and reads the source ABAP package.
91
+ *
92
+ * 1- fill context data
93
+ *
94
+ * 2- validate/clean package name/version
95
+ *
96
+ * 3- check publish authorization (if public registry)
97
+ *
98
+ * 4- set sap package
99
+ *
100
+ * 5- ensure package version and visibility can be published
101
+ *
102
+ * 6- set visibility if not already provided
103
+ *
104
+ * 7- validate minimum publish data with registry
105
+ *
106
+ * 8- read namespace
107
+ *
108
+ * 9- read abapGit source code (if abapgit installed)
109
+ *
110
+ * 10- remove gitignore objects (if abapgit installed)
111
+ *
112
+ * 11- check for locks
113
+ *
114
+ * 12- check/set system target
115
+ *
116
+ */
56
117
  exports.init = {
57
118
  name: 'init',
58
119
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
59
- trm_commons_1.Logger.log('Init step', true);
60
- const registry = context.rawInput.packageData.registry;
61
- const parsedPackageName = (0, commons_1.parsePackageName)({
120
+ //1- fill context data
121
+ context.runtime = {
122
+ latest: {
123
+ data: undefined
124
+ },
125
+ sapPackage: {
126
+ objects: [],
127
+ namespace: undefined
128
+ },
129
+ abapGit: {
130
+ dotAbapGit: undefined,
131
+ sourceCode: undefined,
132
+ object: [],
133
+ excludedObjects: []
134
+ },
135
+ manifest: Object.assign(Object.assign({}, context.rawInput.packageData.manifest), { name: undefined, version: undefined, authors: Array.isArray(context.rawInput.packageData.manifest.authors)
136
+ ? [...context.rawInput.packageData.manifest.authors]
137
+ : context.rawInput.packageData.manifest.authors, dependencies: [...context.rawInput.packageData.manifest.dependencies], keywords: Array.isArray(context.rawInput.packageData.manifest.keywords)
138
+ ? [...context.rawInput.packageData.manifest.keywords]
139
+ : context.rawInput.packageData.manifest.keywords, postActivities: [...context.rawInput.packageData.manifest.postActivities], sapEntries: Object.assign({}, context.rawInput.packageData.manifest.sapEntries) }),
140
+ manifestXml: undefined,
141
+ customizing: {
142
+ retained: [],
143
+ new: []
144
+ },
145
+ transports: {
146
+ devc: undefined,
147
+ tadir: undefined,
148
+ lang: undefined,
149
+ cust: []
150
+ },
151
+ aggregatedTransports: [],
152
+ stopWarningShown: false
153
+ };
154
+ context.output = {
155
+ trmArtifact: undefined,
156
+ trmPackage: undefined
157
+ };
158
+ //2- validate/clean package name/version
159
+ context.rawInput.packageData.name = (0, commons_1.parsePackageName)({
62
160
  fullName: context.rawInput.packageData.name
63
- });
64
- context.rawInput.packageData.name = parsedPackageName.fullName;
65
- if (registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
66
- trm_commons_1.Logger.log(`Public registry, checking if logged in`, true);
161
+ }).fullName;
162
+ context.rawInput.packageData.version = (0, semver_1.clean)(context.rawInput.packageData.version || '');
163
+ //3- check publish authorization (if public registry)
164
+ if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
165
+ trm_commons_1.Logger.loading(`Checking publish authorization...`);
67
166
  try {
68
- yield registry.whoAmI();
167
+ yield context.rawInput.packageData.registry.whoAmI();
69
168
  }
70
169
  catch (e) {
71
- trm_commons_1.Logger.error(`Cannot publish to public registry without being logged in!`);
170
+ trm_commons_1.Logger.error(`Cannot publish to public registry without being logged in!`, { important: true });
72
171
  throw e;
73
172
  }
74
173
  }
75
- if (!context.rawInput.contextData) {
76
- context.rawInput.contextData = {};
77
- }
78
- if (!context.rawInput.systemData) {
79
- context.rawInput.systemData = {};
80
- }
81
- if (!context.rawInput.publishData) {
82
- context.rawInput.publishData = {
83
- keepLatestReleaseManifestValues: true
84
- };
85
- }
86
- if (context.rawInput.packageData.manifest === undefined) {
87
- context.rawInput.packageData.manifest = {};
88
- }
89
- if (!context.rawInput.packageData.manifest.authors) {
90
- context.rawInput.packageData.manifest.authors = [];
91
- }
92
- if (!context.rawInput.packageData.manifest.dependencies) {
93
- context.rawInput.packageData.manifest.dependencies = [];
94
- }
95
- if (!context.rawInput.packageData.manifest.keywords) {
96
- context.rawInput.packageData.manifest.keywords = [];
97
- }
98
- if (context.rawInput.packageData.manifest.sapEntries === undefined) {
99
- context.rawInput.packageData.manifest.sapEntries = {};
100
- }
101
- if (!context.rawInput.packageData.manifest.postActivities) {
102
- context.rawInput.packageData.manifest.postActivities = [];
103
- }
104
- if (!context.rawInput.publishData.customizingTransports) {
105
- context.rawInput.publishData.customizingTransports = [];
174
+ //4- set sap package
175
+ //resolved before the registry checks and prompts: an invalid package (e.g. temporary) stops publish right away
176
+ //if not provided, derive it from the system package (previous publish), then prompt (if allowed)
177
+ //supplied or derived values are normalized and validated, prompted values are validated by the prompt
178
+ var packageNeedsValidation = true;
179
+ if (!context.rawInput.packageData.devclass) {
180
+ const trmPackage = context.rawInput.contextData.systemPackages.find(o => trmPackage_1.TrmPackage.compare(o, new trmPackage_1.TrmPackage(context.rawInput.packageData.name, context.rawInput.packageData.registry)));
181
+ if (trmPackage) {
182
+ context.rawInput.packageData.devclass = trmPackage.getDevclass();
183
+ }
184
+ if (!context.rawInput.contextData.noInquirer) {
185
+ context.rawInput.packageData.devclass = (yield trm_commons_1.Inquirer.prompt({
186
+ type: 'input',
187
+ message: 'ABAP package',
188
+ name: 'devclass',
189
+ default: context.rawInput.packageData.devclass,
190
+ validate: (input) => __awaiter(void 0, void 0, void 0, function* () {
191
+ return yield (0, validators_1.validateDevclass)(input, false);
192
+ })
193
+ })).devclass;
194
+ packageNeedsValidation = false;
195
+ }
196
+ else if (!context.rawInput.packageData.devclass) {
197
+ throw new Error(`packageData.devclass is required when it cannot be derived from a previous publish and interactive prompts are disabled.`);
198
+ }
106
199
  }
107
- if (typeof (context.rawInput.publishData.customizingTransports) === 'string') {
108
- context.rawInput.publishData.customizingTransports = context.rawInput.publishData.customizingTransports.split(',').map(trkorr => new transport_1.Transport(trkorr));
200
+ context.rawInput.packageData.devclass = context.rawInput.packageData.devclass.trim().toUpperCase();
201
+ trm_commons_1.Logger.log(`Publish devclass set to "${context.rawInput.packageData.devclass}"`, true);
202
+ if (packageNeedsValidation) {
203
+ trm_commons_1.Logger.loading(`Validating...`);
204
+ const validate = yield (0, validators_1.validateDevclass)(context.rawInput.packageData.devclass, false);
205
+ if (validate && validate !== true) {
206
+ throw new Error(validate);
207
+ }
208
+ trm_commons_1.Logger.info(`ABAP package: "${context.rawInput.packageData.devclass}"`);
109
209
  }
110
- if (!context.rawInput.packageData.tags) {
111
- context.rawInput.packageData.tags = [];
210
+ //an ABAP package belongs to at most one TRM package: the tree can't contain, or be inside, another one
211
+ yield checkOtherTrmPackages(context);
212
+ //dependencies the release can't have refuse the publish before the version and visibility questions
213
+ if (!context.rawInput.publishData.noDependenciesDetection && !context.rawInput.contextData.noInquirer) {
214
+ yield (0, findDependencies_1.checkPackageDependencies)(context);
112
215
  }
216
+ //5- ensure package version and visibility can be published
217
+ //if it's the first package publish assume it's valid (validate publish will throw error later, in case something is wrong with it)
218
+ //default to 1.0.0 if no version was provided
219
+ //if the package already exists, check this version was not released yet
220
+ //if it's public registry, check visibility is not changed too (avoid useless validate publish call)
221
+ //in all cases, calculate the next prerelease if requested
222
+ //on automatic version, manual validation by user
113
223
  trm_commons_1.Logger.loading(`Validating version...`);
114
224
  var automaticVersion = false;
115
- var releasesInRegistry;
116
- var latestReleaseManifest;
117
- context.rawInput.packageData.version = (0, semver_1.clean)(context.rawInput.packageData.version || '');
118
- try {
119
- trm_commons_1.Logger.loading(`Getting package latest release from registry...`, true);
120
- const packageData = yield registry.getPackage(context.rawInput.packageData.name, 'latest');
121
- latestReleaseManifest = packageData.manifest;
122
- releasesInRegistry = packageData.versions;
225
+ if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
226
+ //the target file is overwritten, it's not a previous release of this package:
227
+ //every local artifact is a standalone publication
228
+ trm_commons_1.Logger.log(`Local publish: target file is not read as latest release`, true);
123
229
  }
124
- catch (_a) { }
125
- if (!latestReleaseManifest) {
126
- if (!context.rawInput.packageData.version || !(0, semver_1.valid)(context.rawInput.packageData.version)) {
127
- context.rawInput.packageData.version = '1.0.0';
128
- automaticVersion = true;
230
+ else {
231
+ try {
232
+ context.runtime.latest.data = yield context.rawInput.packageData.registry.getPackage(context.rawInput.packageData.name, 'latest');
129
233
  }
130
- if (context.rawInput.packageData.preRelease) {
131
- context.rawInput.packageData.version = nextPrerelease(context.rawInput.packageData.version, context.rawInput.packageData.preReleaseIdentifier);
234
+ catch (e) {
235
+ if (e instanceof registry_1.RegistryPackageNotFoundError) {
236
+ trm_commons_1.Logger.info(`First time publishing "${context.rawInput.packageData.name}". Congratulations!`);
237
+ }
238
+ else {
239
+ throw e;
240
+ }
132
241
  }
133
242
  }
134
- else {
243
+ if (context.runtime.latest.data) {
244
+ if (!context.runtime.latest.data.dist_tags.latest) {
245
+ throw new Error(`Package has no latest distribution tag assigned! Unable to locate latest release.`);
246
+ }
135
247
  if (!context.rawInput.packageData.version || !(0, semver_1.valid)(context.rawInput.packageData.version)) {
136
- context.rawInput.packageData.version = (0, semver_1.inc)(latestReleaseManifest.version, context.rawInput.packageData.inc || "patch");
248
+ context.rawInput.packageData.version = (0, semver_1.inc)(context.runtime.latest.data.dist_tags.latest, context.rawInput.packageData.inc || "patch");
137
249
  automaticVersion = true;
138
250
  }
139
251
  else {
140
- if (releasesInRegistry.includes(context.rawInput.packageData.version)) {
252
+ if (context.runtime.latest.data.versions.concat(context.runtime.latest.data.yanked_versions).includes(context.rawInput.packageData.version)) {
141
253
  throw new Error(`Version "${context.rawInput.packageData.version}" already published.`);
142
254
  }
143
255
  if (context.rawInput.packageData.preRelease) {
144
- const highestPreRelease = getHighestPrerelease(releasesInRegistry, context.rawInput.packageData.version, context.rawInput.packageData.preReleaseIdentifier);
256
+ const highestPreRelease = getHighestPrerelease(context.runtime.latest.data.versions.concat(context.runtime.latest.data.yanked_versions), context.rawInput.packageData.version, context.rawInput.packageData.preReleaseIdentifier);
145
257
  if (highestPreRelease) {
146
258
  context.rawInput.packageData.version = highestPreRelease;
147
259
  automaticVersion = true;
@@ -149,33 +261,47 @@ exports.init = {
149
261
  context.rawInput.packageData.version = nextPrerelease(context.rawInput.packageData.version, context.rawInput.packageData.preReleaseIdentifier);
150
262
  }
151
263
  }
152
- if (registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
264
+ if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
153
265
  trm_commons_1.Logger.log(`Public registry, checking if visibility is the same as latest release`, true);
154
- if (typeof (context.rawInput.publishData.private) === 'boolean' && context.rawInput.publishData.private !== latestReleaseManifest.private) {
155
- throw new Error(`Cannot change package visibility to ${context.rawInput.publishData.private ? 'private' : 'public'}`);
266
+ if (typeof (context.rawInput.publishData.private) === 'boolean' && context.rawInput.publishData.private !== context.runtime.latest.data.manifest.private) {
267
+ throw new Error(`Cannot change package visibility from ${context.runtime.latest.data.manifest.private ? 'private' : 'public'} to ${context.rawInput.publishData.private ? 'private' : 'public'}`);
156
268
  }
157
269
  }
158
270
  }
271
+ else {
272
+ if (!context.rawInput.packageData.version || !(0, semver_1.valid)(context.rawInput.packageData.version)) {
273
+ context.rawInput.packageData.version = '1.0.0';
274
+ automaticVersion = true;
275
+ }
276
+ if (context.rawInput.packageData.preRelease) {
277
+ context.rawInput.packageData.version = nextPrerelease(context.rawInput.packageData.version, context.rawInput.packageData.preReleaseIdentifier);
278
+ }
279
+ }
159
280
  if (automaticVersion) {
160
281
  trm_commons_1.Logger.info(`Automatically set publish version to "${context.rawInput.packageData.version}"`);
161
282
  if (!context.rawInput.contextData.noInquirer) {
162
- context.rawInput.packageData.version = (yield trm_commons_1.Inquirer.prompt([{
283
+ const promptedVersion = (yield trm_commons_1.Inquirer.prompt([{
163
284
  type: 'confirm',
164
285
  message: `Continue publish as version "${context.rawInput.packageData.version}"?`,
165
286
  default: true,
166
287
  name: 'acceptDefaultVersion'
167
288
  }, {
168
289
  type: 'input',
169
- message: `Input publish version`,
290
+ message: `Release version`,
170
291
  name: 'version',
171
292
  default: context.rawInput.packageData.version,
172
293
  when: (hash) => {
173
294
  return !hash.acceptDefaultVersion;
174
295
  },
175
296
  validate: (v) => {
176
- if ((0, semver_1.valid)(v)) {
177
- if (releasesInRegistry.includes(v)) {
178
- return `Version "${v}" already published.`;
297
+ //compare the version as it will be stored (cleaned)
298
+ const version = (0, semver_1.clean)(v || '');
299
+ if (version) {
300
+ const publishedVersions = context.runtime.latest.data
301
+ ? context.runtime.latest.data.versions.concat(context.runtime.latest.data.yanked_versions)
302
+ : [];
303
+ if (publishedVersions.includes(version)) {
304
+ return `Version "${version}" is already published.`;
179
305
  }
180
306
  else {
181
307
  return true;
@@ -185,21 +311,26 @@ exports.init = {
185
311
  return `Invalid version`;
186
312
  }
187
313
  }
188
- }])).version || context.rawInput.packageData.version;
314
+ }])).version;
315
+ context.rawInput.packageData.version = (0, semver_1.clean)(promptedVersion || '') || context.rawInput.packageData.version;
189
316
  }
190
317
  }
191
- var isPrivate;
192
- if (registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
318
+ //6- set visibility if not already provided
319
+ var isPrivate = undefined;
320
+ if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
193
321
  isPrivate = true;
194
322
  }
195
323
  else {
196
- isPrivate = typeof (context.rawInput.publishData.private) === 'undefined' ? (latestReleaseManifest ? latestReleaseManifest.private : undefined) : context.rawInput.publishData.private;
197
- if (typeof (isPrivate) === 'undefined') {
324
+ isPrivate = context.rawInput.publishData.private === undefined ? (context.runtime.latest.data ? context.runtime.latest.data.manifest.private : undefined) : context.rawInput.publishData.private;
325
+ if (isPrivate === undefined) {
326
+ if (context.rawInput.contextData.noInquirer) {
327
+ throw new Error(`publishData.private is required for the first remote publication when interactive prompts are disabled.`);
328
+ }
198
329
  isPrivate = (yield trm_commons_1.Inquirer.prompt({
199
330
  type: "list",
200
331
  message: "Package visibility",
201
332
  name: "private",
202
- default: isPrivate,
333
+ default: true,
203
334
  choices: [{
204
335
  name: `Public`,
205
336
  value: false
@@ -210,49 +341,102 @@ exports.init = {
210
341
  })).private;
211
342
  }
212
343
  }
213
- trm_commons_1.Logger.loading(`Validating data...`);
214
- yield registry.validatePublish(context.rawInput.packageData.name, context.rawInput.packageData.version, isPrivate);
215
- if (!latestReleaseManifest) {
216
- trm_commons_1.Logger.info(`First time publishing "${context.rawInput.packageData.name}". Congratulations!`, registry.getRegistryType() === registry_1.RegistryType.LOCAL);
344
+ //7- validate minimum publish data with registry
345
+ //this is the bare minimum: if it fails there is no need to continue with publish
346
+ trm_commons_1.Logger.loading(`Validating...`);
347
+ yield context.rawInput.packageData.registry.validatePublish(context.rawInput.packageData.name, context.rawInput.packageData.version, isPrivate);
348
+ trm_commons_1.Logger.loading(`Reading ${context.rawInput.packageData.devclass} objects...`);
349
+ context.runtime.sapPackage.objects = yield systemConnector_1.SystemConnector.getDevclassObjects(context.rawInput.packageData.devclass, true);
350
+ if (context.runtime.sapPackage.objects.filter(o => !(o.pgmid === 'R3TR' && o.object === 'DEVC')).length === 0) {
351
+ throw new Error(`ABAP package "${context.rawInput.packageData.devclass}" doesn't contain any object!`);
217
352
  }
218
- trm_commons_1.Logger.info(`Ready to publish ${context.rawInput.packageData.name} v${context.rawInput.packageData.version}`);
219
- trm_commons_1.Logger.info(`Package visibility: ${chalk_1.default.bold(isPrivate ? 'private' : 'public')}`);
220
- context.runtime = {
221
- stopWarningShown: context.rawInput.contextData.noStopWarning ? true : false,
222
- trmPackage: {
223
- package: new trmPackage_1.TrmPackage(context.rawInput.packageData.name, registry),
224
- registry,
225
- latestReleaseManifest,
226
- releasesInRegistry,
227
- manifest: Object.assign(Object.assign({}, context.rawInput.packageData.manifest), {
228
- name: context.rawInput.packageData.name,
229
- version: context.rawInput.packageData.version,
230
- private: isPrivate
231
- })
232
- },
233
- systemData: {
234
- transportTargets: [],
235
- devcTransport: undefined,
236
- tadirTransport: undefined,
237
- releasedTransports: [],
238
- originCustomizing: [],
239
- custTransports: []
240
- },
241
- packageData: {
242
- tadir: []
243
- },
244
- abapGitData: {
245
- dotAbapGit: undefined,
246
- sourceCode: {
247
- ignoredObjects: [],
248
- zip: undefined
249
- }
353
+ //8- read namespace
354
+ //the package and its subpackages must use at most one reserved namespace
355
+ const packageNamespace = (0, commons_1.getPackagesNamespace)(context.rawInput.packageData.devclass, context.runtime.sapPackage.objects.flatMap(o => o.pgmid === 'R3TR' && o.object === 'DEVC' ? [o.devclass, o.objName] : [o.devclass]).filter(Boolean));
356
+ if (packageNamespace[0] === '/') {
357
+ trm_commons_1.Logger.loading(`Reading namespace ${packageNamespace}...`);
358
+ const namespace = yield systemConnector_1.SystemConnector.getNamespace(packageNamespace);
359
+ if (namespace && namespace.trnspacet && namespace.trnspacett.length > 0) {
360
+ context.runtime.sapPackage.namespace = {
361
+ trnspacet: namespace.trnspacet,
362
+ trnspacett: namespace.trnspacett
363
+ };
250
364
  }
251
- };
252
- trm_commons_1.Logger.loading(`Reading ${systemConnector_1.SystemConnector.getDest()} transport targets...`);
253
- context.runtime.systemData.transportTargets = yield systemConnector_1.SystemConnector.getTransportTargets();
254
- if (context.rawInput.publishData.skipCustomizingTransports) {
255
- context.rawInput.publishData.customizingTransports = [];
365
+ else {
366
+ throw new Error(`Namespace ${packageNamespace} couldn't be validated.`);
367
+ }
368
+ }
369
+ //9- read abapGit source code (if abapgit installed)
370
+ //this step is right at the beginning to ensure locks
371
+ //unfortunately, we have to read the whole source code to figure out the objects path, and evetually ignore gitignored objects
372
+ //so it's mandatory to do this before checking for locks :(
373
+ try {
374
+ const sourceCode = yield systemConnector_1.SystemConnector.getAbapgitSource(context.rawInput.packageData.devclass);
375
+ context.runtime.abapGit.sourceCode = sourceCode.zip;
376
+ context.runtime.abapGit.object = sourceCode.objects;
377
+ }
378
+ catch (_a) {
379
+ trm_commons_1.Logger.log(`Couldn't read source code!`, true);
256
380
  }
381
+ //10- remove gitignore objects (if abapgit installed)
382
+ if (context.runtime.abapGit.sourceCode && context.runtime.abapGit.object.length > 0) {
383
+ try {
384
+ context.runtime.abapGit.dotAbapGit = yield abapgit_1.DotAbapGit.fromDevclass(context.rawInput.packageData.devclass);
385
+ }
386
+ catch (_b) {
387
+ trm_commons_1.Logger.log(`.abapgit.xml not found`, true);
388
+ }
389
+ if (context.runtime.abapGit.dotAbapGit) {
390
+ const ignoredPatterns = context.runtime.abapGit.dotAbapGit.getIgnoredFiles();
391
+ context.runtime.sapPackage.objects.forEach(o => {
392
+ const abapgitObject = context.runtime.abapGit.object.find(k => k.pgmid === o.pgmid && k.object === o.object && k.objName === o.objName);
393
+ if (abapgitObject) {
394
+ ignoredPatterns.forEach(pattern => {
395
+ if ((0, minimatch_1.minimatch)(abapgitObject.fullPath, pattern, { matchBase: true })) {
396
+ if (o.pgmid === 'R3TR' && o.object === 'DEVC') {
397
+ throw new Error(`Cannot exclude ABAP package "${o.objName}" (.abapGit.xml)!`);
398
+ }
399
+ if (!context.runtime.abapGit.excludedObjects.find(k => k.pgmid === o.pgmid && k.object === o.object && k.objName === o.objName)) {
400
+ context.runtime.abapGit.excludedObjects.push(o);
401
+ context.runtime.sapPackage.objects = context.runtime.sapPackage.objects.filter(k => !(k.pgmid === o.pgmid && k.object === o.object && k.objName === o.objName));
402
+ }
403
+ }
404
+ });
405
+ }
406
+ });
407
+ }
408
+ }
409
+ //check that after gitignore there are still objects
410
+ if (context.runtime.sapPackage.objects.filter(o => !(o.pgmid === 'R3TR' && o.object === 'DEVC')).length === 0) {
411
+ //no more objects, print what was excluded from gitignore
412
+ context.runtime.abapGit.excludedObjects.forEach(o => trm_commons_1.Logger.info(`Excluding ${o.pgmid} ${o.object} ${o.objName} (.abapgit gitignore)`));
413
+ throw new Error(`ABAP package "${context.rawInput.packageData.devclass}" doesn't contain any object!`);
414
+ }
415
+ //11- check for locks
416
+ //finally, with excluded objects from gitignore, we can check for locks before continuing
417
+ const locks = yield systemConnector_1.SystemConnector.getObjectsLocks(context.runtime.sapPackage.objects.map(o => {
418
+ return {
419
+ PGMID: o.pgmid,
420
+ OBJECT: o.object,
421
+ OBJ_NAME: o.objName
422
+ };
423
+ }));
424
+ if (locks.length > 0) {
425
+ locks.forEach(l => { trm_commons_1.Logger.error(`${l.pgmid} ${l.object} ${l.objName} is currently locked in transport ${l.trkorr}`, { important: true }); });
426
+ throw new Error(`To continue, all objects must be released.`);
427
+ }
428
+ else {
429
+ trm_commons_1.Logger.log(`All objects released, continue`, true);
430
+ }
431
+ //12- check/set system target
432
+ trm_commons_1.Logger.loading(`Checking system target...`);
433
+ context.rawInput.systemData.transportTarget = yield (0, prompts_1.setTransportTarget)(context.rawInput.contextData.noInquirer, yield systemConnector_1.SystemConnector.getTransportTargets(), context.rawInput.systemData.transportTarget, "Publish transport target");
434
+ trm_commons_1.Logger.info(`Ready to publish ${context.rawInput.packageData.name} v${context.rawInput.packageData.version}`);
435
+ trm_commons_1.Logger.info(`Package visibility: ${chalk_1.default.bold(isPrivate ? 'private' : 'public')}`);
436
+ //this is the right time to show the excluded objects
437
+ context.runtime.abapGit.excludedObjects.forEach(o => trm_commons_1.Logger.info(`Excluding ${o.pgmid} ${o.object} ${o.objName} (.abapgit gitignore)`));
438
+ context.runtime.manifest.name = context.rawInput.packageData.name;
439
+ context.runtime.manifest.version = context.rawInput.packageData.version;
440
+ context.runtime.manifest.private = isPrivate;
257
441
  })
258
442
  };
@@ -0,0 +1,4 @@
1
+ import { Step } from "@simonegaffurini/sammarksworkflow";
2
+ import { PublishWorkflowContext } from ".";
3
+ /** Reserve the source package and all workbench objects before creating transports. */
4
+ export declare const lockResources: Step<PublishWorkflowContext>;
@@ -9,24 +9,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.refreshTmsTxt = void 0;
13
- const trm_commons_1 = require("trm-commons");
14
- exports.refreshTmsTxt = {
15
- name: 'refresh-tms-txt',
16
- filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
17
- if (context.runtime.generatedData.tmsTxtRefresh.length > 0) {
18
- return true;
19
- }
20
- else {
21
- trm_commons_1.Logger.log(`Skipping TMS refresh`, true);
22
- return false;
23
- }
24
- }),
12
+ exports.lockResources = void 0;
13
+ const utils_1 = require("../commons/utils");
14
+ /** Reserve the source package and all workbench objects before creating transports. */
15
+ exports.lockResources = {
16
+ name: "lock-resources",
25
17
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
26
- trm_commons_1.Logger.log('Refresh TMS txt step', true);
27
- for (const transport of context.runtime.generatedData.tmsTxtRefresh) {
28
- trm_commons_1.Logger.loading(`Updating TMS buffer ${transport.trkorr}...`);
29
- yield transport.refreshTmsTxt();
18
+ const resources = [
19
+ { type: "DEVCLASS", name: context.rawInput.packageData.devclass }
20
+ ];
21
+ for (const object of context.runtime.sapPackage.objects) {
22
+ resources.push((0, utils_1.objectLockResource)(object));
23
+ if (object.pgmid.trim().toUpperCase() === "R3TR" && object.object.trim().toUpperCase() === "DEVC") {
24
+ resources.push({ type: "DEVCLASS", name: object.objName });
25
+ }
30
26
  }
27
+ yield context.lockScope.acquire(resources);
31
28
  })
32
29
  };
@@ -1,3 +1,11 @@
1
1
  import { Step } from "@simonegaffurini/sammarksworkflow";
2
2
  import { PublishWorkflowContext } from ".";
3
+ /**
4
+ * Workflow step that builds the binary TRM artifact and uploads the release to its registry.
5
+ *
6
+ * 1- generate TRM artifact
7
+ *
8
+ * 2- publish to registry
9
+ *
10
+ */
3
11
  export declare const publishToRegistry: Step<PublishWorkflowContext>;