@mcp-abap-adt/adt-clients 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +184 -0
  3. package/bin/README.md +368 -0
  4. package/bin/lock-object.js +274 -0
  5. package/bin/manage-locks.js +331 -0
  6. package/bin/manage-sessions.js +235 -0
  7. package/bin/unlock-object.js +291 -0
  8. package/bin/unlock-test-objects.js +248 -0
  9. package/dist/clients/CrudClient.d.ts +48 -0
  10. package/dist/clients/CrudClient.d.ts.map +1 -0
  11. package/dist/clients/CrudClient.js +135 -0
  12. package/dist/clients/LockClient.d.ts +28 -0
  13. package/dist/clients/LockClient.d.ts.map +1 -0
  14. package/dist/clients/LockClient.js +141 -0
  15. package/dist/clients/ManagementClient.d.ts +34 -0
  16. package/dist/clients/ManagementClient.d.ts.map +1 -0
  17. package/dist/clients/ManagementClient.js +80 -0
  18. package/dist/clients/ReadOnlyClient.d.ts +70 -0
  19. package/dist/clients/ReadOnlyClient.d.ts.map +1 -0
  20. package/dist/clients/ReadOnlyClient.js +141 -0
  21. package/dist/clients/ValidationClient.d.ts +8 -0
  22. package/dist/clients/ValidationClient.d.ts.map +1 -0
  23. package/dist/clients/ValidationClient.js +14 -0
  24. package/dist/core/class/ClassBuilder.d.ts +140 -0
  25. package/dist/core/class/ClassBuilder.d.ts.map +1 -0
  26. package/dist/core/class/ClassBuilder.js +400 -0
  27. package/dist/core/class/activation.d.ts +11 -0
  28. package/dist/core/class/activation.d.ts.map +1 -0
  29. package/dist/core/class/activation.js +16 -0
  30. package/dist/core/class/check.d.ts +24 -0
  31. package/dist/core/class/check.d.ts.map +1 -0
  32. package/dist/core/class/check.js +73 -0
  33. package/dist/core/class/create.d.ts +30 -0
  34. package/dist/core/class/create.d.ts.map +1 -0
  35. package/dist/core/class/create.js +118 -0
  36. package/dist/core/class/index.d.ts +14 -0
  37. package/dist/core/class/index.d.ts.map +1 -0
  38. package/dist/core/class/index.js +31 -0
  39. package/dist/core/class/lock.d.ts +20 -0
  40. package/dist/core/class/lock.d.ts.map +1 -0
  41. package/dist/core/class/lock.js +49 -0
  42. package/dist/core/class/read.d.ts +34 -0
  43. package/dist/core/class/read.d.ts.map +1 -0
  44. package/dist/core/class/read.js +59 -0
  45. package/dist/core/class/run.d.ts +51 -0
  46. package/dist/core/class/run.d.ts.map +1 -0
  47. package/dist/core/class/run.js +105 -0
  48. package/dist/core/class/unlock.d.ts +11 -0
  49. package/dist/core/class/unlock.d.ts.map +1 -0
  50. package/dist/core/class/unlock.js +16 -0
  51. package/dist/core/class/update.d.ts +11 -0
  52. package/dist/core/class/update.d.ts.map +1 -0
  53. package/dist/core/class/update.js +30 -0
  54. package/dist/core/class/validation.d.ts +28 -0
  55. package/dist/core/class/validation.d.ts.map +1 -0
  56. package/dist/core/class/validation.js +269 -0
  57. package/dist/core/dataElement/DataElementBuilder.d.ts +113 -0
  58. package/dist/core/dataElement/DataElementBuilder.d.ts.map +1 -0
  59. package/dist/core/dataElement/DataElementBuilder.js +449 -0
  60. package/dist/core/dataElement/activation.d.ts +11 -0
  61. package/dist/core/dataElement/activation.d.ts.map +1 -0
  62. package/dist/core/dataElement/activation.js +123 -0
  63. package/dist/core/dataElement/check.d.ts +12 -0
  64. package/dist/core/dataElement/check.d.ts.map +1 -0
  65. package/dist/core/dataElement/check.js +32 -0
  66. package/dist/core/dataElement/create.d.ts +12 -0
  67. package/dist/core/dataElement/create.d.ts.map +1 -0
  68. package/dist/core/dataElement/create.js +259 -0
  69. package/dist/core/dataElement/delete.d.ts +14 -0
  70. package/dist/core/dataElement/delete.d.ts.map +1 -0
  71. package/dist/core/dataElement/delete.js +21 -0
  72. package/dist/core/dataElement/index.d.ts +14 -0
  73. package/dist/core/dataElement/index.d.ts.map +1 -0
  74. package/dist/core/dataElement/index.js +31 -0
  75. package/dist/core/dataElement/lock.d.ts +10 -0
  76. package/dist/core/dataElement/lock.d.ts.map +1 -0
  77. package/dist/core/dataElement/lock.js +31 -0
  78. package/dist/core/dataElement/read.d.ts +17 -0
  79. package/dist/core/dataElement/read.d.ts.map +1 -0
  80. package/dist/core/dataElement/read.js +42 -0
  81. package/dist/core/dataElement/types.d.ts +64 -0
  82. package/dist/core/dataElement/types.d.ts.map +1 -0
  83. package/dist/core/dataElement/types.js +5 -0
  84. package/dist/core/dataElement/unlock.d.ts +11 -0
  85. package/dist/core/dataElement/unlock.d.ts.map +1 -0
  86. package/dist/core/dataElement/unlock.js +17 -0
  87. package/dist/core/dataElement/update.d.ts +29 -0
  88. package/dist/core/dataElement/update.d.ts.map +1 -0
  89. package/dist/core/dataElement/update.js +269 -0
  90. package/dist/core/delete.d.ts +22 -0
  91. package/dist/core/delete.d.ts.map +1 -0
  92. package/dist/core/delete.js +148 -0
  93. package/dist/core/domain/DomainBuilder.d.ts +135 -0
  94. package/dist/core/domain/DomainBuilder.d.ts.map +1 -0
  95. package/dist/core/domain/DomainBuilder.js +430 -0
  96. package/dist/core/domain/activation.d.ts +11 -0
  97. package/dist/core/domain/activation.d.ts.map +1 -0
  98. package/dist/core/domain/activation.js +16 -0
  99. package/dist/core/domain/check.d.ts +16 -0
  100. package/dist/core/domain/check.d.ts.map +1 -0
  101. package/dist/core/domain/check.js +36 -0
  102. package/dist/core/domain/create.d.ts +21 -0
  103. package/dist/core/domain/create.d.ts.map +1 -0
  104. package/dist/core/domain/create.js +172 -0
  105. package/dist/core/domain/delete.d.ts +14 -0
  106. package/dist/core/domain/delete.d.ts.map +1 -0
  107. package/dist/core/domain/delete.js +21 -0
  108. package/dist/core/domain/index.d.ts +14 -0
  109. package/dist/core/domain/index.d.ts.map +1 -0
  110. package/dist/core/domain/index.js +31 -0
  111. package/dist/core/domain/lock.d.ts +15 -0
  112. package/dist/core/domain/lock.d.ts.map +1 -0
  113. package/dist/core/domain/lock.js +61 -0
  114. package/dist/core/domain/read.d.ts +17 -0
  115. package/dist/core/domain/read.d.ts.map +1 -0
  116. package/dist/core/domain/read.js +42 -0
  117. package/dist/core/domain/types.d.ts +38 -0
  118. package/dist/core/domain/types.d.ts.map +1 -0
  119. package/dist/core/domain/types.js +5 -0
  120. package/dist/core/domain/unlock.d.ts +11 -0
  121. package/dist/core/domain/unlock.d.ts.map +1 -0
  122. package/dist/core/domain/unlock.js +17 -0
  123. package/dist/core/domain/update.d.ts +12 -0
  124. package/dist/core/domain/update.d.ts.map +1 -0
  125. package/dist/core/domain/update.js +144 -0
  126. package/dist/core/functionGroup/FunctionGroupBuilder.d.ts +91 -0
  127. package/dist/core/functionGroup/FunctionGroupBuilder.d.ts.map +1 -0
  128. package/dist/core/functionGroup/FunctionGroupBuilder.js +268 -0
  129. package/dist/core/functionGroup/activation.d.ts +10 -0
  130. package/dist/core/functionGroup/activation.d.ts.map +1 -0
  131. package/dist/core/functionGroup/activation.js +30 -0
  132. package/dist/core/functionGroup/check.d.ts +24 -0
  133. package/dist/core/functionGroup/check.d.ts.map +1 -0
  134. package/dist/core/functionGroup/check.js +91 -0
  135. package/dist/core/functionGroup/create.d.ts +12 -0
  136. package/dist/core/functionGroup/create.d.ts.map +1 -0
  137. package/dist/core/functionGroup/create.js +90 -0
  138. package/dist/core/functionGroup/delete.d.ts +14 -0
  139. package/dist/core/functionGroup/delete.d.ts.map +1 -0
  140. package/dist/core/functionGroup/delete.js +21 -0
  141. package/dist/core/functionGroup/index.d.ts +15 -0
  142. package/dist/core/functionGroup/index.d.ts.map +1 -0
  143. package/dist/core/functionGroup/index.js +32 -0
  144. package/dist/core/functionGroup/lock.d.ts +25 -0
  145. package/dist/core/functionGroup/lock.d.ts.map +1 -0
  146. package/dist/core/functionGroup/lock.js +50 -0
  147. package/dist/core/functionGroup/read.d.ts +17 -0
  148. package/dist/core/functionGroup/read.d.ts.map +1 -0
  149. package/dist/core/functionGroup/read.js +42 -0
  150. package/dist/core/functionGroup/types.d.ts +11 -0
  151. package/dist/core/functionGroup/types.d.ts.map +1 -0
  152. package/dist/core/functionGroup/types.js +5 -0
  153. package/dist/core/functionGroup/unlock.d.ts +5 -0
  154. package/dist/core/functionGroup/unlock.d.ts.map +1 -0
  155. package/dist/core/functionGroup/unlock.js +8 -0
  156. package/dist/core/functionGroup/update.d.ts +20 -0
  157. package/dist/core/functionGroup/update.d.ts.map +1 -0
  158. package/dist/core/functionGroup/update.js +119 -0
  159. package/dist/core/functionGroup/validation.d.ts +10 -0
  160. package/dist/core/functionGroup/validation.d.ts.map +1 -0
  161. package/dist/core/functionGroup/validation.js +17 -0
  162. package/dist/core/functionModule/FunctionModuleBuilder.d.ts +101 -0
  163. package/dist/core/functionModule/FunctionModuleBuilder.d.ts.map +1 -0
  164. package/dist/core/functionModule/FunctionModuleBuilder.js +314 -0
  165. package/dist/core/functionModule/activation.d.ts +10 -0
  166. package/dist/core/functionModule/activation.d.ts.map +1 -0
  167. package/dist/core/functionModule/activation.js +17 -0
  168. package/dist/core/functionModule/check.d.ts +23 -0
  169. package/dist/core/functionModule/check.d.ts.map +1 -0
  170. package/dist/core/functionModule/check.js +116 -0
  171. package/dist/core/functionModule/create.d.ts +12 -0
  172. package/dist/core/functionModule/create.d.ts.map +1 -0
  173. package/dist/core/functionModule/create.js +158 -0
  174. package/dist/core/functionModule/delete.d.ts +15 -0
  175. package/dist/core/functionModule/delete.d.ts.map +1 -0
  176. package/dist/core/functionModule/delete.js +25 -0
  177. package/dist/core/functionModule/index.d.ts +15 -0
  178. package/dist/core/functionModule/index.d.ts.map +1 -0
  179. package/dist/core/functionModule/index.js +32 -0
  180. package/dist/core/functionModule/lock.d.ts +18 -0
  181. package/dist/core/functionModule/lock.d.ts.map +1 -0
  182. package/dist/core/functionModule/lock.js +52 -0
  183. package/dist/core/functionModule/read.d.ts +31 -0
  184. package/dist/core/functionModule/read.d.ts.map +1 -0
  185. package/dist/core/functionModule/read.js +57 -0
  186. package/dist/core/functionModule/types.d.ts +19 -0
  187. package/dist/core/functionModule/types.d.ts.map +1 -0
  188. package/dist/core/functionModule/types.js +5 -0
  189. package/dist/core/functionModule/unlock.d.ts +10 -0
  190. package/dist/core/functionModule/unlock.d.ts.map +1 -0
  191. package/dist/core/functionModule/unlock.js +20 -0
  192. package/dist/core/functionModule/update.d.ts +17 -0
  193. package/dist/core/functionModule/update.d.ts.map +1 -0
  194. package/dist/core/functionModule/update.js +103 -0
  195. package/dist/core/functionModule/validation.d.ts +27 -0
  196. package/dist/core/functionModule/validation.d.ts.map +1 -0
  197. package/dist/core/functionModule/validation.js +107 -0
  198. package/dist/core/interface/InterfaceBuilder.d.ts +98 -0
  199. package/dist/core/interface/InterfaceBuilder.d.ts.map +1 -0
  200. package/dist/core/interface/InterfaceBuilder.js +311 -0
  201. package/dist/core/interface/activation.d.ts +11 -0
  202. package/dist/core/interface/activation.d.ts.map +1 -0
  203. package/dist/core/interface/activation.js +16 -0
  204. package/dist/core/interface/check.d.ts +10 -0
  205. package/dist/core/interface/check.d.ts.map +1 -0
  206. package/dist/core/interface/check.js +18 -0
  207. package/dist/core/interface/create.d.ts +12 -0
  208. package/dist/core/interface/create.d.ts.map +1 -0
  209. package/dist/core/interface/create.js +119 -0
  210. package/dist/core/interface/delete.d.ts +20 -0
  211. package/dist/core/interface/delete.d.ts.map +1 -0
  212. package/dist/core/interface/delete.js +47 -0
  213. package/dist/core/interface/index.d.ts +15 -0
  214. package/dist/core/interface/index.d.ts.map +1 -0
  215. package/dist/core/interface/index.js +32 -0
  216. package/dist/core/interface/lock.d.ts +23 -0
  217. package/dist/core/interface/lock.d.ts.map +1 -0
  218. package/dist/core/interface/lock.js +51 -0
  219. package/dist/core/interface/read.d.ts +26 -0
  220. package/dist/core/interface/read.d.ts.map +1 -0
  221. package/dist/core/interface/read.js +51 -0
  222. package/dist/core/interface/types.d.ts +19 -0
  223. package/dist/core/interface/types.d.ts.map +1 -0
  224. package/dist/core/interface/types.js +5 -0
  225. package/dist/core/interface/unlock.d.ts +11 -0
  226. package/dist/core/interface/unlock.d.ts.map +1 -0
  227. package/dist/core/interface/unlock.js +35 -0
  228. package/dist/core/interface/update.d.ts +12 -0
  229. package/dist/core/interface/update.d.ts.map +1 -0
  230. package/dist/core/interface/update.js +82 -0
  231. package/dist/core/interface/validation.d.ts +10 -0
  232. package/dist/core/interface/validation.d.ts.map +1 -0
  233. package/dist/core/interface/validation.js +17 -0
  234. package/dist/core/managementOperations.d.ts +34 -0
  235. package/dist/core/managementOperations.d.ts.map +1 -0
  236. package/dist/core/managementOperations.js +136 -0
  237. package/dist/core/package/PackageBuilder.d.ts +129 -0
  238. package/dist/core/package/PackageBuilder.d.ts.map +1 -0
  239. package/dist/core/package/PackageBuilder.js +386 -0
  240. package/dist/core/package/check.d.ts +9 -0
  241. package/dist/core/package/check.d.ts.map +1 -0
  242. package/dist/core/package/check.js +29 -0
  243. package/dist/core/package/create.d.ts +12 -0
  244. package/dist/core/package/create.d.ts.map +1 -0
  245. package/dist/core/package/create.js +145 -0
  246. package/dist/core/package/delete.d.ts +27 -0
  247. package/dist/core/package/delete.d.ts.map +1 -0
  248. package/dist/core/package/delete.js +138 -0
  249. package/dist/core/package/index.d.ts +15 -0
  250. package/dist/core/package/index.d.ts.map +1 -0
  251. package/dist/core/package/index.js +32 -0
  252. package/dist/core/package/lock.d.ts +10 -0
  253. package/dist/core/package/lock.d.ts.map +1 -0
  254. package/dist/core/package/lock.js +28 -0
  255. package/dist/core/package/read.d.ts +17 -0
  256. package/dist/core/package/read.d.ts.map +1 -0
  257. package/dist/core/package/read.js +42 -0
  258. package/dist/core/package/transportCheck.d.ts +10 -0
  259. package/dist/core/package/transportCheck.d.ts.map +1 -0
  260. package/dist/core/package/transportCheck.js +52 -0
  261. package/dist/core/package/types.d.ts +15 -0
  262. package/dist/core/package/types.d.ts.map +1 -0
  263. package/dist/core/package/types.js +5 -0
  264. package/dist/core/package/unlock.d.ts +11 -0
  265. package/dist/core/package/unlock.d.ts.map +1 -0
  266. package/dist/core/package/unlock.js +16 -0
  267. package/dist/core/package/update.d.ts +19 -0
  268. package/dist/core/package/update.d.ts.map +1 -0
  269. package/dist/core/package/update.js +125 -0
  270. package/dist/core/package/validation.d.ts +14 -0
  271. package/dist/core/package/validation.d.ts.map +1 -0
  272. package/dist/core/package/validation.js +72 -0
  273. package/dist/core/program/ProgramBuilder.d.ts +102 -0
  274. package/dist/core/program/ProgramBuilder.d.ts.map +1 -0
  275. package/dist/core/program/ProgramBuilder.js +321 -0
  276. package/dist/core/program/activation.d.ts +11 -0
  277. package/dist/core/program/activation.d.ts.map +1 -0
  278. package/dist/core/program/activation.js +16 -0
  279. package/dist/core/program/check.d.ts +10 -0
  280. package/dist/core/program/check.d.ts.map +1 -0
  281. package/dist/core/program/check.js +18 -0
  282. package/dist/core/program/create.d.ts +23 -0
  283. package/dist/core/program/create.d.ts.map +1 -0
  284. package/dist/core/program/create.js +159 -0
  285. package/dist/core/program/delete.d.ts +14 -0
  286. package/dist/core/program/delete.d.ts.map +1 -0
  287. package/dist/core/program/delete.js +21 -0
  288. package/dist/core/program/index.d.ts +14 -0
  289. package/dist/core/program/index.d.ts.map +1 -0
  290. package/dist/core/program/index.js +31 -0
  291. package/dist/core/program/lock.d.ts +20 -0
  292. package/dist/core/program/lock.d.ts.map +1 -0
  293. package/dist/core/program/lock.js +49 -0
  294. package/dist/core/program/read.d.ts +26 -0
  295. package/dist/core/program/read.d.ts.map +1 -0
  296. package/dist/core/program/read.js +51 -0
  297. package/dist/core/program/unlock.d.ts +11 -0
  298. package/dist/core/program/unlock.d.ts.map +1 -0
  299. package/dist/core/program/unlock.js +16 -0
  300. package/dist/core/program/update.d.ts +16 -0
  301. package/dist/core/program/update.d.ts.map +1 -0
  302. package/dist/core/program/update.js +82 -0
  303. package/dist/core/program/validation.d.ts +10 -0
  304. package/dist/core/program/validation.d.ts.map +1 -0
  305. package/dist/core/program/validation.js +17 -0
  306. package/dist/core/readOperations.d.ts +63 -0
  307. package/dist/core/readOperations.d.ts.map +1 -0
  308. package/dist/core/readOperations.js +204 -0
  309. package/dist/core/shared/checkRun.d.ts +68 -0
  310. package/dist/core/shared/checkRun.d.ts.map +1 -0
  311. package/dist/core/shared/checkRun.js +292 -0
  312. package/dist/core/shared/readMetadata.d.ts +16 -0
  313. package/dist/core/shared/readMetadata.d.ts.map +1 -0
  314. package/dist/core/shared/readMetadata.js +74 -0
  315. package/dist/core/shared/readSource.d.ts +21 -0
  316. package/dist/core/shared/readSource.d.ts.map +1 -0
  317. package/dist/core/shared/readSource.js +83 -0
  318. package/dist/core/shared/search.d.ts +26 -0
  319. package/dist/core/shared/search.d.ts.map +1 -0
  320. package/dist/core/shared/search.js +32 -0
  321. package/dist/core/shared/sqlQuery.d.ts +22 -0
  322. package/dist/core/shared/sqlQuery.d.ts.map +1 -0
  323. package/dist/core/shared/sqlQuery.js +36 -0
  324. package/dist/core/shared/systemInfo.d.ts +22 -0
  325. package/dist/core/shared/systemInfo.d.ts.map +1 -0
  326. package/dist/core/shared/systemInfo.js +67 -0
  327. package/dist/core/shared/tableContents.d.ts +22 -0
  328. package/dist/core/shared/tableContents.d.ts.map +1 -0
  329. package/dist/core/shared/tableContents.js +89 -0
  330. package/dist/core/shared/validation.d.ts +26 -0
  331. package/dist/core/shared/validation.d.ts.map +1 -0
  332. package/dist/core/shared/validation.js +134 -0
  333. package/dist/core/shared/whereUsed.d.ts +19 -0
  334. package/dist/core/shared/whereUsed.d.ts.map +1 -0
  335. package/dist/core/shared/whereUsed.js +88 -0
  336. package/dist/core/structure/StructureBuilder.d.ts +124 -0
  337. package/dist/core/structure/StructureBuilder.d.ts.map +1 -0
  338. package/dist/core/structure/StructureBuilder.js +357 -0
  339. package/dist/core/structure/activation.d.ts +10 -0
  340. package/dist/core/structure/activation.d.ts.map +1 -0
  341. package/dist/core/structure/activation.js +15 -0
  342. package/dist/core/structure/check.d.ts +12 -0
  343. package/dist/core/structure/check.d.ts.map +1 -0
  344. package/dist/core/structure/check.js +44 -0
  345. package/dist/core/structure/create.d.ts +12 -0
  346. package/dist/core/structure/create.d.ts.map +1 -0
  347. package/dist/core/structure/create.js +136 -0
  348. package/dist/core/structure/delete.d.ts +14 -0
  349. package/dist/core/structure/delete.d.ts.map +1 -0
  350. package/dist/core/structure/delete.js +21 -0
  351. package/dist/core/structure/index.d.ts +15 -0
  352. package/dist/core/structure/index.d.ts.map +1 -0
  353. package/dist/core/structure/index.js +32 -0
  354. package/dist/core/structure/lock.d.ts +10 -0
  355. package/dist/core/structure/lock.d.ts.map +1 -0
  356. package/dist/core/structure/lock.js +28 -0
  357. package/dist/core/structure/read.d.ts +26 -0
  358. package/dist/core/structure/read.d.ts.map +1 -0
  359. package/dist/core/structure/read.js +51 -0
  360. package/dist/core/structure/types.d.ts +33 -0
  361. package/dist/core/structure/types.d.ts.map +1 -0
  362. package/dist/core/structure/types.js +5 -0
  363. package/dist/core/structure/unlock.d.ts +11 -0
  364. package/dist/core/structure/unlock.d.ts.map +1 -0
  365. package/dist/core/structure/unlock.js +16 -0
  366. package/dist/core/structure/update.d.ts +11 -0
  367. package/dist/core/structure/update.d.ts.map +1 -0
  368. package/dist/core/structure/update.js +26 -0
  369. package/dist/core/structure/validation.d.ts +10 -0
  370. package/dist/core/structure/validation.d.ts.map +1 -0
  371. package/dist/core/structure/validation.js +17 -0
  372. package/dist/core/table/TableBuilder.d.ts +115 -0
  373. package/dist/core/table/TableBuilder.d.ts.map +1 -0
  374. package/dist/core/table/TableBuilder.js +328 -0
  375. package/dist/core/table/activation.d.ts +10 -0
  376. package/dist/core/table/activation.d.ts.map +1 -0
  377. package/dist/core/table/activation.js +15 -0
  378. package/dist/core/table/check.d.ts +11 -0
  379. package/dist/core/table/check.d.ts.map +1 -0
  380. package/dist/core/table/check.js +30 -0
  381. package/dist/core/table/create.d.ts +12 -0
  382. package/dist/core/table/create.d.ts.map +1 -0
  383. package/dist/core/table/create.js +182 -0
  384. package/dist/core/table/delete.d.ts +14 -0
  385. package/dist/core/table/delete.d.ts.map +1 -0
  386. package/dist/core/table/delete.js +21 -0
  387. package/dist/core/table/index.d.ts +15 -0
  388. package/dist/core/table/index.d.ts.map +1 -0
  389. package/dist/core/table/index.js +32 -0
  390. package/dist/core/table/lock.d.ts +9 -0
  391. package/dist/core/table/lock.d.ts.map +1 -0
  392. package/dist/core/table/lock.js +29 -0
  393. package/dist/core/table/read.d.ts +26 -0
  394. package/dist/core/table/read.d.ts.map +1 -0
  395. package/dist/core/table/read.js +51 -0
  396. package/dist/core/table/types.d.ts +10 -0
  397. package/dist/core/table/types.d.ts.map +1 -0
  398. package/dist/core/table/types.js +5 -0
  399. package/dist/core/table/unlock.d.ts +15 -0
  400. package/dist/core/table/unlock.d.ts.map +1 -0
  401. package/dist/core/table/unlock.js +32 -0
  402. package/dist/core/table/update.d.ts +16 -0
  403. package/dist/core/table/update.d.ts.map +1 -0
  404. package/dist/core/table/update.js +32 -0
  405. package/dist/core/table/validation.d.ts +10 -0
  406. package/dist/core/table/validation.d.ts.map +1 -0
  407. package/dist/core/table/validation.js +17 -0
  408. package/dist/core/transport/TransportBuilder.d.ts +85 -0
  409. package/dist/core/transport/TransportBuilder.d.ts.map +1 -0
  410. package/dist/core/transport/TransportBuilder.js +154 -0
  411. package/dist/core/transport/create.d.ts +11 -0
  412. package/dist/core/transport/create.d.ts.map +1 -0
  413. package/dist/core/transport/create.js +157 -0
  414. package/dist/core/transport/index.d.ts +8 -0
  415. package/dist/core/transport/index.d.ts.map +1 -0
  416. package/dist/core/transport/index.js +25 -0
  417. package/dist/core/transport/read.d.ts +10 -0
  418. package/dist/core/transport/read.d.ts.map +1 -0
  419. package/dist/core/transport/read.js +22 -0
  420. package/dist/core/transport/types.d.ts +10 -0
  421. package/dist/core/transport/types.d.ts.map +1 -0
  422. package/dist/core/transport/types.js +5 -0
  423. package/dist/core/view/ViewBuilder.d.ts +117 -0
  424. package/dist/core/view/ViewBuilder.d.ts.map +1 -0
  425. package/dist/core/view/ViewBuilder.js +335 -0
  426. package/dist/core/view/activation.d.ts +10 -0
  427. package/dist/core/view/activation.d.ts.map +1 -0
  428. package/dist/core/view/activation.js +15 -0
  429. package/dist/core/view/check.d.ts +7 -0
  430. package/dist/core/view/check.d.ts.map +1 -0
  431. package/dist/core/view/check.js +57 -0
  432. package/dist/core/view/create.d.ts +12 -0
  433. package/dist/core/view/create.d.ts.map +1 -0
  434. package/dist/core/view/create.js +88 -0
  435. package/dist/core/view/delete.d.ts +14 -0
  436. package/dist/core/view/delete.d.ts.map +1 -0
  437. package/dist/core/view/delete.js +21 -0
  438. package/dist/core/view/index.d.ts +15 -0
  439. package/dist/core/view/index.d.ts.map +1 -0
  440. package/dist/core/view/index.js +32 -0
  441. package/dist/core/view/lock.d.ts +18 -0
  442. package/dist/core/view/lock.d.ts.map +1 -0
  443. package/dist/core/view/lock.js +45 -0
  444. package/dist/core/view/read.d.ts +26 -0
  445. package/dist/core/view/read.d.ts.map +1 -0
  446. package/dist/core/view/read.js +51 -0
  447. package/dist/core/view/types.d.ts +19 -0
  448. package/dist/core/view/types.d.ts.map +1 -0
  449. package/dist/core/view/types.js +5 -0
  450. package/dist/core/view/unlock.d.ts +10 -0
  451. package/dist/core/view/unlock.d.ts.map +1 -0
  452. package/dist/core/view/unlock.js +15 -0
  453. package/dist/core/view/update.d.ts +12 -0
  454. package/dist/core/view/update.d.ts.map +1 -0
  455. package/dist/core/view/update.js +89 -0
  456. package/dist/core/view/validation.d.ts +10 -0
  457. package/dist/core/view/validation.d.ts.map +1 -0
  458. package/dist/core/view/validation.js +17 -0
  459. package/dist/core.d.ts +133 -0
  460. package/dist/core.d.ts.map +1 -0
  461. package/dist/core.js +175 -0
  462. package/dist/index.d.ts +38 -0
  463. package/dist/index.d.ts.map +1 -0
  464. package/dist/index.js +60 -0
  465. package/dist/utils/activationUtils.d.ts +44 -0
  466. package/dist/utils/activationUtils.d.ts.map +1 -0
  467. package/dist/utils/activationUtils.js +127 -0
  468. package/dist/utils/internalUtils.d.ts +12 -0
  469. package/dist/utils/internalUtils.d.ts.map +1 -0
  470. package/dist/utils/internalUtils.js +16 -0
  471. package/dist/utils/lockStateManager.d.ts +64 -0
  472. package/dist/utils/lockStateManager.d.ts.map +1 -0
  473. package/dist/utils/lockStateManager.js +172 -0
  474. package/dist/utils/sessionUtils.d.ts +69 -0
  475. package/dist/utils/sessionUtils.d.ts.map +1 -0
  476. package/dist/utils/sessionUtils.js +134 -0
  477. package/package.json +75 -0
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ /**
3
+ * FunctionModule create operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createFunctionModule = createFunctionModule;
7
+ const connection_1 = require("@mcp-abap-adt/connection");
8
+ const fast_xml_parser_1 = require("fast-xml-parser");
9
+ const internalUtils_1 = require("../../utils/internalUtils");
10
+ const sessionUtils_1 = require("../../utils/sessionUtils");
11
+ const systemInfo_1 = require("../shared/systemInfo");
12
+ const lock_1 = require("./lock");
13
+ const unlock_1 = require("./unlock");
14
+ const activation_1 = require("./activation");
15
+ const read_1 = require("../functionGroup/read");
16
+ const create_1 = require("../functionGroup/create");
17
+ const validation_1 = require("./validation");
18
+ const validation_2 = require("../shared/validation");
19
+ /**
20
+ * Create function module metadata
21
+ */
22
+ async function createFunctionModuleMetadata(connection, functionGroupName, functionModuleName, description, corrNr) {
23
+ const baseUrl = await connection.getBaseUrl();
24
+ const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
25
+ let url = `${baseUrl}/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules${corrNr ? `?corrNr=${corrNr}` : ''}`;
26
+ // Get masterSystem and responsible (only for cloud systems)
27
+ // On cloud, getSystemInformation returns systemID and userName
28
+ // On on-premise, it returns null, so we don't add these attributes
29
+ const systemInfo = await (0, systemInfo_1.getSystemInformation)(connection);
30
+ const masterSystem = systemInfo?.systemID;
31
+ const username = systemInfo?.userName || process.env.SAP_USER || process.env.SAP_USERNAME || 'MPCUSER';
32
+ const masterSystemAttr = masterSystem ? ` adtcore:masterSystem="${masterSystem}"` : '';
33
+ const responsibleAttr = username ? ` adtcore:responsible="${username}"` : '';
34
+ const xmlPayload = `<?xml version="1.0" encoding="UTF-8"?>
35
+ <fmodule:abapFunctionModule xmlns:fmodule="http://www.sap.com/adt/functions/fmodules" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:description="${description}" adtcore:name="${functionModuleName}" adtcore:type="FUGR/FF"${masterSystemAttr}${responsibleAttr}>
36
+ <adtcore:containerRef adtcore:name="${functionGroupName}" adtcore:type="FUGR/F" adtcore:uri="/sap/bc/adt/functions/groups/${encodedGroupName}"/>
37
+ </fmodule:abapFunctionModule>`;
38
+ return connection.makeAdtRequest({
39
+ url,
40
+ method: 'POST',
41
+ timeout: (0, connection_1.getTimeout)('default'),
42
+ data: xmlPayload,
43
+ headers: {
44
+ 'Content-Type': 'application/vnd.sap.adt.functions.fmodules+xml',
45
+ 'Accept': 'application/vnd.sap.adt.functions.fmodules+xml'
46
+ }
47
+ });
48
+ }
49
+ /**
50
+ * Upload function module source code
51
+ */
52
+ async function uploadFunctionModuleSource(connection, functionGroupName, functionModuleName, lockHandle, corrNr, sourceCode, sessionId) {
53
+ const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
54
+ const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
55
+ let url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}/source/main?lockHandle=${lockHandle}`;
56
+ if (corrNr) {
57
+ url += `&corrNr=${corrNr}`;
58
+ }
59
+ const headers = {
60
+ 'Content-Type': 'text/plain; charset=utf-8',
61
+ 'Accept': 'text/plain'
62
+ };
63
+ return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'PUT', sessionId, sourceCode, headers);
64
+ }
65
+ /**
66
+ * Create ABAP function module
67
+ * Full workflow: create metadata -> lock -> upload source -> unlock -> activate
68
+ */
69
+ async function createFunctionModule(connection, params) {
70
+ if (!params.function_group_name || !params.function_module_name || !params.source_code) {
71
+ throw new Error('function_group_name, function_module_name, and source_code are required');
72
+ }
73
+ if (params.function_module_name.length > 30) {
74
+ throw new Error('Function module name must not exceed 30 characters');
75
+ }
76
+ if (!/^[ZY]/i.test(params.function_module_name)) {
77
+ throw new Error('Function module name must start with Z or Y (customer namespace)');
78
+ }
79
+ // Validate function module name with SAP validation endpoint
80
+ const validationResult = await (0, validation_1.validateFunctionModuleName)(connection, params.function_group_name, params.function_module_name, params.description || params.function_module_name);
81
+ await (0, validation_2.validateAndThrow)(validationResult, 'Function module');
82
+ const sessionId = (0, sessionUtils_1.generateSessionId)();
83
+ let lockHandle;
84
+ try {
85
+ // Ensure function group exists. If not found and package_name is provided, try to create it.
86
+ try {
87
+ await (0, read_1.getFunctionGroup)(connection, params.function_group_name);
88
+ }
89
+ catch (err) {
90
+ // If not found (404) and package_name provided, create function group automatically
91
+ if (err.response?.status === 404) {
92
+ if (params.package_name) {
93
+ await (0, create_1.createFunctionGroup)(connection, {
94
+ function_group_name: params.function_group_name,
95
+ package_name: params.package_name,
96
+ description: params.description || params.function_group_name,
97
+ transport_request: params.transport_request,
98
+ activate: false
99
+ });
100
+ }
101
+ else {
102
+ throw new Error(`Function group ${params.function_group_name} not found. Create the function group first or provide package_name to auto-create it.`);
103
+ }
104
+ }
105
+ else {
106
+ throw err;
107
+ }
108
+ }
109
+ await createFunctionModuleMetadata(connection, params.function_group_name, params.function_module_name, params.description || params.function_module_name, params.transport_request);
110
+ lockHandle = await (0, lock_1.lockFunctionModule)(connection, params.function_group_name, params.function_module_name, sessionId);
111
+ const uploadResponse = await uploadFunctionModuleSource(connection, params.function_group_name, params.function_module_name, lockHandle, params.transport_request, params.source_code, sessionId);
112
+ await (0, unlock_1.unlockFunctionModule)(connection, params.function_group_name, params.function_module_name, lockHandle, sessionId);
113
+ lockHandle = undefined;
114
+ const shouldActivate = params.activate !== false;
115
+ if (shouldActivate) {
116
+ await (0, activation_1.activateFunctionModule)(connection, params.function_group_name, params.function_module_name, sessionId);
117
+ }
118
+ // Return the real response from upload (last significant operation)
119
+ return uploadResponse;
120
+ }
121
+ catch (error) {
122
+ if (lockHandle) {
123
+ try {
124
+ await (0, unlock_1.unlockFunctionModule)(connection, params.function_group_name, params.function_module_name, lockHandle, sessionId);
125
+ }
126
+ catch (unlockError) {
127
+ // Ignore unlock errors
128
+ }
129
+ }
130
+ let errorMessage = `Failed to create function module: ${error}`;
131
+ if (error.response?.status === 400) {
132
+ errorMessage = `Bad request. Check if function module name is valid and function group exists.`;
133
+ }
134
+ else if (error.response?.status === 404) {
135
+ errorMessage = `Function group ${params.function_group_name} not found. Create the function group first.`;
136
+ }
137
+ else if (error.response?.status === 409) {
138
+ errorMessage = `Function module ${params.function_module_name} already exists in group ${params.function_group_name}.`;
139
+ }
140
+ else if (error.response?.data && typeof error.response.data === 'string') {
141
+ try {
142
+ const parser = new fast_xml_parser_1.XMLParser({
143
+ ignoreAttributes: false,
144
+ attributeNamePrefix: '@_'
145
+ });
146
+ const errorData = parser.parse(error.response.data);
147
+ const errorMsg = errorData['exc:exception']?.message?.['#text'] || errorData['exc:exception']?.message;
148
+ if (errorMsg) {
149
+ errorMessage = `SAP Error: ${errorMsg}`;
150
+ }
151
+ }
152
+ catch (parseError) {
153
+ // Ignore parse errors, use default message
154
+ }
155
+ }
156
+ throw new Error(errorMessage);
157
+ }
158
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * FunctionModule delete operations
3
+ */
4
+ import { AbapConnection } from '@mcp-abap-adt/connection';
5
+ import { AxiosResponse } from 'axios';
6
+ export interface DeleteFunctionModuleParams {
7
+ function_module_name: string;
8
+ function_group_name: string;
9
+ transport_request?: string;
10
+ }
11
+ /**
12
+ * Delete ABAP function module
13
+ */
14
+ export declare function deleteFunctionModule(connection: AbapConnection, params: DeleteFunctionModuleParams): Promise<AxiosResponse>;
15
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/delete.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,WAAW,0BAA0B;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,aAAa,CAAC,CAgBxB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * FunctionModule delete operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.deleteFunctionModule = deleteFunctionModule;
7
+ const delete_1 = require("../delete");
8
+ /**
9
+ * Delete ABAP function module
10
+ */
11
+ async function deleteFunctionModule(connection, params) {
12
+ if (!params.function_module_name) {
13
+ throw new Error('function_module_name is required');
14
+ }
15
+ if (!params.function_group_name) {
16
+ throw new Error('function_group_name is required');
17
+ }
18
+ const deleteParams = {
19
+ object_name: params.function_module_name,
20
+ object_type: 'FUGR/FF',
21
+ function_group_name: params.function_group_name,
22
+ transport_request: params.transport_request
23
+ };
24
+ return await (0, delete_1.deleteObject)(connection, deleteParams);
25
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * FunctionModule operations - exports
3
+ */
4
+ export * from './types';
5
+ export * from './create';
6
+ export * from './update';
7
+ export * from './read';
8
+ export * from './lock';
9
+ export * from './unlock';
10
+ export * from './activation';
11
+ export * from './check';
12
+ export * from './validation';
13
+ export * from './delete';
14
+ export { FunctionModuleBuilder, type FunctionModuleBuilderConfig, type FunctionModuleBuilderLogger, type FunctionModuleBuilderState } from './FunctionModuleBuilder';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,KAAK,2BAA2B,EAAE,KAAK,2BAA2B,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * FunctionModule operations - exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.FunctionModuleBuilder = void 0;
21
+ __exportStar(require("./types"), exports);
22
+ __exportStar(require("./create"), exports);
23
+ __exportStar(require("./update"), exports);
24
+ __exportStar(require("./read"), exports);
25
+ __exportStar(require("./lock"), exports);
26
+ __exportStar(require("./unlock"), exports);
27
+ __exportStar(require("./activation"), exports);
28
+ __exportStar(require("./check"), exports);
29
+ __exportStar(require("./validation"), exports);
30
+ __exportStar(require("./delete"), exports);
31
+ var FunctionModuleBuilder_1 = require("./FunctionModuleBuilder");
32
+ Object.defineProperty(exports, "FunctionModuleBuilder", { enumerable: true, get: function () { return FunctionModuleBuilder_1.FunctionModuleBuilder; } });
@@ -0,0 +1,18 @@
1
+ /**
2
+ * FunctionModule lock operations
3
+ */
4
+ import { AbapConnection } from '@mcp-abap-adt/connection';
5
+ import { AxiosResponse } from 'axios';
6
+ /**
7
+ * Lock function module for editing
8
+ */
9
+ export declare function lockFunctionModule(connection: AbapConnection, functionGroupName: string, functionModuleName: string, sessionId: string): Promise<string>;
10
+ /**
11
+ * Lock function module for editing (for update)
12
+ */
13
+ export declare function lockFunctionModuleForUpdate(connection: AbapConnection, functionGroupName: string, functionModuleName: string, sessionId: string): Promise<{
14
+ response: AxiosResponse;
15
+ lockHandle: string;
16
+ corrNr?: string;
17
+ }>;
18
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/lock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB3E"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * FunctionModule lock operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.lockFunctionModule = lockFunctionModule;
7
+ exports.lockFunctionModuleForUpdate = lockFunctionModuleForUpdate;
8
+ const fast_xml_parser_1 = require("fast-xml-parser");
9
+ const internalUtils_1 = require("../../utils/internalUtils");
10
+ const sessionUtils_1 = require("../../utils/sessionUtils");
11
+ /**
12
+ * Lock function module for editing
13
+ */
14
+ async function lockFunctionModule(connection, functionGroupName, functionModuleName, sessionId) {
15
+ const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
16
+ const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
17
+ const url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}?_action=LOCK&accessMode=MODIFY`;
18
+ const headers = {
19
+ 'Accept': 'application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result;q=0.8, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result2;q=0.9'
20
+ };
21
+ const response = await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, null, headers);
22
+ const parser = new fast_xml_parser_1.XMLParser({
23
+ ignoreAttributes: false,
24
+ attributeNamePrefix: '@_'
25
+ });
26
+ const lockData = parser.parse(response.data);
27
+ const lockHandle = lockData['asx:abap']?.['asx:values']?.DATA?.LOCK_HANDLE;
28
+ if (!lockHandle) {
29
+ throw new Error('Failed to acquire lock handle from response');
30
+ }
31
+ return lockHandle;
32
+ }
33
+ /**
34
+ * Lock function module for editing (for update)
35
+ */
36
+ async function lockFunctionModuleForUpdate(connection, functionGroupName, functionModuleName, sessionId) {
37
+ const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
38
+ const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
39
+ const url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}?_action=LOCK&accessMode=MODIFY`;
40
+ const headers = {
41
+ 'Accept': 'application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result;q=0.8, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result2;q=0.9'
42
+ };
43
+ const response = await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, null, headers);
44
+ const parser = new fast_xml_parser_1.XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_' });
45
+ const result = parser.parse(response.data);
46
+ const lockHandle = result?.['asx:abap']?.['asx:values']?.['DATA']?.['LOCK_HANDLE'];
47
+ const corrNr = result?.['asx:abap']?.['asx:values']?.['DATA']?.['CORRNR'];
48
+ if (!lockHandle) {
49
+ throw new Error('Failed to obtain lock handle from SAP. Function module may be locked by another user.');
50
+ }
51
+ return { response, lockHandle, corrNr };
52
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * FunctionModule read operations
3
+ */
4
+ import { AbapConnection } from '@mcp-abap-adt/connection';
5
+ import { AxiosResponse } from 'axios';
6
+ /**
7
+ * Get ABAP function module metadata (without source code)
8
+ */
9
+ export declare function getFunctionMetadata(connection: AbapConnection, functionName: string, functionGroup: string): Promise<AxiosResponse>;
10
+ /**
11
+ * Get ABAP function module source code
12
+ * @param connection - SAP connection
13
+ * @param functionName - Function module name
14
+ * @param functionGroup - Function group name
15
+ * @param version - 'active' (default) or 'inactive' to read modified but not activated version
16
+ */
17
+ export declare function getFunctionSource(connection: AbapConnection, functionName: string, functionGroup: string, version?: 'active' | 'inactive'): Promise<AxiosResponse>;
18
+ /**
19
+ * Get ABAP function module (source code by default for backward compatibility)
20
+ * @deprecated Use getFunctionSource() or getFunctionMetadata() instead
21
+ */
22
+ export declare function getFunction(connection: AbapConnection, functionName: string, functionGroup: string, version?: 'active' | 'inactive'): Promise<AxiosResponse>;
23
+ /**
24
+ * Get transport request for ABAP function module
25
+ * @param connection - SAP connection
26
+ * @param functionName - Function module name
27
+ * @param functionGroup - Function group name
28
+ * @returns Transport request information
29
+ */
30
+ export declare function getFunctionModuleTransport(connection: AbapConnection, functionName: string, functionGroup: string): Promise<AxiosResponse>;
31
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAc,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,QAAQ,GAAG,UAAqB,GACxC,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,QAAQ,GAAG,UAAqB,GACxC,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAcxB"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * FunctionModule read operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getFunctionMetadata = getFunctionMetadata;
7
+ exports.getFunctionSource = getFunctionSource;
8
+ exports.getFunction = getFunction;
9
+ exports.getFunctionModuleTransport = getFunctionModuleTransport;
10
+ const connection_1 = require("@mcp-abap-adt/connection");
11
+ const internalUtils_1 = require("../../utils/internalUtils");
12
+ const readMetadata_1 = require("../shared/readMetadata");
13
+ const readSource_1 = require("../shared/readSource");
14
+ /**
15
+ * Get ABAP function module metadata (without source code)
16
+ */
17
+ async function getFunctionMetadata(connection, functionName, functionGroup) {
18
+ return (0, readMetadata_1.readObjectMetadata)(connection, 'functionmodule', functionName, functionGroup);
19
+ }
20
+ /**
21
+ * Get ABAP function module source code
22
+ * @param connection - SAP connection
23
+ * @param functionName - Function module name
24
+ * @param functionGroup - Function group name
25
+ * @param version - 'active' (default) or 'inactive' to read modified but not activated version
26
+ */
27
+ async function getFunctionSource(connection, functionName, functionGroup, version = 'active') {
28
+ return (0, readSource_1.readObjectSource)(connection, 'functionmodule', functionName, functionGroup, version);
29
+ }
30
+ /**
31
+ * Get ABAP function module (source code by default for backward compatibility)
32
+ * @deprecated Use getFunctionSource() or getFunctionMetadata() instead
33
+ */
34
+ async function getFunction(connection, functionName, functionGroup, version = 'active') {
35
+ return getFunctionSource(connection, functionName, functionGroup, version);
36
+ }
37
+ /**
38
+ * Get transport request for ABAP function module
39
+ * @param connection - SAP connection
40
+ * @param functionName - Function module name
41
+ * @param functionGroup - Function group name
42
+ * @returns Transport request information
43
+ */
44
+ async function getFunctionModuleTransport(connection, functionName, functionGroup) {
45
+ const baseUrl = await connection.getBaseUrl();
46
+ const encodedGroup = (0, internalUtils_1.encodeSapObjectName)(functionGroup);
47
+ const encodedName = (0, internalUtils_1.encodeSapObjectName)(functionName);
48
+ const url = `${baseUrl}/sap/bc/adt/functions/groups/${encodedGroup}/fmodules/${encodedName}/transport`;
49
+ return connection.makeAdtRequest({
50
+ url,
51
+ method: 'GET',
52
+ timeout: (0, connection_1.getTimeout)('default'),
53
+ headers: {
54
+ 'Accept': 'application/vnd.sap.adt.transportorganizer.v1+xml'
55
+ }
56
+ });
57
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * FunctionModule types
3
+ */
4
+ export interface CreateFunctionModuleParams {
5
+ function_group_name: string;
6
+ function_module_name: string;
7
+ source_code: string;
8
+ package_name?: string;
9
+ description?: string;
10
+ transport_request?: string;
11
+ activate?: boolean;
12
+ }
13
+ export interface UpdateFunctionModuleSourceParams {
14
+ function_group_name: string;
15
+ function_module_name: string;
16
+ source_code: string;
17
+ activate?: boolean;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,0BAA0B;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gCAAgC;IAC/C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * FunctionModule types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * FunctionModule unlock operations
3
+ */
4
+ import { AbapConnection } from '@mcp-abap-adt/connection';
5
+ import { AxiosResponse } from 'axios';
6
+ /**
7
+ * Unlock function module
8
+ */
9
+ export declare function unlockFunctionModule(connection: AbapConnection, functionGroupName: string, functionModuleName: string, lockHandle: string, sessionId: string): Promise<AxiosResponse>;
10
+ //# sourceMappingURL=unlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/unlock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAUxB"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * FunctionModule unlock operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.unlockFunctionModule = unlockFunctionModule;
7
+ const internalUtils_1 = require("../../utils/internalUtils");
8
+ const sessionUtils_1 = require("../../utils/sessionUtils");
9
+ /**
10
+ * Unlock function module
11
+ */
12
+ async function unlockFunctionModule(connection, functionGroupName, functionModuleName, lockHandle, sessionId) {
13
+ const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
14
+ const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
15
+ const url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}?_action=UNLOCK&lockHandle=${lockHandle}`;
16
+ const headers = {
17
+ 'Accept': 'application/xml'
18
+ };
19
+ return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, null, headers);
20
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * FunctionModule update operations
3
+ */
4
+ import { AbapConnection } from '@mcp-abap-adt/connection';
5
+ import { AxiosResponse } from 'axios';
6
+ import { UpdateFunctionModuleSourceParams } from './types';
7
+ /**
8
+ * Update function module source code (internal - uses existing lockHandle)
9
+ * This function does NOT lock/unlock - it assumes the object is already locked
10
+ */
11
+ export declare function updateFunctionModuleSourceInternal(connection: AbapConnection, functionGroupName: string, functionModuleName: string, lockHandle: string, sourceCode: string, sessionId: string, corrNr?: string): Promise<AxiosResponse>;
12
+ /**
13
+ * Update function module source code
14
+ * Full workflow: lock -> upload source -> unlock -> activate (optional)
15
+ */
16
+ export declare function updateFunctionModuleSource(connection: AbapConnection, params: UpdateFunctionModuleSourceParams): Promise<AxiosResponse>;
17
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAMtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AA8B3D;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,aAAa,CAAC,CAsDxB"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * FunctionModule update operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.updateFunctionModuleSourceInternal = updateFunctionModuleSourceInternal;
7
+ exports.updateFunctionModuleSource = updateFunctionModuleSource;
8
+ const internalUtils_1 = require("../../utils/internalUtils");
9
+ const sessionUtils_1 = require("../../utils/sessionUtils");
10
+ const lock_1 = require("./lock");
11
+ const unlock_1 = require("./unlock");
12
+ const activation_1 = require("./activation");
13
+ /**
14
+ * Upload function module source code (for update)
15
+ */
16
+ async function uploadFunctionModuleSourceForUpdate(connection, functionGroupName, functionModuleName, lockHandle, corrNr, sourceCode, sessionId) {
17
+ const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
18
+ const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
19
+ let url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}/source/main?lockHandle=${lockHandle}`;
20
+ if (corrNr) {
21
+ url += `&corrNr=${corrNr}`;
22
+ }
23
+ const headers = {
24
+ 'Content-Type': 'text/plain; charset=utf-8',
25
+ 'Accept': 'text/plain'
26
+ };
27
+ return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'PUT', sessionId, sourceCode, headers);
28
+ }
29
+ /**
30
+ * Update function module source code (internal - uses existing lockHandle)
31
+ * This function does NOT lock/unlock - it assumes the object is already locked
32
+ */
33
+ async function updateFunctionModuleSourceInternal(connection, functionGroupName, functionModuleName, lockHandle, sourceCode, sessionId, corrNr) {
34
+ const encodedModuleName = functionModuleName.toUpperCase();
35
+ await uploadFunctionModuleSourceForUpdate(connection, functionGroupName, encodedModuleName, lockHandle, corrNr, sourceCode, sessionId);
36
+ return {
37
+ data: {
38
+ success: true,
39
+ function_module_name: encodedModuleName,
40
+ function_group_name: functionGroupName,
41
+ type: 'FUGR/FF',
42
+ message: `Function module ${encodedModuleName} source updated successfully`,
43
+ uri: `/sap/bc/adt/functions/groups/${(0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase()}/fmodules/${(0, internalUtils_1.encodeSapObjectName)(encodedModuleName).toLowerCase()}`,
44
+ source_size_bytes: sourceCode.length
45
+ },
46
+ status: 200,
47
+ statusText: 'OK',
48
+ headers: {},
49
+ config: {}
50
+ };
51
+ }
52
+ /**
53
+ * Update function module source code
54
+ * Full workflow: lock -> upload source -> unlock -> activate (optional)
55
+ */
56
+ async function updateFunctionModuleSource(connection, params) {
57
+ const functionModuleName = params.function_module_name.toUpperCase();
58
+ const sessionId = (0, sessionUtils_1.generateSessionId)();
59
+ let lockHandle = null;
60
+ try {
61
+ const lockResult = await (0, lock_1.lockFunctionModuleForUpdate)(connection, params.function_group_name, functionModuleName, sessionId);
62
+ lockHandle = lockResult.lockHandle;
63
+ const corrNr = lockResult.corrNr;
64
+ await uploadFunctionModuleSourceForUpdate(connection, params.function_group_name, functionModuleName, lockHandle, corrNr, params.source_code, sessionId);
65
+ await (0, unlock_1.unlockFunctionModule)(connection, params.function_group_name, functionModuleName, lockHandle, sessionId);
66
+ lockHandle = null;
67
+ const shouldActivate = params.activate === true;
68
+ if (shouldActivate) {
69
+ await (0, activation_1.activateFunctionModule)(connection, params.function_group_name, functionModuleName, sessionId);
70
+ }
71
+ return {
72
+ data: {
73
+ success: true,
74
+ function_module_name: functionModuleName,
75
+ function_group_name: params.function_group_name,
76
+ type: 'FUGR/FF',
77
+ message: shouldActivate
78
+ ? `Function module ${functionModuleName} source updated and activated successfully`
79
+ : `Function module ${functionModuleName} source updated successfully (not activated)`,
80
+ uri: `/sap/bc/adt/functions/groups/${(0, internalUtils_1.encodeSapObjectName)(params.function_group_name).toLowerCase()}/fmodules/${(0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase()}`,
81
+ source_size_bytes: params.source_code.length
82
+ },
83
+ status: 200,
84
+ statusText: 'OK',
85
+ headers: {},
86
+ config: {}
87
+ };
88
+ }
89
+ catch (error) {
90
+ if (lockHandle) {
91
+ try {
92
+ await (0, unlock_1.unlockFunctionModule)(connection, params.function_group_name, functionModuleName, lockHandle, sessionId);
93
+ }
94
+ catch (unlockError) {
95
+ // Ignore unlock errors
96
+ }
97
+ }
98
+ const errorMessage = error.response?.data
99
+ ? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
100
+ : error.message;
101
+ throw new Error(`Failed to update function module ${functionModuleName}: ${errorMessage}`);
102
+ }
103
+ }