arc-1 1.5.2 → 1.7.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 (472) hide show
  1. package/README.md +26 -16
  2. package/bin/arc1-source.js +83 -0
  3. package/dist/adt/accept-fallback.d.ts +4 -0
  4. package/dist/adt/accept-fallback.d.ts.map +1 -0
  5. package/dist/adt/accept-fallback.js +27 -0
  6. package/dist/adt/accept-fallback.js.map +1 -0
  7. package/dist/adt/api-release.d.ts +40 -0
  8. package/dist/adt/api-release.d.ts.map +1 -0
  9. package/dist/adt/api-release.js +224 -0
  10. package/dist/adt/api-release.js.map +1 -0
  11. package/dist/adt/application-log.d.ts +36 -0
  12. package/dist/adt/application-log.d.ts.map +1 -0
  13. package/dist/adt/application-log.js +143 -0
  14. package/dist/adt/application-log.js.map +1 -0
  15. package/dist/adt/authorization-trace.d.ts.map +1 -1
  16. package/dist/adt/authorization-trace.js +2 -1
  17. package/dist/adt/authorization-trace.js.map +1 -1
  18. package/dist/adt/class-structure.d.ts +2 -1
  19. package/dist/adt/class-structure.d.ts.map +1 -1
  20. package/dist/adt/class-structure.js +28 -10
  21. package/dist/adt/class-structure.js.map +1 -1
  22. package/dist/adt/client.d.ts +12 -6
  23. package/dist/adt/client.d.ts.map +1 -1
  24. package/dist/adt/client.js +32 -49
  25. package/dist/adt/client.js.map +1 -1
  26. package/dist/adt/codeintel.d.ts +9 -23
  27. package/dist/adt/codeintel.d.ts.map +1 -1
  28. package/dist/adt/codeintel.js +14 -34
  29. package/dist/adt/codeintel.js.map +1 -1
  30. package/dist/adt/ddic-xml.d.ts +5 -3
  31. package/dist/adt/ddic-xml.d.ts.map +1 -1
  32. package/dist/adt/ddic-xml.js +14 -0
  33. package/dist/adt/ddic-xml.js.map +1 -1
  34. package/dist/adt/devtools.d.ts +8 -1
  35. package/dist/adt/devtools.d.ts.map +1 -1
  36. package/dist/adt/devtools.js +94 -40
  37. package/dist/adt/devtools.js.map +1 -1
  38. package/dist/adt/diagnostics.d.ts +2 -0
  39. package/dist/adt/diagnostics.d.ts.map +1 -1
  40. package/dist/adt/diagnostics.js +10 -8
  41. package/dist/adt/diagnostics.js.map +1 -1
  42. package/dist/adt/enhancement-impl.d.ts +125 -0
  43. package/dist/adt/enhancement-impl.d.ts.map +1 -0
  44. package/dist/adt/enhancement-impl.js +408 -0
  45. package/dist/adt/enhancement-impl.js.map +1 -0
  46. package/dist/adt/enhancements.d.ts.map +1 -1
  47. package/dist/adt/enhancements.js +4 -2
  48. package/dist/adt/enhancements.js.map +1 -1
  49. package/dist/adt/enho-filter.d.ts +49 -0
  50. package/dist/adt/enho-filter.d.ts.map +1 -0
  51. package/dist/adt/enho-filter.js +229 -0
  52. package/dist/adt/enho-filter.js.map +1 -0
  53. package/dist/adt/errors.d.ts +5 -1
  54. package/dist/adt/errors.d.ts.map +1 -1
  55. package/dist/adt/errors.js +32 -8
  56. package/dist/adt/errors.js.map +1 -1
  57. package/dist/adt/features.d.ts +3 -9
  58. package/dist/adt/features.d.ts.map +1 -1
  59. package/dist/adt/features.js +24 -8
  60. package/dist/adt/features.js.map +1 -1
  61. package/dist/adt/feed-schema.d.ts +32 -0
  62. package/dist/adt/feed-schema.d.ts.map +1 -0
  63. package/dist/adt/feed-schema.js +123 -0
  64. package/dist/adt/feed-schema.js.map +1 -0
  65. package/dist/adt/fm-parameter-docs.d.ts +7 -0
  66. package/dist/adt/fm-parameter-docs.d.ts.map +1 -0
  67. package/dist/adt/fm-parameter-docs.js +134 -0
  68. package/dist/adt/fm-parameter-docs.js.map +1 -0
  69. package/dist/adt/fm-signature.d.ts +8 -1
  70. package/dist/adt/fm-signature.d.ts.map +1 -1
  71. package/dist/adt/fm-signature.js +37 -28
  72. package/dist/adt/fm-signature.js.map +1 -1
  73. package/dist/adt/http-deadline.d.ts.map +1 -1
  74. package/dist/adt/http-deadline.js +4 -1
  75. package/dist/adt/http-deadline.js.map +1 -1
  76. package/dist/adt/http-retry-after.d.ts +20 -0
  77. package/dist/adt/http-retry-after.d.ts.map +1 -0
  78. package/dist/adt/http-retry-after.js +37 -0
  79. package/dist/adt/http-retry-after.js.map +1 -0
  80. package/dist/adt/http.d.ts +7 -20
  81. package/dist/adt/http.d.ts.map +1 -1
  82. package/dist/adt/http.js +112 -135
  83. package/dist/adt/http.js.map +1 -1
  84. package/dist/adt/include-expansion.d.ts +143 -0
  85. package/dist/adt/include-expansion.d.ts.map +1 -0
  86. package/dist/adt/include-expansion.js +475 -0
  87. package/dist/adt/include-expansion.js.map +1 -0
  88. package/dist/adt/internal-data-operations.d.ts +3 -3
  89. package/dist/adt/internal-data-operations.d.ts.map +1 -1
  90. package/dist/adt/internal-data-operations.js +9 -2
  91. package/dist/adt/internal-data-operations.js.map +1 -1
  92. package/dist/adt/legacy-content-handler.d.ts +2 -0
  93. package/dist/adt/legacy-content-handler.d.ts.map +1 -1
  94. package/dist/adt/legacy-content-handler.js +13 -1
  95. package/dist/adt/legacy-content-handler.js.map +1 -1
  96. package/dist/adt/package-contents.d.ts +5 -0
  97. package/dist/adt/package-contents.d.ts.map +1 -1
  98. package/dist/adt/package-contents.js +31 -0
  99. package/dist/adt/package-contents.js.map +1 -1
  100. package/dist/adt/rap-generate.d.ts +2 -4
  101. package/dist/adt/rap-generate.d.ts.map +1 -1
  102. package/dist/adt/rap-generate.js +2 -4
  103. package/dist/adt/rap-generate.js.map +1 -1
  104. package/dist/adt/revision-feed.d.ts +8 -0
  105. package/dist/adt/revision-feed.d.ts.map +1 -0
  106. package/dist/adt/revision-feed.js +108 -0
  107. package/dist/adt/revision-feed.js.map +1 -0
  108. package/dist/adt/security-session-gate.d.ts +23 -0
  109. package/dist/adt/security-session-gate.d.ts.map +1 -0
  110. package/dist/adt/security-session-gate.js +56 -0
  111. package/dist/adt/security-session-gate.js.map +1 -0
  112. package/dist/adt/server-driven.d.ts +12 -1
  113. package/dist/adt/server-driven.d.ts.map +1 -1
  114. package/dist/adt/server-driven.js +22 -4
  115. package/dist/adt/server-driven.js.map +1 -1
  116. package/dist/adt/source-diff.d.ts +4 -1
  117. package/dist/adt/source-diff.d.ts.map +1 -1
  118. package/dist/adt/source-diff.js +5 -3
  119. package/dist/adt/source-diff.js.map +1 -1
  120. package/dist/adt/stored-text/chunks.d.ts +8 -0
  121. package/dist/adt/stored-text/chunks.d.ts.map +1 -0
  122. package/dist/adt/stored-text/chunks.js +55 -0
  123. package/dist/adt/stored-text/chunks.js.map +1 -0
  124. package/dist/adt/stored-text/decoder.d.ts +31 -0
  125. package/dist/adt/stored-text/decoder.d.ts.map +1 -0
  126. package/dist/adt/stored-text/decoder.js +319 -0
  127. package/dist/adt/stored-text/decoder.js.map +1 -0
  128. package/dist/adt/stored-text/errors.d.ts +10 -0
  129. package/dist/adt/stored-text/errors.d.ts.map +1 -0
  130. package/dist/adt/stored-text/errors.js +10 -0
  131. package/dist/adt/stored-text/errors.js.map +1 -0
  132. package/dist/adt/stored-text/index.d.ts +7 -0
  133. package/dist/adt/stored-text/index.d.ts.map +1 -0
  134. package/dist/adt/stored-text/index.js +6 -0
  135. package/dist/adt/stored-text/index.js.map +1 -0
  136. package/dist/adt/stored-text/key.d.ts +3 -0
  137. package/dist/adt/stored-text/key.d.ts.map +1 -0
  138. package/dist/adt/stored-text/key.js +23 -0
  139. package/dist/adt/stored-text/key.js.map +1 -0
  140. package/dist/adt/stored-text/reader.d.ts +52 -0
  141. package/dist/adt/stored-text/reader.d.ts.map +1 -0
  142. package/dist/adt/stored-text/reader.js +142 -0
  143. package/dist/adt/stored-text/reader.js.map +1 -0
  144. package/dist/adt/stored-text/source.d.ts +5 -0
  145. package/dist/adt/stored-text/source.d.ts.map +1 -0
  146. package/dist/adt/stored-text/source.js +284 -0
  147. package/dist/adt/stored-text/source.js.map +1 -0
  148. package/dist/adt/stored-text/types.d.ts +38 -0
  149. package/dist/adt/stored-text/types.d.ts.map +1 -0
  150. package/dist/adt/stored-text/types.js +2 -0
  151. package/dist/adt/stored-text/types.js.map +1 -0
  152. package/dist/adt/structure-hierarchy.d.ts.map +1 -1
  153. package/dist/adt/structure-hierarchy.js +11 -27
  154. package/dist/adt/structure-hierarchy.js.map +1 -1
  155. package/dist/adt/syntax-batch.d.ts +66 -0
  156. package/dist/adt/syntax-batch.d.ts.map +1 -0
  157. package/dist/adt/syntax-batch.js +115 -0
  158. package/dist/adt/syntax-batch.js.map +1 -0
  159. package/dist/adt/table-index.d.ts +23 -0
  160. package/dist/adt/table-index.d.ts.map +1 -0
  161. package/dist/adt/table-index.js +69 -0
  162. package/dist/adt/table-index.js.map +1 -0
  163. package/dist/adt/table-query.d.ts +4 -2
  164. package/dist/adt/table-query.d.ts.map +1 -1
  165. package/dist/adt/table-query.js +37 -10
  166. package/dist/adt/table-query.js.map +1 -1
  167. package/dist/adt/table-settings.d.ts +67 -0
  168. package/dist/adt/table-settings.d.ts.map +1 -0
  169. package/dist/adt/table-settings.js +207 -0
  170. package/dist/adt/table-settings.js.map +1 -0
  171. package/dist/adt/text-elements.d.ts +7 -1
  172. package/dist/adt/text-elements.d.ts.map +1 -1
  173. package/dist/adt/text-elements.js +67 -25
  174. package/dist/adt/text-elements.js.map +1 -1
  175. package/dist/adt/text-part-changes.d.ts +4 -0
  176. package/dist/adt/text-part-changes.d.ts.map +1 -0
  177. package/dist/adt/text-part-changes.js +43 -0
  178. package/dist/adt/text-part-changes.js.map +1 -0
  179. package/dist/adt/transport-diff.d.ts +16 -25
  180. package/dist/adt/transport-diff.d.ts.map +1 -1
  181. package/dist/adt/transport-diff.js +201 -103
  182. package/dist/adt/transport-diff.js.map +1 -1
  183. package/dist/adt/transport-review-budget.d.ts +15 -0
  184. package/dist/adt/transport-review-budget.d.ts.map +1 -0
  185. package/dist/adt/transport-review-budget.js +57 -0
  186. package/dist/adt/transport-review-budget.js.map +1 -0
  187. package/dist/adt/transport.d.ts +1 -1
  188. package/dist/adt/transport.d.ts.map +1 -1
  189. package/dist/adt/transport.js +4 -3
  190. package/dist/adt/transport.js.map +1 -1
  191. package/dist/adt/types.d.ts +10 -4
  192. package/dist/adt/types.d.ts.map +1 -1
  193. package/dist/adt/user-agent.d.ts +1 -1
  194. package/dist/adt/where-used-native.d.ts +22 -0
  195. package/dist/adt/where-used-native.d.ts.map +1 -0
  196. package/dist/adt/where-used-native.js +111 -0
  197. package/dist/adt/where-used-native.js.map +1 -0
  198. package/dist/adt/xml-parser.d.ts +6 -36
  199. package/dist/adt/xml-parser.d.ts.map +1 -1
  200. package/dist/adt/xml-parser.js +28 -235
  201. package/dist/adt/xml-parser.js.map +1 -1
  202. package/dist/aff/validator.d.ts.map +1 -1
  203. package/dist/aff/validator.js +8 -2
  204. package/dist/aff/validator.js.map +1 -1
  205. package/dist/authz/policy.d.ts.map +1 -1
  206. package/dist/authz/policy.js +10 -2
  207. package/dist/authz/policy.js.map +1 -1
  208. package/dist/cache/sqlite-driver.d.ts +24 -0
  209. package/dist/cache/sqlite-driver.d.ts.map +1 -0
  210. package/dist/cache/sqlite-driver.js +59 -0
  211. package/dist/cache/sqlite-driver.js.map +1 -0
  212. package/dist/cache/sqlite.d.ts +4 -2
  213. package/dist/cache/sqlite.d.ts.map +1 -1
  214. package/dist/cache/sqlite.js +5 -4
  215. package/dist/cache/sqlite.js.map +1 -1
  216. package/dist/cli.js +4 -1
  217. package/dist/cli.js.map +1 -1
  218. package/dist/context/grep.d.ts +2 -0
  219. package/dist/context/grep.d.ts.map +1 -1
  220. package/dist/context/grep.js +8 -7
  221. package/dist/context/grep.js.map +1 -1
  222. package/dist/context/line-range.d.ts +6 -0
  223. package/dist/context/line-range.d.ts.map +1 -0
  224. package/dist/context/line-range.js +23 -0
  225. package/dist/context/line-range.js.map +1 -0
  226. package/dist/extract-sap-cookies.js +1 -0
  227. package/dist/extract-sap-cookies.js.map +1 -1
  228. package/dist/handlers/activate.d.ts.map +1 -1
  229. package/dist/handlers/activate.js +69 -7
  230. package/dist/handlers/activate.js.map +1 -1
  231. package/dist/handlers/activation-results.d.ts.map +1 -1
  232. package/dist/handlers/activation-results.js +9 -1
  233. package/dist/handlers/activation-results.js.map +1 -1
  234. package/dist/handlers/api-release-fields.d.ts +23 -0
  235. package/dist/handlers/api-release-fields.d.ts.map +1 -0
  236. package/dist/handlers/api-release-fields.js +21 -0
  237. package/dist/handlers/api-release-fields.js.map +1 -0
  238. package/dist/handlers/application-log-input.d.ts +32 -0
  239. package/dist/handlers/application-log-input.d.ts.map +1 -0
  240. package/dist/handlers/application-log-input.js +34 -0
  241. package/dist/handlers/application-log-input.js.map +1 -0
  242. package/dist/handlers/application-log.d.ts +4 -0
  243. package/dist/handlers/application-log.d.ts.map +1 -0
  244. package/dist/handlers/application-log.js +14 -0
  245. package/dist/handlers/application-log.js.map +1 -0
  246. package/dist/handlers/cds-hints.d.ts +2 -2
  247. package/dist/handlers/cds-hints.d.ts.map +1 -1
  248. package/dist/handlers/cds-hints.js +21 -63
  249. package/dist/handlers/cds-hints.js.map +1 -1
  250. package/dist/handlers/context.d.ts.map +1 -1
  251. package/dist/handlers/context.js +7 -3
  252. package/dist/handlers/context.js.map +1 -1
  253. package/dist/handlers/diagnose.d.ts.map +1 -1
  254. package/dist/handlers/diagnose.js +10 -1
  255. package/dist/handlers/diagnose.js.map +1 -1
  256. package/dist/handlers/dispatch.d.ts.map +1 -1
  257. package/dist/handlers/dispatch.js +54 -9
  258. package/dist/handlers/dispatch.js.map +1 -1
  259. package/dist/handlers/dump-filter-inputs.d.ts +38 -0
  260. package/dist/handlers/dump-filter-inputs.d.ts.map +1 -0
  261. package/dist/handlers/dump-filter-inputs.js +44 -0
  262. package/dist/handlers/dump-filter-inputs.js.map +1 -0
  263. package/dist/handlers/expanded-read.d.ts +24 -0
  264. package/dist/handlers/expanded-read.d.ts.map +1 -0
  265. package/dist/handlers/expanded-read.js +56 -0
  266. package/dist/handlers/expanded-read.js.map +1 -0
  267. package/dist/handlers/feature-cache.d.ts +11 -3
  268. package/dist/handlers/feature-cache.d.ts.map +1 -1
  269. package/dist/handlers/feature-cache.js +57 -3
  270. package/dist/handlers/feature-cache.js.map +1 -1
  271. package/dist/handlers/function-parameter-language.d.ts +5 -0
  272. package/dist/handlers/function-parameter-language.d.ts.map +1 -0
  273. package/dist/handlers/function-parameter-language.js +19 -0
  274. package/dist/handlers/function-parameter-language.js.map +1 -0
  275. package/dist/handlers/function-processing.d.ts +5 -0
  276. package/dist/handlers/function-processing.d.ts.map +1 -1
  277. package/dist/handlers/function-processing.js +5 -0
  278. package/dist/handlers/function-processing.js.map +1 -1
  279. package/dist/handlers/hyperfocused.d.ts +1 -1
  280. package/dist/handlers/hyperfocused.d.ts.map +1 -1
  281. package/dist/handlers/hyperfocused.js +2 -1
  282. package/dist/handlers/hyperfocused.js.map +1 -1
  283. package/dist/handlers/long-text-input.d.ts +113 -0
  284. package/dist/handlers/long-text-input.d.ts.map +1 -0
  285. package/dist/handlers/long-text-input.js +113 -0
  286. package/dist/handlers/long-text-input.js.map +1 -0
  287. package/dist/handlers/long-text.d.ts +5 -0
  288. package/dist/handlers/long-text.d.ts.map +1 -0
  289. package/dist/handlers/long-text.js +122 -0
  290. package/dist/handlers/long-text.js.map +1 -0
  291. package/dist/handlers/manage.d.ts.map +1 -1
  292. package/dist/handlers/manage.js +7 -23
  293. package/dist/handlers/manage.js.map +1 -1
  294. package/dist/handlers/navigate.d.ts.map +1 -1
  295. package/dist/handlers/navigate.js +8 -3
  296. package/dist/handlers/navigate.js.map +1 -1
  297. package/dist/handlers/object-types.d.ts.map +1 -1
  298. package/dist/handlers/object-types.js +31 -7
  299. package/dist/handlers/object-types.js.map +1 -1
  300. package/dist/handlers/query-input.d.ts +50 -0
  301. package/dist/handlers/query-input.d.ts.map +1 -0
  302. package/dist/handlers/query-input.js +59 -0
  303. package/dist/handlers/query-input.js.map +1 -0
  304. package/dist/handlers/query-tool.d.ts +11 -0
  305. package/dist/handlers/query-tool.d.ts.map +1 -0
  306. package/dist/handlers/query-tool.js +99 -0
  307. package/dist/handlers/query-tool.js.map +1 -0
  308. package/dist/handlers/query.d.ts +1 -1
  309. package/dist/handlers/query.d.ts.map +1 -1
  310. package/dist/handlers/query.js +7 -1
  311. package/dist/handlers/query.js.map +1 -1
  312. package/dist/handlers/read.d.ts +1 -0
  313. package/dist/handlers/read.d.ts.map +1 -1
  314. package/dist/handlers/read.js +119 -14
  315. package/dist/handlers/read.js.map +1 -1
  316. package/dist/handlers/schemas.d.ts +57 -4
  317. package/dist/handlers/schemas.d.ts.map +1 -1
  318. package/dist/handlers/schemas.js +140 -17
  319. package/dist/handlers/schemas.js.map +1 -1
  320. package/dist/handlers/search.d.ts.map +1 -1
  321. package/dist/handlers/search.js +10 -6
  322. package/dist/handlers/search.js.map +1 -1
  323. package/dist/handlers/syntax.d.ts.map +1 -1
  324. package/dist/handlers/syntax.js +8 -0
  325. package/dist/handlers/syntax.js.map +1 -1
  326. package/dist/handlers/table-type-fields.d.ts +33 -0
  327. package/dist/handlers/table-type-fields.d.ts.map +1 -0
  328. package/dist/handlers/table-type-fields.js +22 -0
  329. package/dist/handlers/table-type-fields.js.map +1 -0
  330. package/dist/handlers/tool-descriptions.d.ts.map +1 -1
  331. package/dist/handlers/tool-descriptions.js +8 -3
  332. package/dist/handlers/tool-descriptions.js.map +1 -1
  333. package/dist/handlers/tool-registry.d.ts +5 -5
  334. package/dist/handlers/tool-registry.d.ts.map +1 -1
  335. package/dist/handlers/tool-registry.js +10 -7
  336. package/dist/handlers/tool-registry.js.map +1 -1
  337. package/dist/handlers/tools.d.ts +1 -1
  338. package/dist/handlers/tools.d.ts.map +1 -1
  339. package/dist/handlers/tools.js +99 -101
  340. package/dist/handlers/tools.js.map +1 -1
  341. package/dist/handlers/transport-review.d.ts +5 -0
  342. package/dist/handlers/transport-review.d.ts.map +1 -0
  343. package/dist/handlers/transport-review.js +108 -0
  344. package/dist/handlers/transport-review.js.map +1 -0
  345. package/dist/handlers/transport.d.ts.map +1 -1
  346. package/dist/handlers/transport.js +3 -58
  347. package/dist/handlers/transport.js.map +1 -1
  348. package/dist/handlers/where-used-details.d.ts +28 -0
  349. package/dist/handlers/where-used-details.d.ts.map +1 -0
  350. package/dist/handlers/where-used-details.js +67 -0
  351. package/dist/handlers/where-used-details.js.map +1 -0
  352. package/dist/handlers/where-used.d.ts +8 -3
  353. package/dist/handlers/where-used.d.ts.map +1 -1
  354. package/dist/handlers/where-used.js +40 -18
  355. package/dist/handlers/where-used.js.map +1 -1
  356. package/dist/handlers/write/create.d.ts.map +1 -1
  357. package/dist/handlers/write/create.js +69 -27
  358. package/dist/handlers/write/create.js.map +1 -1
  359. package/dist/handlers/write/rap.d.ts.map +1 -1
  360. package/dist/handlers/write/rap.js +2 -4
  361. package/dist/handlers/write/rap.js.map +1 -1
  362. package/dist/handlers/write/table-settings.d.ts +5 -0
  363. package/dist/handlers/write/table-settings.d.ts.map +1 -0
  364. package/dist/handlers/write/table-settings.js +27 -0
  365. package/dist/handlers/write/table-settings.js.map +1 -0
  366. package/dist/handlers/write/update-delete.d.ts +1 -1
  367. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  368. package/dist/handlers/write/update-delete.js +32 -12
  369. package/dist/handlers/write/update-delete.js.map +1 -1
  370. package/dist/handlers/write-helpers.d.ts +4 -1
  371. package/dist/handlers/write-helpers.d.ts.map +1 -1
  372. package/dist/handlers/write-helpers.js +68 -8
  373. package/dist/handlers/write-helpers.js.map +1 -1
  374. package/dist/handlers/write.d.ts.map +1 -1
  375. package/dist/handlers/write.js +6 -10
  376. package/dist/handlers/write.js.map +1 -1
  377. package/dist/server/audit.d.ts +4 -0
  378. package/dist/server/audit.d.ts.map +1 -1
  379. package/dist/server/audit.js +49 -2
  380. package/dist/server/audit.js.map +1 -1
  381. package/dist/server/config.d.ts.map +1 -1
  382. package/dist/server/config.js +43 -2
  383. package/dist/server/config.js.map +1 -1
  384. package/dist/server/destination-discovery.d.ts +12 -2
  385. package/dist/server/destination-discovery.d.ts.map +1 -1
  386. package/dist/server/destination-discovery.js +33 -7
  387. package/dist/server/destination-discovery.js.map +1 -1
  388. package/dist/server/destination-registry.d.ts +10 -6
  389. package/dist/server/destination-registry.d.ts.map +1 -1
  390. package/dist/server/destination-registry.js +38 -15
  391. package/dist/server/destination-registry.js.map +1 -1
  392. package/dist/server/http-request-body.d.ts +4 -0
  393. package/dist/server/http-request-body.d.ts.map +1 -0
  394. package/dist/server/http-request-body.js +65 -0
  395. package/dist/server/http-request-body.js.map +1 -0
  396. package/dist/server/http.d.ts +5 -2
  397. package/dist/server/http.d.ts.map +1 -1
  398. package/dist/server/http.js +71 -9
  399. package/dist/server/http.js.map +1 -1
  400. package/dist/server/multi-target-authorization-audit.d.ts +5 -0
  401. package/dist/server/multi-target-authorization-audit.d.ts.map +1 -0
  402. package/dist/server/multi-target-authorization-audit.js +18 -0
  403. package/dist/server/multi-target-authorization-audit.js.map +1 -0
  404. package/dist/server/multi-target-authorization-startup.d.ts +8 -0
  405. package/dist/server/multi-target-authorization-startup.d.ts.map +1 -0
  406. package/dist/server/multi-target-authorization-startup.js +38 -0
  407. package/dist/server/multi-target-authorization-startup.js.map +1 -0
  408. package/dist/server/multi-target-authorization.d.ts +29 -0
  409. package/dist/server/multi-target-authorization.d.ts.map +1 -0
  410. package/dist/server/multi-target-authorization.js +97 -0
  411. package/dist/server/multi-target-authorization.js.map +1 -0
  412. package/dist/server/multi-target-bearer-auth.d.ts +5 -0
  413. package/dist/server/multi-target-bearer-auth.d.ts.map +1 -0
  414. package/dist/server/multi-target-bearer-auth.js +39 -0
  415. package/dist/server/multi-target-bearer-auth.js.map +1 -0
  416. package/dist/server/multi-target-catalog-enforced.d.ts +29 -0
  417. package/dist/server/multi-target-catalog-enforced.d.ts.map +1 -0
  418. package/dist/server/multi-target-catalog-enforced.js +142 -0
  419. package/dist/server/multi-target-catalog-enforced.js.map +1 -0
  420. package/dist/server/multi-target-catalog-projection.d.ts +7 -0
  421. package/dist/server/multi-target-catalog-projection.d.ts.map +1 -0
  422. package/dist/server/multi-target-catalog-projection.js +52 -0
  423. package/dist/server/multi-target-catalog-projection.js.map +1 -0
  424. package/dist/server/multi-target-feature-state.d.ts +0 -2
  425. package/dist/server/multi-target-feature-state.d.ts.map +1 -1
  426. package/dist/server/multi-target-feature-state.js +0 -19
  427. package/dist/server/multi-target-feature-state.js.map +1 -1
  428. package/dist/server/multi-target-identity.d.ts +3 -0
  429. package/dist/server/multi-target-identity.d.ts.map +1 -1
  430. package/dist/server/multi-target-identity.js +9 -0
  431. package/dist/server/multi-target-identity.js.map +1 -1
  432. package/dist/server/multi-target-request-projection.d.ts +14 -0
  433. package/dist/server/multi-target-request-projection.d.ts.map +1 -0
  434. package/dist/server/multi-target-request-projection.js +16 -0
  435. package/dist/server/multi-target-request-projection.js.map +1 -0
  436. package/dist/server/multi-target-runtime.d.ts.map +1 -1
  437. package/dist/server/multi-target-runtime.js +1 -0
  438. package/dist/server/multi-target-runtime.js.map +1 -1
  439. package/dist/server/multi-target-server.d.ts +4 -1
  440. package/dist/server/multi-target-server.d.ts.map +1 -1
  441. package/dist/server/multi-target-server.js +111 -11
  442. package/dist/server/multi-target-server.js.map +1 -1
  443. package/dist/server/multi-target-tools.d.ts +1 -1
  444. package/dist/server/multi-target-tools.d.ts.map +1 -1
  445. package/dist/server/multi-target-tools.js +22 -15
  446. package/dist/server/multi-target-tools.js.map +1 -1
  447. package/dist/server/private-mcp-response.d.ts +4 -0
  448. package/dist/server/private-mcp-response.d.ts.map +1 -0
  449. package/dist/server/private-mcp-response.js +14 -0
  450. package/dist/server/private-mcp-response.js.map +1 -0
  451. package/dist/server/server-cache.d.ts +5 -0
  452. package/dist/server/server-cache.d.ts.map +1 -0
  453. package/dist/server/server-cache.js +30 -0
  454. package/dist/server/server-cache.js.map +1 -0
  455. package/dist/server/server.d.ts +7 -21
  456. package/dist/server/server.d.ts.map +1 -1
  457. package/dist/server/server.js +60 -89
  458. package/dist/server/server.js.map +1 -1
  459. package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
  460. package/dist/server/sinks/btp-auditlog.js +4 -1
  461. package/dist/server/sinks/btp-auditlog.js.map +1 -1
  462. package/dist/server/tool-auth.d.ts +1 -1
  463. package/dist/server/tool-auth.d.ts.map +1 -1
  464. package/dist/server/tool-auth.js +24 -4
  465. package/dist/server/tool-auth.js.map +1 -1
  466. package/dist/server/types.d.ts +7 -0
  467. package/dist/server/types.d.ts.map +1 -1
  468. package/dist/server/types.js +4 -0
  469. package/dist/server/types.js.map +1 -1
  470. package/dist/version.d.ts +1 -1
  471. package/dist/version.js +1 -1
  472. package/package.json +21 -13
