@mcp-abap-adt/adt-clients 0.3.22 → 1.0.1

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 (38) hide show
  1. package/README.md +37 -0
  2. package/dist/batch/AdtClientBatch.d.ts +40 -0
  3. package/dist/batch/AdtClientBatch.d.ts.map +1 -0
  4. package/dist/batch/AdtClientBatch.js +132 -0
  5. package/dist/batch/AdtRuntimeClientBatch.d.ts +14 -0
  6. package/dist/batch/AdtRuntimeClientBatch.d.ts.map +1 -0
  7. package/dist/batch/AdtRuntimeClientBatch.js +55 -0
  8. package/dist/batch/BatchRecordingConnection.d.ts +17 -0
  9. package/dist/batch/BatchRecordingConnection.d.ts.map +1 -0
  10. package/dist/batch/BatchRecordingConnection.js +76 -0
  11. package/dist/batch/buildBatchPayload.d.ts +7 -0
  12. package/dist/batch/buildBatchPayload.d.ts.map +1 -0
  13. package/dist/batch/buildBatchPayload.js +59 -0
  14. package/dist/batch/index.d.ts +7 -0
  15. package/dist/batch/index.d.ts.map +1 -0
  16. package/dist/batch/index.js +18 -0
  17. package/dist/batch/parseBatchResponse.d.ts +4 -0
  18. package/dist/batch/parseBatchResponse.d.ts.map +1 -0
  19. package/dist/batch/parseBatchResponse.js +46 -0
  20. package/dist/batch/types.d.ts +18 -0
  21. package/dist/batch/types.d.ts.map +1 -0
  22. package/dist/batch/types.js +2 -0
  23. package/dist/core/dataElement/read.d.ts.map +1 -1
  24. package/dist/core/dataElement/read.js +4 -1
  25. package/dist/core/domain/read.d.ts.map +1 -1
  26. package/dist/core/domain/read.js +4 -1
  27. package/dist/core/package/AdtPackage.d.ts.map +1 -1
  28. package/dist/core/package/AdtPackage.js +3 -0
  29. package/dist/core/package/create.js +1 -1
  30. package/dist/core/package/types.d.ts +2 -0
  31. package/dist/core/package/types.d.ts.map +1 -1
  32. package/dist/core/package/update.js +1 -1
  33. package/dist/index.d.ts +4 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +7 -1
  36. package/dist/runtime/debugger/abap.d.ts.map +1 -1
  37. package/dist/runtime/debugger/abap.js +7 -18
  38. package/package.json +1 -1
package/README.md CHANGED
@@ -6,8 +6,10 @@ TypeScript clients for SAP ABAP Development Tools (ADT).
6
6
 
7
7
  - ✅ **Client API** – simplified interface for common operations:
8
8
  - `AdtClient` – high-level CRUD API with automatic operation chains
9
+ - `AdtClientBatch` – batch mode: multiple read operations in a single HTTP round-trip
9
10
  - `AdtExecutor` – execution API via `IExecutor` contracts (class/program, with profiling)
10
11
  - `AdtRuntimeClient` – stable runtime operations (ABAP debugger, traces, logs, dumps)
12
+ - `AdtRuntimeClientBatch` – batch mode for runtime operations
11
13
  - `AdtRuntimeClientExperimental` – runtime APIs in progress (for example AMDP debugger)
12
14
  - `AdtClientsWS` – realtime WebSocket facade for event-driven workflows
13
15
  - ✅ **ABAP Unit test support** – run and manage ABAP Unit tests (class and CDS view tests)
@@ -110,6 +112,12 @@ npm install @mcp-abap-adt/adt-clients
110
112
  - Includes debugger-session facade: listen, attach, step, stack, variables
111
113
  - Example: `await wsClient.request('debugger.listen', { timeoutSeconds: 30 })`
112
114
 
115
+ 6. **AdtClientBatch** / **AdtRuntimeClientBatch**
116
+ - Execute multiple independent read operations in a single HTTP round-trip
117
+ - Uses SAP ADT batch endpoint (`POST /sap/bc/adt/debugger/batch`) with `multipart/mixed` payloads
118
+ - Same factory API as `AdtClient` / `AdtRuntimeClient` — record calls, then `batchExecute()`
119
+ - Example: `const batch = new AdtClientBatch(connection); batch.getClass().readMetadata({...}); await batch.batchExecute();`
120
+
113
121
  ## Supported Object Types
114
122
 
115
123
  | Object Type | AdtClient |
@@ -192,6 +200,35 @@ await debuggerSession.listen({ timeoutSeconds: 60 });
192
200
  await debuggerSession.step({ action: 'step_over' });
