arc-1 1.4.0 → 1.5.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 (235) hide show
  1. package/dist/adt/abapgit.d.ts.map +1 -1
  2. package/dist/adt/abapgit.js +64 -7
  3. package/dist/adt/abapgit.js.map +1 -1
  4. package/dist/adt/aunit.js +4 -4
  5. package/dist/adt/aunit.js.map +1 -1
  6. package/dist/adt/class-structure.d.ts +4 -2
  7. package/dist/adt/class-structure.d.ts.map +1 -1
  8. package/dist/adt/class-structure.js +18 -9
  9. package/dist/adt/class-structure.js.map +1 -1
  10. package/dist/adt/client.d.ts +18 -52
  11. package/dist/adt/client.d.ts.map +1 -1
  12. package/dist/adt/client.js +69 -92
  13. package/dist/adt/client.js.map +1 -1
  14. package/dist/adt/config.d.ts +5 -0
  15. package/dist/adt/config.d.ts.map +1 -1
  16. package/dist/adt/config.js.map +1 -1
  17. package/dist/adt/crud.d.ts +3 -3
  18. package/dist/adt/crud.d.ts.map +1 -1
  19. package/dist/adt/crud.js +21 -6
  20. package/dist/adt/crud.js.map +1 -1
  21. package/dist/adt/data-source-policy.d.ts +20 -8
  22. package/dist/adt/data-source-policy.d.ts.map +1 -1
  23. package/dist/adt/data-source-policy.js +55 -109
  24. package/dist/adt/data-source-policy.js.map +1 -1
  25. package/dist/adt/ddic-xml.d.ts +9 -0
  26. package/dist/adt/ddic-xml.d.ts.map +1 -1
  27. package/dist/adt/ddic-xml.js +17 -3
  28. package/dist/adt/ddic-xml.js.map +1 -1
  29. package/dist/adt/devtools.js +3 -3
  30. package/dist/adt/devtools.js.map +1 -1
  31. package/dist/adt/diagnostics.js +4 -4
  32. package/dist/adt/diagnostics.js.map +1 -1
  33. package/dist/adt/enhancements.d.ts +7 -0
  34. package/dist/adt/enhancements.d.ts.map +1 -0
  35. package/dist/adt/enhancements.js +89 -0
  36. package/dist/adt/enhancements.js.map +1 -0
  37. package/dist/adt/errors.d.ts +19 -10
  38. package/dist/adt/errors.d.ts.map +1 -1
  39. package/dist/adt/errors.js +73 -53
  40. package/dist/adt/errors.js.map +1 -1
  41. package/dist/adt/fm-signature.d.ts +1 -1
  42. package/dist/adt/fm-signature.d.ts.map +1 -1
  43. package/dist/adt/fm-signature.js +9 -1
  44. package/dist/adt/fm-signature.js.map +1 -1
  45. package/dist/adt/http.d.ts +7 -27
  46. package/dist/adt/http.d.ts.map +1 -1
  47. package/dist/adt/http.js +23 -28
  48. package/dist/adt/http.js.map +1 -1
  49. package/dist/adt/internal-data-operations.d.ts +3 -2
  50. package/dist/adt/internal-data-operations.d.ts.map +1 -1
  51. package/dist/adt/internal-data-operations.js +8 -1
  52. package/dist/adt/internal-data-operations.js.map +1 -1
  53. package/dist/adt/lock-object.d.ts +92 -0
  54. package/dist/adt/lock-object.d.ts.map +1 -0
  55. package/dist/adt/lock-object.js +195 -0
  56. package/dist/adt/lock-object.js.map +1 -0
  57. package/dist/adt/rap-generate.d.ts +5 -1
  58. package/dist/adt/rap-generate.d.ts.map +1 -1
  59. package/dist/adt/rap-generate.js +112 -100
  60. package/dist/adt/rap-generate.js.map +1 -1
  61. package/dist/adt/server-driven.d.ts +42 -10
  62. package/dist/adt/server-driven.d.ts.map +1 -1
  63. package/dist/adt/server-driven.js +98 -18
  64. package/dist/adt/server-driven.js.map +1 -1
  65. package/dist/adt/source-precondition.d.ts +3 -0
  66. package/dist/adt/source-precondition.d.ts.map +1 -0
  67. package/dist/adt/source-precondition.js +12 -0
  68. package/dist/adt/source-precondition.js.map +1 -0
  69. package/dist/adt/text-search.js +5 -5
  70. package/dist/adt/text-search.js.map +1 -1
  71. package/dist/adt/transport.js +3 -3
  72. package/dist/adt/transport.js.map +1 -1
  73. package/dist/adt/types.d.ts +19 -1
  74. package/dist/adt/types.d.ts.map +1 -1
  75. package/dist/adt/user-agent.d.ts +4 -0
  76. package/dist/adt/user-agent.d.ts.map +1 -0
  77. package/dist/adt/user-agent.js +11 -0
  78. package/dist/adt/user-agent.js.map +1 -0
  79. package/dist/adt/xml-entities.d.ts +3 -0
  80. package/dist/adt/xml-entities.d.ts.map +1 -0
  81. package/dist/adt/xml-entities.js +19 -0
  82. package/dist/adt/xml-entities.js.map +1 -0
  83. package/dist/adt/xml-parser.d.ts +7 -30
  84. package/dist/adt/xml-parser.d.ts.map +1 -1
  85. package/dist/adt/xml-parser.js +25 -54
  86. package/dist/adt/xml-parser.js.map +1 -1
  87. package/dist/authz/policy.d.ts.map +1 -1
  88. package/dist/authz/policy.js +2 -0
  89. package/dist/authz/policy.js.map +1 -1
  90. package/dist/cache/caching-layer.d.ts.map +1 -1
  91. package/dist/cache/caching-layer.js +5 -10
  92. package/dist/cache/caching-layer.js.map +1 -1
  93. package/dist/cli.js +1 -1
  94. package/dist/cli.js.map +1 -1
  95. package/dist/context/grep.d.ts +14 -0
  96. package/dist/context/grep.d.ts.map +1 -1
  97. package/dist/context/grep.js +49 -0
  98. package/dist/context/grep.js.map +1 -1
  99. package/dist/context/unit-surgery.d.ts +3 -1
  100. package/dist/context/unit-surgery.d.ts.map +1 -1
  101. package/dist/context/unit-surgery.js +52 -5
  102. package/dist/context/unit-surgery.js.map +1 -1
  103. package/dist/handlers/activate.d.ts.map +1 -1
  104. package/dist/handlers/activate.js +7 -20
  105. package/dist/handlers/activate.js.map +1 -1
  106. package/dist/handlers/diagnose.d.ts.map +1 -1
  107. package/dist/handlers/diagnose.js +8 -29
  108. package/dist/handlers/diagnose.js.map +1 -1
  109. package/dist/handlers/dispatch.d.ts.map +1 -1
  110. package/dist/handlers/dispatch.js +20 -4
  111. package/dist/handlers/dispatch.js.map +1 -1
  112. package/dist/handlers/editable-source.d.ts +6 -0
  113. package/dist/handlers/editable-source.d.ts.map +1 -0
  114. package/dist/handlers/editable-source.js +53 -0
  115. package/dist/handlers/editable-source.js.map +1 -0
  116. package/dist/handlers/feature-cache.d.ts +2 -0
  117. package/dist/handlers/feature-cache.d.ts.map +1 -1
  118. package/dist/handlers/feature-cache.js +8 -0
  119. package/dist/handlers/feature-cache.js.map +1 -1
  120. package/dist/handlers/hyperfocused.js +1 -1
  121. package/dist/handlers/hyperfocused.js.map +1 -1
  122. package/dist/handlers/lint.js +1 -1
  123. package/dist/handlers/lint.js.map +1 -1
  124. package/dist/handlers/object-types.d.ts +2 -3
  125. package/dist/handlers/object-types.d.ts.map +1 -1
  126. package/dist/handlers/object-types.js +13 -5
  127. package/dist/handlers/object-types.js.map +1 -1
  128. package/dist/handlers/read.d.ts.map +1 -1
  129. package/dist/handlers/read.js +38 -7
  130. package/dist/handlers/read.js.map +1 -1
  131. package/dist/handlers/schemas.d.ts +39 -0
  132. package/dist/handlers/schemas.d.ts.map +1 -1
  133. package/dist/handlers/schemas.js +50 -7
  134. package/dist/handlers/schemas.js.map +1 -1
  135. package/dist/handlers/syntax.d.ts +5 -0
  136. package/dist/handlers/syntax.d.ts.map +1 -0
  137. package/dist/handlers/syntax.js +35 -0
  138. package/dist/handlers/syntax.js.map +1 -0
  139. package/dist/handlers/tool-descriptions.d.ts.map +1 -1
  140. package/dist/handlers/tool-descriptions.js +7 -5
  141. package/dist/handlers/tool-descriptions.js.map +1 -1
  142. package/dist/handlers/tool-registry.d.ts +4 -4
  143. package/dist/handlers/tool-registry.d.ts.map +1 -1
  144. package/dist/handlers/tool-registry.js +4 -0
  145. package/dist/handlers/tool-registry.js.map +1 -1
  146. package/dist/handlers/tools.d.ts +1 -16
  147. package/dist/handlers/tools.d.ts.map +1 -1
  148. package/dist/handlers/tools.js +40 -51
  149. package/dist/handlers/tools.js.map +1 -1
  150. package/dist/handlers/transport.d.ts.map +1 -1
  151. package/dist/handlers/transport.js +17 -3
  152. package/dist/handlers/transport.js.map +1 -1
  153. package/dist/handlers/where-used.d.ts.map +1 -1
  154. package/dist/handlers/where-used.js +0 -5
  155. package/dist/handlers/where-used.js.map +1 -1
  156. package/dist/handlers/write/class-edit.d.ts +16 -0
  157. package/dist/handlers/write/class-edit.d.ts.map +1 -0
  158. package/dist/handlers/write/class-edit.js +55 -0
  159. package/dist/handlers/write/class-edit.js.map +1 -0
  160. package/dist/handlers/write/class-surgery.d.ts +2 -2
  161. package/dist/handlers/write/class-surgery.d.ts.map +1 -1
  162. package/dist/handlers/write/class-surgery.js +189 -220
  163. package/dist/handlers/write/class-surgery.js.map +1 -1
  164. package/dist/handlers/write/context.d.ts +1 -8
  165. package/dist/handlers/write/context.d.ts.map +1 -1
  166. package/dist/handlers/write/create.d.ts.map +1 -1
  167. package/dist/handlers/write/create.js +11 -4
  168. package/dist/handlers/write/create.js.map +1 -1
  169. package/dist/handlers/write/metadata-update.d.ts +4 -0
  170. package/dist/handlers/write/metadata-update.d.ts.map +1 -0
  171. package/dist/handlers/write/metadata-update.js +58 -0
  172. package/dist/handlers/write/metadata-update.js.map +1 -0
  173. package/dist/handlers/write/rap.d.ts.map +1 -1
  174. package/dist/handlers/write/rap.js +132 -155
  175. package/dist/handlers/write/rap.js.map +1 -1
  176. package/dist/handlers/write/unit-surgery.d.ts +2 -2
  177. package/dist/handlers/write/unit-surgery.d.ts.map +1 -1
  178. package/dist/handlers/write/unit-surgery.js +14 -8
  179. package/dist/handlers/write/unit-surgery.js.map +1 -1
  180. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  181. package/dist/handlers/write/update-delete.js +34 -82
  182. package/dist/handlers/write/update-delete.js.map +1 -1
  183. package/dist/handlers/write-helpers.d.ts +3 -2
  184. package/dist/handlers/write-helpers.d.ts.map +1 -1
  185. package/dist/handlers/write-helpers.js +118 -15
  186. package/dist/handlers/write-helpers.js.map +1 -1
  187. package/dist/handlers/write.d.ts.map +1 -1
  188. package/dist/handlers/write.js +12 -27
  189. package/dist/handlers/write.js.map +1 -1
  190. package/dist/public/read-only-client.d.ts +6 -0
  191. package/dist/public/read-only-client.d.ts.map +1 -0
  192. package/dist/public/read-only-client.js +66 -0
  193. package/dist/public/read-only-client.js.map +1 -0
  194. package/dist/public/types.d.ts +2 -13
  195. package/dist/public/types.d.ts.map +1 -1
  196. package/dist/server/audit.d.ts +6 -1
  197. package/dist/server/audit.d.ts.map +1 -1
  198. package/dist/server/audit.js.map +1 -1
  199. package/dist/server/config.d.ts.map +1 -1
  200. package/dist/server/config.js +3 -0
  201. package/dist/server/config.js.map +1 -1
  202. package/dist/server/deny-actions.d.ts +2 -1
  203. package/dist/server/deny-actions.d.ts.map +1 -1
  204. package/dist/server/deny-actions.js +13 -2
  205. package/dist/server/deny-actions.js.map +1 -1
  206. package/dist/server/logger.d.ts +3 -3
  207. package/dist/server/logger.d.ts.map +1 -1
  208. package/dist/server/logger.js +7 -7
  209. package/dist/server/logger.js.map +1 -1
  210. package/dist/server/multi-target-basic-auth.d.ts.map +1 -1
  211. package/dist/server/multi-target-basic-auth.js +1 -0
  212. package/dist/server/multi-target-basic-auth.js.map +1 -1
  213. package/dist/server/multi-target-runtime.d.ts.map +1 -1
  214. package/dist/server/multi-target-runtime.js +1 -0
  215. package/dist/server/multi-target-runtime.js.map +1 -1
  216. package/dist/server/plugin-loader.d.ts.map +1 -1
  217. package/dist/server/plugin-loader.js +1 -3
  218. package/dist/server/plugin-loader.js.map +1 -1
  219. package/dist/server/safe-http-client.d.ts +6 -12
  220. package/dist/server/safe-http-client.d.ts.map +1 -1
  221. package/dist/server/safe-http-client.js +28 -63
  222. package/dist/server/safe-http-client.js.map +1 -1
  223. package/dist/server/server.d.ts +5 -4
  224. package/dist/server/server.d.ts.map +1 -1
  225. package/dist/server/server.js +30 -23
  226. package/dist/server/server.js.map +1 -1
  227. package/dist/server/types.d.ts +1 -0
  228. package/dist/server/types.d.ts.map +1 -1
  229. package/dist/server/types.js +2 -0
  230. package/dist/server/types.js.map +1 -1
  231. package/dist/version.d.ts +3 -0
  232. package/dist/version.d.ts.map +1 -0
  233. package/dist/version.js +3 -0
  234. package/dist/version.js.map +1 -0
  235. package/package.json +7 -7
