arc-1 1.6.0 → 1.8.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 (411) hide show
  1. package/README.md +26 -18
  2. package/dist/adt/application-log.d.ts +36 -0
  3. package/dist/adt/application-log.d.ts.map +1 -0
  4. package/dist/adt/application-log.js +143 -0
  5. package/dist/adt/application-log.js.map +1 -0
  6. package/dist/adt/aunit-package.d.ts.map +1 -1
  7. package/dist/adt/aunit-package.js +9 -1
  8. package/dist/adt/aunit-package.js.map +1 -1
  9. package/dist/adt/ci-quality.d.ts.map +1 -1
  10. package/dist/adt/ci-quality.js +1 -1
  11. package/dist/adt/ci-quality.js.map +1 -1
  12. package/dist/adt/class-structure.d.ts +2 -1
  13. package/dist/adt/class-structure.d.ts.map +1 -1
  14. package/dist/adt/class-structure.js +28 -10
  15. package/dist/adt/class-structure.js.map +1 -1
  16. package/dist/adt/client.d.ts +27 -9
  17. package/dist/adt/client.d.ts.map +1 -1
  18. package/dist/adt/client.js +23 -16
  19. package/dist/adt/client.js.map +1 -1
  20. package/dist/adt/codeintel.d.ts +9 -23
  21. package/dist/adt/codeintel.d.ts.map +1 -1
  22. package/dist/adt/codeintel.js +14 -34
  23. package/dist/adt/codeintel.js.map +1 -1
  24. package/dist/adt/crud.d.ts +3 -2
  25. package/dist/adt/crud.d.ts.map +1 -1
  26. package/dist/adt/crud.js +13 -3
  27. package/dist/adt/crud.js.map +1 -1
  28. package/dist/adt/devtools.d.ts +21 -7
  29. package/dist/adt/devtools.d.ts.map +1 -1
  30. package/dist/adt/devtools.js +98 -44
  31. package/dist/adt/devtools.js.map +1 -1
  32. package/dist/adt/diagnostics.d.ts +2 -0
  33. package/dist/adt/diagnostics.d.ts.map +1 -1
  34. package/dist/adt/diagnostics.js +12 -10
  35. package/dist/adt/diagnostics.js.map +1 -1
  36. package/dist/adt/errors.d.ts +5 -1
  37. package/dist/adt/errors.d.ts.map +1 -1
  38. package/dist/adt/errors.js +26 -0
  39. package/dist/adt/errors.js.map +1 -1
  40. package/dist/adt/feed-schema.d.ts +32 -0
  41. package/dist/adt/feed-schema.d.ts.map +1 -0
  42. package/dist/adt/feed-schema.js +123 -0
  43. package/dist/adt/feed-schema.js.map +1 -0
  44. package/dist/adt/fm-parameter-docs.d.ts +7 -0
  45. package/dist/adt/fm-parameter-docs.d.ts.map +1 -0
  46. package/dist/adt/fm-parameter-docs.js +134 -0
  47. package/dist/adt/fm-parameter-docs.js.map +1 -0
  48. package/dist/adt/fm-signature.d.ts +8 -1
  49. package/dist/adt/fm-signature.d.ts.map +1 -1
  50. package/dist/adt/fm-signature.js +37 -28
  51. package/dist/adt/fm-signature.js.map +1 -1
  52. package/dist/adt/http-deadline.d.ts +2 -0
  53. package/dist/adt/http-deadline.d.ts.map +1 -1
  54. package/dist/adt/http-deadline.js +4 -1
  55. package/dist/adt/http-deadline.js.map +1 -1
  56. package/dist/adt/http-retry-after.d.ts +20 -0
  57. package/dist/adt/http-retry-after.d.ts.map +1 -0
  58. package/dist/adt/http-retry-after.js +37 -0
  59. package/dist/adt/http-retry-after.js.map +1 -0
  60. package/dist/adt/http.d.ts +11 -20
  61. package/dist/adt/http.d.ts.map +1 -1
  62. package/dist/adt/http.js +104 -90
  63. package/dist/adt/http.js.map +1 -1
  64. package/dist/adt/include-expansion.d.ts +143 -0
  65. package/dist/adt/include-expansion.d.ts.map +1 -0
  66. package/dist/adt/include-expansion.js +475 -0
  67. package/dist/adt/include-expansion.js.map +1 -0
  68. package/dist/adt/internal-data-operations.d.ts +3 -3
  69. package/dist/adt/internal-data-operations.d.ts.map +1 -1
  70. package/dist/adt/internal-data-operations.js +9 -2
  71. package/dist/adt/internal-data-operations.js.map +1 -1
  72. package/dist/adt/package-browser.d.ts +23 -0
  73. package/dist/adt/package-browser.d.ts.map +1 -0
  74. package/dist/adt/package-browser.js +139 -0
  75. package/dist/adt/package-browser.js.map +1 -0
  76. package/dist/adt/package-contents.d.ts +2 -0
  77. package/dist/adt/package-contents.d.ts.map +1 -1
  78. package/dist/adt/package-contents.js +3 -1
  79. package/dist/adt/package-contents.js.map +1 -1
  80. package/dist/adt/pinned-write-policy.d.ts +15 -0
  81. package/dist/adt/pinned-write-policy.d.ts.map +1 -0
  82. package/dist/adt/pinned-write-policy.js +111 -0
  83. package/dist/adt/pinned-write-policy.js.map +1 -0
  84. package/dist/adt/revision-feed.d.ts +8 -0
  85. package/dist/adt/revision-feed.d.ts.map +1 -0
  86. package/dist/adt/revision-feed.js +108 -0
  87. package/dist/adt/revision-feed.js.map +1 -0
  88. package/dist/adt/safety.d.ts +11 -0
  89. package/dist/adt/safety.d.ts.map +1 -1
  90. package/dist/adt/safety.js +18 -2
  91. package/dist/adt/safety.js.map +1 -1
  92. package/dist/adt/security-session-gate.d.ts +23 -0
  93. package/dist/adt/security-session-gate.d.ts.map +1 -0
  94. package/dist/adt/security-session-gate.js +56 -0
  95. package/dist/adt/security-session-gate.js.map +1 -0
  96. package/dist/adt/source-diff.d.ts +4 -1
  97. package/dist/adt/source-diff.d.ts.map +1 -1
  98. package/dist/adt/source-diff.js +5 -3
  99. package/dist/adt/source-diff.js.map +1 -1
  100. package/dist/adt/stored-text/chunks.d.ts +8 -0
  101. package/dist/adt/stored-text/chunks.d.ts.map +1 -0
  102. package/dist/adt/stored-text/chunks.js +55 -0
  103. package/dist/adt/stored-text/chunks.js.map +1 -0
  104. package/dist/adt/stored-text/decoder.d.ts +31 -0
  105. package/dist/adt/stored-text/decoder.d.ts.map +1 -0
  106. package/dist/adt/stored-text/decoder.js +319 -0
  107. package/dist/adt/stored-text/decoder.js.map +1 -0
  108. package/dist/adt/stored-text/errors.d.ts +10 -0
  109. package/dist/adt/stored-text/errors.d.ts.map +1 -0
  110. package/dist/adt/stored-text/errors.js +10 -0
  111. package/dist/adt/stored-text/errors.js.map +1 -0
  112. package/dist/adt/stored-text/index.d.ts +7 -0
  113. package/dist/adt/stored-text/index.d.ts.map +1 -0
  114. package/dist/adt/stored-text/index.js +6 -0
  115. package/dist/adt/stored-text/index.js.map +1 -0
  116. package/dist/adt/stored-text/key.d.ts +3 -0
  117. package/dist/adt/stored-text/key.d.ts.map +1 -0
  118. package/dist/adt/stored-text/key.js +23 -0
  119. package/dist/adt/stored-text/key.js.map +1 -0
  120. package/dist/adt/stored-text/reader.d.ts +52 -0
  121. package/dist/adt/stored-text/reader.d.ts.map +1 -0
  122. package/dist/adt/stored-text/reader.js +142 -0
  123. package/dist/adt/stored-text/reader.js.map +1 -0
  124. package/dist/adt/stored-text/source.d.ts +5 -0
  125. package/dist/adt/stored-text/source.d.ts.map +1 -0
  126. package/dist/adt/stored-text/source.js +284 -0
  127. package/dist/adt/stored-text/source.js.map +1 -0
  128. package/dist/adt/stored-text/types.d.ts +38 -0
  129. package/dist/adt/stored-text/types.d.ts.map +1 -0
  130. package/dist/adt/stored-text/types.js +2 -0
  131. package/dist/adt/stored-text/types.js.map +1 -0
  132. package/dist/adt/structure-hierarchy.d.ts.map +1 -1
  133. package/dist/adt/structure-hierarchy.js +11 -27
  134. package/dist/adt/structure-hierarchy.js.map +1 -1
  135. package/dist/adt/syntax-batch.d.ts +66 -0
  136. package/dist/adt/syntax-batch.d.ts.map +1 -0
  137. package/dist/adt/syntax-batch.js +115 -0
  138. package/dist/adt/syntax-batch.js.map +1 -0
  139. package/dist/adt/table-query.d.ts +3 -1
  140. package/dist/adt/table-query.d.ts.map +1 -1
  141. package/dist/adt/table-query.js +32 -4
  142. package/dist/adt/table-query.js.map +1 -1
  143. package/dist/adt/table-settings.d.ts +3 -0
  144. package/dist/adt/table-settings.d.ts.map +1 -1
  145. package/dist/adt/table-settings.js +11 -1
  146. package/dist/adt/table-settings.js.map +1 -1
  147. package/dist/adt/text-elements.js +1 -1
  148. package/dist/adt/text-elements.js.map +1 -1
  149. package/dist/adt/transport-diff.d.ts +16 -25
  150. package/dist/adt/transport-diff.d.ts.map +1 -1
  151. package/dist/adt/transport-diff.js +201 -103
  152. package/dist/adt/transport-diff.js.map +1 -1
  153. package/dist/adt/transport-locks.d.ts +7 -0
  154. package/dist/adt/transport-locks.d.ts.map +1 -0
  155. package/dist/adt/transport-locks.js +56 -0
  156. package/dist/adt/transport-locks.js.map +1 -0
  157. package/dist/adt/transport-review-budget.d.ts +15 -0
  158. package/dist/adt/transport-review-budget.d.ts.map +1 -0
  159. package/dist/adt/transport-review-budget.js +57 -0
  160. package/dist/adt/transport-review-budget.js.map +1 -0
  161. package/dist/adt/transport.d.ts +5 -2
  162. package/dist/adt/transport.d.ts.map +1 -1
  163. package/dist/adt/transport.js +8 -46
  164. package/dist/adt/transport.js.map +1 -1
  165. package/dist/adt/types.d.ts +1 -0
  166. package/dist/adt/types.d.ts.map +1 -1
  167. package/dist/adt/user-agent.d.ts +1 -1
  168. package/dist/adt/where-used-native.d.ts +22 -0
  169. package/dist/adt/where-used-native.d.ts.map +1 -0
  170. package/dist/adt/where-used-native.js +111 -0
  171. package/dist/adt/where-used-native.js.map +1 -0
  172. package/dist/adt/xml-parser.d.ts +2 -3
  173. package/dist/adt/xml-parser.d.ts.map +1 -1
  174. package/dist/adt/xml-parser.js +1 -91
  175. package/dist/adt/xml-parser.js.map +1 -1
  176. package/dist/aff/validator.d.ts.map +1 -1
  177. package/dist/aff/validator.js +8 -2
  178. package/dist/aff/validator.js.map +1 -1
  179. package/dist/authz/policy.d.ts.map +1 -1
  180. package/dist/authz/policy.js +10 -2
  181. package/dist/authz/policy.js.map +1 -1
  182. package/dist/cache/sqlite-driver.d.ts +24 -0
  183. package/dist/cache/sqlite-driver.d.ts.map +1 -0
  184. package/dist/cache/sqlite-driver.js +59 -0
  185. package/dist/cache/sqlite-driver.js.map +1 -0
  186. package/dist/cache/sqlite.d.ts +4 -2
  187. package/dist/cache/sqlite.d.ts.map +1 -1
  188. package/dist/cache/sqlite.js +5 -4
  189. package/dist/cache/sqlite.js.map +1 -1
  190. package/dist/cli-ide.d.ts +11 -0
  191. package/dist/cli-ide.d.ts.map +1 -0
  192. package/dist/cli-ide.js +69 -0
  193. package/dist/cli-ide.js.map +1 -0
  194. package/dist/cli.d.ts.map +1 -1
  195. package/dist/cli.js +9 -2
  196. package/dist/cli.js.map +1 -1
  197. package/dist/context/grep.d.ts +2 -0
  198. package/dist/context/grep.d.ts.map +1 -1
  199. package/dist/context/grep.js +8 -7
  200. package/dist/context/grep.js.map +1 -1
  201. package/dist/extract-sap-cookies.js +1 -0
  202. package/dist/extract-sap-cookies.js.map +1 -1
  203. package/dist/handlers/activate.d.ts.map +1 -1
  204. package/dist/handlers/activate.js +3 -0
  205. package/dist/handlers/activate.js.map +1 -1
  206. package/dist/handlers/application-log-input.d.ts +32 -0
  207. package/dist/handlers/application-log-input.d.ts.map +1 -0
  208. package/dist/handlers/application-log-input.js +34 -0
  209. package/dist/handlers/application-log-input.js.map +1 -0
  210. package/dist/handlers/application-log.d.ts +4 -0
  211. package/dist/handlers/application-log.d.ts.map +1 -0
  212. package/dist/handlers/application-log.js +14 -0
  213. package/dist/handlers/application-log.js.map +1 -0
  214. package/dist/handlers/cds-hints.d.ts +1 -1
  215. package/dist/handlers/cds-hints.d.ts.map +1 -1
  216. package/dist/handlers/cds-hints.js +21 -63
  217. package/dist/handlers/cds-hints.js.map +1 -1
  218. package/dist/handlers/context.d.ts.map +1 -1
  219. package/dist/handlers/context.js +7 -3
  220. package/dist/handlers/context.js.map +1 -1
  221. package/dist/handlers/diagnose.d.ts.map +1 -1
  222. package/dist/handlers/diagnose.js +10 -1
  223. package/dist/handlers/diagnose.js.map +1 -1
  224. package/dist/handlers/dispatch.d.ts +2 -1
  225. package/dist/handlers/dispatch.d.ts.map +1 -1
  226. package/dist/handlers/dispatch.js +63 -12
  227. package/dist/handlers/dispatch.js.map +1 -1
  228. package/dist/handlers/dump-filter-inputs.d.ts +38 -0
  229. package/dist/handlers/dump-filter-inputs.d.ts.map +1 -0
  230. package/dist/handlers/dump-filter-inputs.js +44 -0
  231. package/dist/handlers/dump-filter-inputs.js.map +1 -0
  232. package/dist/handlers/expanded-read.d.ts +24 -0
  233. package/dist/handlers/expanded-read.d.ts.map +1 -0
  234. package/dist/handlers/expanded-read.js +56 -0
  235. package/dist/handlers/expanded-read.js.map +1 -0
  236. package/dist/handlers/function-parameter-language.d.ts +5 -0
  237. package/dist/handlers/function-parameter-language.d.ts.map +1 -0
  238. package/dist/handlers/function-parameter-language.js +19 -0
  239. package/dist/handlers/function-parameter-language.js.map +1 -0
  240. package/dist/handlers/function-processing.d.ts +5 -0
  241. package/dist/handlers/function-processing.d.ts.map +1 -1
  242. package/dist/handlers/function-processing.js +5 -0
  243. package/dist/handlers/function-processing.js.map +1 -1
  244. package/dist/handlers/hyperfocused.d.ts.map +1 -1
  245. package/dist/handlers/hyperfocused.js +2 -1
  246. package/dist/handlers/hyperfocused.js.map +1 -1
  247. package/dist/handlers/long-text-input.d.ts +113 -0
  248. package/dist/handlers/long-text-input.d.ts.map +1 -0
  249. package/dist/handlers/long-text-input.js +113 -0
  250. package/dist/handlers/long-text-input.js.map +1 -0
  251. package/dist/handlers/long-text.d.ts +5 -0
  252. package/dist/handlers/long-text.d.ts.map +1 -0
  253. package/dist/handlers/long-text.js +122 -0
  254. package/dist/handlers/long-text.js.map +1 -0
  255. package/dist/handlers/navigate.d.ts.map +1 -1
  256. package/dist/handlers/navigate.js +8 -3
  257. package/dist/handlers/navigate.js.map +1 -1
  258. package/dist/handlers/object-types.d.ts.map +1 -1
  259. package/dist/handlers/object-types.js +12 -5
  260. package/dist/handlers/object-types.js.map +1 -1
  261. package/dist/handlers/query-input.d.ts +50 -0
  262. package/dist/handlers/query-input.d.ts.map +1 -0
  263. package/dist/handlers/query-input.js +59 -0
  264. package/dist/handlers/query-input.js.map +1 -0
  265. package/dist/handlers/query-tool.d.ts +11 -0
  266. package/dist/handlers/query-tool.d.ts.map +1 -0
  267. package/dist/handlers/query-tool.js +99 -0
  268. package/dist/handlers/query-tool.js.map +1 -0
  269. package/dist/handlers/query.d.ts +1 -1
  270. package/dist/handlers/query.d.ts.map +1 -1
  271. package/dist/handlers/query.js +7 -1
  272. package/dist/handlers/query.js.map +1 -1
  273. package/dist/handlers/read.d.ts +1 -0
  274. package/dist/handlers/read.d.ts.map +1 -1
  275. package/dist/handlers/read.js +62 -11
  276. package/dist/handlers/read.js.map +1 -1
  277. package/dist/handlers/schemas.d.ts +23 -4
  278. package/dist/handlers/schemas.d.ts.map +1 -1
  279. package/dist/handlers/schemas.js +82 -9
  280. package/dist/handlers/schemas.js.map +1 -1
  281. package/dist/handlers/syntax.d.ts.map +1 -1
  282. package/dist/handlers/syntax.js +8 -0
  283. package/dist/handlers/syntax.js.map +1 -1
  284. package/dist/handlers/tool-descriptions.js +2 -2
  285. package/dist/handlers/tool-descriptions.js.map +1 -1
  286. package/dist/handlers/tools.d.ts.map +1 -1
  287. package/dist/handlers/tools.js +81 -74
  288. package/dist/handlers/tools.js.map +1 -1
  289. package/dist/handlers/transport-review.d.ts +5 -0
  290. package/dist/handlers/transport-review.d.ts.map +1 -0
  291. package/dist/handlers/transport-review.js +108 -0
  292. package/dist/handlers/transport-review.js.map +1 -0
  293. package/dist/handlers/transport.d.ts.map +1 -1
  294. package/dist/handlers/transport.js +3 -58
  295. package/dist/handlers/transport.js.map +1 -1
  296. package/dist/handlers/where-used-details.d.ts +28 -0
  297. package/dist/handlers/where-used-details.d.ts.map +1 -0
  298. package/dist/handlers/where-used-details.js +67 -0
  299. package/dist/handlers/where-used-details.js.map +1 -0
  300. package/dist/handlers/where-used.d.ts +8 -3
  301. package/dist/handlers/where-used.d.ts.map +1 -1
  302. package/dist/handlers/where-used.js +40 -18
  303. package/dist/handlers/where-used.js.map +1 -1
  304. package/dist/handlers/write/create.d.ts.map +1 -1
  305. package/dist/handlers/write/create.js +15 -12
  306. package/dist/handlers/write/create.js.map +1 -1
  307. package/dist/handlers/write/pinned-activation.d.ts +8 -0
  308. package/dist/handlers/write/pinned-activation.d.ts.map +1 -0
  309. package/dist/handlers/write/pinned-activation.js +68 -0
  310. package/dist/handlers/write/pinned-activation.js.map +1 -0
  311. package/dist/handlers/write/pinned.d.ts +10 -0
  312. package/dist/handlers/write/pinned.d.ts.map +1 -0
  313. package/dist/handlers/write/pinned.js +202 -0
  314. package/dist/handlers/write/pinned.js.map +1 -0
  315. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  316. package/dist/handlers/write/update-delete.js +5 -3
  317. package/dist/handlers/write/update-delete.js.map +1 -1
  318. package/dist/handlers/write-helpers.d.ts +2 -2
  319. package/dist/handlers/write-helpers.d.ts.map +1 -1
  320. package/dist/handlers/write-helpers.js +8 -6
  321. package/dist/handlers/write-helpers.js.map +1 -1
  322. package/dist/handlers/write.d.ts.map +1 -1
  323. package/dist/handlers/write.js +4 -1
  324. package/dist/handlers/write.js.map +1 -1
  325. package/dist/server/audit.d.ts +1 -0
  326. package/dist/server/audit.d.ts.map +1 -1
  327. package/dist/server/audit.js +49 -2
  328. package/dist/server/audit.js.map +1 -1
  329. package/dist/server/config.d.ts.map +1 -1
  330. package/dist/server/config.js +29 -1
  331. package/dist/server/config.js.map +1 -1
  332. package/dist/server/destination-registry.d.ts +14 -0
  333. package/dist/server/destination-registry.d.ts.map +1 -1
  334. package/dist/server/destination-registry.js +43 -4
  335. package/dist/server/destination-registry.js.map +1 -1
  336. package/dist/server/http.d.ts.map +1 -1
  337. package/dist/server/http.js +25 -5
  338. package/dist/server/http.js.map +1 -1
  339. package/dist/server/ide-links.d.ts +14 -0
  340. package/dist/server/ide-links.d.ts.map +1 -0
  341. package/dist/server/ide-links.js +146 -0
  342. package/dist/server/ide-links.js.map +1 -0
  343. package/dist/server/ide-request.d.ts +13 -0
  344. package/dist/server/ide-request.d.ts.map +1 -0
  345. package/dist/server/ide-request.js +14 -0
  346. package/dist/server/ide-request.js.map +1 -0
  347. package/dist/server/multi-target-authorization.d.ts +1 -1
  348. package/dist/server/multi-target-authorization.d.ts.map +1 -1
  349. package/dist/server/multi-target-authorization.js +5 -3
  350. package/dist/server/multi-target-authorization.js.map +1 -1
  351. package/dist/server/multi-target-catalog-enforced.d.ts +6 -1
  352. package/dist/server/multi-target-catalog-enforced.d.ts.map +1 -1
  353. package/dist/server/multi-target-catalog-enforced.js +3 -0
  354. package/dist/server/multi-target-catalog-enforced.js.map +1 -1
  355. package/dist/server/multi-target-catalog-projection.d.ts.map +1 -1
  356. package/dist/server/multi-target-catalog-projection.js +1 -0
  357. package/dist/server/multi-target-catalog-projection.js.map +1 -1
  358. package/dist/server/multi-target-catalog.d.ts.map +1 -1
  359. package/dist/server/multi-target-catalog.js +1 -0
  360. package/dist/server/multi-target-catalog.js.map +1 -1
  361. package/dist/server/multi-target-destination-config.d.ts +2 -0
  362. package/dist/server/multi-target-destination-config.d.ts.map +1 -1
  363. package/dist/server/multi-target-destination-config.js +18 -0
  364. package/dist/server/multi-target-destination-config.js.map +1 -1
  365. package/dist/server/multi-target-identity.d.ts.map +1 -1
  366. package/dist/server/multi-target-identity.js +4 -3
  367. package/dist/server/multi-target-identity.js.map +1 -1
  368. package/dist/server/multi-target-request-projection.d.ts +2 -0
  369. package/dist/server/multi-target-request-projection.d.ts.map +1 -1
  370. package/dist/server/multi-target-request-projection.js +2 -0
  371. package/dist/server/multi-target-request-projection.js.map +1 -1
  372. package/dist/server/multi-target-runtime.d.ts +5 -1
  373. package/dist/server/multi-target-runtime.d.ts.map +1 -1
  374. package/dist/server/multi-target-runtime.js +30 -3
  375. package/dist/server/multi-target-runtime.js.map +1 -1
  376. package/dist/server/multi-target-server.d.ts.map +1 -1
  377. package/dist/server/multi-target-server.js +42 -6
  378. package/dist/server/multi-target-server.js.map +1 -1
  379. package/dist/server/multi-target-tools.d.ts.map +1 -1
  380. package/dist/server/multi-target-tools.js +64 -7
  381. package/dist/server/multi-target-tools.js.map +1 -1
  382. package/dist/server/multi-target-write-surface.d.ts +9 -0
  383. package/dist/server/multi-target-write-surface.d.ts.map +1 -0
  384. package/dist/server/multi-target-write-surface.js +42 -0
  385. package/dist/server/multi-target-write-surface.js.map +1 -0
  386. package/dist/server/per-user-transport.d.ts +18 -0
  387. package/dist/server/per-user-transport.d.ts.map +1 -0
  388. package/dist/server/per-user-transport.js +72 -0
  389. package/dist/server/per-user-transport.js.map +1 -0
  390. package/dist/server/server-instructions.d.ts +2 -0
  391. package/dist/server/server-instructions.d.ts.map +1 -1
  392. package/dist/server/server-instructions.js +10 -12
  393. package/dist/server/server-instructions.js.map +1 -1
  394. package/dist/server/server.d.ts +3 -0
  395. package/dist/server/server.d.ts.map +1 -1
  396. package/dist/server/server.js +22 -8
  397. package/dist/server/server.js.map +1 -1
  398. package/dist/server/tool-auth.d.ts +1 -1
  399. package/dist/server/tool-auth.d.ts.map +1 -1
  400. package/dist/server/tool-auth.js +24 -4
  401. package/dist/server/tool-auth.js.map +1 -1
  402. package/dist/server/types.d.ts +7 -0
  403. package/dist/server/types.d.ts.map +1 -1
  404. package/dist/server/types.js +3 -0
  405. package/dist/server/types.js.map +1 -1
  406. package/dist/server/ui-state.d.ts.map +1 -1
  407. package/dist/server/ui-state.js +1 -0
  408. package/dist/server/ui-state.js.map +1 -1
  409. package/dist/version.d.ts +1 -1
  410. package/dist/version.js +1 -1
  411. package/package.json +14 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../../src/adt/stored-text/decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** Stable failure categories for the stored-text reader and codec. */