193
201
  ```
194
202
 
203
+ ### Using AdtClientBatch (Batch Read Operations)
204
+
205
+ `AdtClientBatch` sends multiple independent read operations in a single HTTP round-trip via `multipart/mixed` batch requests.
206
+
207
+ ```typescript
208
+ import { AdtClientBatch } from '@mcp-abap-adt/adt-clients';
209
+
210
+ const batch = new AdtClientBatch(connection, console);
211
+
212
+ // Record operations (not yet executed)
213
+ const classPromise = batch.getClass().readMetadata({ className: 'CL_ABAP_TYPEDESCR' });
214
+ const domainPromise = batch.getDomain().readMetadata({ domainName: 'MANDT' });
215
+ const dePromise = batch.getDataElement().readMetadata({ dataElementName: 'MANDT' });
216
+
217
+ // Execute all in one HTTP request
218
+ await batch.batchExecute();
219
+
220
+ // Resolve individual results
221
+ const classState = await classPromise;
222
+ const domainState = await domainPromise;
223
+ const deState = await dePromise;
224
+ ```
225
+
226
+ **Batch-safe operations** (single-step, no chained awaits):
227
+ - `read()`, `readMetadata()`, `readTransport()` — single GET
228
+ - `check()`, `validate()`, `activate()` — single POST
229
+
230
+ **NOT batch-safe** (multi-step chains): `create()`, `update()`, `delete()`.
231
+
195
232
  ### ABAP Debugger Step Operations via Batch Endpoint
196
233
 
197
234
  `AdtRuntimeClient` executes step operations through debugger batch requests (`POST /sap/bc/adt/debugger/batch`) using `multipart/mixed` payloads.
@@ -0,0 +1,40 @@
1
+ import type { IAbapConnection, IAdtResponse, ILogger } from '@mcp-abap-adt/interfaces';
2
+ import type { IAdtClientOptions } from '../clients/AdtClient';
3
+ import { BatchRecordingConnection } from './BatchRecordingConnection';
4
+ export declare class AdtClientBatch {
5
+ private recorder;
6
+ private innerClient;
7
+ private realConnection;
8
+ constructor(connection: IAbapConnection, logger?: ILogger, options?: IAdtClientOptions);
9
+ getClass(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IClassConfig, import("..").IClassState>;
10
+ getProgram(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IProgramConfig, import("..").IProgramState>;
11
+ getInterface(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IInterfaceConfig, import("..").IInterfaceState>;
12
+ getDomain(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IDomainConfig, import("..").IDomainState>;
13
+ getDataElement(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IDataElementConfig, import("..").IDataElementState>;
14
+ getStructure(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IStructureConfig, import("..").IStructureState>;
15
+ getTable(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").ITableConfig, import("..").ITableState>;
16
+ getTableType(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").ITableTypeConfig, import("..").ITableTypeState>;
17
+ getView(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IViewConfig, import("..").IViewState>;
18
+ getFunctionGroup(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IFunctionGroupConfig, import("..").IFunctionGroupState>;
19
+ getFunctionModule(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IFunctionModuleConfig, import("..").IFunctionModuleState>;
20
+ getPackage(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IPackageConfig, import("..").IPackageState>;
21
+ getServiceDefinition(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IServiceDefinitionConfig, import("..").IServiceDefinitionState>;
22
+ getServiceBinding(): import("..").IAdtServiceBinding;
23
+ getService(): import("..").IAdtServiceBinding;
24
+ getBehaviorDefinition(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IBehaviorDefinitionConfig, import("..").IBehaviorDefinitionState>;
25
+ getBehaviorImplementation(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IBehaviorImplementationConfig, import("..").IBehaviorImplementationState>;
26
+ getMetadataExtension(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IMetadataExtensionConfig, import("..").IMetadataExtensionState>;
27
+ getEnhancement(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IEnhancementConfig, import("..").IEnhancementState>;
28
+ getUnitTest(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").IUnitTestConfig, import("..").IUnitTestState>;
29
+ getCdsUnitTest(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").ICdsUnitTestConfig, import("..").ICdsUnitTestState>;
30
+ getRequest(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").ITransportConfig, import("..").ITransportState>;
31
+ getUtils(): import("../core/shared").AdtUtils;
32
+ getLocalTestClass(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").ILocalTestClassConfig, import("..").IClassState>;
33
+ getLocalTypes(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").ILocalTypesConfig, import("..").IClassState>;
34
+ getLocalDefinitions(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").ILocalDefinitionsConfig, import("..").IClassState>;
35
+ getLocalMacros(): import("@mcp-abap-adt/interfaces").IAdtObject<import("..").ILocalMacrosConfig, import("..").IClassState>;
36
+ batchExecute(): Promise<IAdtResponse[]>;
37
+ reset(): void;
38
+ getRecorder(): BatchRecordingConnection;
39
+ }
40
+ //# sourceMappingURL=AdtClientBatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdtClientBatch.d.ts","sourceRoot":"","sources":["../../src/batch/AdtClientBatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,OAAO,EACR,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAItE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,cAAc,CAAkB;gBAGtC,UAAU,EAAE,eAAe,EAC3B,MAAM,CAAC,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,iBAAiB;IAQ7B,QAAQ;IAGR,UAAU;IAGV,YAAY;IAGZ,SAAS;IAGT,cAAc;IAGd,YAAY;IAGZ,QAAQ;IAGR,YAAY;IAGZ,OAAO;IAGP,gBAAgB;IAGhB,iBAAiB;IAGjB,UAAU;IAGV,oBAAoB;IAGpB,iBAAiB;IAGjB,UAAU;IAGV,qBAAqB;IAGrB,yBAAyB;IAGzB,oBAAoB;IAGpB,cAAc;IAGd,WAAW;IAGX,cAAc;IAGd,UAAU;IAGV,QAAQ;IAGR,iBAAiB;IAGjB,aAAa;IAGb,mBAAmB;IAGnB,cAAc;IAIR,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAgC7C,KAAK,IAAI,IAAI;IAIb,WAAW,IAAI,wBAAwB;CAGxC"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdtClientBatch = void 0;
4
+ const AdtClient_1 = require("../clients/AdtClient");
5
+ const BatchRecordingConnection_1 = require("./BatchRecordingConnection");
6
+ const buildBatchPayload_1 = require("./buildBatchPayload");
7
+ const parseBatchResponse_1 = require("./parseBatchResponse");
8
+ class AdtClientBatch {
9
+ recorder;
10
+ innerClient;
11
+ realConnection;
12
+ constructor(connection, logger, options) {
13
+ this.realConnection = connection;
14
+ this.recorder = new BatchRecordingConnection_1.BatchRecordingConnection(connection);
15
+ this.innerClient = new AdtClient_1.AdtClient(this.recorder, logger, options);
16
+ }
17
+ // Mirror all AdtClient factory methods
18
+ getClass() {
19
+ return this.innerClient.getClass();
20
+ }
21
+ getProgram() {
22
+ return this.innerClient.getProgram();
23
+ }
24
+ getInterface() {
25
+ return this.innerClient.getInterface();
26
+ }
27
+ getDomain() {
28
+ return this.innerClient.getDomain();
29
+ }
30
+ getDataElement() {
31
+ return this.innerClient.getDataElement();
32
+ }
33
+ getStructure() {
34
+ return this.innerClient.getStructure();
35
+ }
36
+ getTable() {
37
+ return this.innerClient.getTable();
38
+ }
39
+ getTableType() {
40
+ return this.innerClient.getTableType();
41
+ }
42
+ getView() {
43
+ return this.innerClient.getView();
44
+ }
45
+ getFunctionGroup() {
46
+ return this.innerClient.getFunctionGroup();
47
+ }
48
+ getFunctionModule() {
49
+ return this.innerClient.getFunctionModule();
50
+ }
51
+ getPackage() {
52
+ return this.innerClient.getPackage();
53
+ }
54
+ getServiceDefinition() {
55
+ return this.innerClient.getServiceDefinition();
56
+ }
57
+ getServiceBinding() {
58
+ return this.innerClient.getServiceBinding();
59
+ }
60
+ getService() {
61
+ return this.innerClient.getService();
62
+ }
63
+ getBehaviorDefinition() {
64
+ return this.innerClient.getBehaviorDefinition();
65
+ }
66
+ getBehaviorImplementation() {
67
+ return this.innerClient.getBehaviorImplementation();
68
+ }
69
+ getMetadataExtension() {
70
+ return this.innerClient.getMetadataExtension();
71
+ }
72
+ getEnhancement() {
73
+ return this.innerClient.getEnhancement();
74
+ }
75
+ getUnitTest() {
76
+ return this.innerClient.getUnitTest();
77
+ }
78
+ getCdsUnitTest() {
79
+ return this.innerClient.getCdsUnitTest();
80
+ }
81
+ getRequest() {
82
+ return this.innerClient.getRequest();
83
+ }
84
+ getUtils() {
85
+ return this.innerClient.getUtils();
86
+ }
87
+ getLocalTestClass() {
88
+ return this.innerClient.getLocalTestClass();
89
+ }
90
+ getLocalTypes() {
91
+ return this.innerClient.getLocalTypes();
92
+ }
93
+ getLocalDefinitions() {
94
+ return this.innerClient.getLocalDefinitions();
95
+ }
96
+ getLocalMacros() {
97
+ return this.innerClient.getLocalMacros();
98
+ }
99
+ async batchExecute() {
100
+ const parts = this.recorder.getRecordedParts();
101
+ if (parts.length === 0) {
102
+ return [];
103
+ }
104
+ const payload = (0, buildBatchPayload_1.buildBatchPayload)(parts);
105
+ const response = await this.realConnection.makeAdtRequest({
106
+ url: '/sap/bc/adt/debugger/batch',
107
+ method: 'POST',
108
+ timeout: 30000,
109
+ data: payload.body,
110
+ headers: {
111
+ 'Content-Type': `multipart/mixed; boundary=${payload.boundary}`,
112
+ Accept: 'multipart/mixed',
113
+ },
114
+ });
115
+ const contentType = String(response.headers?.['content-type'] ?? '');
116
+ const parsed = (0, parseBatchResponse_1.parseBatchResponse)(String(response.data), contentType);
117
+ this.recorder.resolveAll(parsed);
118
+ return parsed.map((p) => ({
119
+ data: p.data,
120
+ status: p.status,
121
+ statusText: p.statusText,
122
+ headers: p.headers,
123
+ }));
124
+ }
125
+ reset() {
126
+ this.recorder.reset();
127
+ }
128
+ getRecorder() {
129
+ return this.recorder;
130
+ }
131
+ }
132
+ exports.AdtClientBatch = AdtClientBatch;
@@ -0,0 +1,14 @@
1
+ import type { IAbapConnection, IAdtResponse, ILogger } from '@mcp-abap-adt/interfaces';
2
+ import { AdtRuntimeClient } from '../clients/AdtRuntimeClient';
3
+ import { BatchRecordingConnection } from './BatchRecordingConnection';
4
+ export declare class AdtRuntimeClientBatch {
5
+ private recorder;
6
+ private innerRuntime;
7
+ private realConnection;
8
+ constructor(connection: IAbapConnection, logger?: ILogger);
9
+ getInnerClient(): AdtRuntimeClient;
10
+ batchExecute(): Promise<IAdtResponse[]>;
11
+ reset(): void;
12
+ getRecorder(): BatchRecordingConnection;
13
+ }
14
+ //# sourceMappingURL=AdtRuntimeClientBatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdtRuntimeClientBatch.d.ts","sourceRoot":"","sources":["../../src/batch/AdtRuntimeClientBatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,OAAO,EACR,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAItE,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,cAAc,CAAkB;gBAE5B,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,OAAO;IAQzD,cAAc,IAAI,gBAAgB;IAI5B,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAgC7C,KAAK,IAAI,IAAI;IAIb,WAAW,IAAI,wBAAwB;CAGxC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdtRuntimeClientBatch = void 0;
4
+ const AdtRuntimeClient_1 = require("../clients/AdtRuntimeClient");
5
+ const BatchRecordingConnection_1 = require("./BatchRecordingConnection");
6
+ const buildBatchPayload_1 = require("./buildBatchPayload");
7
+ const parseBatchResponse_1 = require("./parseBatchResponse");
8
+ class AdtRuntimeClientBatch {
9
+ recorder;
10
+ innerRuntime;
11
+ realConnection;
12
+ constructor(connection, logger) {
13
+ this.realConnection = connection;
14
+ this.recorder = new BatchRecordingConnection_1.BatchRecordingConnection(connection);
15
+ this.innerRuntime = new AdtRuntimeClient_1.AdtRuntimeClient(this.recorder, logger);
16
+ }
17
+ // Mirror relevant AdtRuntimeClient methods — consumers use the inner client
18
+ // for recording, then call batchExecute() to flush.
19
+ getInnerClient() {
20
+ return this.innerRuntime;
21
+ }
22
+ async batchExecute() {
23
+ const parts = this.recorder.getRecordedParts();
24
+ if (parts.length === 0) {
25
+ return [];
26
+ }
27
+ const payload = (0, buildBatchPayload_1.buildBatchPayload)(parts);
28
+ const response = await this.realConnection.makeAdtRequest({
29
+ url: '/sap/bc/adt/debugger/batch',
30
+ method: 'POST',
31
+ timeout: 30000,
32
+ data: payload.body,
33
+ headers: {
34
+ 'Content-Type': `multipart/mixed; boundary=${payload.boundary}`,
35
+ Accept: 'multipart/mixed',
36
+ },
37
+ });
38
+ const contentType = String(response.headers?.['content-type'] ?? '');
39
+ const parsed = (0, parseBatchResponse_1.parseBatchResponse)(String(response.data), contentType);
40
+ this.recorder.resolveAll(parsed);
41
+ return parsed.map((p) => ({
42
+ data: p.data,
43
+ status: p.status,
44
+ statusText: p.statusText,
45
+ headers: p.headers,
46
+ }));
47
+ }
48
+ reset() {
49
+ this.recorder.reset();
50
+ }
51
+ getRecorder() {
52
+ return this.recorder;
53
+ }
54
+ }
55
+ exports.AdtRuntimeClientBatch = AdtRuntimeClientBatch;
@@ -0,0 +1,17 @@
1
+ import type { IAbapConnection, IAbapRequestOptions, IAdtResponse } from '@mcp-abap-adt/interfaces';
2
+ import type { IBatchRequestPart, IBatchResponsePart } from './types';
3
+ export declare class BatchRecordingConnection implements IAbapConnection {
4
+ private realConnection;
5
+ private parts;
6
+ private deferred;
7
+ constructor(realConnection: IAbapConnection);
8
+ getBaseUrl(): Promise<string>;
9
+ getSessionId(): string | null;
10
+ setSessionType(_type: 'stateful' | 'stateless'): void;
11
+ makeAdtRequest<T = any, D = any>(options: IAbapRequestOptions): Promise<IAdtResponse<T, D>>;
12
+ getRecordedParts(): IBatchRequestPart[];
13
+ resolveAll(responses: IBatchResponsePart[]): void;
14
+ reset(): void;
15
+ getRealConnection(): IAbapConnection;
16
+ }
17
+ //# sourceMappingURL=BatchRecordingConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchRecordingConnection.d.ts","sourceRoot":"","sources":["../../src/batch/BatchRecordingConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAOrE,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAA2B;gBAE/B,cAAc,EAAE,eAAe;IAI3C,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;IAIrD,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAC7B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAwB9B,gBAAgB,IAAI,iBAAiB,EAAE;IAIvC,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAmCjD,KAAK,IAAI,IAAI;IAKb,iBAAiB,IAAI,eAAe;CAGrC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatchRecordingConnection = void 0;
4
+ class BatchRecordingConnection {
5
+ realConnection;
6
+ parts = [];
7
+ deferred = [];
8
+ constructor(realConnection) {
9
+ this.realConnection = realConnection;
10
+ }
11
+ getBaseUrl() {
12
+ return this.realConnection.getBaseUrl();
13
+ }
14
+ getSessionId() {
15
+ return this.realConnection.getSessionId();
16
+ }
17
+ setSessionType(_type) {
18
+ // no-op — session management is handled by the outer batch request
19
+ }
20
+ makeAdtRequest(options) {
21
+ const part = {
22
+ method: options.method,
23
+ url: options.url,
24
+ headers: options.headers ?? {},
25
+ data: options.data != null ? String(options.data) : undefined,
26
+ params: options.params != null
27
+ ? options.params
28
+ : undefined,
29
+ };
30
+ this.parts.push(part);
31
+ const promise = new Promise((resolve, reject) => {
32
+ this.deferred.push({
33
+ resolve: resolve,
34
+ reject,
35
+ });
36
+ });
37
+ return promise;
38
+ }
39
+ getRecordedParts() {
40
+ return [...this.parts];
41
+ }
42
+ resolveAll(responses) {
43
+ if (responses.length !== this.deferred.length) {
44
+ const error = new Error(`Batch response count (${responses.length}) does not match recorded request count (${this.deferred.length})`);
45
+ for (const d of this.deferred) {
46
+ d.reject(error);
47
+ }
48
+ this.reset();
49
+ return;
50
+ }
51
+ for (let i = 0; i < responses.length; i++) {
52
+ const resp = responses[i];
53
+ const d = this.deferred[i];
54
+ if (resp.status >= 400) {
55
+ d.reject(new Error(`Batch part ${i} failed: ${resp.status} ${resp.statusText}`));
56
+ }
57
+ else {
58
+ d.resolve({
59
+ data: resp.data,
60
+ status: resp.status,
61
+ statusText: resp.statusText,
62
+ headers: resp.headers,
63
+ });
64
+ }
65
+ }
66
+ this.reset();
67
+ }
68
+ reset() {
69
+ this.parts = [];
70
+ this.deferred = [];
71
+ }
72
+ getRealConnection() {
73
+ return this.realConnection;
74
+ }
75
+ }
76
+ exports.BatchRecordingConnection = BatchRecordingConnection;
@@ -0,0 +1,7 @@
1
+ import type { IBatchPayload, IBatchRequestPart } from './types';
2
+ export declare function createBatchBoundary(): string;
3
+ export declare function createRequestId(): string;
4
+ export declare function serializeParams(params: Record<string, string>): string;
5
+ export declare function buildInnerRequest(part: IBatchRequestPart): string;
6
+ export declare function buildBatchPayload(parts: IBatchRequestPart[], boundary?: string): IBatchPayload;
7
+ //# sourceMappingURL=buildBatchPayload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildBatchPayload.d.ts","sourceRoot":"","sources":["../../src/batch/buildBatchPayload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,wBAAgB,mBAAmB,IAAI,MAAM,CAM5C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAMtE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAejE;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EAAE,EAC1B,QAAQ,SAAwB,GAC/B,aAAa,CAsBf"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBatchBoundary = createBatchBoundary;
4
+ exports.createRequestId = createRequestId;
5
+ exports.serializeParams = serializeParams;
6
+ exports.buildInnerRequest = buildInnerRequest;
7
+ exports.buildBatchPayload = buildBatchPayload;
8
+ function createBatchBoundary() {
9
+ const randomPart = typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'
10
+ ? crypto.randomUUID()
11
+ : `${Date.now()}_${Math.random().toString(16).slice(2)}`;
12
+ return `batch_${randomPart}`;
13
+ }
14
+ function createRequestId() {
15
+ const randomPart = typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'
16
+ ? crypto.randomUUID().replace(/-/g, '')
17
+ : `${Date.now()}${Math.random().toString(16).slice(2)}`;
18
+ return randomPart.slice(0, 32);
19
+ }
20
+ function serializeParams(params) {
21
+ const entries = Object.entries(params).filter(([, v]) => v !== undefined && v !== null);
22
+ if (entries.length === 0)
23
+ return '';
24
+ return `?${entries.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&')}`;
25
+ }
26
+ function buildInnerRequest(part) {
27
+ const queryString = part.params ? serializeParams(part.params) : '';
28
+ const requestLine = `${part.method} ${part.url}${queryString} HTTP/1.1`;
29
+ const headerEntries = Object.entries(part.headers);
30
+ const headerSection = headerEntries.length > 0
31
+ ? `\r\n${headerEntries.map(([key, value]) => `${key}:${value}`).join('\r\n')}`
32
+ : '';
33
+ // HTTP format: request-line [CRLF headers] CRLF CRLF [body]
34
+ if (part.data) {
35
+ return `${requestLine}${headerSection}\r\n\r\n${part.data}`;
36
+ }
37
+ return `${requestLine}${headerSection}\r\n\r\n`;
38
+ }
39
+ function buildBatchPayload(parts, boundary = createBatchBoundary()) {
40
+ if (!parts.length) {
41
+ throw new Error('At least one batch request is required');
42
+ }
43
+ const multipartParts = parts
44
+ .map((part) => {
45
+ const innerRequest = buildInnerRequest(part);
46
+ return [
47
+ `--${boundary}`,
48
+ 'Content-Type: application/http',
49
+ 'content-transfer-encoding: binary',
50
+ '',
51
+ innerRequest,
52
+ ].join('\r\n');
53
+ })
54
+ .join('');
55
+ return {
56
+ boundary,
57
+ body: `${multipartParts}--${boundary}--\r\n`,
58
+ };
59
+ }
@@ -0,0 +1,7 @@
1
+ export { AdtClientBatch } from './AdtClientBatch';
2
+ export { AdtRuntimeClientBatch } from './AdtRuntimeClientBatch';
3
+ export { BatchRecordingConnection } from './BatchRecordingConnection';
4
+ export { buildBatchPayload, buildInnerRequest, createBatchBoundary, createRequestId, serializeParams, } from './buildBatchPayload';
5
+ export { extractBoundary, parseBatchResponse } from './parseBatchResponse';
6
+ export type { IBatchPayload, IBatchRequestPart, IBatchResponsePart, } from './types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/batch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseBatchResponse = exports.extractBoundary = exports.serializeParams = exports.createRequestId = exports.createBatchBoundary = exports.buildInnerRequest = exports.buildBatchPayload = exports.BatchRecordingConnection = exports.AdtRuntimeClientBatch = exports.AdtClientBatch = void 0;
4
+ var AdtClientBatch_1 = require("./AdtClientBatch");
5
+ Object.defineProperty(exports, "AdtClientBatch", { enumerable: true, get: function () { return AdtClientBatch_1.AdtClientBatch; } });
6
+ var AdtRuntimeClientBatch_1 = require("./AdtRuntimeClientBatch");
7
+ Object.defineProperty(exports, "AdtRuntimeClientBatch", { enumerable: true, get: function () { return AdtRuntimeClientBatch_1.AdtRuntimeClientBatch; } });
8
+ var BatchRecordingConnection_1 = require("./BatchRecordingConnection");
9
+ Object.defineProperty(exports, "BatchRecordingConnection", { enumerable: true, get: function () { return BatchRecordingConnection_1.BatchRecordingConnection; } });
10
+ var buildBatchPayload_1 = require("./buildBatchPayload");
11
+ Object.defineProperty(exports, "buildBatchPayload", { enumerable: true, get: function () { return buildBatchPayload_1.buildBatchPayload; } });
12
+ Object.defineProperty(exports, "buildInnerRequest", { enumerable: true, get: function () { return buildBatchPayload_1.buildInnerRequest; } });
13
+ Object.defineProperty(exports, "createBatchBoundary", { enumerable: true, get: function () { return buildBatchPayload_1.createBatchBoundary; } });
14
+ Object.defineProperty(exports, "createRequestId", { enumerable: true, get: function () { return buildBatchPayload_1.createRequestId; } });
15
+ Object.defineProperty(exports, "serializeParams", { enumerable: true, get: function () { return buildBatchPayload_1.serializeParams; } });
16
+ var parseBatchResponse_1 = require("./parseBatchResponse");
17
+ Object.defineProperty(exports, "extractBoundary", { enumerable: true, get: function () { return parseBatchResponse_1.extractBoundary; } });
18
+ Object.defineProperty(exports, "parseBatchResponse", { enumerable: true, get: function () { return parseBatchResponse_1.parseBatchResponse; } });
@@ -0,0 +1,4 @@
1
+ import type { IBatchResponsePart } from './types';
2
+ export declare function extractBoundary(contentType: string): string;
3
+ export declare function parseBatchResponse(rawBody: string, contentType: string): IBatchResponsePart[];
4
+ //# sourceMappingURL=parseBatchResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBatchResponse.d.ts","sourceRoot":"","sources":["../../src/batch/parseBatchResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,kBAAkB,EAAE,CAOtB"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractBoundary = extractBoundary;
4
+ exports.parseBatchResponse = parseBatchResponse;
5
+ function extractBoundary(contentType) {
6
+ const match = contentType.match(/boundary=([^;]+)/);
7
+ if (!match) {
8
+ throw new Error(`Cannot extract boundary from content-type: ${contentType}`);
9
+ }
10
+ return match[1].trim();
11
+ }
12
+ function parseBatchResponse(rawBody, contentType) {
13
+ const boundary = extractBoundary(contentType);
14
+ const parts = rawBody
15
+ .split(`--${boundary}`)
16
+ .filter((p) => p.trim() && !p.trim().startsWith('--'));
17
+ return parts.map((part) => parseSinglePart(part));
18
+ }
19
+ function parseSinglePart(raw) {
20
+ // Skip the MIME envelope headers (Content-Type: application/http, etc.)
21
+ // and find the inner HTTP response which starts with HTTP/1.1
22
+ const httpStart = raw.indexOf('HTTP/1.1');
23
+ if (httpStart === -1) {
24
+ return { status: 0, statusText: 'Unparseable', headers: {}, data: raw };
25
+ }
26
+ const httpPart = raw.substring(httpStart);
27
+ // Split into status-line + headers vs body at the first double CRLF
28
+ const headerBodySplit = httpPart.indexOf('\r\n\r\n');
29
+ const headerSection = headerBodySplit === -1 ? httpPart : httpPart.substring(0, headerBodySplit);
30
+ const body = headerBodySplit === -1 ? '' : httpPart.substring(headerBodySplit + 4);
31
+ const lines = headerSection.split('\r\n');
32
+ const statusLine = lines[0];
33
+ const statusMatch = statusLine.match(/^HTTP\/1\.1\s+(\d+)\s+(.*)/);
34
+ const status = statusMatch ? Number.parseInt(statusMatch[1], 10) : 0;
35
+ const statusText = statusMatch ? statusMatch[2].trim() : '';
36
+ const headers = {};
37
+ for (let i = 1; i < lines.length; i++) {
38
+ const colonIdx = lines[i].indexOf(':');
39
+ if (colonIdx > 0) {
40
+ const key = lines[i].substring(0, colonIdx).trim().toLowerCase();
41
+ const value = lines[i].substring(colonIdx + 1).trim();
42
+ headers[key] = value;
43
+ }
44
+ }
45
+ return { status, statusText, headers, data: body.trim() };
46
+ }
@@ -0,0 +1,18 @@
1
+ export interface IBatchRequestPart {
2
+ method: string;
3
+ url: string;
4
+ headers: Record<string, string>;
5
+ data?: string;
6
+ params?: Record<string, string>;
7
+ }
8
+ export interface IBatchPayload {
9
+ boundary: string;
10
+ body: string;
11
+ }
12
+ export interface IBatchResponsePart {
13
+ status: number;
14
+ statusText: string;
15
+ headers: Record<string, string>;
16
+ data: string;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/batch/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/core/dataElement/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,IAAI,aAAa,EAC7B,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,eAAe,EAC3B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,eAAe,EAC3B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,CAcxB"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/core/dataElement/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,IAAI,aAAa,EAC7B,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,eAAe,EAC3B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,CAexB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,eAAe,EAC3B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,CAcxB"}
@@ -18,7 +18,10 @@ async function getDataElement(connection, dataElementName, options) {
18
18
  url,
19
19
  method: 'GET',
20
20
  timeout: (0, timeouts_1.getTimeout)('default'),
21
- headers: options?.accept ? { Accept: options.accept } : {},
21
+ headers: {
22
+ Accept: options?.accept ??
23
+ 'application/vnd.sap.adt.dataelements.v2+xml, application/vnd.sap.adt.dataelements.v1+xml',
24
+ },
22
25
  });