@@ -13,7 +13,7 @@
13
13
  * This decouples the XML format from our internal types, making it
14
14
  * easier to handle SAP's inconsistent XML across different endpoints.
15
15
  */
16
- import type { AdtSearchResult, ApiReleaseStateInfo, AuthorizationFieldInfo, BspAppInfo, BspFileNode, ClassMetadata, ClassStructure, DataElementInfo, DomainInfo, EnhancementImplementationInfo, FeatureToggleInfo, FunctionGroupStructure, FunctionModuleProperties, InactiveObject, MessageClassInfo, RevisionListResult, ServerDrivenObjectMetadata, TransactionInfo } from './types.js';
16
+ import type { AdtSearchResult, AuthorizationFieldInfo, BspAppInfo, BspFileNode, ClassMetadata, ClassStructure, DataElementInfo, DomainInfo, EnhancementImplementationInfo, FeatureToggleInfo, FunctionGroupStructure, FunctionModuleProperties, InactiveObject, MessageClassInfo, ServerDrivenObjectMetadata, TransactionInfo } from './types.js';
17
17
  /**
18
18
  * Escape the five predefined XML entities (`& < > " '`) for safe interpolation into XML.
19
19
  *
@@ -26,8 +26,9 @@ export declare function escapeXmlAttr(s: string): string;
26
26
  /**
27
27
  * Parse raw XML string to a JS object. Every attribute and text value is entity-DECODED
28
28
  * (`R&amp;D` → `R&D`): never decode a parsed value again, and `escapeXmlAttr` it on the way back.
29
+ * Set preserveWhitespace to retain leading/trailing text whitespace, e.g. in quick-fix deltas.
29
30
  */