@@ -0,0 +1,195 @@
1
+ import { checkOperation, OperationType } from './safety.js';
2
+ import { escapeXmlAttr, getNestedArray, parseXml } from './xml-parser.js';
3
+ export const LOCKOBJECT_CONTENT_TYPE = 'application/vnd.sap.adt.lockobjects.v1+xml';
4
+ export const LOCKOBJECT_COLLECTION = '/sap/bc/adt/ddic/lockobjects/sources';
5
+ /** Definition defaults: E/S/X, or no lock for a table used only as a foreign-key link. O is runtime-only. */
6
+ export const LOCK_MODES = ['E', 'S', 'X', ''];
7
+ function asRecord(value) {
8
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
9
+ ? value
10
+ : undefined;
11
+ }
12
+ function text(value) {
13
+ return value === undefined || value === null ? '' : String(value).trim();
14
+ }
15
+ function parseLockTable(node) {
16
+ const rec = (node ?? {});
17
+ return { tableName: text(rec.tableName), lockMode: text(rec.lockMode) };
18
+ }
19
+ /** Parse the `<enqu:lockobject>` metadata document. */
20
+ export function parseLockObject(xml) {
21
+ const parsed = parseXml(xml);
22
+ // After NS strip: enqu:lockobject → lockobject
23
+ const root = asRecord(parsed.lockobject);
24
+ if (!root)
25
+ throw new Error('Invalid ENQU response: expected <enqu:lockobject>.');
26
+ const adtType = text(root['@_type']);
27
+ if (adtType && adtType !== 'ENQU/DL') {
28
+ throw new Error(`Invalid ENQU response: expected adtcore:type="ENQU/DL", got "${adtType}".`);
29
+ }
30
+ const content = (root.content ?? {});
31
+ const pkgRef = (root.packageRef ?? {});
32
+ return {
33
+ name: text(root['@_name']),
34
+ description: text(root['@_description']),
35
+ package: text(pkgRef['@_name']),
36
+ version: text(root['@_version']),
37
+ allowRFC: text(content.allowRFC) === 'true',
38
+ primaryTable: parseLockTable(content.primaryTable),
39
+ secondaryTables: getNestedArray(content, 'secondaryTables', 'secondaryTable').map(parseLockTable),
40
+ lockParameters: getNestedArray(content, 'lockParameters', 'lockParameter').map((rec) => ({
41
+ parameterName: text(rec.parameterName),
42
+ tableName: text(rec.tableName),
43
+ fieldName: text(rec.fieldName),
44
+ parameterWanted: text(rec.parameterWanted) !== 'false',
45
+ })),
46
+ lockModules: getNestedArray(content, 'lockModules', 'lockModule')
47
+ .map((rec) => text(rec['@_name']))
48
+ .filter(Boolean),
49
+ };
50
+ }
51
+ /** Read a lock object. Omitting `version` returns SAP's developer view (a pending inactive edit). */
52
+ export async function getLockObject(http, safety, name, version) {
53
+ checkOperation(safety, OperationType.Read, 'GetLockObject');
54
+ const query = version ? `?version=${version}` : '';
55
+ const resp = await http.get(`${LOCKOBJECT_COLLECTION}/${encodeURIComponent(name)}${query}`, {
56
+ Accept: LOCKOBJECT_CONTENT_TYPE,
57
+ });
58
+ return parseLockObject(resp.body);
59
+ }
60
+ const DDIC_NAME_RE = /^(?:\/[A-Z0-9_]+\/)?[A-Z0-9_]+$/;
61
+ /** Keys SAPRead emits that are not writable — accepted (and ignored) so read output round-trips. */
62
+ const READ_ONLY_KEYS = ['name', 'description', 'package', 'version', 'lockModules'];
63
+ const WRITABLE_KEYS = ['allowRFC', 'primaryTable', 'secondaryTables', 'lockParameters'];
64
+ function invalid(message) {
65
+ return new Error(`Invalid ENQU source: ${message}`);
66
+ }
67
+ function rejectUnknownKeys(rec, allowed, where) {
68
+ const unknown = Object.keys(rec).filter((key) => !allowed.includes(key));
69
+ if (unknown.length)
70
+ throw invalid(`${where}: unknown key(s) ${unknown.map((key) => `"${key}"`).join(', ')}.`);
71
+ }
72
+ function validateName(value, where) {
73
+ const name = text(value).toUpperCase();
74
+ if (!name)
75
+ throw invalid(`${where} is required.`);
76
+ if (!DDIC_NAME_RE.test(name))
77
+ throw invalid(`${where} "${text(value)}" is not a valid DDIC name.`);
78
+ return name;
79
+ }
80
+ function validateLockTable(value, where) {
81
+ const rec = asRecord(value);
82
+ if (!rec)
83
+ throw invalid(`${where} must be an object {"tableName":"…","lockMode":"E"}.`);
84
+ rejectUnknownKeys(rec, ['tableName', 'lockMode'], where);
85
+ // Required: a supplied entry replaces the stored one, so a default would silently reset S/X/"".
86
+ const lockMode = typeof rec.lockMode === 'string' ? rec.lockMode.trim().toUpperCase() : undefined;
87
+ if (lockMode === undefined || !LOCK_MODES.includes(lockMode)) {
88
+ throw invalid(`${where}.lockMode ${JSON.stringify(rec.lockMode)} must be one of ${LOCK_MODES.map((mode) => JSON.stringify(mode)).join(', ')}. Optimistic mode O is a runtime option, not a definition default.`);
89
+ }
90
+ return { tableName: validateName(rec.tableName, `${where}.tableName`), lockMode };
91
+ }
92
+ function validateBoolean(value, where) {
93
+ if (typeof value === 'boolean')
94
+ return value;
95
+ if (value === 'true' || value === 'false')
96
+ return value === 'true';
97
+ throw invalid(`${where} must be true or false.`);
98
+ }
99
+ /**
100
+ * Parse and validate the JSON definition from SAPWrite "source". Unknown keys are rejected (a typo
101
+ * such as "primarytable" would otherwise silently keep the stored value); SAPRead's read-only keys
102
+ * are ignored so its output can be edited and written back unchanged.
103
+ */
104
+ export function parseLockObjectDefinition(source) {
105
+ let raw;
106
+ try {
107
+ raw = JSON.parse(source);
108
+ }
109
+ catch (err) {
110
+ throw invalid(`expected a JSON object (${err instanceof Error ? err.message : String(err)}).`);
111
+ }
112
+ const rec = asRecord(raw);
113
+ if (!rec)
114
+ throw invalid('expected a JSON object.');
115
+ rejectUnknownKeys(rec, [...WRITABLE_KEYS, ...READ_ONLY_KEYS], 'definition');
116
+ const def = {};
117
+ if (rec.allowRFC !== undefined)
118
+ def.allowRFC = validateBoolean(rec.allowRFC, 'allowRFC');
119
+ if (rec.primaryTable !== undefined)
120
+ def.primaryTable = validateLockTable(rec.primaryTable, 'primaryTable');
121
+ if (rec.secondaryTables !== undefined) {
122
+ if (!Array.isArray(rec.secondaryTables))
123
+ throw invalid('secondaryTables must be an array.');
124
+ def.secondaryTables = rec.secondaryTables.map((t, i) => validateLockTable(t, `secondaryTables[${i}]`));
125
+ }
126
+ if (rec.lockParameters !== undefined) {
127
+ if (!Array.isArray(rec.lockParameters))
128
+ throw invalid('lockParameters must be an array.');
129
+ def.lockParameters = rec.lockParameters.map((p, i) => {
130
+ const where = `lockParameters[${i}]`;
131
+ const prec = asRecord(p);
132
+ if (!prec)
133
+ throw invalid(`${where} must be an object.`);
134
+ rejectUnknownKeys(prec, ['parameterName', 'tableName', 'fieldName', 'parameterWanted'], where);
135
+ return {
136
+ parameterName: validateName(prec.parameterName ?? prec.fieldName, `${where}.parameterName`),
137
+ tableName: validateName(prec.tableName, `${where}.tableName`),
138
+ fieldName: validateName(prec.fieldName, `${where}.fieldName`),
139
+ parameterWanted: validateBoolean(prec.parameterWanted, `${where}.parameterWanted`),
140
+ };
141
+ });
142
+ }
143
+ return def;
144
+ }
145
+ /**
146
+ * Overlay a (partial) definition on the stored lock object for a full-document PUT. Omitted keys
147
+ * keep their stored value.
148
+ *
149
+ * Changing the table set requires explicit lockParameters: the stored ones name the old tables, and
150
+ * when an UPDATE sends an empty list SAP re-derives them from the key fields with
151
+ * parameterWanted=false (live 8.16; a create derives them with true). That would silently produce
152
+ * ENQUEUE_/DEQUEUE_ modules without key parameters, so we refuse instead of guessing.
153
+ */
154
+ export function mergeLockObjectDefinition(existing, def) {
155
+ const primaryTable = def.primaryTable ?? existing.primaryTable;
156
+ const secondaryTables = def.secondaryTables ?? existing.secondaryTables;
157
+ const tableKey = (p, s) => [p.tableName, ...s.map((t) => t.tableName)].join(',');
158
+ const tablesChanged = tableKey(primaryTable, secondaryTables) !== tableKey(existing.primaryTable, existing.secondaryTables);
159
+ if (def.lockParameters?.length === 0) {
160
+ throw invalid('"lockParameters": [] is refused on update: SAP re-derives every parameter with parameterWanted=false, ' +
161
+ 'so ENQUEUE_ locks generically. List each parameter; set parameterWanted=false to exclude one.');
162
+ }
163
+ if (tablesChanged && def.lockParameters === undefined) {
164
+ throw invalid('changing primaryTable/secondaryTables requires "lockParameters" for the new tables ' +
165
+ '(one {"parameterName","tableName","fieldName","parameterWanted"} per key field). ' +
166
+ 'Without them SAP re-derives the parameters with parameterWanted=false.');
167
+ }
168
+ return {
169
+ allowRFC: def.allowRFC ?? existing.allowRFC,
170
+ primaryTable,
171
+ secondaryTables,
172
+ lockParameters: def.lockParameters ?? existing.lockParameters,
173
+ };
174
+ }
175
+ /**
176
+ * Build the create/update body. Element order matches SAP's own GET serialization; the read-only
177
+ * <enqu:lockModules> is omitted (a PUT without it is accepted, live-verified on 8.16).
178
+ */
179
+ export function buildLockObjectXml(params) {
180
+ const { definition } = params;
181
+ if (!definition.primaryTable) {
182
+ throw invalid('primaryTable is required, e.g. {"primaryTable":{"tableName":"ZMY_TABLE","lockMode":"E"}}.');
183
+ }
184
+ const table = (tag, t) => `<enqu:${tag}><enqu:tableName>${escapeXmlAttr(t.tableName)}</enqu:tableName><enqu:lockMode>${escapeXmlAttr(t.lockMode)}</enqu:lockMode></enqu:${tag}>`;
185
+ const secondary = (definition.secondaryTables ?? []).map((t) => table('secondaryTable', t)).join('');
186
+ const parameters = (definition.lockParameters ?? [])
187
+ .map((p) => `<enqu:lockParameter><enqu:parameterWanted>${p.parameterWanted}</enqu:parameterWanted><enqu:parameterName>${escapeXmlAttr(p.parameterName)}</enqu:parameterName><enqu:tableName>${escapeXmlAttr(p.tableName)}</enqu:tableName><enqu:fieldName>${escapeXmlAttr(p.fieldName)}</enqu:fieldName></enqu:lockParameter>`)
188
+ .join('');
189
+ return `<?xml version="1.0" encoding="UTF-8"?>
190
+ <enqu:lockobject xmlns:enqu="http://www.sap.com/adt/ddic/enqu" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:type="ENQU/DL" adtcore:name="${escapeXmlAttr(params.name)}" adtcore:description="${escapeXmlAttr(params.description)}" adtcore:masterLanguage="${escapeXmlAttr(params.masterLanguage)}"${params.responsibleAttr}>
191
+ <adtcore:packageRef adtcore:name="${escapeXmlAttr(params.package)}"/>
192
+ <enqu:content><enqu:allowRFC>${definition.allowRFC === true}</enqu:allowRFC>${table('primaryTable', definition.primaryTable)}<enqu:secondaryTables>${secondary}</enqu:secondaryTables><enqu:lockParameters>${parameters}</enqu:lockParameters></enqu:content>
193
+ </enqu:lockobject>`;
194
+ }
195
+ //# sourceMappingURL=lock-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock-object.js","sourceRoot":"","sources":["../../src/adt/lock-object.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,9 @@
31
31
  * failures rethrow.