23
26
  }
24
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/core/domain/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,IAAI,aAAa,EAC7B,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,CAgBxB"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/core/domain/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,IAAI,aAAa,EAC7B,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,CAexB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,CAgBxB"}
@@ -23,7 +23,10 @@ async function getDomain(connection, domainName, options) {
23
23
  url,
24
24
  method: 'GET',
25
25
  timeout: (0, timeouts_1.getTimeout)('default'),
26
- headers: options?.accept ? { Accept: options.accept } : {},
26
+ headers: {
27
+ Accept: options?.accept ??
28
+ 'application/vnd.sap.adt.domains.v2+xml, application/vnd.sap.adt.domains.v1+xml',
29
+ },
27
30
  });
28
31
  }
29
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AdtPackage.d.ts","sourceRoot":"","sources":["../../../src/core/package/AdtPackage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,OAAO,EACR,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7D,qBAAa,UAAW,YAAW,UAAU,CAAC,cAAc,EAAE,aAAa,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAU;IAClC,SAAgB,UAAU,EAAE,MAAM,CAAa;gBAEnC,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,OAAO;IAKzD;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IA0BvE;;;OAGG;IACG,MAAM,CACV,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,aAAa,CAAC;IA0GzB;;OAEG;IACG,IAAI,CACR,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,EAC/B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAyBrC;;;OAGG;IACG,YAAY,CAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC;IAoCzB;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,OAAO,CAAC,aAAa,CAAC;IAkCzB;;;;;OAKG;IACG,MAAM,CACV,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,aAAa,CAAC;IAmKzB;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BrE;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAMxE;;OAEG;IACG,KAAK,CACT,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC;IAkBzB;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5D;;OAEG;IACG,MAAM,CACV,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;CAgB1B"}
1
+ {"version":3,"file":"AdtPackage.d.ts","sourceRoot":"","sources":["../../../src/core/package/AdtPackage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,OAAO,EACR,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7D,qBAAa,UAAW,YAAW,UAAU,CAAC,cAAc,EAAE,aAAa,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAU;IAClC,SAAgB,UAAU,EAAE,MAAM,CAAa;gBAEnC,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,OAAO;IAKzD;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IA0BvE;;;OAGG;IACG,MAAM,CACV,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,aAAa,CAAC;IA2GzB;;OAEG;IACG,IAAI,CACR,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,EAC/B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAyBrC;;;OAGG;IACG,YAAY,CAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC;IAoCzB;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,OAAO,CAAC,aAAa,CAAC;IAkCzB;;;;;OAKG;IACG,MAAM,CACV,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,aAAa,CAAC;IAqKzB;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BrE;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAMxE;;OAEG;IACG,KAAK,CACT,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC;IAkBzB;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5D;;OAEG;IACG,MAAM,CACV,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;CAgB1B"}
@@ -111,6 +111,7 @@ class AdtPackage {
111
111
  transport_request: config.transportRequest,
112
112
  application_component: config.applicationComponent,
113
113
  responsible: config.responsible,
114
+ record_changes: config.recordChanges,
114
115
  });