2
+ export type TextReadErrorCode = 'INVALID_KEY' | 'NOT_FOUND' | 'UNSUPPORTED_PROFILE' | 'UNSUPPORTED_PERSISTENCE' | 'NON_ITF_TEXT' | 'REFERENCE_ERROR' | 'REFERENCE_CYCLE' | 'REFERENCE_LIMIT' | 'INCONSISTENT_READ' | 'CORRUPT_CLUSTER' | 'LIMIT_EXCEEDED';
3
+ /** Messages must describe the failure without including text keys, contents, or raw SAP errors. */
4
+ export declare class TextReadError extends Error {
5
+ readonly code: TextReadErrorCode;
6
+ constructor(code: TextReadErrorCode, message: string, options?: {
7
+ cause?: unknown;
8
+ });
9
+ }
10
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/adt/stored-text/errors.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,WAAW,GACX,qBAAqB,GACrB,yBAAyB,GACzB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,CAAC;AAErB,mGAAmG;AACnG,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAEjC,YAAY,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAIlF;CACF"}
@@ -0,0 +1,10 @@
1
+ /** Messages must describe the failure without including text keys, contents, or raw SAP errors. */
2
+ export class TextReadError extends Error {
3
+ code;
4
+ constructor(code, message, options) {
5
+ super(`STXL: ${message}`, options);
6
+ this.name = 'TextReadError';
7
+ this.code = code;
8
+ }
9
+ }
10
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/adt/stored-text/errors.ts"],"names":[],"mappings":"AAcA,mGAAmG;AACnG,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAoB;IAEjC,YAAY,IAAuB,EAAE,OAAe,EAAE,OAA6B;QACjF,KAAK,CAAC,SAAS,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ /** Qualified classic persisted ITF reads through the caller's guarded ADT session. */
2
+ export { TextReadError, type TextReadErrorCode } from './errors.js';
3
+ export { normalizeTextKey } from './key.js';
4
+ export { type ClassicTextBatchItem, type ClassicTextResult, findTextMatches, readClassicText, readClassicTextBatch, } from './reader.js';
5
+ export { withStoredTextSession } from './source.js';
6
+ export type { StoredTextHeader, StoredTextSource, TextDiscovery, TextKey } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adt/stored-text/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Qualified classic persisted ITF reads through the caller's guarded ADT session. */
2
+ export { TextReadError } from './errors.js';
3
+ export { normalizeTextKey } from './key.js';
4
+ export { findTextMatches, readClassicText, readClassicTextBatch, } from './reader.js';
5
+ export { withStoredTextSession } from './source.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adt/stored-text/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EAAE,aAAa,EAA0B,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAGL,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TextKey } from './types.js';
2
+ export declare function normalizeTextKey(value: unknown): TextKey;
3
+ //# sourceMappingURL=key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../../src/adt/stored-text/key.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAmBxD"}
@@ -0,0 +1,23 @@
1
+ /** Exact SAP text identity. Only fixed-width trailing ASCII padding is normalized. */
2
+ import { TextReadError } from './errors.js';
3
+ const KEY_LENGTHS = { TDOBJECT: 10, TDNAME: 70, TDID: 4, TDSPRAS: 1 };
4
+ export function normalizeTextKey(value) {
5
+ if (!value || typeof value !== 'object' || Array.isArray(value))
6
+ throw new TextReadError('INVALID_KEY', 'provide an exact object, name, ID and SAP language key');
7
+ const input = value;
8
+ const result = {};
9
+ for (const [field, length] of Object.entries(KEY_LENGTHS)) {
10
+ const item = input[field];
11
+ if (typeof item !== 'string' ||
12
+ item.length > length ||
13
+ /\p{Surrogate}/u.test(item) ||
14
+ Array.from(item).some((char) => char.charCodeAt(0) < 32 || char.charCodeAt(0) === 127))
15
+ throw new TextReadError('INVALID_KEY', `invalid ${field}`);
16
+ const normalized = item.replace(/ +$/u, '');
17
+ if (!normalized)
18
+ throw new TextReadError('INVALID_KEY', `empty ${field}`);
19
+ result[field] = normalized;
20
+ }
21
+ return result;
22
+ }
23
+ //# sourceMappingURL=key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key.js","sourceRoot":"","sources":["../../../src/adt/stored-text/key.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAW,CAAC;AAE/E,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7D,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,wDAAwD,CAAC,CAAC;IACnG,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IACE,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM;YACpB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAEtF,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;IAC7B,CAAC;IACD,OAAO,MAA4B,CAAC;AACtC,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { type DecodedText, type TextLine } from './decoder.js';
2
+ import { type TextReadErrorCode } from './errors.js';
3
+ import type { StoredTextHeader, StoredTextSource, TextKey } from './types.js';
4
+ export { normalizeTextKey } from './key.js';
5
+ export interface ClassicTextResult {
6
+ requestedKey: TextKey;
7
+ resolvedKey: TextKey;
8
+ header: StoredTextHeader;
9
+ referenceChain: TextKey[];
10
+ lines: TextLine[];
11
+ lineCount: number;
12
+ storage: {
13
+ kind: 'classic-stxh-stxl';
14
+ clusterPresent: boolean;
15
+ consistency: 'reread-matched';
16
+ /** A matching reread is change detection, not a transactional snapshot. */
17
+ snapshotGuaranteed: false;
18
+ codec?: Omit<DecodedText, 'lines'>;
19
+ };
20
+ warnings: Array<'STORED_LINE_COUNT_DIFFERS' | 'LONE_SURROGATE' | 'ITF_COMMANDS_PRESENT'>;
21
+ }
22
+ /** Resolve exact, same-language stored references, then verify headers and bytes by rereading. */
23
+ export declare function readClassicText(source: StoredTextSource, input: unknown): Promise<ClassicTextResult>;
24
+ export type ClassicTextBatchItem = {
25
+ index: number;
26
+ status: 'ok';
27
+ text: ClassicTextResult;
28
+ } | {
29
+ index: number;
30
+ status: 'error';
31
+ key?: TextKey;
32
+ error: {
33
+ code: TextReadErrorCode;
34
+ message: string;
35
+ };
36
+ };
37
+ /** Preserve input order/duplicates; isolate semantic failures, but abort on infrastructure or budget errors. */
38
+ export declare function readClassicTextBatch(source: StoredTextSource, inputs: unknown[]): Promise<ClassicTextBatchItem[]>;
39
+ /** Literal search of an already bounded batch; includes ITF command lines, no rendering or global scan. */
40
+ export declare function findTextMatches(items: ClassicTextBatchItem[], phrase: string): {
41
+ matches: {
42
+ index: number;
43
+ key: TextKey;
44
+ lineNumber: number;
45
+ format: string;
46
+ text: string;
47
+ }[];
48
+ truncated: boolean;
49
+ caseSensitive: boolean;
50
+ scope: 'supplied-batch-only';
51
+ };
52
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../src/adt/stored-text/reader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAc,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAW5C,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QACP,IAAI,EAAE,mBAAmB,CAAC;QAC1B,cAAc,EAAE,OAAO,CAAC;QACxB,WAAW,EAAE,gBAAgB,CAAC;QAC9B,2EAA2E;QAC3E,kBAAkB,EAAE,KAAK,CAAC;QAC1B,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE,KAAK,CAAC,2BAA2B,GAAG,gBAAgB,GAAG,sBAAsB,CAAC,CAAC;CAC1F;AAED,kGAAkG;AAClG,wBAAsB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmE1G;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACxD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,iBAAiB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE3G,gHAAgH;AAChH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,OAAO,EAAE,GAChB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA0BjC;AAED,2GAA2G;AAC3G,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM;;eAK7C,MAAM;aAAO,OAAO;oBAAc,MAAM;gBAAU,MAAM;cAAQ,MAAM;;;;WAgB3C,qBAAqB;EAC/E"}
@@ -0,0 +1,142 @@
1
+ /** Classic persisted ITF semantics. No SQL, credentials, RFC, text-memory or rendering. */
2
+ import { createHash } from 'node:crypto';
3
+ import { decodeStxl } from './decoder.js';
4
+ import { TextReadError } from './errors.js';
5
+ import { normalizeTextKey } from './key.js';
6
+ export { normalizeTextKey } from './key.js';
7
+ const MAX_REFERENCE_HOPS = 8;
8
+ const MAX_BATCH_KEYS = 25;
9
+ const MAX_BATCH_LINES = 10_000;
10
+ const MAX_BATCH_JSON_BYTES = 2 * 1024 * 1024;
11
+ const keyId = (key) => JSON.stringify([key.TDOBJECT, key.TDNAME, key.TDID, key.TDSPRAS]);
12
+ const fingerprint = (bytes) => bytes === undefined ? 'absent' : createHash('sha256').update(bytes).digest('hex');
13
+ /** Resolve exact, same-language stored references, then verify headers and bytes by rereading. */
14
+ export async function readClassicText(source, input) {
15
+ const requestedKey = normalizeTextKey(input);
16
+ let key = requestedKey;
17
+ const headers = [];
18
+ const visited = new Set();
19
+ for (;;) {
20
+ if (visited.has(keyId(key)))
21
+ throw new TextReadError('REFERENCE_CYCLE', 'stored reference cycle');
22
+ visited.add(keyId(key));
23
+ try {
24
+ await source.assertSupportedKey(key);
25
+ }
26
+ catch (error) {
27
+ if (headers.length && error instanceof TextReadError && error.code === 'INVALID_KEY')
28
+ throw new TextReadError('REFERENCE_ERROR', 'reference target has an invalid configured key');
29
+ throw error;
30
+ }
31
+ const header = await source.readHeader(key);
32
+ if (!header)
33
+ throw new TextReadError(headers.length ? 'REFERENCE_ERROR' : 'NOT_FOUND', headers.length ? 'reference target has no classic stored header' : 'no header in classic storage');
34
+ if (header.textType.replace(/ +$/u, ''))
35
+ throw new TextReadError('NON_ITF_TEXT', 'non-ITF text requires a different storage reader');
36
+ if (header.legacyReference)
37
+ throw new TextReadError('UNSUPPORTED_PROFILE', 'legacy or incomplete reference metadata requires ITCRF support');
38
+ headers.push(header);
39
+ if (!header.reference)
40
+ break;
41
+ if (headers.length > MAX_REFERENCE_HOPS)
42
+ throw new TextReadError('REFERENCE_LIMIT', 'stored reference hop limit exceeded');
43
+ key = normalizeTextKey(header.reference);
44
+ if (key.TDSPRAS !== requestedKey.TDSPRAS)
45
+ throw new TextReadError('REFERENCE_ERROR', 'stored references must retain the requested language');
46
+ }
47
+ const bytes = await source.readCluster(key);
48
+ const decoded = bytes === undefined ? undefined : await decodeStxl(bytes);
49
+ // A count alone is insufficient: references and valid header-only texts can have stale counts.
50
+ for (const original of headers) {
51
+ const current = await source.readHeader(original.key);
52
+ if (!current || current.revision !== original.revision)
53
+ throw new TextReadError('INCONSISTENT_READ', 'stored header changed during the read; retry the exact key');
54
+ }
55
+ if (fingerprint(await source.readCluster(key)) !== fingerprint(bytes))
56
+ throw new TextReadError('INCONSISTENT_READ', 'stored chunks changed during the read; retry the exact key');
57
+ const lines = decoded?.lines ?? [];
58
+ const warnings = [];
59
+ if (headers[headers.length - 1].storedLineCount !== lines.length)
60
+ warnings.push('STORED_LINE_COUNT_DIFFERS');
61
+ if (decoded && !decoded.wellFormedUnicode)
62
+ warnings.push('LONE_SURROGATE');
63
+ if (lines.some((line) => line.format === '/:'))
64
+ warnings.push('ITF_COMMANDS_PRESENT');
65
+ const codec = decoded ? (({ lines: _lines, ...details }) => details)(decoded) : undefined;
66
+ return {
67
+ requestedKey,
68
+ resolvedKey: key,
69
+ header: headers[0],
70
+ referenceChain: headers.map((header) => header.key),
71
+ lines,
72
+ lineCount: lines.length,
73
+ storage: {
74
+ kind: 'classic-stxh-stxl',
75
+ clusterPresent: bytes !== undefined,
76
+ consistency: 'reread-matched',
77
+ snapshotGuaranteed: false,
78
+ codec,
79
+ },
80
+ warnings,
81
+ };
82
+ }
83
+ /** Preserve input order/duplicates; isolate semantic failures, but abort on infrastructure or budget errors. */
84
+ export async function readClassicTextBatch(source, inputs) {
85
+ if (!Array.isArray(inputs) || inputs.length < 1 || inputs.length > MAX_BATCH_KEYS)
86
+ throw new TextReadError('LIMIT_EXCEEDED', `batch must contain 1–${MAX_BATCH_KEYS} exact keys`);
87
+ const completed = new Map();
88
+ const results = [];
89
+ let totalLines = 0;
90
+ let totalBytes = 2; // JSON array brackets.
91
+ for (const [index, input] of inputs.entries()) {
92
+ let key;
93
+ let item;
94
+ try {
95
+ key = normalizeTextKey(input);
96
+ const previous = completed.get(keyId(key));
97
+ item = previous ? { ...previous, index } : { index, status: 'ok', text: await readClassicText(source, key) };
98
+ }
99
+ catch (error) {
100
+ if (!(error instanceof TextReadError) || error.code === 'LIMIT_EXCEEDED')
101
+ throw error;
102
+ item = { index, status: 'error', key, error: { code: error.code, message: error.message } };
103
+ }
104
+ if (key)
105
+ completed.set(keyId(key), item);
106
+ totalLines += item.status === 'ok' ? item.text.lineCount : 0;
107
+ totalBytes += Buffer.byteLength(JSON.stringify(item)) + (index > 0 ? 1 : 0);
108
+ if (totalLines > MAX_BATCH_LINES || totalBytes > MAX_BATCH_JSON_BYTES)
109
+ throw new TextReadError('LIMIT_EXCEEDED', 'batch decoded result budget exceeded; request fewer texts');
110
+ results.push(item);
111
+ }
112
+ return results;
113
+ }
114
+ /** Literal search of an already bounded batch; includes ITF command lines, no rendering or global scan. */
115
+ export function findTextMatches(items, phrase) {
116
+ if (!Array.isArray(items) || items.length > MAX_BATCH_KEYS)
117
+ throw new TextReadError('LIMIT_EXCEEDED', 'search must use a bounded text batch');
118
+ if (typeof phrase !== 'string' || !phrase.length || phrase.length > 200)
119
+ throw new TextReadError('INVALID_KEY', 'search phrase must contain 1–200 characters');
120
+ const matches = [];
121
+ let truncated = false;
122
+ let scanned = 0;
123
+ for (const item of items) {
124
+ if (item.status !== 'ok')
125
+ continue;
126
+ for (const [lineIndex, line] of item.text.lines.entries()) {
127
+ if (++scanned > MAX_BATCH_LINES)
128
+ throw new TextReadError('LIMIT_EXCEEDED', 'search line budget exceeded');
129
+ if (!line.text.includes(phrase))
130
+ continue;
131
+ if (matches.length === 50) {
132
+ truncated = true;
133
+ break;
134
+ }
135
+ matches.push({ index: item.index, key: item.text.requestedKey, lineNumber: lineIndex + 1, ...line });
136
+ }
137
+ if (truncated)
138
+ break;
139
+ }
140
+ return { matches, truncated, caseSensitive: true, scope: 'supplied-batch-only' };
141
+ }
142
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../../src/adt/stored-text/reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AdtClient } from '../client.js';
2
+ import type { StoredTextSource } from './types.js';
3
+ /** One request-local budget/admission scope, identity, timeout, and configuration cache. */
4
+ export declare function withStoredTextSession<T>(client: AdtClient, sapClient: string, fn: (source: StoredTextSource) => Promise<T>): Promise<T>;
5
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/adt/stored-text/source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,KAAK,EAAoB,gBAAgB,EAA0B,MAAM,YAAY,CAAC;AA2F7F,4FAA4F;AAC5F,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAwMZ"}
@@ -0,0 +1,284 @@
1
+ /** Guarded ADT adapter for classic stored text; deliberately has no free-SQL route. */
2
+ import { createHash } from 'node:crypto';
3
+ import { generateRequestId, getCurrentContext, requestContext } from '../../server/context.js';
4
+ import { AdtError, AdtNetworkError } from '../errors.js';
5
+ import { assembleChunks, keyFilters } from './chunks.js';
6
+ import { TextReadError } from './errors.js';
7
+ import { normalizeTextKey as canonicalKey } from './key.js';
8
+ const KEY_FIELDS = ['TDOBJECT', 'TDNAME', 'TDID', 'TDSPRAS'];
9
+ const HEADER_COLUMNS = [
10
+ 'MANDT',
11
+ ...KEY_FIELDS,
12
+ 'TDTITLE',
13
+ 'TDTEXTTYPE',
14
+ 'TDTXTLINES',
15
+ 'TDVERSION',
16
+ 'TDLDATE',
17
+ 'TDLTIME',
18
+ 'TDREF',
19
+ 'TDREFOBJ',
20
+ 'TDREFNAME',
21
+ 'TDREFID',
22
+ ];
23
+ const CLUSTER_COLUMNS = ['MANDT', 'RELID', ...KEY_FIELDS, 'SRTF2', 'CLUSTR', 'CLUSTD'];
24
+ const MAX_REQUESTS = 120;
25
+ const WINDOW_SIZE = 32;
26
+ const COUNTER_COUNT = 256;
27
+ const SESSION_TIMEOUT_MS = 60_000;
28
+ const unpad = (value) => value.replace(/ +$/u, '');
29
+ function invalidKey() {
30
+ throw new TextReadError('INVALID_KEY', 'invalid text key or discovery query');
31
+ }
32
+ function sameKey(left, right) {
33
+ return KEY_FIELDS.every((field) => left[field] === right[field]);
34
+ }
35
+ function corrupt(message) {
36
+ throw new TextReadError('CORRUPT_CLUSTER', message);
37
+ }
38
+ function cell(row, field) {
39
+ if (typeof row[field] !== 'string')
40
+ corrupt('missing or malformed stored metadata');
41
+ return row[field];
42
+ }
43
+ function integer(row, field) {
44
+ const value = cell(row, field);
45
+ if (!/^\d+ *$/u.test(value) || !Number.isSafeInteger(Number(value)))
46
+ corrupt('invalid stored metadata integer');
47
+ return Number(value);
48
+ }
49
+ function rowKey(row) {
50
+ try {
51
+ return canonicalKey(Object.fromEntries(KEY_FIELDS.map((field) => [field, cell(row, field)])));
52
+ }
53
+ catch {
54
+ return corrupt('invalid stored text identity');
55
+ }
56
+ }
57
+ function parseHeader(row, sapClient, expected) {
58
+ // Require all selected fields, including empty reference fields and the blank ITF text type.
59
+ for (const field of HEADER_COLUMNS)
60
+ cell(row, field);
61
+ const key = rowKey(row);
62
+ if (unpad(row.MANDT) !== sapClient || (expected && !sameKey(key, expected)))
63
+ corrupt('header identity mismatch');
64
+ const modifiedDate = unpad(row.TDLDATE);
65
+ const modifiedTime = unpad(row.TDLTIME);
66
+ if (!/^\d{8}$/u.test(modifiedDate) || !/^\d{6}$/u.test(modifiedTime))
67
+ corrupt('invalid stored modification metadata');
68
+ const referenceFlag = unpad(row.TDREF);
69
+ if (referenceFlag !== '' && referenceFlag !== 'X')
70
+ corrupt('invalid stored reference flag');
71
+ let reference;
72
+ const referenceParts = ['TDREFOBJ', 'TDREFNAME', 'TDREFID'].map((field) => unpad(row[field]));
73
+ if (referenceFlag === 'X' && referenceParts.every(Boolean)) {
74
+ try {
75
+ reference = canonicalKey({
76
+ TDOBJECT: referenceParts[0],
77
+ TDNAME: referenceParts[1],
78
+ TDID: referenceParts[2],
79
+ TDSPRAS: key.TDSPRAS,
80
+ });
81
+ }
82
+ catch {
83
+ throw new TextReadError('REFERENCE_ERROR', 'invalid stored reference target');
84
+ }
85
+ }
86
+ return {
87
+ key,
88
+ title: row.TDTITLE,
89
+ textType: row.TDTEXTTYPE,
90
+ storedLineCount: integer(row, 'TDTXTLINES'),
91
+ version: integer(row, 'TDVERSION'),
92
+ modifiedDate,
93
+ modifiedTime,
94
+ reference,
95
+ legacyReference: referenceFlag === 'X' && !reference,
96
+ revision: createHash('sha256')
97
+ .update(JSON.stringify(HEADER_COLUMNS.map((field) => row[field])))
98
+ .digest('hex'),
99
+ };
100
+ }
101
+ /** One request-local budget/admission scope, identity, timeout, and configuration cache. */
102
+ export async function withStoredTextSession(client, sapClient, fn) {
103
+ if (!/^\d{3}$/u.test(sapClient))
104
+ invalidKey();
105
+ const inherited = getCurrentContext();
106
+ const scope = inherited?.dataResultScope ?? client.createDataResultScope();
107
+ const timeout = AbortSignal.timeout(SESSION_TIMEOUT_MS);
108
+ const signal = inherited?.signal ? AbortSignal.any([inherited.signal, timeout]) : timeout;
109
+ const context = {
110
+ ...inherited,
111
+ requestId: inherited?.requestId ?? generateRequestId(),
112
+ signal,
113
+ dataResultScope: scope,
114
+ };
115
+ let requests = 0;
116
+ let closed = false;
117
+ const config = new Map();
118
+ const checkSession = () => {
119
+ if (closed || signal.aborted)
120
+ throw new TextReadError('LIMIT_EXCEEDED', 'stored-text session ended or was cancelled');
121
+ };
122
+ async function query(table, opts) {
123
+ checkSession();
124
+ if (requests >= MAX_REQUESTS)
125
+ throw new TextReadError('LIMIT_EXCEEDED', 'stored-text query request limit exceeded');
126
+ requests++;
127
+ try {
128
+ const result = await client.runTableQuery(table, { ...opts, preserveLiteralSpaces: true });
129
+ checkSession();
130
+ if (!Array.isArray(result.rows) || result.rows.length > (opts.maxRows ?? 100))
131
+ corrupt('invalid query row count');
132
+ if (result.rows.some((row) => !row ||
133
+ typeof row !== 'object' ||
134
+ Array.isArray(row) ||
135
+ Object.values(row).some((value) => typeof value !== 'string')))
136
+ corrupt('malformed stored query row');
137
+ return result.rows;
138
+ }
139
+ catch (error) {
140
+ checkSession();
141
+ if (error instanceof TextReadError)
142
+ throw error;
143
+ if (error instanceof AdtError)
144
+ throw error;
145
+ throw new AdtNetworkError('stored-text query failed');
146
+ }
147
+ }
148
+ async function configuration(table, columns, where) {
149
+ const cacheKey = JSON.stringify([table, where]);
150
+ let pending = config.get(cacheKey);
151
+ if (!pending) {
152
+ pending = query(table, { columns, where, maxRows: 2 }).then((rows) => {
153
+ if (rows.length === 0)
154
+ throw new TextReadError('INVALID_KEY', 'text object, ID, or language is not configured');
155
+ if (rows.length !== 1)
156
+ throw new TextReadError('UNSUPPORTED_PERSISTENCE', 'required text configuration is absent or ambiguous');
157
+ for (const field of columns) {
158
+ if (typeof rows[0][field] !== 'string')
159
+ throw new TextReadError('UNSUPPORTED_PERSISTENCE', 'required text configuration metadata is unavailable');
160
+ }
161
+ return rows[0];
162
+ });
163
+ config.set(cacheKey, pending);
164
+ }
165
+ return pending;
166
+ }
167
+ const source = {
168
+ async assertSupportedKey(requested) {
169
+ checkSession();
170
+ const key = canonicalKey(requested);
171
+ const object = await configuration('TTXOB', ['TDOBJECT', 'HANDLER_CLASS'], [{ field: 'TDOBJECT', op: '=', value: key.TDOBJECT }]);
172
+ const id = await configuration('TTXID', ['TDOBJECT', 'TDID', 'HANDLER_CLASS'], [
173
+ { field: 'TDOBJECT', op: '=', value: key.TDOBJECT },
174
+ { field: 'TDID', op: '=', value: key.TDID },
175
+ ]);
176
+ const language = await configuration('T002', ['SPRAS'], [{ field: 'SPRAS', op: '=', value: key.TDSPRAS }]);
177
+ if (unpad(object.TDOBJECT) !== key.TDOBJECT ||
178
+ unpad(id.TDOBJECT) !== key.TDOBJECT ||
179
+ unpad(id.TDID) !== key.TDID ||
180
+ unpad(language.SPRAS) !== key.TDSPRAS)
181
+ throw new TextReadError('UNSUPPORTED_PERSISTENCE', 'text configuration identity mismatch');
182
+ const handler = unpad(id.HANDLER_CLASS) || unpad(object.HANDLER_CLASS) || 'CL_RSTXT_DEFAULT_PERSISTENCE';
183
+ if (handler !== 'CL_RSTXT_DEFAULT_PERSISTENCE')
184
+ throw new TextReadError('UNSUPPORTED_PERSISTENCE', 'text uses an unsupported persistence handler');
185
+ },
186
+ async readHeader(requested) {
187
+ const key = canonicalKey(requested);
188
+ const rows = await query('STXH', { columns: HEADER_COLUMNS, where: keyFilters(key), maxRows: 2 });
189
+ if (rows.length > 1)
190
+ corrupt('duplicate stored text headers');
191
+ return rows.length ? parseHeader(rows[0], sapClient, key) : undefined;
192
+ },
193
+ async readCluster(requested) {
194
+ const key = canonicalKey(requested);
195
+ const chunks = [];
196
+ for (let start = 0; start < COUNTER_COUNT; start += WINDOW_SIZE) {
197
+ const rows = await query('STXL', {
198
+ columns: CLUSTER_COLUMNS,
199
+ where: [
200
+ { field: 'RELID', op: '=', value: 'TX' },
201
+ ...keyFilters(key),
202
+ { field: 'SRTF2', op: '>=', value: String(start) },
203
+ { field: 'SRTF2', op: '<', value: String(start + WINDOW_SIZE) },
204
+ ],
205
+ maxRows: WINDOW_SIZE + 1,
206
+ });
207
+ if (start === 0 && rows.length === 0)
208
+ return undefined;
209
+ if (rows.length > WINDOW_SIZE ||
210
+ rows.some((row) => {
211
+ const index = integer(row, 'SRTF2');
212
+ return index < start || index >= start + WINDOW_SIZE;
213
+ }))
214
+ corrupt('invalid chunk window');
215
+ chunks.push(...rows.map((row) => Object.fromEntries(Object.entries(row).map(([field, value]) => [
216
+ field,
217
+ ['MANDT', 'RELID', ...KEY_FIELDS].includes(field) ? unpad(cell(row, field)) : value,
218
+ ]))));
219
+ if (rows.length < WINDOW_SIZE || start + WINDOW_SIZE === COUNTER_COUNT) {
220
+ try {
221
+ return assembleChunks(chunks, key, sapClient);
222
+ }
223
+ catch {
224
+ return corrupt('invalid stored chunk identity, length, or sequence');
225
+ }
226
+ }
227
+ }
228
+ throw new TextReadError('LIMIT_EXCEEDED', 'stored-text chunk request limit exceeded');
229
+ },
230
+ async discover(input) {
231
+ // A prefix is not a fixed-width identity: even a nonempty spaces-only prefix is meaningful.
232
+ if (!input ||
233
+ typeof input.namePrefix !== 'string' ||
234
+ input.namePrefix.length < 1 ||
235
+ input.namePrefix.length > 70 ||
236
+ /\p{Surrogate}/u.test(input.namePrefix) ||
237
+ Array.from(input.namePrefix).some((char) => char.charCodeAt(0) < 32 || char.charCodeAt(0) === 127))
238
+ invalidKey();
239
+ const probe = canonicalKey({
240
+ TDOBJECT: input.object,
241
+ TDNAME: 'DISCOVERY',
242
+ TDID: input.id === undefined ? 'ST' : input.id,
243
+ TDSPRAS: input.language === undefined ? 'E' : input.language,
244
+ });
245
+ const limit = input.limit === undefined ? 20 : input.limit;
246
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 50)
247
+ invalidKey();
248
+ // Prefix whitespace is meaningful even though fixed-width exact identities ignore padding.
249
+ probe.TDNAME = input.namePrefix;
250
+ const where = [
251
+ { field: 'TDOBJECT', op: '=', value: probe.TDOBJECT },
252
+ { field: 'TDNAME', op: 'STARTS_WITH', value: probe.TDNAME },
253
+ ...(input.id === undefined ? [] : [{ field: 'TDID', op: '=', value: probe.TDID }]),
254
+ ...(input.language === undefined ? [] : [{ field: 'TDSPRAS', op: '=', value: probe.TDSPRAS }]),
255
+ ];
256
+ const rows = await query('STXH', { columns: HEADER_COLUMNS, where, maxRows: limit + 1 });
257
+ const headers = rows.map((row) => parseHeader(row, sapClient));
258
+ if (new Set(headers.map(({ key }) => JSON.stringify(KEY_FIELDS.map((field) => key[field])))).size !== headers.length)
259
+ corrupt('duplicate discovered text identity');
260
+ if (headers.some(({ key }) => key.TDOBJECT !== probe.TDOBJECT ||
261
+ !key.TDNAME.startsWith(probe.TDNAME) ||
262
+ (input.id !== undefined && key.TDID !== probe.TDID) ||
263
+ (input.language !== undefined && key.TDSPRAS !== probe.TDSPRAS)))
264
+ corrupt('discovery identity mismatch');
265
+ headers.sort((a, b) => {
266
+ const left = JSON.stringify(KEY_FIELDS.map((field) => a.key[field]));
267
+ const right = JSON.stringify(KEY_FIELDS.map((field) => b.key[field]));
268
+ return left < right ? -1 : left > right ? 1 : 0;
269
+ });
270
+ return { headers: headers.slice(0, limit), more: rows.length > limit };
271
+ },
272
+ };
273
+ try {
274
+ const result = await requestContext.run(context, () => fn(source));
275
+ checkSession();
276
+ return result;
277
+ }
278
+ finally {
279
+ closed = true;
280
+ if (!inherited?.dataResultScope)
281
+ scope.release();
282
+ }
283
+ }
284
+ //# sourceMappingURL=source.js.map