30
- export declare function parseXml(xml: string): Record<string, unknown>;
31
+ export declare function parseXml(xml: string, preserveWhitespace?: boolean): Record<string, unknown>;
31
32
  /**
32
33
  * Parse ADT search results XML.
33
34
  *
@@ -80,7 +81,7 @@ export interface DataPreviewMeta {
80
81
  totalRows?: number;
81
82
  /** Server-side execution time in milliseconds (ADT `queryExecutionTime`, as shown by Eclipse Data Preview). */
82
83
  queryExecutionTimeMs?: number;
83
- /** The actual OpenSQL ADT generated and ran (whitespace-collapsed). */
84
+ /** The OpenSQL echo returned by SAP, without client-side whitespace normalization. */
84
85
  executedQueryString?: string;
85
86
  }
86
87
  export interface DataPreviewResult extends DataPreviewMeta {
@@ -243,37 +244,6 @@ export declare function parseEnhancementImplementation(xml: string): Enhancement
243
244
  * Expected root: <adtcore:mainObject>.
244
245
  */
245
246
  export declare function parseTransactionMetadata(xml: string): TransactionInfo;
246
- /**
247
- * Parse API release state XML from /sap/bc/adt/apireleases/{encoded-uri}.
248
- *
249
- * Returns structured release info with per-contract states (C0–C4),
250
- * successor information, and catalog metadata.
251
- *
252
- * Expected root: element with releasableObject, c0Release–c4Release, apiCatalogData.
253
- */
254
- export declare function parseApiReleaseState(xml: string): ApiReleaseStateInfo;
255
- export declare function assertApiReleaseStateConfirmed(info: ApiReleaseStateInfo, contract: string, expectedState: string, expectedVisibility?: {
256
- useInSAPCloudPlatform: boolean;
257
- useInKeyUserApps: boolean;
258
- }): void;
259
- /**
260
- * Build the PUT body that sets an object's API release contract `state` (RELEASED / NOT_RELEASED).
261
- *
262
- * The apireleases GET (v10) returns a rich document, but the PUT to `…/apireleases/{uri}/{contract}`
263
- * accepts only a NARROW, strictly-ordered subset — live reverse-engineered on a4h 758 + 816: the
264
- * standalone contract block (`ars:contract="C1"`) carrying `status` + the successor scaffold, plus
265
- * a sibling `apiCatalogData`/`ApiCatalogs` envelope. Response-only nodes (`atom:link`,
266
- * `stateTransitions`, `transportObject`, `authValueObject`) are rejected with HTTP 400.
267
- *
268
- * Visibility on a RELEASED contract is taken VERBATIM from that contract's behaviour DEFAULT flags
269
- * (`useInSAPCloudPlatformDefault` / `useInKeyUserAppsDefault`) — never broadened. We deliberately do
270
- * NOT pre-judge whether visibility is even required: that varies by contract (C0/C1 demand ≥1
271
- * visibility — ARS_STATE_HANDLER/119 — but e.g. C4 has entirely different rules, like "must be an AMDP
272
- * method"). So if both defaults are false we send both false and let SAP return the contract-accurate
273
- * error, rather than guessing it's a visibility problem. Crucially this still never INVENTS visibility
274
- * the contract didn't warrant (the original over-exposure bug). For NOT_RELEASED visibility is untouched.
275
- */
276
- export declare function buildApiReleasePutBody(getXml: string, contract: string, state: string): string;
277
247
  /**
278
248
  * Parse service binding metadata XML into a human-readable summary.
279
249
  *
@@ -351,6 +321,7 @@ export declare function parseClassMetadata(xml: string): ClassMetadata;
351
321
  * `dtdcSource`). The attribute shape is identical across formats. Optional fields omitted when empty.
352
322
  */
353
323
  export declare function parseServerDrivenMetadata(xml: string, rootLocalName: string): ServerDrivenObjectMetadata;
324
+ export declare function toRecordArray(value: unknown): Array<Record<string, unknown>>;
354
325
  /** Parse inactive objects response from /sap/bc/adt/activation/inactiveobjects.
355
326
  * Supports three response shapes (all live-verified):
356
327
  * - Rich `<ioc:object>` (vendor MIME on every supported release, includes user/transport/deleted metadata):
@@ -367,8 +338,7 @@ export declare function parseServerDrivenMetadata(xml: string, rootLocalName: st
367
338
  * Detection: rich shape if any <entry><object> has a nested <ref>; otherwise flat.
368
339
  */
369
340
  export declare function parseInactiveObjects(xml: string): InactiveObject[];
370
- /** Parse source revision history feed from /source/main/versions */
371
- export declare function parseRevisionFeed(xml: string): RevisionListResult;
341
+ export { parseRevisionFeed } from './revision-feed.js';
372
342
  /**
373
343
  * Parse `/sap/bc/adt/oo/classes/{name}/objectstructure` XML into a `ClassStructure`.
374
344
  *
@@ -1 +1 @@
1
- {"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../../src/adt/xml-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../../src/adt/xml-parser.ts"],"names":[],"mappings":"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"}
@@ -76,8 +76,8 @@ const ARRAY_TAGS = new Set([
76
76
  'orglvlinfo',
77
77
  'badiImplementation',
78
78
  ]);
79
- /** Shared parser instance — configured for ADT XML conventions */
80
- const parser = new XMLParser({
79
+ /** Common ADT conventions; data-preview cells additionally retain their exact text. */
80
+ const parserOptions = {
81
81
  ignoreAttributes: false,
82
82
  attributeNamePrefix: '@_',
83
83
  removeNSPrefix: true, // Strip adtcore:, asx:, etc.
@@ -93,13 +93,16 @@ const parser = new XMLParser({
93
93
  setXmlVersion: () => { },
94
94
  reset: () => { },
95
95
  },
96
- });
96
+ };
97
+ const parser = new XMLParser(parserOptions);
98
+ const whitespacePreservingParser = new XMLParser({ ...parserOptions, trimValues: false });
97
99
  /**
98
100
  * Parse raw XML string to a JS object. Every attribute and text value is entity-DECODED
99
101
  * (`R&amp;D` → `R&D`): never decode a parsed value again, and `escapeXmlAttr` it on the way back.
102
+ * Set preserveWhitespace to retain leading/trailing text whitespace, e.g. in quick-fix deltas.
100
103
  */
101
- export function parseXml(xml) {
102
- return parser.parse(xml);
104
+ export function parseXml(xml, preserveWhitespace = false) {
105
+ return (preserveWhitespace ? whitespacePreservingParser : parser).parse(xml);
103
106
  }
104
107
  /**
105
108
  * Parse ADT search results XML.
@@ -114,12 +117,25 @@ export function parseSearchResults(xml) {
114
117
  const refs = getNestedArray(parsed, 'objectReferences', 'objectReference');
115
118
  return refs.map((ref) => ({
116
119
  objectType: String(ref['@_type'] ?? ''),
117
- objectName: String(ref['@_name'] ?? ''),
120
+ objectName: canonicalSearchName(String(ref['@_name'] ?? ''), String(ref['@_uri'] ?? '')),
118
121
  description: String(ref['@_description'] ?? ''),
119
122
  packageName: String(ref['@_packageName'] ?? ''),
120
123
  uri: String(ref['@_uri'] ?? ''),
121
124
  }));
122
125
  }
126
+ /** Legacy quickSearch decorates names with localized type labels; require URI identity proof. */
127
+ function canonicalSearchName(displayName, uri) {
128
+ const name = /^([^\s()]+) \([^()]+\)$/.exec(displayName)?.[1];
129
+ if (!name)
130
+ return displayName;
131
+ const segment = /^\/sap\/bc\/adt\/(?:[^/?#]+\/)*([^/?#]+)$/i.exec(uri)?.[1];
132
+ try {
133
+ return segment && decodeURIComponent(segment).toUpperCase() === name.toUpperCase() ? name : displayName;
134
+ }
135
+ catch {
136
+ return displayName;
137
+ }
138
+ }
123
139
  /**
124
140
  * Parse ADT package contents (nodestructure response).
125
141
  *
@@ -257,7 +273,7 @@ function parseDataPreviewMetaObject(parsed) {
257
273
  }
258
274
  const executed = td.executedQueryString;
259
275
  if (typeof executed === 'string' && executed.trim()) {
260
- meta.executedQueryString = executed.trim().replace(/\s+/g, ' ');
276
+ meta.executedQueryString = executed;
261
277
  }
262
278
  return meta;
263
279
  }
@@ -265,13 +281,13 @@ function parseDataPreviewMetaObject(parsed) {
265
281
  export function parseDataPreviewResult(xml) {
266
282
  if (!xml || xml.trim().length === 0)
267
283
  return { columns: [], rows: [] };
268
- const parsed = parseXml(xml);
284
+ const parsed = whitespacePreservingParser.parse(xml);
269
285
  return { ...parseTableContentsObject(parsed), ...parseDataPreviewMetaObject(parsed) };
270
286
  }
271
287
  export function parseTableContents(xml) {
272
288
  if (!xml || xml.trim().length === 0)
273
289
  return { columns: [], rows: [] };
274
- return parseTableContentsObject(parseXml(xml));
290
+ return parseTableContentsObject(whitespacePreservingParser.parse(xml));
275
291
  }
276
292
  /**
277
293
  * Parse the scalar metrics from a datapreview response — `totalRows`, `queryExecutionTime`,
@@ -281,7 +297,7 @@ export function parseTableContents(xml) {
281
297
  export function parseDataPreviewMeta(xml) {
282
298
  if (!xml || xml.trim().length === 0)
283
299
  return {};
284
- return parseDataPreviewMetaObject(parseXml(xml));
300
+ return parseDataPreviewMetaObject(whitespacePreservingParser.parse(xml));
285
301
  }
286
302
  /**
287
303
  * Parse installed components response.
@@ -780,139 +796,6 @@ export function parseTransactionMetadata(xml) {
780
796
  package: String(pkgRef['@_name'] ?? ''),
781
797
  };
782
798
  }
783
- /**
784
- * Parse API release state XML from /sap/bc/adt/apireleases/{encoded-uri}.
785
- *
786
- * Returns structured release info with per-contract states (C0–C4),
787
- * successor information, and catalog metadata.
788
- *
789
- * Expected root: element with releasableObject, c0Release–c4Release, apiCatalogData.
790
- */
791
- export function parseApiReleaseState(xml) {
792
- const parsed = parseXml(xml);
793
- // The root element name varies — find the first non-declaration key
794
- const rootKey = Object.keys(parsed).find((k) => !k.startsWith('?'));
795
- const root = (rootKey ? parsed[rootKey] : parsed);
796
- // releasableObject attrs
797
- const relObj = (root.releasableObject ?? {});
798
- // Parse C0–C4 contract releases
799
- const contracts = [];
800
- for (const key of ['c0Release', 'c1Release', 'c2Release', 'c3Release', 'c4Release']) {
801
- const release = root[key];
802
- if (!release)
803
- continue;
804
- const status = (release.status ?? {});
805
- const successorsContainer = release.successors;
806
- const successorArr = [];
807
- if (successorsContainer) {
808
- const succs = Array.isArray(successorsContainer.successor)
809
- ? successorsContainer.successor
810
- : successorsContainer.successor
811
- ? [successorsContainer.successor]
812
- : [];
813
- for (const s of succs) {
814
- successorArr.push({
815
- uri: String(s['@_uri'] ?? ''),
816
- type: String(s['@_type'] ?? ''),
817
- name: String(s['@_name'] ?? ''),
818
- });
819
- }
820
- }
821
- contracts.push({
822
- contract: String(release['@_contract'] ?? key.replace('Release', '').toUpperCase()),
823
- state: String(status['@_state'] ?? ''),
824
- stateDescription: String(status['@_stateDescription'] ?? ''),
825
- useInKeyUserApps: String(release['@_useInKeyUserApps'] ?? 'false') === 'true',
826
- useInSAPCloudPlatform: String(release['@_useInSAPCloudPlatform'] ?? 'false') === 'true',
827
- successors: successorArr,
828
- });
829
- }
830
- // apiCatalogData attrs
831
- const catalog = (root.apiCatalogData ?? {});
832
- return {
833
- objectUri: String(relObj['@_uri'] ?? ''),
834
- objectType: String(relObj['@_type'] ?? ''),
835
- objectName: String(relObj['@_name'] ?? ''),
836
- contracts,
837
- isAnyContractReleased: String(catalog['@_isAnyContractReleased'] ?? 'false') === 'true',
838
- isAnyAssignmentPossible: String(catalog['@_isAnyAssignmentPossible'] ?? 'false') === 'true',
839
- };
840
- }
841
- export function assertApiReleaseStateConfirmed(info, contract, expectedState, expectedVisibility) {
842
- const c = contract.toUpperCase();
843
- const confirmedContract = info.contracts.find((release) => release.contract.toUpperCase() === c);
844
- if (!confirmedContract) {
845
- throw new Error(`API release contract ${c} read-back did not include the contract after PUT.`);
846
- }
847
- if (confirmedContract.state !== expectedState) {
848
- throw new Error(`API release contract ${c} read-back state is ${confirmedContract.state || '(missing)'}, expected ${expectedState}.`);
849
- }
850
- if (expectedState === 'RELEASED' &&
851
- expectedVisibility &&
852
- (confirmedContract.useInSAPCloudPlatform !== expectedVisibility.useInSAPCloudPlatform ||
853
- confirmedContract.useInKeyUserApps !== expectedVisibility.useInKeyUserApps)) {
854
- throw new Error(`API release contract ${c} read-back visibility does not match the requested visibility.`);
855
- }
856
- }
857
- /**
858
- * Build the PUT body that sets an object's API release contract `state` (RELEASED / NOT_RELEASED).
859
- *
860
- * The apireleases GET (v10) returns a rich document, but the PUT to `…/apireleases/{uri}/{contract}`
861
- * accepts only a NARROW, strictly-ordered subset — live reverse-engineered on a4h 758 + 816: the
862
- * standalone contract block (`ars:contract="C1"`) carrying `status` + the successor scaffold, plus
863
- * a sibling `apiCatalogData`/`ApiCatalogs` envelope. Response-only nodes (`atom:link`,
864
- * `stateTransitions`, `transportObject`, `authValueObject`) are rejected with HTTP 400.
865
- *
866
- * Visibility on a RELEASED contract is taken VERBATIM from that contract's behaviour DEFAULT flags
867
- * (`useInSAPCloudPlatformDefault` / `useInKeyUserAppsDefault`) — never broadened. We deliberately do
868
- * NOT pre-judge whether visibility is even required: that varies by contract (C0/C1 demand ≥1
869
- * visibility — ARS_STATE_HANDLER/119 — but e.g. C4 has entirely different rules, like "must be an AMDP
870
- * method"). So if both defaults are false we send both false and let SAP return the contract-accurate
871
- * error, rather than guessing it's a visibility problem. Crucially this still never INVENTS visibility
872
- * the contract didn't warrant (the original over-exposure bug). For NOT_RELEASED visibility is untouched.
873
- */
874
- export function buildApiReleasePutBody(getXml, contract, state) {
875
- const c = contract.toUpperCase();
876
- const targetState = state.toUpperCase();
877
- if (targetState !== 'RELEASED' && targetState !== 'NOT_RELEASED') {
878
- throw new Error(`API release state must be RELEASED or NOT_RELEASED, got ${state}.`);
879
- }
880
- const tag = `c${c.slice(1)}Release`; // 'C1' -> 'c1Release'
881
- // The behaviour block lists the *Default visibility flags (self-closing element with "Default" attrs).
882
- const behaviour = new RegExp(`<ars:${tag}\\b([^>]*Default[^>]*)/>`).exec(getXml)?.[1] ?? '';
883
- const cloudDefault = /useInSAPCloudPlatformDefault="true"/.test(behaviour);
884
- const keyUserDefault = /useInKeyUserAppsDefault="true"/.test(behaviour);
885
- // The standalone contract block's opening tag (has ars:contract="<C>").
886
- const openTagMatch = new RegExp(`<ars:${tag}\\b[^>]*\\bars:contract="${c}"[^>]*>`).exec(getXml);
887
- if (!openTagMatch) {
888
- // Only the contracts the object type supports appear as settable `ars:contract="Cn"` blocks
889
- // (e.g. SRVD supports only C0, classic VIEW only C3) — list them so the caller can retry.
890
- const supported = [...new Set([...getXml.matchAll(/ars:contract="(C\d)"/g)].map((m) => m[1]))];
891
- const hint = supported.length ? ` This object supports: ${supported.join(', ')}.` : '';
892
- throw new Error(`API release contract ${c} is not available for this object.${hint}`);
893
- }
894
- let openTag = openTagMatch[0];
895
- if (targetState === 'RELEASED') {
896
- // Set both visibility flags from the contract's own defaults — both-false stays both-false (no
897
- // invented exposure); SAP decides whether that's acceptable for this contract.
898
- const setAttr = (tagText, attr, value) => {
899
- const rendered = `${attr}="${value}"`;
900
- return new RegExp(`\\b${attr}="[^"]*"`).test(tagText)
901
- ? tagText.replace(new RegExp(`\\b${attr}="[^"]*"`), rendered)
902
- : tagText.replace(/>$/, ` ${rendered}>`);
903
- };
904
- openTag = setAttr(openTag, 'ars:useInSAPCloudPlatform', cloudDefault);
905
- openTag = setAttr(openTag, 'ars:useInKeyUserApps', keyUserDefault);
906
- }
907
- const contractBlock = `${openTag}<ars:status ars:state="${targetState}"/>` +
908
- '<ars:useConceptAsSuccessor>false</ars:useConceptAsSuccessor><ars:successors/><ars:successorConceptName/>' +
909
- `</ars:${tag}>`;
910
- return ('<?xml version="1.0" encoding="utf-8"?>' +
911
- '<ars:apiRelease xmlns:ars="http://www.sap.com/adt/ars" xmlns:adtcore="http://www.sap.com/adt/core">' +
912
- contractBlock +
913
- '<ars:apiCatalogData ars:isAnyAssignmentPossible="true" ars:isAnyContractReleased="true"><ars:ApiCatalogs/></ars:apiCatalogData>' +
914
- '</ars:apiRelease>');
915
- }
916
799
  /**
917
800
  * Parse service binding metadata XML into a human-readable summary.
918
801
  *
@@ -1229,7 +1112,7 @@ function getDeepArray(obj, path) {
1229
1112
  }
1230
1113
  return [];
1231
1114
  }
1232
- function toRecordArray(value) {
1115
+ export function toRecordArray(value) {
1233
1116
  if (Array.isArray(value)) {
1234
1117
  return value.filter((item) => Boolean(item) && typeof item === 'object');
1235
1118
  }
@@ -1311,97 +1194,7 @@ export function parseInactiveObjects(xml) {
1311
1194
  }
1312
1195
  return flatResults;
1313
1196
  }
1314
- const TRANSPORT_RELS = new Set([
1315
- 'http://www.sap.com/adt/relations/transport/request', // live shape (a4h 758)
1316
- 'http://www.sap.com/adt/relations/transports', // legacy — kept for older releases
1317
- ]);
1318
- /** CTS request/task id: 3-char system + K/T/… + 6 alphanumerics, e.g. A4HK906291. */
1319
- const CTS_ID_RE = /^[A-Z0-9]{3}[A-Z][A-Z0-9]{6}$/;
1320
- /** Decode a URI component, returning the raw value rather than throwing on a malformed `%` escape. */
1321
- function safeDecode(value) {
1322
- try {
1323
- return decodeURIComponent(value);
1324
- }
1325
- catch {
1326
- return value;
1327
- }
1328
- }
1329
- /**
1330
- * CTS request id of a revision, from its transport link.
1331
- *
1332
- * `adtcore:name` carries the id; `@_title` is the transport DESCRIPTION (only used as a last
1333
- * resort, for releases that put the id there). The href tail is accepted ONLY when it looks
1334
- * like a CTS id — ADT also emits hrefs ending in `reference?obj_name=…`, and returning
1335
- * `"reference"` for every revision would silently break attribution everywhere.
1336
- * Evidence: docs/plans/2026-08-03-transport-diff.md §1.
1337
- */
1338
- function revisionTransportId(links) {
1339
- for (const link of links) {
1340
- if (!TRANSPORT_RELS.has(String(link['@_rel'] ?? '')))
1341
- continue;
1342
- const name = String(link['@_name'] ?? '').trim();
1343
- if (name)
1344
- return name;
1345
- const tail = safeDecode(String(link['@_href'] ?? '')
1346
- .split('/')
1347
- .pop()
1348
- ?.split('?')[0] ?? '')
1349
- .trim()
1350
- .toUpperCase();
1351
- if (CTS_ID_RE.test(tail))
1352
- return tail;
1353
- // `@_title`/`@_version` are last resorts for older releases that put the id there; both
1354
- // go through the shape guard, so a description can never be mistaken for a transport.
1355
- for (const attr of ['@_title', '@_version']) {
1356
- const value = String(link[attr] ?? '')
1357
- .trim()
1358
- .toUpperCase();
1359
- if (CTS_ID_RE.test(value))
1360
- return value;
1361
- }
1362
- }
1363
- return '';
1364
- }
1365
- /** Parse source revision history feed from /source/main/versions */
1366
- export function parseRevisionFeed(xml) {
1367
- const empty = {
1368
- object: { name: '', type: '' },
1369
- revisions: [],
1370
- };
1371
- if (!xml.trim())
1372
- return empty;
1373
- try {
1374
- const parsed = parseXml(xml);
1375
- const feed = (parsed.feed ?? {});
1376
- const title = String(feed.title ?? '');
1377
- const match = title.match(/^Version List of (\S+) \(([A-Z]+)\)/);
1378
- const object = {
1379
- name: String(match?.[1] ?? ''),
1380
- type: String(match?.[2] ?? ''),
1381
- };
1382
- const revisions = [];
1383
- const entries = findDeepNodes(parsed, 'entry');
1384
- for (const entry of entries) {
1385
- const authorNode = toRecordArray(entry.author)[0] ?? {};
1386
- const contentNode = toRecordArray(entry.content)[0] ?? {};
1387
- const links = toRecordArray(entry.link);
1388
- const transport = revisionTransportId(links);
1389
- const versionTitle = String(entry.title ?? '');
1390
- revisions.push({
1391
- id: String(entry.id ?? ''),
1392
- author: String(authorNode.name ?? ''),
1393
- timestamp: String(entry.updated ?? ''),
1394
- ...(versionTitle ? { versionTitle } : {}),
1395
- ...(transport ? { transport } : {}),
1396
- uri: String(contentNode['@_src'] ?? ''),
1397
- });
1398
- }
1399
- return { object, revisions };
1400
- }
1401
- catch {
1402
- return empty;
1403
- }
1404
- }
1197
+ export { parseRevisionFeed } from './revision-feed.js';
1405
1198
  // ─── parseClassStructure (issue #303) ─────────────────────────────────────
1406
1199
  /**
1407
1200
  * Parse a `#start=L,C;end=L,C` fragment from an `<atom:link>` href into a `LineRange`.