115
116
  this.logger?.info?.('Package created');
116
117
  // 2.5. Read with long polling (wait for object to be ready)
@@ -275,6 +276,7 @@ class AdtPackage {
275
276
  description: config.description,
276
277
  package_type: config.packageType,
277
278
  responsible: config.responsible,
279
+ record_changes: config.recordChanges,
278
280
  }, options.lockHandle);
279
281
  this.logger?.info?.('Package updated (low-level)');
280
282
  return {
@@ -312,6 +314,7 @@ class AdtPackage {
312
314
  transport_request: config.transportRequest,
313
315
  application_component: config.applicationComponent,
314
316
  responsible: config.responsible || systemInfo?.userName,
317
+ record_changes: config.recordChanges,
315
318
  }, lockHandle);
316
319
  this.logger?.info?.('Package updated');
317
320
  // 3.5. Read with long polling (wait for object to be ready after update)
@@ -54,7 +54,7 @@ async function createPackage(connection, params) {
54
54
  const xmlBody = `<?xml version="1.0" encoding="UTF-8"?>
55
55
  <pak:package xmlns:pak="http://www.sap.com/adt/packages" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:description="${description}" adtcore:language="EN" adtcore:name="${params.package_name}" adtcore:type="DEVC/K" adtcore:version="active" adtcore:masterLanguage="EN"${masterSystemAttr}${responsibleAttr}>
56
56
  <adtcore:packageRef adtcore:name="${params.package_name}"/>
57
- <pak:attributes pak:isEncapsulated="false" pak:packageType="${packageType}" pak:recordChanges="false"/>
57
+ <pak:attributes pak:isEncapsulated="false" pak:packageType="${packageType}" pak:recordChanges="${params.record_changes ? 'true' : 'false'}"/>
58
58
  ${superPackageXml}
59
59
  ${applicationComponentXml}
60
60
  <pak:transport>
@@ -12,6 +12,7 @@ export interface ICreatePackageParams {
12
12
  transport_request?: string;
13
13
  application_component?: string;
14
14
  responsible?: string;
15
+ record_changes?: boolean;
15
16
  }
16
17
  export interface IPackageConfig {
17
18
  packageName: string;
@@ -24,6 +25,7 @@ export interface IPackageConfig {
24
25
  transportRequest?: string;
25
26
  applicationComponent?: string;
26
27
  responsible?: string;
28
+ recordChanges?: boolean;
27
29
  onLock?: (lockHandle: string) => void;
28
30
  }
29
31
  export interface IPackageState extends IAdtObjectState {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/package/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/package/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAKD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG"}
@@ -69,7 +69,7 @@ async function buildUpdatePackageXml(connection, args) {
69
69
 
70
70
  <adtcore:packageRef adtcore:name="${args.package_name}"/>
71
71
 
72
- <pak:attributes pak:isEncapsulated="false" pak:packageType="${args.package_type || 'development'}" pak:recordChanges="false"/>
72
+ <pak:attributes pak:isEncapsulated="false" pak:packageType="${args.package_type || 'development'}" pak:recordChanges="${args.record_changes ? 'true' : 'false'}"/>
73
73
 
74
74
  <pak:superPackage adtcore:name="${args.super_package}"/>
75
75
 
package/dist/index.d.ts CHANGED
@@ -20,6 +20,10 @@
20
20
  * ```
21
21
  */
22
22
  export type { IAbapConnection, IAbapRequestOptions, IAdtObject, IAdtResponse, ILogger, IWebSocketCloseInfo, IWebSocketConnectOptions, IWebSocketMessageEnvelope, IWebSocketMessageHandler, IWebSocketTransport, } from '@mcp-abap-adt/interfaces';
23
+ export { AdtClientBatch } from './batch/AdtClientBatch';
24
+ export { AdtRuntimeClientBatch } from './batch/AdtRuntimeClientBatch';
25
+ export { BatchRecordingConnection } from './batch/BatchRecordingConnection';
26
+ export type { IBatchPayload, IBatchRequestPart, IBatchResponsePart, } from './batch/types';
23
27
  export type { IAdtClientOptions } from './clients/AdtClient';
24
28
  export { AdtClient } from './clients/AdtClient';
25
29
  export { AdtClientsWS } from './clients/AdtClientsWS';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -21,7 +21,13 @@
21
21
  * ```
22
22
  */
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.AdtServiceBinding = exports.AdtService = exports.DebuggerSessionClient = exports.AdtRuntimeClientExperimental = exports.AdtRuntimeClient = exports.AdtExecutor = exports.AdtClientsWS = exports.AdtClient = void 0;
24
+ exports.AdtServiceBinding = exports.AdtService = exports.DebuggerSessionClient = exports.AdtRuntimeClientExperimental = exports.AdtRuntimeClient = exports.AdtExecutor = exports.AdtClientsWS = exports.AdtClient = exports.BatchRecordingConnection = exports.AdtRuntimeClientBatch = exports.AdtClientBatch = void 0;
25
+ var AdtClientBatch_1 = require("./batch/AdtClientBatch");
26
+ Object.defineProperty(exports, "AdtClientBatch", { enumerable: true, get: function () { return AdtClientBatch_1.AdtClientBatch; } });
27
+ var AdtRuntimeClientBatch_1 = require("./batch/AdtRuntimeClientBatch");
28
+ Object.defineProperty(exports, "AdtRuntimeClientBatch", { enumerable: true, get: function () { return AdtRuntimeClientBatch_1.AdtRuntimeClientBatch; } });
29
+ var BatchRecordingConnection_1 = require("./batch/BatchRecordingConnection");
30
+ Object.defineProperty(exports, "BatchRecordingConnection", { enumerable: true, get: function () { return BatchRecordingConnection_1.BatchRecordingConnection; } });
25
31
  var AdtClient_1 = require("./clients/AdtClient");
26
32
  Object.defineProperty(exports, "AdtClient", { enumerable: true, get: function () { return AdtClient_1.AdtClient; } });
27
33
  var AdtClientsWS_1 = require("./clients/AdtClientsWS");
@@ -1 +1 @@
1
- {"version":3,"file":"abap.d.ts","sourceRoot":"","sources":["../../../src/runtime/debugger/abap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abap.d.ts","sourceRoot":"","sources":["../../../src/runtime/debugger/abap.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ exports.executeDebuggerStepBatch = executeDebuggerStepBatch;
41
41
  exports.stepIntoDebuggerBatch = stepIntoDebuggerBatch;
42
42
  exports.stepOutDebuggerBatch = stepOutDebuggerBatch;
43
43
  exports.stepContinueDebuggerBatch = stepContinueDebuggerBatch;
44
+ const buildBatchPayload_1 = require("../../batch/buildBatchPayload");
44
45
  const timeouts_1 = require("../../utils/timeouts");
45
46
  async function launchDebugger(connection, options) {
46
47
  const url = `/sap/bc/adt/debugger/listeners`;
@@ -551,34 +552,22 @@ async function executeBatchRequest(connection, requests) {
551
552
  },
552
553
  });
553
554
  }
554
- function createBatchBoundary() {
555
- const randomPart = typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'
556
- ? crypto.randomUUID()
557
- : `${Date.now()}_${Math.random().toString(16).slice(2)}`;
558
- return `batch_${randomPart}`;
559
- }
560
- function createRequestId() {
561
- const randomPart = typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'
562
- ? crypto.randomUUID().replace(/-/g, '')
563
- : `${Date.now()}${Math.random().toString(16).slice(2)}`;
564
- return randomPart.slice(0, 32);
565
- }
566
- function buildDebuggerBatchPayload(requests, boundary = createBatchBoundary()) {
555
+ function buildDebuggerBatchPayload(requests, boundary = (0, buildBatchPayload_1.createBatchBoundary)()) {
567
556
  if (!requests.length) {
568
557
  throw new Error('At least one batch request is required');
569
558
  }
570
559
  const parts = requests
571
560
  .map((request) => {
572
- const trimmed = request.trim();
573
- if (!trimmed) {
561
+ if (!request.trim()) {
574
562
  throw new Error('Batch request part must not be empty');
575
563
  }
564
+ // Do NOT trim — inner requests must preserve trailing \r\n\r\n
576
565
  return [
577
566
  `--${boundary}`,
578
567
  'Content-Type: application/http',
579
568
  'content-transfer-encoding: binary',
580
569
  '',
581
- trimmed,
570
+ request,
582
571
  '',
583
572
  ].join('\r\n');
584
573
  })
@@ -591,12 +580,12 @@ function buildDebuggerBatchPayload(requests, boundary = createBatchBoundary()) {
591
580
  function buildDebuggerStepWithStackBatchPayload(stepMethod) {
592
581
  const stepRequest = [
593
582
  `POST /sap/bc/adt/debugger?method=${stepMethod} HTTP/1.1`,
594
- `sap-adt-request-id:${createRequestId()}`,
583
+ `sap-adt-request-id:${(0, buildBatchPayload_1.createRequestId)()}`,
595
584
  'Accept:application/xml',
596
585
  ].join('\r\n');
597
586
  const stackRequest = [
598
587
  'POST /sap/bc/adt/debugger?emode=_&semanticURIs=true&method=getStack HTTP/1.1',
599
- `sap-adt-request-id:${createRequestId()}`,
588
+ `sap-adt-request-id:${(0, buildBatchPayload_1.createRequestId)()}`,
600
589
  'Accept:application/xml',
601
590
  ].join('\r\n');
602
591
  return buildDebuggerBatchPayload([stepRequest, stackRequest]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/adt-clients",
3
- "version": "0.3.22",
3
+ "version": "1.0.1",
4
4
  "description": "ADT clients for SAP ABAP systems - AdtClient and AdtRuntimeClient",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",