32
32
  */
33
33
  import type { AdtClient } from './client.js';
34
- import { type RapHandlerRequirement } from './rap-handlers.js';
34
+ import type { AdtHttpClient } from './http.js';
35
+ import { type RapHandlerRequirement, type RapHandlerSourceSections } from './rap-handlers.js';
36
+ import { type SafetyConfig } from './safety.js';
35
37
  /** Options for `generateBehaviorImplementation`. */
36
38
  export interface RapGenerateOptions {
37
39
  /** Explicit BDEF name (overrides rootEntityRef auto-discovery). */
@@ -107,4 +109,6 @@ export declare function isRapGenerateResultSuccess(result: RapGenerateResult): b
107
109
  * behavior pool class. See module-level docs for the contract.
108
110
  */
109
111
  export declare function generateBehaviorImplementation(client: AdtClient, className: string, options?: RapGenerateOptions): Promise<RapGenerateResult>;
112
+ /** Read only the three RAP source sections. Serial reads keep one stateful SAP context in order. */
113
+ export declare function readRapClassSources(http: AdtHttpClient, safety: SafetyConfig, name: string): Promise<RapHandlerSourceSections>;
110
114
  //# sourceMappingURL=rap-generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rap-generate.d.ts","sourceRoot":"","sources":["../../src/adt/rap-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAE3B,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,MAAM,EAAE,eAAe,GAAG,UAAU,CAAC;IACrC,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,iGAAiG;IACjG,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gHAAgH;IAChH,cAAc,EAAE,OAAO,CAAC;IACxB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,UAAU,EAAE,qBAAqB,CAAC;IAClC,sEAAsE;IACtE,eAAe,EAAE,OAAO,CAAC;IACzB,kFAAkF;IAClF,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa,GAAG,iBAAiB,CAAC,CAAC;IACnE,qDAAqD;IACrD,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,4EAA4E;IAC5E,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,wFAAwF;IACxF,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAI7E;AA8CD;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAiN5B"}
1
+ {"version":3,"file":"rap-generate.d.ts","sourceRoot":"","sources":["../../src/adt/rap-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/E,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,MAAM,EAAE,eAAe,GAAG,UAAU,CAAC;IACrC,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,iGAAiG;IACjG,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gHAAgH;IAChH,cAAc,EAAE,OAAO,CAAC;IACxB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,UAAU,EAAE,qBAAqB,CAAC;IAClC,sEAAsE;IACtE,eAAe,EAAE,OAAO,CAAC;IACzB,kFAAkF;IAClF,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa,GAAG,iBAAiB,CAAC,CAAC;IACnE,qDAAqD;IACrD,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,4EAA4E;IAC5E,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,wFAAwF;IACxF,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAI7E;AA8CD;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAsL5B;AAED,oGAAoG;AACpG,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,wBAAwB,CAAC,CAqBnC"}
@@ -32,8 +32,9 @@
32
32
  */
33
33
  import { lockObject, unlockObject, updateSource } from './crud.js';
34
34
  import { activateBatch } from './devtools.js';
35
- import { AdtApiError, AdtSafetyError } from './errors.js';
35
+ import { AdtApiError, AdtSafetyError, isNotFoundError } from './errors.js';
36
36
  import { applyRapHandlerScaffold, extractRapHandlerRequirements, findMissingRapHandlerImplementationStubs, findMissingRapHandlerRequirements, } from './rap-handlers.js';
37
+ import { checkOperation, OperationType } from './safety.js';
37
38
  /**
38
39
  * Classify a `generate_behavior_implementation` outcome as MCP success vs error.
39
40
  *
@@ -117,108 +118,100 @@ export async function generateBehaviorImplementation(client, className, options
117
118
  `class metadata has no rootEntityRef. Pass an explicit "bdefName" parameter to override.`);
118
119
  }
119
120
  bdefName = bdefName.toUpperCase();
120
- // ── Phase 2: read sources + cross-validate ────────────────────────────
121
- const structured = await client.getClassStructured(cleanClassName);
122
- const mainSource = structured.main ?? '';
123
- const definitionsSource = structured.definitions ?? '';
124
- const implementationsSource = structured.implementations ?? '';
125
121
  const bdefRead = await client.getBdef(bdefName);
126
122
  const bdefSource = bdefRead.source;
127
- const mainBdefMatch = FOR_BEHAVIOR_OF_RE.exec(mainSource);
128
- const bdefClassMatch = MANAGED_IMPL_RE.exec(bdefSource);
129
- const mainBdefRef = mainBdefMatch?.[1]?.toUpperCase();
130
- const bdefClassRef = bdefClassMatch?.[1]?.toUpperCase();
131
- const validation = {
132
- mainHasForBehaviorOf: Boolean(mainBdefRef),
133
- bdefBindsClass: Boolean(bdefClassRef),
134
- };
135
- const mismatches = [];
136
- if (!mainBdefRef) {
137
- mismatches.push(`MAIN source for ${cleanClassName} does not contain "FOR BEHAVIOR OF <bdef>"`);
138
- }
139
- else if (mainBdefRef !== bdefName) {
140
- mismatches.push(`MAIN binds BDEF ${mainBdefRef} but discovery resolved to ${bdefName}`);
141
- }
142
- if (!bdefClassRef) {
143
- mismatches.push(`BDEF ${bdefName} does not contain "managed implementation in class <class> unique"`);
144
- }
145
- else if (bdefClassRef !== cleanClassName.toUpperCase()) {
146
- mismatches.push(`BDEF ${bdefName} binds class ${bdefClassRef} but we are generating for ${cleanClassName}`);
147
- }
148
- if (mismatches.length > 0) {
149
- validation.mismatchReason = mismatches.join('; ');
150
- }
151
- if (validation.mismatchReason && !dryRun) {
152
- throw new AdtSafetyError(`generate_behavior_implementation: cross-reference validation failed (${validation.mismatchReason}). ` +
153
- `Refusing to mutate. Re-run with dryRun=true to inspect the report and fix the source files first.`);
154
- }
155
- // ── Phase 3: scaffold plan ────────────────────────────────────────────
156
- let requirements = extractRapHandlerRequirements(bdefSource);
157
- if (targetAlias) {
158
- requirements = requirements.filter((req) => req.entityAlias.toLowerCase() === targetAlias);
159
- }
160
- const combinedSource = [mainSource, definitionsSource, implementationsSource].filter(Boolean).join('\n\n');
161
- const missingSignatures = findMissingRapHandlerRequirements(requirements, combinedSource);
162
- const missingStubs = findMissingRapHandlerImplementationStubs(requirements, combinedSource);
163
- const scaffoldPlan = applyRapHandlerScaffold({
164
- main: mainSource,
165
- definitions: definitionsSource || undefined,
166
- implementations: implementationsSource || undefined,
167
- }, missingSignatures, missingStubs);
168
- const result = {
169
- discovery: {
170
- className: cleanClassName,
171
- bdefName,
172
- source: discoverySource,
173
- classCategory: metadata.category,
174
- },
175
- validation,
176
- scaffoldChanged: scaffoldPlan.changedSections.length > 0,
177
- changedSections: scaffoldPlan.changedSections.filter((section) => section === 'main' || section === 'definitions' || section === 'implementations'),
178
- inserted: {
179
- signatures: scaffoldPlan.insertedSignatureCount,
180
- stubs: scaffoldPlan.insertedImplementationStubCount,
181
- autoCreatedSkeletons: (scaffoldPlan.skeletons?.createdDefinitions.length ?? 0) +
182
- (scaffoldPlan.skeletons?.createdImplementations.length ?? 0),
183
- },
184
- required: requirements,
185
- dryRun,
186
- };
187
- // Dry-run short-circuits before any side effects.
188
- if (dryRun) {
189
- return result;
190
- }
191
123
  const objectUrl = classObjectUrl(cleanClassName);
192
- // ── Phase 4: write (only when scaffold has changes) ───────────────────
193
- // When scaffoldChanged=false, all handlers are already in place — skip the
194
- // lock+write cycle entirely. Activation still runs below if requested, because
195
- // a populated-but-inactive class is a realistic rerun/recovery state after
196
- // earlier manual include writes (Codex review note on PR #260).
197
- if (result.scaffoldChanged) {
198
- await client.http.withStatefulSession(async (session) => {
199
- const lock = await lockObject(session, client.safety, objectUrl, 'MODIFY');
200
- const effectiveTransport = transport ?? (lock.corrNr || undefined);
201
- try {
202
- if (scaffoldPlan.changed.main && scaffoldPlan.sections.main !== mainSource) {
203
- await updateSource(session, client.safety, classMainSourceUrl(cleanClassName), scaffoldPlan.sections.main, lock.lockHandle, effectiveTransport);
204
- }
205
- if (scaffoldPlan.changed.definitions && scaffoldPlan.sections.definitions) {
206
- await updateSource(session, client.safety, classIncludeUrlFor(cleanClassName, 'definitions'), scaffoldPlan.sections.definitions, lock.lockHandle, effectiveTransport);
207
- }
208
- if (scaffoldPlan.changed.implementations && scaffoldPlan.sections.implementations) {
209
- await updateSource(session, client.safety, classIncludeUrlFor(cleanClassName, 'implementations'), scaffoldPlan.sections.implementations, lock.lockHandle, effectiveTransport);
210
- }
211
- }
212
- finally {
213
- try {
214
- await unlockObject(session, objectUrl, lock.lockHandle);
215
- }
216
- catch {
217
- // best-effort-cleanup: surface the original error, not an unlock failure
218
- }
219
- }
220
- });
221
- }
124
+ const scaffold = async (session, save) => {
125
+ // Read the editable view through the locked session before deriving replacements.
126
+ const structured = await readRapClassSources(session, client.safety, cleanClassName);
127
+ const mainSource = structured.main;
128
+ const definitionsSource = structured.definitions ?? '';
129
+ const implementationsSource = structured.implementations ?? '';
130
+ const mainBdefMatch = FOR_BEHAVIOR_OF_RE.exec(mainSource);
131
+ const bdefClassMatch = MANAGED_IMPL_RE.exec(bdefSource);
132
+ const mainBdefRef = mainBdefMatch?.[1]?.toUpperCase();
133
+ const bdefClassRef = bdefClassMatch?.[1]?.toUpperCase();
134
+ const validation = {
135
+ mainHasForBehaviorOf: Boolean(mainBdefRef),
136
+ bdefBindsClass: Boolean(bdefClassRef),
137
+ };
138
+ const mismatches = [];
139
+ if (!mainBdefRef) {
140
+ mismatches.push(`MAIN source for ${cleanClassName} does not contain "FOR BEHAVIOR OF <bdef>"`);
141
+ }
142
+ else if (mainBdefRef !== bdefName) {
143
+ mismatches.push(`MAIN binds BDEF ${mainBdefRef} but discovery resolved to ${bdefName}`);
144
+ }
145
+ if (!bdefClassRef) {
146
+ mismatches.push(`BDEF ${bdefName} does not contain "managed implementation in class <class> unique"`);
147
+ }
148
+ else if (bdefClassRef !== cleanClassName.toUpperCase()) {
149
+ mismatches.push(`BDEF ${bdefName} binds class ${bdefClassRef} but we are generating for ${cleanClassName}`);
150
+ }
151
+ if (mismatches.length > 0) {
152
+ validation.mismatchReason = mismatches.join('; ');
153
+ }
154
+ if (validation.mismatchReason && !dryRun) {
155
+ throw new AdtSafetyError(`generate_behavior_implementation: cross-reference validation failed (${validation.mismatchReason}). ` +
156
+ `Refusing to mutate. Re-run with dryRun=true to inspect the report and fix the source files first.`);
157
+ }
158
+ // ── Phase 3: scaffold plan ────────────────────────────────────────────
159
+ let requirements = extractRapHandlerRequirements(bdefSource);
160
+ if (targetAlias) {
161
+ requirements = requirements.filter((req) => req.entityAlias.toLowerCase() === targetAlias);
162
+ }
163
+ const combinedSource = [mainSource, definitionsSource, implementationsSource].filter(Boolean).join('\n\n');
164
+ const missingSignatures = findMissingRapHandlerRequirements(requirements, combinedSource);
165
+ const missingStubs = findMissingRapHandlerImplementationStubs(requirements, combinedSource);
166
+ const scaffoldPlan = applyRapHandlerScaffold({
167
+ main: mainSource,
168
+ definitions: definitionsSource || undefined,
169
+ implementations: implementationsSource || undefined,
170
+ }, missingSignatures, missingStubs);
171
+ const result = {
172
+ discovery: {
173
+ className: cleanClassName,
174
+ bdefName,
175
+ source: discoverySource,
176
+ classCategory: metadata.category,
177
+ },
178
+ validation,
179
+ scaffoldChanged: scaffoldPlan.changedSections.length > 0,
180
+ changedSections: scaffoldPlan.changedSections.filter((section) => section === 'main' || section === 'definitions' || section === 'implementations'),
181
+ inserted: {
182
+ signatures: scaffoldPlan.insertedSignatureCount,
183
+ stubs: scaffoldPlan.insertedImplementationStubCount,
184
+ autoCreatedSkeletons: (scaffoldPlan.skeletons?.createdDefinitions.length ?? 0) +
185
+ (scaffoldPlan.skeletons?.createdImplementations.length ?? 0),
186
+ },
187
+ required: requirements,
188
+ dryRun,
189
+ };
190
+ if (!save)
191
+ return result;
192
+ if (scaffoldPlan.changed.main && scaffoldPlan.sections.main !== mainSource) {
193
+ await save(classMainSourceUrl(cleanClassName), scaffoldPlan.sections.main);
194
+ }
195
+ if (scaffoldPlan.changed.definitions && scaffoldPlan.sections.definitions) {
196
+ await save(classIncludeUrlFor(cleanClassName, 'definitions'), scaffoldPlan.sections.definitions);
197
+ }
198
+ if (scaffoldPlan.changed.implementations && scaffoldPlan.sections.implementations) {
199
+ await save(classIncludeUrlFor(cleanClassName, 'implementations'), scaffoldPlan.sections.implementations);
200
+ }
201
+ return result;
202
+ };
203
+ if (dryRun)
204
+ return scaffold(client.http);
205
+ // Even activation-only reruns need the lock to establish that no source change is needed.
206
+ const result = await client.http.withStatefulSession(async (session) => {
207
+ const lock = await lockObject(session, client.safety, objectUrl, 'MODIFY');
208
+ try {
209
+ return await scaffold(session, (url, source) => updateSource(session, client.safety, url, source, lock.lockHandle, transport ?? (lock.corrNr || undefined)));
210
+ }
211
+ finally {
212
+ await unlockObject(session, objectUrl, lock.lockHandle);
213
+ }
214
+ });
222
215
  // ── Phase 5: optional activation ──────────────────────────────────────
223
216
  if (activateRequested) {
224
217
  try {
@@ -259,4 +252,23 @@ export async function generateBehaviorImplementation(client, className, options
259
252
  }
260
253
  return result;
261
254
  }
255
+ /** Read only the three RAP source sections. Serial reads keep one stateful SAP context in order. */
256
+ export async function readRapClassSources(http, safety, name) {
257
+ checkOperation(safety, OperationType.Read, 'GetRapClassSources');
258
+ const sections = {
259
+ main: (await http.get(classMainSourceUrl(name), { 'Cache-Control': 'no-cache' })).body,
260
+ };
261
+ for (const include of ['definitions', 'implementations']) {
262
+ try {
263
+ sections[include] = (await http.get(classIncludeUrlFor(name, include), { 'Cache-Control': 'no-cache' }, {
264
+ suppressNotFoundLog: true,
265
+ })).body;
266
+ }
267
+ catch (err) {
268
+ if (!isNotFoundError(err))
269
+ throw err;
270
+ }
271
+ }
272
+ return sections;
273
+ }
262
274
  //# sourceMappingURL=rap-generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rap-generate.js","sourceRoot":"","sources":["../../src/adt/rap-generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rap-generate.js","sourceRoot":"","sources":["../../src/adt/rap-generate.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export declare function serverDrivenSourceFormat(code: string): SdoSourceFormat;
55
55
  * here is the ONLY step needed to expose it — `btp: true` by construction (runtime availability is
56
56
  * discovery-gated per system, so a type absent on a release degrades cleanly).
57
57
  */
58
- export declare const SDO_TYPES: readonly ['DESD', 'DTSC', 'CSNM', 'EVTB', 'EVTO', 'COTA', 'DSFD', 'DTDC', 'UIAD', 'DRTY'];
58
+ export declare const SDO_TYPES: readonly ['DESD', 'DTSC', 'CSNM', 'EVTB', 'EVTO', 'COTA', 'DSFD', 'DTDC', 'UIAD', 'DRTY', 'APLO', 'SAJC', 'SAJT'];
59
59
  /** Curated registry of high-value server-driven object types — keys are exactly SDO_TYPES. */
60
60
  export declare const SDO_REGISTRY: {
61
61
  DESD: {
@@ -168,6 +168,39 @@ export declare const SDO_REGISTRY: {
168
168
  metadataContentType: string;
169
169
  sourceFormat: "text";
170
170
  };
171
+ APLO: {
172
+ metadataRootLocalName: 'blueSource';
173
+ metadataRootQName: 'blue:blueSource';
174
+ metadataNamespace: 'http://www.sap.com/wbobj/blue';
175
+ discoveryMarker: 'blues';
176
+ href: string;
177
+ label: string;
178
+ createType: string;
179
+ metadataContentType: string;
180
+ sourceFormat: "json";
181
+ };
182
+ SAJC: {
183
+ metadataRootLocalName: 'blueSource';
184
+ metadataRootQName: 'blue:blueSource';
185
+ metadataNamespace: 'http://www.sap.com/wbobj/blue';
186
+ discoveryMarker: 'blues';
187
+ href: string;
188
+ label: string;
189
+ createType: string;
190
+ metadataContentType: string;
191
+ sourceFormat: "json";
192
+ };
193
+ SAJT: {
194
+ metadataRootLocalName: 'blueSource';
195
+ metadataRootQName: 'blue:blueSource';
196
+ metadataNamespace: 'http://www.sap.com/wbobj/blue';
197
+ discoveryMarker: 'blues';
198
+ href: string;
199
+ label: string;
200
+ createType: string;
201
+ metadataContentType: string;
202
+ sourceFormat: "json";
203
+ };
171
204
  };
172
205
  /** True when `code` is one of the registered server-driven object types. */
173
206
  export declare function isServerDrivenObjectType(code: string): boolean;
@@ -213,9 +246,10 @@ export declare function serverDrivenUnavailableMessage(tool: string, code: strin
213
246
  /**
214
247
  * Read a server-driven object: its metadata (blue:blueSource or dtdc:dtdcSource) + source (AFF JSON
215
248
  * or DDL text). The source is JSON-parsed when possible (raw text otherwise). Throws AdtApiError 404
216
- * for a nonexistent object. Gate availability with supportsServerDrivenObject() on unknown systems.
249
+ * for a nonexistent object. Explicit versions must match the returned metadata; omission keeps
250
+ * SAP's developer view. Gate availability with supportsServerDrivenObject() on unknown systems.
217
251
  */
218
- export declare function getServerDrivenObject(http: AdtHttpClient, safety: SafetyConfig, code: string, name: string): Promise<ServerDrivenObjectResult>;
252
+ export declare function getServerDrivenObject(http: AdtHttpClient, safety: SafetyConfig, code: string, name: string, version?: 'active' | 'inactive'): Promise<ServerDrivenObjectResult>;
219
253
  /**
220
254
  * Build the minimal metadata create body for a server-driven object — the per-type root element
221
255
  * (blue:blueSource or dtdc:dtdcSource) with the verified `createType` for `adtcore:type`
@@ -229,7 +263,7 @@ export declare function getServerDrivenObject(http: AdtHttpClient, safety: Safet
229
263
  * registered type.
230
264
  */
231
265
  export type UiadLanguageVersion = 'standard' | 'keyUser' | 'cloudDevelopment';
232
- export declare function buildServerDrivenMetadataXml(code: string, name: string, pkg: string, description: string, uiadLanguageVersion?: UiadLanguageVersion): string;
266
+ export declare function buildServerDrivenMetadataXml(code: string, name: string, pkg: string, description: string, uiadLanguageVersion?: UiadLanguageVersion, creationProperties?: Record<string, string>): string;
233
267
  /** Options shared by the SDO write operations. */
234
268
  export interface ServerDrivenWriteOptions {
235
269
  transport?: string;
@@ -239,14 +273,15 @@ export interface ServerDrivenWriteOptions {
239
273
  }
240
274
  /**
241
275
  * Create a server-driven object (metadata only — POST the <blue:blueSource> body to the collection
242
- * href with the type's blues content-type). Leaves the object INACTIVE; callers follow with source
243
- * write + activation. Returns the raw response body. Verified live: 201 for all 6 registered types.
276
+ * href with the type's metadata content-type). APLO is immediately active; other generic types
277
+ * need activation. Job objects also need their creation reference. Returns the raw response body.
244
278
  */
245
279
  export declare function createServerDrivenObject(http: AdtHttpClient, safety: SafetyConfig, code: string, name: string, opts: {
246
280
  package: string;
247
281
  description: string;
248
282
  transport?: string;
249
283
  uiadLanguageVersion?: UiadLanguageVersion;
284
+ creationProperties?: Record<string, string>;
250
285
  }): Promise<string>;
251
286
  /**
252
287
  * Write the source of a server-driven object: lock → PUT …/source/main → unlock (guaranteed via
@@ -256,9 +291,6 @@ export declare function createServerDrivenObject(http: AdtHttpClient, safety: Sa
256
291
  * crud.ts safeUpdateSource).
257
292
  */
258
293
  export declare function updateServerDrivenObjectSource(http: AdtHttpClient, safety: SafetyConfig, code: string, name: string, source: string, opts?: ServerDrivenWriteOptions): Promise<void>;
259
- /**
260
- * Delete a server-driven object: lock → http.delete(…?lockHandle=…) → best-effort unlock.
261
- * The unlock is swallowed on failure (the object is already gone after the delete).
262
- */
294
+ /** Delete under a lock, then verify canonical metadata absence in a fresh request. */
263
295
  export declare function deleteServerDrivenObject(http: AdtHttpClient, safety: SafetyConfig, code: string, name: string, opts?: ServerDrivenWriteOptions): Promise<void>;
264
296
  //# sourceMappingURL=server-driven.d.ts.map