arc-1 1.6.0 → 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 (282) hide show
  1. package/README.md +22 -15
  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/class-structure.d.ts +2 -1
  7. package/dist/adt/class-structure.d.ts.map +1 -1
  8. package/dist/adt/class-structure.js +28 -10
  9. package/dist/adt/class-structure.js.map +1 -1
  10. package/dist/adt/client.d.ts +6 -4
  11. package/dist/adt/client.d.ts.map +1 -1
  12. package/dist/adt/client.js +9 -9
  13. package/dist/adt/client.js.map +1 -1
  14. package/dist/adt/codeintel.d.ts +9 -23
  15. package/dist/adt/codeintel.d.ts.map +1 -1
  16. package/dist/adt/codeintel.js +14 -34
  17. package/dist/adt/codeintel.js.map +1 -1
  18. package/dist/adt/devtools.d.ts +8 -1
  19. package/dist/adt/devtools.d.ts.map +1 -1
  20. package/dist/adt/devtools.js +67 -37
  21. package/dist/adt/devtools.js.map +1 -1
  22. package/dist/adt/diagnostics.d.ts +2 -0
  23. package/dist/adt/diagnostics.d.ts.map +1 -1
  24. package/dist/adt/diagnostics.js +10 -8
  25. package/dist/adt/diagnostics.js.map +1 -1
  26. package/dist/adt/errors.d.ts +5 -1
  27. package/dist/adt/errors.d.ts.map +1 -1
  28. package/dist/adt/errors.js +26 -0
  29. package/dist/adt/errors.js.map +1 -1
  30. package/dist/adt/feed-schema.d.ts +32 -0
  31. package/dist/adt/feed-schema.d.ts.map +1 -0
  32. package/dist/adt/feed-schema.js +123 -0
  33. package/dist/adt/feed-schema.js.map +1 -0
  34. package/dist/adt/fm-parameter-docs.d.ts +7 -0
  35. package/dist/adt/fm-parameter-docs.d.ts.map +1 -0
  36. package/dist/adt/fm-parameter-docs.js +134 -0
  37. package/dist/adt/fm-parameter-docs.js.map +1 -0
  38. package/dist/adt/fm-signature.d.ts +8 -1
  39. package/dist/adt/fm-signature.d.ts.map +1 -1
  40. package/dist/adt/fm-signature.js +37 -28
  41. package/dist/adt/fm-signature.js.map +1 -1
  42. package/dist/adt/http-deadline.d.ts.map +1 -1
  43. package/dist/adt/http-deadline.js +4 -1
  44. package/dist/adt/http-deadline.js.map +1 -1
  45. package/dist/adt/http-retry-after.d.ts +20 -0
  46. package/dist/adt/http-retry-after.d.ts.map +1 -0
  47. package/dist/adt/http-retry-after.js +37 -0
  48. package/dist/adt/http-retry-after.js.map +1 -0
  49. package/dist/adt/http.d.ts +6 -19
  50. package/dist/adt/http.d.ts.map +1 -1
  51. package/dist/adt/http.js +78 -79
  52. package/dist/adt/http.js.map +1 -1
  53. package/dist/adt/include-expansion.d.ts +143 -0
  54. package/dist/adt/include-expansion.d.ts.map +1 -0
  55. package/dist/adt/include-expansion.js +475 -0
  56. package/dist/adt/include-expansion.js.map +1 -0
  57. package/dist/adt/internal-data-operations.d.ts +3 -3
  58. package/dist/adt/internal-data-operations.d.ts.map +1 -1
  59. package/dist/adt/internal-data-operations.js +9 -2
  60. package/dist/adt/internal-data-operations.js.map +1 -1
  61. package/dist/adt/revision-feed.d.ts +8 -0
  62. package/dist/adt/revision-feed.d.ts.map +1 -0
  63. package/dist/adt/revision-feed.js +108 -0
  64. package/dist/adt/revision-feed.js.map +1 -0
  65. package/dist/adt/security-session-gate.d.ts +23 -0
  66. package/dist/adt/security-session-gate.d.ts.map +1 -0
  67. package/dist/adt/security-session-gate.js +56 -0
  68. package/dist/adt/security-session-gate.js.map +1 -0
  69. package/dist/adt/source-diff.d.ts +4 -1
  70. package/dist/adt/source-diff.d.ts.map +1 -1
  71. package/dist/adt/source-diff.js +5 -3
  72. package/dist/adt/source-diff.js.map +1 -1
  73. package/dist/adt/stored-text/chunks.d.ts +8 -0
  74. package/dist/adt/stored-text/chunks.d.ts.map +1 -0
  75. package/dist/adt/stored-text/chunks.js +55 -0
  76. package/dist/adt/stored-text/chunks.js.map +1 -0
  77. package/dist/adt/stored-text/decoder.d.ts +31 -0
  78. package/dist/adt/stored-text/decoder.d.ts.map +1 -0
  79. package/dist/adt/stored-text/decoder.js +319 -0
  80. package/dist/adt/stored-text/decoder.js.map +1 -0
  81. package/dist/adt/stored-text/errors.d.ts +10 -0
  82. package/dist/adt/stored-text/errors.d.ts.map +1 -0
  83. package/dist/adt/stored-text/errors.js +10 -0
  84. package/dist/adt/stored-text/errors.js.map +1 -0
  85. package/dist/adt/stored-text/index.d.ts +7 -0
  86. package/dist/adt/stored-text/index.d.ts.map +1 -0
  87. package/dist/adt/stored-text/index.js +6 -0
  88. package/dist/adt/stored-text/index.js.map +1 -0
  89. package/dist/adt/stored-text/key.d.ts +3 -0
  90. package/dist/adt/stored-text/key.d.ts.map +1 -0
  91. package/dist/adt/stored-text/key.js +23 -0
  92. package/dist/adt/stored-text/key.js.map +1 -0
  93. package/dist/adt/stored-text/reader.d.ts +52 -0
  94. package/dist/adt/stored-text/reader.d.ts.map +1 -0
  95. package/dist/adt/stored-text/reader.js +142 -0
  96. package/dist/adt/stored-text/reader.js.map +1 -0
  97. package/dist/adt/stored-text/source.d.ts +5 -0
  98. package/dist/adt/stored-text/source.d.ts.map +1 -0
  99. package/dist/adt/stored-text/source.js +284 -0
  100. package/dist/adt/stored-text/source.js.map +1 -0
  101. package/dist/adt/stored-text/types.d.ts +38 -0
  102. package/dist/adt/stored-text/types.d.ts.map +1 -0
  103. package/dist/adt/stored-text/types.js +2 -0
  104. package/dist/adt/stored-text/types.js.map +1 -0
  105. package/dist/adt/structure-hierarchy.d.ts.map +1 -1
  106. package/dist/adt/structure-hierarchy.js +11 -27
  107. package/dist/adt/structure-hierarchy.js.map +1 -1
  108. package/dist/adt/syntax-batch.d.ts +66 -0
  109. package/dist/adt/syntax-batch.d.ts.map +1 -0
  110. package/dist/adt/syntax-batch.js +115 -0
  111. package/dist/adt/syntax-batch.js.map +1 -0
  112. package/dist/adt/table-query.d.ts +3 -1
  113. package/dist/adt/table-query.d.ts.map +1 -1
  114. package/dist/adt/table-query.js +32 -4
  115. package/dist/adt/table-query.js.map +1 -1
  116. package/dist/adt/text-elements.js +1 -1
  117. package/dist/adt/text-elements.js.map +1 -1
  118. package/dist/adt/transport-diff.d.ts +16 -25
  119. package/dist/adt/transport-diff.d.ts.map +1 -1
  120. package/dist/adt/transport-diff.js +201 -103
  121. package/dist/adt/transport-diff.js.map +1 -1
  122. package/dist/adt/transport-review-budget.d.ts +15 -0
  123. package/dist/adt/transport-review-budget.d.ts.map +1 -0
  124. package/dist/adt/transport-review-budget.js +57 -0
  125. package/dist/adt/transport-review-budget.js.map +1 -0
  126. package/dist/adt/transport.d.ts +1 -1
  127. package/dist/adt/transport.d.ts.map +1 -1
  128. package/dist/adt/transport.js +2 -2
  129. package/dist/adt/transport.js.map +1 -1
  130. package/dist/adt/types.d.ts +1 -0
  131. package/dist/adt/types.d.ts.map +1 -1
  132. package/dist/adt/user-agent.d.ts +1 -1
  133. package/dist/adt/where-used-native.d.ts +22 -0
  134. package/dist/adt/where-used-native.d.ts.map +1 -0
  135. package/dist/adt/where-used-native.js +111 -0
  136. package/dist/adt/where-used-native.js.map +1 -0
  137. package/dist/adt/xml-parser.d.ts +2 -3
  138. package/dist/adt/xml-parser.d.ts.map +1 -1
  139. package/dist/adt/xml-parser.js +1 -91
  140. package/dist/adt/xml-parser.js.map +1 -1
  141. package/dist/aff/validator.d.ts.map +1 -1
  142. package/dist/aff/validator.js +8 -2
  143. package/dist/aff/validator.js.map +1 -1
  144. package/dist/authz/policy.d.ts.map +1 -1
  145. package/dist/authz/policy.js +10 -2
  146. package/dist/authz/policy.js.map +1 -1
  147. package/dist/cache/sqlite-driver.d.ts +24 -0
  148. package/dist/cache/sqlite-driver.d.ts.map +1 -0
  149. package/dist/cache/sqlite-driver.js +59 -0
  150. package/dist/cache/sqlite-driver.js.map +1 -0
  151. package/dist/cache/sqlite.d.ts +4 -2
  152. package/dist/cache/sqlite.d.ts.map +1 -1
  153. package/dist/cache/sqlite.js +5 -4
  154. package/dist/cache/sqlite.js.map +1 -1
  155. package/dist/cli.js +4 -1
  156. package/dist/cli.js.map +1 -1
  157. package/dist/context/grep.d.ts +2 -0
  158. package/dist/context/grep.d.ts.map +1 -1
  159. package/dist/context/grep.js +8 -7
  160. package/dist/context/grep.js.map +1 -1
  161. package/dist/extract-sap-cookies.js +1 -0
  162. package/dist/extract-sap-cookies.js.map +1 -1
  163. package/dist/handlers/application-log-input.d.ts +32 -0
  164. package/dist/handlers/application-log-input.d.ts.map +1 -0
  165. package/dist/handlers/application-log-input.js +34 -0
  166. package/dist/handlers/application-log-input.js.map +1 -0
  167. package/dist/handlers/application-log.d.ts +4 -0
  168. package/dist/handlers/application-log.d.ts.map +1 -0
  169. package/dist/handlers/application-log.js +14 -0
  170. package/dist/handlers/application-log.js.map +1 -0
  171. package/dist/handlers/cds-hints.d.ts +1 -1
  172. package/dist/handlers/cds-hints.d.ts.map +1 -1
  173. package/dist/handlers/cds-hints.js +21 -63
  174. package/dist/handlers/cds-hints.js.map +1 -1
  175. package/dist/handlers/context.d.ts.map +1 -1
  176. package/dist/handlers/context.js +7 -3
  177. package/dist/handlers/context.js.map +1 -1
  178. package/dist/handlers/diagnose.d.ts.map +1 -1
  179. package/dist/handlers/diagnose.js +10 -1
  180. package/dist/handlers/diagnose.js.map +1 -1
  181. package/dist/handlers/dispatch.d.ts.map +1 -1
  182. package/dist/handlers/dispatch.js +54 -9
  183. package/dist/handlers/dispatch.js.map +1 -1
  184. package/dist/handlers/dump-filter-inputs.d.ts +38 -0
  185. package/dist/handlers/dump-filter-inputs.d.ts.map +1 -0
  186. package/dist/handlers/dump-filter-inputs.js +44 -0
  187. package/dist/handlers/dump-filter-inputs.js.map +1 -0
  188. package/dist/handlers/expanded-read.d.ts +24 -0
  189. package/dist/handlers/expanded-read.d.ts.map +1 -0
  190. package/dist/handlers/expanded-read.js +56 -0
  191. package/dist/handlers/expanded-read.js.map +1 -0
  192. package/dist/handlers/function-parameter-language.d.ts +5 -0
  193. package/dist/handlers/function-parameter-language.d.ts.map +1 -0
  194. package/dist/handlers/function-parameter-language.js +19 -0
  195. package/dist/handlers/function-parameter-language.js.map +1 -0
  196. package/dist/handlers/function-processing.d.ts +5 -0
  197. package/dist/handlers/function-processing.d.ts.map +1 -1
  198. package/dist/handlers/function-processing.js +5 -0
  199. package/dist/handlers/function-processing.js.map +1 -1
  200. package/dist/handlers/hyperfocused.d.ts.map +1 -1
  201. package/dist/handlers/hyperfocused.js +2 -1
  202. package/dist/handlers/hyperfocused.js.map +1 -1
  203. package/dist/handlers/long-text-input.d.ts +113 -0
  204. package/dist/handlers/long-text-input.d.ts.map +1 -0
  205. package/dist/handlers/long-text-input.js +113 -0
  206. package/dist/handlers/long-text-input.js.map +1 -0
  207. package/dist/handlers/long-text.d.ts +5 -0
  208. package/dist/handlers/long-text.d.ts.map +1 -0
  209. package/dist/handlers/long-text.js +122 -0
  210. package/dist/handlers/long-text.js.map +1 -0
  211. package/dist/handlers/navigate.d.ts.map +1 -1
  212. package/dist/handlers/navigate.js +8 -3
  213. package/dist/handlers/navigate.js.map +1 -1
  214. package/dist/handlers/object-types.d.ts.map +1 -1
  215. package/dist/handlers/object-types.js +7 -4
  216. package/dist/handlers/object-types.js.map +1 -1
  217. package/dist/handlers/query-input.d.ts +50 -0
  218. package/dist/handlers/query-input.d.ts.map +1 -0
  219. package/dist/handlers/query-input.js +59 -0
  220. package/dist/handlers/query-input.js.map +1 -0
  221. package/dist/handlers/query-tool.d.ts +11 -0
  222. package/dist/handlers/query-tool.d.ts.map +1 -0
  223. package/dist/handlers/query-tool.js +99 -0
  224. package/dist/handlers/query-tool.js.map +1 -0
  225. package/dist/handlers/query.d.ts +1 -1
  226. package/dist/handlers/query.d.ts.map +1 -1
  227. package/dist/handlers/query.js +7 -1
  228. package/dist/handlers/query.js.map +1 -1
  229. package/dist/handlers/read.d.ts +1 -0
  230. package/dist/handlers/read.d.ts.map +1 -1
  231. package/dist/handlers/read.js +57 -9
  232. package/dist/handlers/read.js.map +1 -1
  233. package/dist/handlers/schemas.d.ts +17 -4
  234. package/dist/handlers/schemas.d.ts.map +1 -1
  235. package/dist/handlers/schemas.js +51 -9
  236. package/dist/handlers/schemas.js.map +1 -1
  237. package/dist/handlers/syntax.d.ts.map +1 -1
  238. package/dist/handlers/syntax.js +8 -0
  239. package/dist/handlers/syntax.js.map +1 -1
  240. package/dist/handlers/tools.d.ts.map +1 -1
  241. package/dist/handlers/tools.js +72 -70
  242. package/dist/handlers/tools.js.map +1 -1
  243. package/dist/handlers/transport-review.d.ts +5 -0
  244. package/dist/handlers/transport-review.d.ts.map +1 -0
  245. package/dist/handlers/transport-review.js +108 -0
  246. package/dist/handlers/transport-review.js.map +1 -0
  247. package/dist/handlers/transport.d.ts.map +1 -1
  248. package/dist/handlers/transport.js +3 -58
  249. package/dist/handlers/transport.js.map +1 -1
  250. package/dist/handlers/where-used-details.d.ts +28 -0
  251. package/dist/handlers/where-used-details.d.ts.map +1 -0
  252. package/dist/handlers/where-used-details.js +67 -0
  253. package/dist/handlers/where-used-details.js.map +1 -0
  254. package/dist/handlers/where-used.d.ts +8 -3
  255. package/dist/handlers/where-used.d.ts.map +1 -1
  256. package/dist/handlers/where-used.js +40 -18
  257. package/dist/handlers/where-used.js.map +1 -1
  258. package/dist/handlers/write/create.d.ts.map +1 -1
  259. package/dist/handlers/write/create.js +15 -12
  260. package/dist/handlers/write/create.js.map +1 -1
  261. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  262. package/dist/handlers/write/update-delete.js +5 -3
  263. package/dist/handlers/write/update-delete.js.map +1 -1
  264. package/dist/server/audit.d.ts.map +1 -1
  265. package/dist/server/audit.js +49 -2
  266. package/dist/server/audit.js.map +1 -1
  267. package/dist/server/config.d.ts.map +1 -1
  268. package/dist/server/config.js +5 -1
  269. package/dist/server/config.js.map +1 -1
  270. package/dist/server/multi-target-tools.d.ts.map +1 -1
  271. package/dist/server/multi-target-tools.js +8 -7
  272. package/dist/server/multi-target-tools.js.map +1 -1
  273. package/dist/server/server.d.ts.map +1 -1
  274. package/dist/server/server.js +3 -2
  275. package/dist/server/server.js.map +1 -1
  276. package/dist/server/tool-auth.d.ts +1 -1
  277. package/dist/server/tool-auth.d.ts.map +1 -1
  278. package/dist/server/tool-auth.js +24 -4
  279. package/dist/server/tool-auth.js.map +1 -1
  280. package/dist/version.d.ts +1 -1
  281. package/dist/version.js +1 -1
  282. package/package.json +13 -9
@@ -0,0 +1,123 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { XMLValidator } from 'fast-xml-parser';
3
+ import { getCurrentContext } from '../server/context.js';
4
+ import { DataResponseBudget } from './data-result-context.js';
5
+ import { checkOperation, OperationType } from './safety.js';
6
+ import { findDeepNodes, parseXml, toRecordArray } from './xml-parser.js';
7
+ /** Read only the approved dumps schema; omit user-specific variants and arbitrary links. No shared cache. */
8
+ export async function readDumpFeedSchema(http, safety, request) {
9
+ checkOperation(safety, OperationType.Read, 'DumpFeedSchema');
10
+ const response = await http.get('/sap/bc/adt/feeds', { Accept: 'application/atom+xml;type=feed' }, request ?? {
11
+ deadline: Date.now() + 15_000,
12
+ signal: getCurrentContext()?.signal,
13
+ responseBudget: new DataResponseBudget(256 * 1024, 'feed-schema'),
14
+ });
15
+ return parseDumpFeedSchema(response.body);
16
+ }
17
+ export function parseDumpFeedSchema(xml) {
18
+ if (Buffer.byteLength(xml) > 256 * 1024 || XMLValidator.validate(xml) !== true)
19
+ throw new Error('Invalid or oversized feed schema.');
20
+ const parsed = parseXml(xml);
21
+ const entries = findDeepNodes(parsed, 'entry').filter((e) => e.id === '/sap/bc/adt/runtime/dumps');
22
+ if (entries.length > 1)
23
+ throw new Error('Ambiguous dumps feed schema.');
24
+ const entry = entries[0];
25
+ if (!entry)
26
+ throw new Error('The dumps feed does not advertise a filter schema on this target.');
27
+ const dataNodes = toRecordArray(entry.extendedData);
28
+ if (dataNodes.length !== 1)
29
+ throw new Error('Ambiguous dump filter metadata.');
30
+ const data = dataNodes[0];
31
+ if (toRecordArray(data.operators).length !== 1 || toRecordArray(data.attributes).length !== 1)
32
+ throw new Error('Ambiguous dump filter schema containers.');
33
+ const operators = findDeepNodes(data.operators, 'operator');
34
+ if (!operators.length ||
35
+ operators.length > 50 ||
36
+ new Set(operators.map((o) => o['@_id'])).size !== operators.length ||
37
+ operators.some((o) => !/^[A-Za-z][A-Za-z0-9]*$/.test(String(o['@_id'] ?? '')) || ![1, 2].includes(Number(o['@_numberOfOperands']))))
38
+ throw new Error('Invalid or ambiguous dump operators.');
39
+ const attributes = findDeepNodes(data.attributes, 'attribute').map((a) => {
40
+ const dataTypes = toRecordArray(a.dataType);
41
+ if (dataTypes.length !== 1 || toRecordArray(a.operators).length !== 1)
42
+ throw new Error('Ambiguous dump attribute metadata.');
43
+ return {
44
+ id: String(a['@_id'] ?? ''),
45
+ type: String(dataTypes[0]?.['@_id'] ?? ''),
46
+ operators: findDeepNodes(a.operators, 'operator').map((op) => {
47
+ const id = String(op['@_id'] ?? '');
48
+ return { id, operands: Number(operators.find((o) => o['@_id'] === id)?.['@_numberOfOperands']) };
49
+ }),
50
+ };
51
+ });
52
+ if (attributes.length > 50 || !attributes.length)
53
+ throw new Error('Unsupported dump attribute schema.');
54
+ if (new Set(attributes.map((a) => a.id)).size !== attributes.length ||
55
+ attributes.some((a) => !/^[A-Za-z][A-Za-z0-9]*$/.test(a.id) ||
56
+ !a.type ||
57
+ !a.operators.length ||
58
+ new Set(a.operators.map((o) => o.id)).size !== a.operators.length ||
59
+ a.operators.some((o) => ![1, 2].includes(o.operands))))
60
+ throw new Error('Invalid or ambiguous dump attributes.');
61
+ const queryDepth = Number(data.queryDepth);
62
+ if (!Number.isSafeInteger(queryDepth) || queryDepth < 1)
63
+ throw new Error('Invalid dump query depth.');
64
+ return {
65
+ feed: 'dumps',
66
+ retrievedAt: new Date().toISOString(),
67
+ fingerprint: createHash('sha256').update(JSON.stringify({ attributes, queryDepth })).digest('hex'),
68
+ queryDepth,
69
+ attributes,
70
+ };
71
+ }
72
+ /** Verified unquoted wire grammar. Reject delimiters until an escaping contract is proven. */
73
+ export function compileDumpFilters(schema, filters) {
74
+ if (!Number.isFinite(schema.queryDepth) || schema.queryDepth < 2 || filters.length < 1 || filters.length > 8)
75
+ throw new Error('Expected 1..8 conjunctive dump filters within the advertised depth.');
76
+ const terms = filters.map((filter) => {
77
+ const attribute = schema.attributes.find((a) => a.id === filter.attribute);
78
+ const operator = attribute?.operators.find((op) => op.id === filter.operator);
79
+ if (!attribute ||
80
+ !operator ||
81
+ !/^[A-Za-z][A-Za-z0-9]*$/.test(attribute.id) ||
82
+ !/^[A-Za-z][A-Za-z0-9]*$/.test(operator.id) ||
83
+ ![1, 2].includes(operator.operands) ||
84
+ filter.values.length !== operator.operands)
85
+ throw new Error('Filter attribute, operator or operand count is not advertised by this target. Use SAPDiagnose action="feed_schema" for supported attribute and operator names.');
86
+ const values = filter.values.map((value) => {
87
+ if (attribute.type === 'string') {
88
+ if (!/^[A-Za-z0-9_/$.-]{1,128}$/.test(value) || value !== value.trim())
89
+ throw new Error('Filter value contains unsupported wire delimiters or characters.');
90
+ return value;
91
+ }
92
+ if (attribute.type !== 'dateTime' || !/^\d{14}$/.test(value))
93
+ throw new Error('Datetime filters require UTC YYYYMMDDHHMMSS.');
94
+ const iso = `${value.slice(0, 4)}-${value.slice(4, 6)}-${value.slice(6, 8)}T${value.slice(8, 10)}:${value.slice(10, 12)}:${value.slice(12, 14)}Z`;
95
+ const date = new Date(iso);
96
+ if (!Number.isFinite(date.getTime()) || date.toISOString().replace(/[-:T]/g, '').slice(0, 14) !== value)
97
+ throw new Error('Invalid datetime filter.');
98
+ return value;
99
+ });
100
+ if (attribute.type === 'dateTime' && values.length === 2 && values[0] > values[1])
101
+ throw new Error('Datetime range is reversed.');
102
+ return `${operator.id}(${attribute.id},${values.join(',')})`;
103
+ });
104
+ return `and(${terms.join(',')})`;
105
+ }
106
+ /** One caller-owned budget and one fresh schema per filtered list; legacy calls stay unchanged. */
107
+ export async function prepareDumpFilterQuery(http, safety, filters, user) {
108
+ if (!filters)
109
+ return {};
110
+ const request = {
111
+ deadline: Date.now() + 30_000,
112
+ signal: getCurrentContext()?.signal,
113
+ responseBudget: new DataResponseBudget(2 * 1024 * 1024, 'dumps'),
114
+ };
115
+ const trimmedUser = user?.trim();
116
+ const terms = [
117
+ ...filters,
118
+ ...(trimmedUser ? [{ attribute: 'user', operator: 'equals', values: [trimmedUser] }] : []),
119
+ ];
120
+ const schema = await readDumpFeedSchema(http, safety, request);
121
+ return { query: compileDumpFilters(schema, terms), request };
122
+ }
123
+ //# sourceMappingURL=feed-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed-schema.js","sourceRoot":"","sources":["../../src/adt/feed-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Native, attached ABAP Doc short texts for function-module data parameters. */
2
+ import type { FmParameter } from './fm-signature.js';
3
+ export declare function isValidFmParameterDescription(value: string): boolean;
4
+ export declare function readFmParameterDescriptions(prefix: string, parameters: FmParameter[]): void;
5
+ /** Preserve unrelated documentation; only explicit short texts and removed parameter sections change. */
6
+ export declare function updateFmParameterDescriptions(prefix: string, previous: FmParameter[], parameters: FmParameter[], eol: string, language?: string): string;
7
+ //# sourceMappingURL=fm-parameter-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fm-parameter-docs.d.ts","sourceRoot":"","sources":["../../src/adt/fm-parameter-docs.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOpE;AAqDD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAoB3F;AA0CD,yGAAyG;AACzG,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,EAAE,EACvB,UAAU,EAAE,WAAW,EAAE,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAiCR"}
@@ -0,0 +1,134 @@
1
+ export function isValidFmParameterDescription(value) {
2
+ return (value.length >= 1 &&
3
+ value.length <= 60 &&
4
+ value.trim().length > 0 &&
5
+ !/[\p{Cc}\p{Cf}\p{Cs}\u2028\u2029]/u.test(value));
6
+ }
7
+ function isDataParameter(parameter) {
8
+ return parameter.kind !== 'exceptions' && parameter.kind !== 'raising';
9
+ }
10
+ const PARAMETER_DOC_START = /^[ \t]*"![ \t]*@parameter[ \t]+[^\s|]+[ \t]*\|/i;
11
+ const NATIVE_ENTITIES = { '&amp;': '&', '&lt;': '<', '&gt;': '>', '&#64;': '@' };
12
+ function attachedDocumentation(prefix) {
13
+ const lines = prefix.split(/(?<=\n)/);
14
+ let start = lines.length;
15
+ while (start > 0 && /^[ \t]*"!/.test(lines[start - 1]))
16
+ start--;
17
+ const sections = [{ text: '' }];
18
+ for (const line of lines.slice(start)) {
19
+ const tag = /^[ \t]*"!\s*@([a-z]+)\b(?:[ \t]+([^\s|]+))?/i.exec(line);
20
+ if (tag)
21
+ sections.push({ tag: tag[1].toLowerCase(), name: tag[2]?.toUpperCase(), text: line });
22
+ else
23
+ sections[sections.length - 1].text += line;
24
+ }
25
+ return { before: lines.slice(0, start).join(''), sections };
26
+ }
27
+ function shortTexts(text) {
28
+ const result = [];
29
+ for (const match of text.matchAll(/(<p\b[^>]*>)([\s\S]*?)<\/p\s*>/gi)) {
30
+ const classes = /\bclass\s*=\s*(["'])(.*?)\1/i.exec(match[1]);
31
+ const tokens = classes?.[2]?.toLowerCase().split(/\s+/) ?? [];
32
+ if (tokens.includes('shorttext')) {
33
+ result.push({
34
+ start: match.index,
35
+ end: match.index + match[0].length,
36
+ open: match[1],
37
+ content: match[2],
38
+ synchronized: tokens.includes('synchronized'),
39
+ });
40
+ }
41
+ }
42
+ return result;
43
+ }
44
+ function shortTextMarkerCount(text) {
45
+ // Count even unquoted or unfinished attributes so malformed markup cannot invite a second paragraph.
46
+ return [...text.matchAll(/<p\b[^>\r\n]*\bshorttext\b/gi)].length;
47
+ }
48
+ export function readFmParameterDescriptions(prefix, parameters) {
49
+ const { sections } = attachedDocumentation(prefix);
50
+ for (const parameter of parameters.filter(isDataParameter)) {
51
+ const matches = sections.filter((section) => section.tag === 'parameter' && section.name === parameter.name.toUpperCase());
52
+ if (matches.length !== 1 || !PARAMETER_DOC_START.test(matches[0].text))
53
+ continue;
54
+ const paragraphs = shortTexts(matches[0].text);
55
+ const paragraph = paragraphs[0];
56
+ if (paragraphs.length !== 1 ||
57
+ shortTextMarkerCount(matches[0].text) !== 1 ||
58
+ !paragraph?.synchronized ||
59
+ /[<\r\n]/.test(paragraph.content))
60
+ continue;
61
+ // Match the verified native escape set; preserve all other entities literally.
62
+ const description = paragraph.content.replace(/&amp;|&lt;|&gt;|&#64;/g, (entity) => NATIVE_ENTITIES[entity]);
63
+ if (isValidFmParameterDescription(description))
64
+ parameter.description = description;
65
+ }
66
+ }
67
+ function escapeDescription(value) {
68
+ const entities = {
69
+ '&': '&amp;',
70
+ '<': '&lt;',
71
+ '>': '&gt;',
72
+ '@': '&#64;',
73
+ };
74
+ // Native short-text synchronization accepts this escape set; quotes and ! remain element text.
75
+ return value.replace(/[&<>@]/g, (character) => entities[character]);
76
+ }
77
+ function replaceDescription(section, description, language) {
78
+ const pipe = PARAMETER_DOC_START.exec(section.text);
79
+ if (!pipe)
80
+ throw new Error(`Cannot locate ABAP Doc parameter ${section.name}; edit the full source instead.`);
81
+ const paragraphs = shortTexts(section.text);
82
+ const paragraph = paragraphs[0];
83
+ if (paragraphs.length > 1 ||
84
+ shortTextMarkerCount(section.text) !== paragraphs.length ||
85
+ (paragraph && (!paragraph.synchronized || /[<\r\n]/.test(paragraph.content)))) {
86
+ throw new Error(`Cannot safely replace ABAP Doc short text for ${section.name}; edit the full source instead.`);
87
+ }
88
+ if (paragraph) {
89
+ return (section.text.slice(0, paragraph.start) +
90
+ paragraph.open.replace(/\s+lang\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi, '').replace(/>$/, ` lang="${language}">`) +
91
+ escapeDescription(description) +
92
+ '</p>' +
93
+ section.text.slice(paragraph.end));
94
+ }
95
+ const offset = pipe[0].length;
96
+ return (section.text.slice(0, offset) +
97
+ ` <p class="shorttext synchronized" lang="${language}">${escapeDescription(description)}</p>` +
98
+ section.text.slice(offset));
99
+ }
100
+ /** Preserve unrelated documentation; only explicit short texts and removed parameter sections change. */
101
+ export function updateFmParameterDescriptions(prefix, previous, parameters, eol, language) {
102
+ const { before, sections } = attachedDocumentation(prefix);
103
+ const retained = new Set(parameters.filter(isDataParameter).map((parameter) => parameter.name.toUpperCase()));
104
+ const removed = new Set(previous
105
+ .filter(isDataParameter)
106
+ .map((parameter) => parameter.name.toUpperCase())
107
+ .filter((name) => !retained.has(name)));
108
+ const updated = sections.filter((section) => section.tag !== 'parameter' || !removed.has(section.name ?? ''));
109
+ for (const parameter of parameters) {
110
+ if (parameter.description === undefined)
111
+ continue;
112
+ if (!isDataParameter(parameter) || !isValidFmParameterDescription(parameter.description)) {
113
+ throw new Error('FUNC parameter description must be 1–60 printable characters and is supported only for importing/exporting/changing/tables.');
114
+ }
115
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(parameter.name))
116
+ throw new Error('Invalid FUNCTION parameter name for ABAP Doc.');
117
+ if (!language || !/^[a-z]{2}$/.test(language))
118
+ throw new Error('The original language is required for FUNC parameter descriptions.');
119
+ const name = parameter.name.toUpperCase();
120
+ const matches = updated.filter((section) => section.tag === 'parameter' && section.name === name);
121
+ if (matches.length > 1)
122
+ throw new Error(`Duplicate ABAP Doc parameter ${name}; edit the full source instead.`);
123
+ if (matches[0])
124
+ matches[0].text = replaceDescription(matches[0], parameter.description, language);
125
+ else
126
+ updated.push({
127
+ tag: 'parameter',
128
+ name,
129
+ text: `"! @parameter ${name.toLowerCase()} | <p class="shorttext synchronized" lang="${language}">${escapeDescription(parameter.description)}</p>${eol}`,
130
+ });
131
+ }
132
+ return before + updated.map((section) => section.text).join('');
133
+ }
134
+ //# sourceMappingURL=fm-parameter-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fm-parameter-docs.js","sourceRoot":"","sources":["../../src/adt/fm-parameter-docs.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,8 @@ export interface FmParameter {
30
30
  * since the older SAPGUI form uses `LIKE struct` while modern style uses `TYPE …`.
31
31
  */
32
32
  type?: string;
33
+ /** Native synchronized short text (1–60 printable characters); data parameters only. */
34
+ description?: string;
33
35
  /** Emit `VALUE(name)` wrapper. Default false (pass-by-reference). EXPORTING usually byValue. */
34
36
  byValue?: boolean;
35
37
  /** Raw ABAP literal — IMPORTING/CHANGING only. Emitted verbatim, no escaping. */
@@ -37,6 +39,11 @@ export interface FmParameter {
37
39
  /** Emit `OPTIONAL` keyword. Implicit-true for EXPORTING (don't pass it explicitly). */
38
40
  optional?: boolean;
39
41
  }
42
+ /** A full source starts with FUNCTION after only blanks and full-line comments. */
43
+ export declare function findFmHeader(source: string): {
44
+ start: number;
45
+ end: number;
46
+ } | undefined;
40
47
  /**
41
48
  * Build an ABAP signature clause from a structured parameter array.
42
49
  * Output is the multi-line clause without leading `FUNCTION` or trailing `.`.
@@ -73,5 +80,5 @@ export declare function parseFmSignature(source: string): {
73
80
  * is preserved verbatim. Throws when `source` does not start with a `FUNCTION`
74
81
  * keyword or the signature/body boundaries cannot be found.
75
82
  */
76
- export declare function spliceFmSignature(source: string, fmName: string, params: FmParameter[]): string;
83
+ export declare function spliceFmSignature(source: string, fmName: string, params: FmParameter[], language?: string): string;
77
84
  //# sourceMappingURL=fm-signature.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fm-signature.d.ts","sourceRoot":"","sources":["../../src/adt/fm-signature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;AAE3G,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAOD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAyBpE;AA2BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAChD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAyGA;AAkJD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAqB/F"}
1
+ {"version":3,"file":"fm-signature.d.ts","sourceRoot":"","sources":["../../src/adt/fm-signature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;AAE3G,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gGAAgG;IAChG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAOD,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAWvF;AAOD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAyBpE;AA2BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAChD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAmGA;AAmJD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAalH"}
@@ -15,10 +15,28 @@
15
15
  *
16
16
  * No I/O, no client coupling. The wiring lives in the SAPWrite handlers (`src/handlers/write/`).
17
17
  */
18
+ import { readFmParameterDescriptions, updateFmParameterDescriptions } from './fm-parameter-docs.js';
18
19
  const KEYWORD_RE = /^\s*(IMPORTING|EXPORTING|CHANGING|TABLES|EXCEPTIONS|RAISING)\b/i;
19
20
  const PARAM_LINE_RE = /^\s*(?:VALUE\s*\(\s*)?([A-Za-z_][A-Za-z0-9_]*)\s*\)?\s+(TYPE|LIKE)\s+(.+?)\s*$/i;
20
21
  const SIMPLE_NAME_RE = /^\s*([A-Za-z_][A-Za-z0-9_]*)\s*$/;
21
22
  const KIND_ORDER = ['importing', 'exporting', 'changing', 'tables', 'exceptions', 'raising'];
23
+ /** A full source starts with FUNCTION after only blanks and full-line comments. */
24
+ export function findFmHeader(source) {
25
+ let offset = 0;
26
+ for (const line of source.split(/(?<=\n)/)) {
27
+ if (line.trim() === '' || /^[ \t]*(?:"|\*)/.test(line)) {
28
+ offset += line.length;
29
+ continue;
30
+ }
31
+ const match = /^[ \t]*FUNCTION[ \t]+(?:\/[A-Za-z0-9_]+\/)?[A-Za-z_][A-Za-z0-9_]*/i.exec(line);
32
+ return match ? { start: offset, end: offset + match[0].length } : undefined;
33
+ }
34
+ return undefined;
35
+ }
36
+ function findFmEnd(source, bodyStart) {
37
+ const match = /^[ \t]*ENDFUNCTION[ \t]*\./im.exec(source.slice(bodyStart));
38
+ return match ? bodyStart + match.index : source.length;
39
+ }
22
40
  /**
23
41
  * Build an ABAP signature clause from a structured parameter array.
24
42
  * Output is the multi-line clause without leading `FUNCTION` or trailing `.`.
@@ -96,19 +114,16 @@ function formatParam(p) {
96
114
  */
97
115
  export function parseFmSignature(source) {
98
116
  const params = [];
99
- // Locate `FUNCTION <name>` token. Use `[A-Za-z0-9_]+` (not `\S+`) so the
100
- // trailing period of `FUNCTION x.` is NOT consumed by the name capture.
101
- const fnMatch = /^\s*FUNCTION\s+[A-Za-z_][A-Za-z0-9_]*/i.exec(source);
102
- if (!fnMatch) {
117
+ const header = findFmHeader(source);
118
+ if (!header)
103
119
  return { params: [], bodyStart: 0, bodyEnd: source.length };
104
- }
105
120
  // Walk lines starting after `FUNCTION <name>` until the signature-terminator `.`
106
121
  // (a period that ends the FUNCTION statement). The signature-terminator is the
107
122
  // first `.` outside any string literal that appears at the end of a non-keyword,
108
123
  // non-param line — SAP emits it on its own line after the last parameter.
109
124
  // If no keyword was seen and we hit a bare `.` (e.g. `FUNCTION x.`), that's
110
125
  // also a valid signature-terminator (parameter-less FM).
111
- const cursor = fnMatch.index + fnMatch[0].length;
126
+ const cursor = header.end;
112
127
  let currentKind = null;
113
128
  let bodyStart = source.length;
114
129
  // Fast-path: a bare `.` immediately after `FUNCTION <name>` (with optional
@@ -121,11 +136,10 @@ export function parseFmSignature(source) {
121
136
  bs++;
122
137
  if (source[bs] === '\n')
123
138
  bs++;
124
- const endMatch = /\bENDFUNCTION\b/i.exec(source);
125
139
  return {
126
140
  params: [],
127
141
  bodyStart: bs,
128
- bodyEnd: endMatch ? endMatch.index : source.length,
142
+ bodyEnd: findFmEnd(source, bs),
129
143
  };
130
144
  }
131
145
  const lines = tailAfterName.split('\n');
@@ -182,9 +196,8 @@ export function parseFmSignature(source) {
182
196
  }
183
197
  lineStartOffset = lineEndOffset + 1;
184
198
  }
185
- // Locate ENDFUNCTION (case-insensitive); body ends at the start of that line.
186
- const endMatch = /\bENDFUNCTION\b/i.exec(source);
187
- const bodyEnd = endMatch ? endMatch.index : source.length;
199
+ const bodyEnd = findFmEnd(source, bodyStart);
200
+ readFmParameterDescriptions(source.slice(0, header.start), params);
188
201
  return { params, bodyStart, bodyEnd };
189
202
  }
190
203
  /**
@@ -223,11 +236,12 @@ function findSignatureTerminator(line) {
223
236
  }
224
237
  return -1;
225
238
  }
226
- function computeBodyStartOffset(source, lineStartOffset, codeOnly, _tailOrCode, terminatorPosInTrimmed) {
239
+ function computeBodyStartOffset(source, lineStartOffset, codeOnly, tailOrCode, terminatorPosInTrimmed) {
227
240
  // We were given the line's "code only" (inline comments stripped) — but the
228
241
  // terminator position is relative to the *trimmed* tail. Translate it back.
229
- const trimmedStart = codeOnly.length - codeOnly.trimStart().length;
230
- const terminatorAbs = lineStartOffset + trimmedStart + terminatorPosInTrimmed;
242
+ const tailOffset = codeOnly.length - tailOrCode.length;
243
+ const trimmedStart = tailOrCode.length - tailOrCode.trimStart().length;
244
+ const terminatorAbs = lineStartOffset + tailOffset + trimmedStart + terminatorPosInTrimmed;
231
245
  // bodyStart is the offset just AFTER the `.` (and any trailing newline).
232
246
  let bodyStart = terminatorAbs + 1;
233
247
  if (source[bodyStart] === '\r')
@@ -329,23 +343,18 @@ function addParamFromLine(params, kind, lineContent) {
329
343
  * is preserved verbatim. Throws when `source` does not start with a `FUNCTION`
330
344
  * keyword or the signature/body boundaries cannot be found.
331
345
  */
332
- export function spliceFmSignature(source, fmName, params) {
333
- if (!/^\s*FUNCTION\s+/i.test(source)) {
334
- throw new Error('FM source does not start with FUNCTION keyword');
335
- }
346
+ export function spliceFmSignature(source, fmName, params, language) {
347
+ const header = findFmHeader(source);
348
+ if (!header)
349
+ throw new Error('FM source does not start with FUNCTION keyword after leading comments');
336
350
  const parsed = parseFmSignature(source);
337
351
  if (parsed.bodyStart > parsed.bodyEnd || parsed.bodyEnd === source.length) {
338
352
  throw new Error('Cannot locate the FUNCTION signature terminator and ENDFUNCTION; source was not changed');
339
353
  }
340
- const body = source.slice(parsed.bodyStart, parsed.bodyEnd);
341
- const upperName = fmName.toUpperCase();
342
- if (params.length === 0) {
343
- // No signature → just FUNCTION <name>. <body> ENDFUNCTION.
344
- const bodyTrimmed = body.replace(/^\s*\n/, '');
345
- return `FUNCTION ${upperName}.\n${bodyTrimmed}ENDFUNCTION.\n`;
346
- }
347
- const clause = buildFmSignatureClause(params);
348
- const bodyTrimmed = body.replace(/^\s*\n/, '');
349
- return `FUNCTION ${upperName}\n${clause}.\n${bodyTrimmed}ENDFUNCTION.\n`;
354
+ const eol = source.includes('\r\n') ? '\r\n' : '\n';
355
+ const prefix = updateFmParameterDescriptions(source.slice(0, header.start), parsed.params, params, eol, language);
356
+ const clause = buildFmSignatureClause(params).replaceAll('\n', eol);
357
+ const signature = `FUNCTION ${fmName.toUpperCase()}${clause ? eol + clause : ''}.${eol}`;
358
+ return prefix + signature + source.slice(parsed.bodyStart);
350
359
  }
351
360
  //# sourceMappingURL=fm-signature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fm-signature.js","sourceRoot":"","sources":["../../src/adt/fm-signature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fm-signature.js","sourceRoot":"","sources":["../../src/adt/fm-signature.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-deadline.d.ts","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC/D,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,0FAA0F;IAC1F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,oGAAoG;IACpG,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,8GAA8G;AAC9G,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAIhG;AA+BD,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAS9E;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,GAAG,SAAS,CAQ7F;AAED,8FAA8F;AAC9F,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBvG;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,CAS/G;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,CAK3E;AAED,qFAAqF;AACrF,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/G"}
1
+ {"version":3,"file":"http-deadline.d.ts","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC/D,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,0FAA0F;IAC1F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,oGAAoG;IACpG,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,8GAA8G;AAC9G,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAIhG;AAmCD,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAS9E;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,GAAG,SAAS,CAQ7F;AAED,8FAA8F;AAC9F,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBvG;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,CAS/G;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,CAK3E;AAED,qFAAqF;AACrF,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/G"}
@@ -29,7 +29,10 @@ function requestTimeoutError() {
29
29
  return new DOMException('The ADT request deadline was exceeded.', 'TimeoutError');
30
30
  }
31
31
  function requestAbortError(signal) {
32
- const cause = signal.reason instanceof Error ? signal.reason : new Error('The ADT request was aborted.');
32
+ const reason = signal.reason;
33
+ const cause = reason instanceof Error && (reason.name === 'TimeoutError' || reason.name === 'AbortError')
34
+ ? reason
35
+ : new DOMException('The ADT request was cancelled.', 'AbortError');
33
36
  return new AdtNetworkError(cause.message, cause);
34
37
  }
35
38
  export function throwIfRequestCancelled(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"http-deadline.js","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-deadline.js","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Parse RFC 7231 `Retry-After` header into a delay in milliseconds.
3
+ *
4
+ * Accepts both forms allowed by the spec:
5
+ * - delta-seconds (e.g. `"5"`)
6
+ * - HTTP-date (e.g. `"Wed, 12 May 2026 14:30:00 GMT"`)
7
+ *
8
+ * On missing, NaN, malformed, past-date, or negative input, falls back to `fallbackMs`.
9
+ * Always clamps to `[0, 60_000]` ms so a misbehaving gateway can't stall us indefinitely
10
+ * and a too-small/past value can't degenerate into a hot retry loop.
11
+ *
12
+ * Returns `{ delayMs, source }` — `source: 'header' | 'fallback'` lets audit events
13
+ * record whether the delay came from the server or from our jitter floor (useful for
14
+ * capacity tuning).
15
+ */
16
+ export declare function parseRetryAfter(header: string | null | undefined, fallbackMs: number): {
17
+ delayMs: number;
18
+ source: 'header' | 'fallback';
19
+ };
20
+ //# sourceMappingURL=http-retry-after.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-retry-after.d.ts","sourceRoot":"","sources":["../../src/adt/http-retry-after.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,UAAU,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,CAoBpD"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Parse RFC 7231 `Retry-After` header into a delay in milliseconds.
3
+ *
4
+ * Accepts both forms allowed by the spec:
5
+ * - delta-seconds (e.g. `"5"`)
6
+ * - HTTP-date (e.g. `"Wed, 12 May 2026 14:30:00 GMT"`)
7
+ *
8
+ * On missing, NaN, malformed, past-date, or negative input, falls back to `fallbackMs`.
9
+ * Always clamps to `[0, 60_000]` ms so a misbehaving gateway can't stall us indefinitely
10
+ * and a too-small/past value can't degenerate into a hot retry loop.
11
+ *
12
+ * Returns `{ delayMs, source }` — `source: 'header' | 'fallback'` lets audit events
13
+ * record whether the delay came from the server or from our jitter floor (useful for
14
+ * capacity tuning).
15
+ */
16
+ export function parseRetryAfter(header, fallbackMs) {
17
+ const clamp = (ms) => Math.max(0, Math.min(60_000, ms));
18
+ if (header == null || header === '') {
19
+ return { delayMs: clamp(fallbackMs), source: 'fallback' };
20
+ }
21
+ const trimmed = header.trim();
22
+ // delta-seconds form: integer (and only digits, optionally signed)
23
+ if (/^-?\d+$/.test(trimmed)) {
24
+ const seconds = Number.parseInt(trimmed, 10);
25
+ if (Number.isFinite(seconds)) {
26
+ return { delayMs: clamp(seconds * 1000), source: 'header' };
27
+ }
28
+ return { delayMs: clamp(fallbackMs), source: 'fallback' };
29
+ }
30
+ // HTTP-date form
31
+ const epochMs = Date.parse(trimmed);
32
+ if (Number.isFinite(epochMs)) {
33
+ return { delayMs: clamp(epochMs - Date.now()), source: 'header' };
34
+ }
35
+ return { delayMs: clamp(fallbackMs), source: 'fallback' };
36
+ }
37
+ //# sourceMappingURL=http-retry-after.js.map