@mcp-abap-adt/adt-clients 0.1.0 → 0.1.2

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 (163) hide show
  1. package/README.md +170 -56
  2. package/dist/clients/CrudClient.d.ts +32 -37
  3. package/dist/clients/CrudClient.d.ts.map +1 -1
  4. package/dist/clients/CrudClient.js +153 -120
  5. package/dist/clients/ReadOnlyClient.d.ts +13 -58
  6. package/dist/clients/ReadOnlyClient.d.ts.map +1 -1
  7. package/dist/clients/ReadOnlyClient.js +73 -114
  8. package/dist/core/class/ClassBuilder.d.ts +1 -1
  9. package/dist/core/class/ClassBuilder.d.ts.map +1 -1
  10. package/dist/core/class/ClassBuilder.js +2 -2
  11. package/dist/core/class/create.d.ts +4 -11
  12. package/dist/core/class/create.d.ts.map +1 -1
  13. package/dist/core/class/create.js +5 -38
  14. package/dist/core/class/delete.d.ts +18 -0
  15. package/dist/core/class/delete.d.ts.map +1 -0
  16. package/dist/core/class/delete.js +85 -0
  17. package/dist/core/class/index.d.ts +0 -9
  18. package/dist/core/class/index.d.ts.map +1 -1
  19. package/dist/core/class/index.js +0 -23
  20. package/dist/core/dataElement/DataElementBuilder.d.ts +1 -1
  21. package/dist/core/dataElement/DataElementBuilder.d.ts.map +1 -1
  22. package/dist/core/dataElement/DataElementBuilder.js +1 -1
  23. package/dist/core/dataElement/create.d.ts +4 -4
  24. package/dist/core/dataElement/create.d.ts.map +1 -1
  25. package/dist/core/dataElement/create.js +10 -70
  26. package/dist/core/dataElement/delete.d.ts +6 -2
  27. package/dist/core/dataElement/delete.d.ts.map +1 -1
  28. package/dist/core/dataElement/delete.js +70 -9
  29. package/dist/core/dataElement/index.d.ts +0 -8
  30. package/dist/core/dataElement/index.d.ts.map +1 -1
  31. package/dist/core/dataElement/index.js +0 -8
  32. package/dist/core/domain/DomainBuilder.d.ts +1 -1
  33. package/dist/core/domain/DomainBuilder.d.ts.map +1 -1
  34. package/dist/core/domain/DomainBuilder.js +3 -3
  35. package/dist/core/domain/create.d.ts +5 -9
  36. package/dist/core/domain/create.d.ts.map +1 -1
  37. package/dist/core/domain/create.js +7 -90
  38. package/dist/core/domain/delete.d.ts +6 -2
  39. package/dist/core/domain/delete.d.ts.map +1 -1
  40. package/dist/core/domain/delete.js +69 -9
  41. package/dist/core/domain/index.d.ts +0 -8
  42. package/dist/core/domain/index.d.ts.map +1 -1
  43. package/dist/core/domain/index.js +0 -8
  44. package/dist/core/functionGroup/FunctionGroupBuilder.d.ts +1 -1
  45. package/dist/core/functionGroup/FunctionGroupBuilder.d.ts.map +1 -1
  46. package/dist/core/functionGroup/FunctionGroupBuilder.js +2 -8
  47. package/dist/core/functionGroup/create.d.ts +3 -4
  48. package/dist/core/functionGroup/create.d.ts.map +1 -1
  49. package/dist/core/functionGroup/create.js +3 -54
  50. package/dist/core/functionGroup/delete.d.ts +6 -2
  51. package/dist/core/functionGroup/delete.d.ts.map +1 -1
  52. package/dist/core/functionGroup/delete.js +69 -9
  53. package/dist/core/functionGroup/index.d.ts +0 -9
  54. package/dist/core/functionGroup/index.d.ts.map +1 -1
  55. package/dist/core/functionGroup/index.js +0 -9
  56. package/dist/core/functionModule/FunctionModuleBuilder.d.ts +1 -1
  57. package/dist/core/functionModule/FunctionModuleBuilder.d.ts.map +1 -1
  58. package/dist/core/functionModule/FunctionModuleBuilder.js +5 -16
  59. package/dist/core/functionModule/create.d.ts +3 -4
  60. package/dist/core/functionModule/create.d.ts.map +1 -1
  61. package/dist/core/functionModule/create.js +3 -121
  62. package/dist/core/functionModule/delete.d.ts +6 -2
  63. package/dist/core/functionModule/delete.d.ts.map +1 -1
  64. package/dist/core/functionModule/delete.js +76 -11
  65. package/dist/core/functionModule/index.d.ts +0 -9
  66. package/dist/core/functionModule/index.d.ts.map +1 -1
  67. package/dist/core/functionModule/index.js +0 -9
  68. package/dist/core/functionModule/types.d.ts +0 -6
  69. package/dist/core/functionModule/types.d.ts.map +1 -1
  70. package/dist/core/functionModule/update.d.ts +4 -9
  71. package/dist/core/functionModule/update.d.ts.map +1 -1
  72. package/dist/core/functionModule/update.js +10 -72
  73. package/dist/core/interface/InterfaceBuilder.d.ts +1 -1
  74. package/dist/core/interface/InterfaceBuilder.d.ts.map +1 -1
  75. package/dist/core/interface/InterfaceBuilder.js +16 -19
  76. package/dist/core/interface/create.d.ts +13 -5
  77. package/dist/core/interface/create.d.ts.map +1 -1
  78. package/dist/core/interface/create.js +10 -57
  79. package/dist/core/interface/delete.d.ts +4 -6
  80. package/dist/core/interface/delete.d.ts.map +1 -1
  81. package/dist/core/interface/delete.js +66 -28
  82. package/dist/core/interface/index.d.ts +0 -9
  83. package/dist/core/interface/index.d.ts.map +1 -1
  84. package/dist/core/interface/index.js +0 -9
  85. package/dist/core/interface/types.d.ts +0 -5
  86. package/dist/core/interface/types.d.ts.map +1 -1
  87. package/dist/core/interface/update.d.ts +7 -9
  88. package/dist/core/interface/update.d.ts.map +1 -1
  89. package/dist/core/interface/update.js +2 -78
  90. package/dist/core/package/PackageBuilder.d.ts +1 -1
  91. package/dist/core/package/PackageBuilder.d.ts.map +1 -1
  92. package/dist/core/package/index.d.ts +0 -9
  93. package/dist/core/package/index.d.ts.map +1 -1
  94. package/dist/core/package/index.js +0 -9
  95. package/dist/core/program/ProgramBuilder.d.ts +1 -1
  96. package/dist/core/program/ProgramBuilder.d.ts.map +1 -1
  97. package/dist/core/program/ProgramBuilder.js +45 -7
  98. package/dist/core/program/create.d.ts +4 -4
  99. package/dist/core/program/create.d.ts.map +1 -1
  100. package/dist/core/program/create.js +5 -61
  101. package/dist/core/program/delete.d.ts +6 -2
  102. package/dist/core/program/delete.d.ts.map +1 -1
  103. package/dist/core/program/delete.js +72 -9
  104. package/dist/core/program/index.d.ts +0 -9
  105. package/dist/core/program/index.d.ts.map +1 -1
  106. package/dist/core/program/index.js +0 -23
  107. package/dist/core/program/update.d.ts +5 -5
  108. package/dist/core/program/update.d.ts.map +1 -1
  109. package/dist/core/program/update.js +7 -65
  110. package/dist/core/shared/getInactiveObjects.d.ts +41 -0
  111. package/dist/core/shared/getInactiveObjects.d.ts.map +1 -0
  112. package/dist/core/shared/getInactiveObjects.js +72 -0
  113. package/dist/core/structure/StructureBuilder.d.ts +1 -1
  114. package/dist/core/structure/StructureBuilder.d.ts.map +1 -1
  115. package/dist/core/structure/StructureBuilder.js +6 -20
  116. package/dist/core/structure/create.d.ts +3 -4
  117. package/dist/core/structure/create.d.ts.map +1 -1
  118. package/dist/core/structure/create.js +12 -126
  119. package/dist/core/structure/delete.d.ts +7 -2
  120. package/dist/core/structure/delete.d.ts.map +1 -1
  121. package/dist/core/structure/delete.js +71 -9
  122. package/dist/core/structure/index.d.ts +0 -9
  123. package/dist/core/structure/index.d.ts.map +1 -1
  124. package/dist/core/structure/index.js +0 -9
  125. package/dist/core/structure/update.d.ts +6 -0
  126. package/dist/core/structure/update.d.ts.map +1 -1
  127. package/dist/core/structure/update.js +15 -0
  128. package/dist/core/table/delete.d.ts +6 -2
  129. package/dist/core/table/delete.d.ts.map +1 -1
  130. package/dist/core/table/delete.js +69 -9
  131. package/dist/core/table/index.d.ts +0 -9
  132. package/dist/core/table/index.d.ts.map +1 -1
  133. package/dist/core/table/index.js +0 -9
  134. package/dist/core/transport/index.d.ts +0 -2
  135. package/dist/core/transport/index.d.ts.map +1 -1
  136. package/dist/core/transport/index.js +0 -2
  137. package/dist/core/view/ViewBuilder.d.ts +1 -1
  138. package/dist/core/view/ViewBuilder.d.ts.map +1 -1
  139. package/dist/core/view/delete.d.ts +6 -2
  140. package/dist/core/view/delete.d.ts.map +1 -1
  141. package/dist/core/view/delete.js +69 -9
  142. package/dist/core/view/index.d.ts +0 -9
  143. package/dist/core/view/index.d.ts.map +1 -1
  144. package/dist/core/view/index.js +0 -9
  145. package/dist/core.d.ts +4 -111
  146. package/dist/core.d.ts.map +1 -1
  147. package/dist/core.js +6 -124
  148. package/dist/index.d.ts +24 -24
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +25 -42
  151. package/package.json +1 -2
  152. package/dist/clients/LockClient.d.ts +0 -28
  153. package/dist/clients/LockClient.d.ts.map +0 -1
  154. package/dist/clients/LockClient.js +0 -141
  155. package/dist/clients/ManagementClient.d.ts +0 -34
  156. package/dist/clients/ManagementClient.d.ts.map +0 -1
  157. package/dist/clients/ManagementClient.js +0 -80
  158. package/dist/clients/ValidationClient.d.ts +0 -8
  159. package/dist/clients/ValidationClient.d.ts.map +0 -1
  160. package/dist/clients/ValidationClient.js +0 -14
  161. package/dist/core/delete.d.ts +0 -22
  162. package/dist/core/delete.d.ts.map +0 -1
  163. package/dist/core/delete.js +0 -148
package/README.md CHANGED
@@ -1,15 +1,16 @@
1
1
  # @mcp-abap-adt/adt-clients
2
2
 
3
- ADT (ABAP Development Tools) clients for SAP ABAP systems with a **Builder-first API**.
4
- Low-level helpers stay internal; consumers interact via Builders and high-level clients (Management, Lock, Validation).
3
+ TypeScript clients for SAP ABAP Development Tools (ADT) with a **Builder and Client API architecture**.
5
4
 
6
5
  ## Features
7
6
 
8
- - ✅ **Builder-first workflow** – every supported object type exposes a fluent Builder (`ClassBuilder`, `TableBuilder`, ) that wraps validate/create/lock/update/activate in one chain.
9
- - ✅ **High-level clients** – `ManagementClient`, `LockClient`, `ValidationClient` cover cross-object tasks (activation, ad-hoc locking, name validation) without touching internal modules.
10
- - ✅ **Stateful session propagation** – builders and clients keep the same `sap-adt-connection-id` across lock/update/unlock; session state can be exported/imported via the connection package.
11
- - **Lock registry + CLI** persistent `.locks/active-locks.json` plus `adt-manage-locks` / `adt-unlock-objects` scripts to recover from crashes.
12
- - ✅ **Test-friendly logging** – `DEBUG_TESTS=true` for per-step output, `LOG_LOCKS=false` to silence `[LOCK] ...` lines.
7
+ - ✅ **Builder API** – fluent interface for complex workflows with method chaining (`ClassBuilder`, `ProgramBuilder`, etc.)
8
+ - ✅ **Client API** – simplified interface for common operations:
9
+ - `ReadOnlyClient` read operations for all object types
10
+ - `CrudClient`full CRUD operations with method chaining and state management
11
+ - ✅ **Stateful session management** – maintains `sap-adt-connection-id` across operations
12
+ - ✅ **Lock registry** – persistent `.locks/active-locks.json` with CLI tools for recovery
13
+ - ✅ **TypeScript-first** – full type safety with comprehensive interfaces
13
14
 
14
15
  ## Installation
15
16
 
@@ -35,26 +36,51 @@ After global installation, you get 5 CLI commands:
35
36
 
36
37
  See [CLI Tools documentation](./bin/README.md) for details.
37
38
 
39
+ ## Architecture
40
+
41
+ ### Three-Layer API
42
+
43
+ 1. **Builders** (Low-level, flexible)
44
+ - Direct access to all ADT operations
45
+ - Method chaining with Promise support
46
+ - Fine-grained control over workflow
47
+ - Example: `ProgramBuilder`, `ClassBuilder`, `InterfaceBuilder`
48
+
49
+ 2. **Clients** (High-level, convenient)
50
+ - **ReadOnlyClient** – simple read operations
51
+ - **CrudClient** – unified CRUD operations with chaining
52
+ - State management with getters
53
+ - Example: `client.createProgram(...).lockProgram(...).updateProgram(...)`
54
+
55
+ 3. **Specialized Clients**
56
+ - `ManagementClient` – activation, syntax checking
57
+ - `LockClient` – lock/unlock with registry
58
+ - `ValidationClient` – object name validation
59
+
38
60
  ## Supported Object Types
39
61
 
40
- - **Classes** (CLAS/OC) - Full CRUD + run (if_oo_adt_classrun)
41
- - **Interfaces** (INTF/OI) - Full CRUD
42
- - **Programs** (PROG/P) - Full CRUD
43
- - **Function Groups** (FUGR/F) - Full CRUD
44
- - **Function Modules** (FUGR/FF) - Full CRUD
45
- - **Domains** (DOMA/DD) - Full CRUD
46
- - **Data Elements** (DTEL/DE) - Full CRUD
47
- - **CDS Views** (DDLS/DL) - Full CRUD
48
- - **Tables** (TABL/DT) - Read operations
49
- - **Structures** (TABL/DS) - Read operations
50
- - **Packages** (DEVC/K) - Create, read
51
- - **Transports** (TRNS/R3TR) - Create
62
+ | Object Type | Builder | CrudClient | ReadOnlyClient |
63
+ |------------|---------|------------|----------------|
64
+ | Classes (CLAS) | | ✅ | ✅ |
65
+ | Interfaces (INTF) | | ✅ | ✅ |
66
+ | Programs (PROG) | | ✅ | ✅ |
67
+ | Function Groups (FUGR) | | ✅ | ✅ |
68
+ | Function Modules (FUGR/FF) | | ✅ | ✅ |
69
+ | Domains (DOMA) | | ✅ | ✅ |
70
+ | Data Elements (DTEL) | | ✅ | ✅ |
71
+ | Structures (TABL/DS) | | ✅ | ✅ |
72
+ | Tables (TABL/DT) | | ✅ | ✅ |
73
+ | Views (DDLS) | ✅ | ✅ | ✅ |
74
+ | Packages (DEVC) | ✅ | ✅ | ✅ |
75
+ | Transports (TRNS) | ✅ | ✅ | ✅ |
52
76
 
53
77
  ## Quick Start
54
78
 
79
+ ### Using CrudClient (Recommended for most cases)
80
+
55
81
  ```typescript
56
82
  import { createAbapConnection } from '@mcp-abap-adt/connection';
57
- import { ClassBuilder, LockClient, ManagementClient } from '@mcp-abap-adt/adt-clients';
83
+ import { CrudClient } from '@mcp-abap-adt/adt-clients';
58
84
 
59
85
  const connection = createAbapConnection({
60
86
  url: 'https://your-sap-system.example.com',
@@ -64,7 +90,40 @@ const connection = createAbapConnection({
64
90
  password: process.env.SAP_PASSWORD!
65
91
  }, console);
66
92
 
67
- // Full builder workflow
93
+ const client = new CrudClient(connection);
94
+
95
+ // Method chaining with state management
96
+ await client
97
+ .createInterface('ZIF_TEST', 'Test Interface', 'ZPACKAGE', 'TREQ123')
98
+ .lockInterface('ZIF_TEST')
99
+ .updateInterface('ZIF_TEST', sourceCode)
100
+ .unlockInterface('ZIF_TEST')
101
+ .activateInterface('ZIF_TEST');
102
+
103
+ // Access results via getters
104
+ const createResult = client.getCreateResult();
105
+ const lockHandle = client.getLockHandle();
106
+ const activateResult = client.getActivateResult();
107
+ ```
108
+
109
+ ### Using ReadOnlyClient
110
+
111
+ ```typescript
112
+ import { ReadOnlyClient } from '@mcp-abap-adt/adt-clients';
113
+
114
+ const client = new ReadOnlyClient(connection);
115
+
116
+ // Simple read operations
117
+ const programSource = await client.readProgram('ZTEST_PROGRAM');
118
+ const classDefinition = await client.readClass('ZCL_TEST_CLASS');
119
+ const interfaceCode = await client.readInterface('ZIF_TEST_INTERFACE');
120
+ ```
121
+
122
+ ### Using Builders (Advanced workflows)
123
+
124
+ ```typescript
125
+ import { ClassBuilder } from '@mcp-abap-adt/adt-clients/core';
126
+
68
127
  const builder = new ClassBuilder(connection, console, {
69
128
  className: 'ZCL_MY_CLASS',
70
129
  packageName: 'ZADT_BLD_PKG01',
@@ -85,38 +144,12 @@ CLASS zcl_my_class IMPLEMENTATION.
85
144
  ENDCLASS.`)
86
145
  .validate()
87
146
  .then(b => b.create())
88
- .then(b => b.check('inactive'))
89
147
  .then(b => b.lock())
90
- .then(b => {
91
- b.setCode(b.getState().sourceCode!.replace('builder', 'builder v2'));
92
- return b.update();
93
- })
94
- .then(b => b.check('inactive'))
148
+ .then(b => b.update())
95
149
  .then(b => b.unlock())
96
- .then(b => b.activate())
97
- .then(b => b.check('active'));
98
-
99
- // Ad-hoc management helpers
100
- const lockClient = new LockClient(connection);
101
- const mgmtClient = new ManagementClient(connection);
102
-
103
- const { lockHandle, sessionId } = await lockClient.lock({
104
- objectType: 'class',
105
- objectName: 'ZCL_MY_CLASS'
106
- });
107
-
108
- await mgmtClient.activateObjectsGroup([{ name: 'ZCL_MY_CLASS', uri: '/sap/bc/adt/oo/classes/zcl_my_class' }]);
109
-
110
- await lockClient.unlock({
111
- objectType: 'class',
112
- objectName: 'ZCL_MY_CLASS',
113
- lockHandle,
114
- sessionId
115
- });
150
+ .then(b => b.activate());
116
151
  ```
117
152
 
118
- > ℹ️ Need to persist the `sessionId` / cookies between processes? See [doc/architecture/STATEFUL_SESSION_GUIDE.md](../../doc/architecture/STATEFUL_SESSION_GUIDE.md) and the `@mcp-abap-adt/connection` README for details.
119
-
120
153
  ## CLI Tools
121
154
 
122
155
  After installation, the following commands are available:
@@ -149,16 +182,97 @@ adt-manage-sessions cleanup
149
182
 
150
183
  See [bin/README.md](bin/README.md) for details.
151
184
 
152
- ## Builders & Clients
153
-
154
- - **Builders**: classes, interfaces, programs, domains, data elements, tables, structures, views, packages, transports, function groups, function modules.
155
- Each builder exposes `.validate()`, `.create()`, `.lock()`, `.update()`, `.activate()`, `.check()`, `.read()`, `.forceUnlock()`.
156
- - **ManagementClient**: batch activation + check operations.
157
- - **LockClient**: explicit lock/unlock helpers that integrate with the `.locks` registry (used by tests and CLI tools).
158
- - **ValidationClient**: name validation helper mirroring ADT validation endpoint.
185
+ ## API Reference
186
+
187
+ ### CrudClient Methods
188
+
189
+ **Create Operations:**
190
+ - `createProgram(name, description, package, transport?)` `Promise<this>`
191
+ - `createClass(name, description, package, transport?)` `Promise<this>`
192
+ - `createInterface(name, description, package, transport?)` → `Promise<this>`
193
+ - And more for all object types...
194
+
195
+ **Lock Operations:**
196
+ - `lockProgram(name)` → `Promise<this>` (stores lockHandle in state)
197
+ - `unlockProgram(name, lockHandle?)` → `Promise<this>`
198
+ - Similar for all object types...
199
+
200
+ **Update Operations:**
201
+ - `updateProgram(name, sourceCode, lockHandle?)` → `Promise<this>`
202
+ - `updateClass(name, sourceCode, lockHandle?)` → `Promise<this>`
203
+ - And more...
204
+
205
+ **Activation:**
206
+ - `activateProgram(name)` → `Promise<this>`
207
+ - `activateClass(name)` → `Promise<this>`
208
+ - And more...
209
+
210
+ **State Getters:**
211
+ - `getCreateResult()` → `AxiosResponse | undefined`
212
+ - `getLockHandle()` → `string | undefined`
213
+ - `getUnlockResult()` → `AxiosResponse | undefined`
214
+ - `getUpdateResult()` → `AxiosResponse | undefined`
215
+ - `getActivateResult()` → `AxiosResponse | undefined`
216
+ - `getCheckResult()` → `AxiosResponse | undefined`
217
+ - `getValidationResult()` → `any | undefined`
218
+
219
+ ### ReadOnlyClient Methods
220
+
221
+ - `readProgram(name)` → `Promise<AxiosResponse>`
222
+ - `readClass(name)` → `Promise<AxiosResponse>`
223
+ - `readInterface(name)` → `Promise<AxiosResponse>`
224
+ - `readDataElement(name)` → `Promise<AxiosResponse>`
225
+ - `readDomain(name)` → `Promise<AxiosResponse>`
226
+ - `readStructure(name)` → `Promise<AxiosResponse>`
227
+ - `readTable(name)` → `Promise<AxiosResponse>`
228
+ - `readView(name)` → `Promise<AxiosResponse>`
229
+ - `readFunctionGroup(name)` → `Promise<AxiosResponse>`
230
+ - `readFunctionModule(name, functionGroup)` → `Promise<AxiosResponse>`
231
+ - `readPackage(name)` → `Promise<AxiosResponse>`
232
+ - `readTransport(transportRequest)` → `Promise<AxiosResponse>`
233
+
234
+ ### Specialized Clients
235
+
236
+ - **ManagementClient**: batch activation + check operations
237
+ - **LockClient**: explicit lock/unlock with `.locks` registry integration
238
+ - **ValidationClient**: name validation mirroring ADT validation endpoint
159
239
 
160
240
  Refer to the TypeScript typings (`src/index.ts`) for the full API surface.
161
241
 
242
+ ## Migration Guide
243
+
244
+ ### From v0.1.0 to v0.2.0
245
+
246
+ **Breaking Changes:**
247
+
248
+ 1. **Low-level functions removed from exports**
249
+ ```typescript
250
+ // ❌ Before
251
+ import { createProgram } from '@mcp-abap-adt/adt-clients/core/program';
252
+
253
+ // ✅ After - Use Builder
254
+ import { ProgramBuilder } from '@mcp-abap-adt/adt-clients/core';
255
+
256
+ // ✅ Or use CrudClient
257
+ import { CrudClient } from '@mcp-abap-adt/adt-clients';
258
+ const client = new CrudClient(connection);
259
+ await client.createProgram(...);
260
+ ```
261
+
262
+ 2. **Client classes removed**
263
+ ```typescript
264
+ // ❌ Before
265
+ import { InterfaceClient } from '@mcp-abap-adt/adt-clients';
266
+
267
+ // ✅ After
268
+ import { CrudClient } from '@mcp-abap-adt/adt-clients';
269
+ const client = new CrudClient(connection);
270
+ ```
271
+
272
+ **Non-breaking:**
273
+ - Builders continue to work as before
274
+ - Specialized clients (ManagementClient, LockClient, ValidationClient) unchanged
275
+
162
276
  ## Documentation
163
277
 
164
278
  - **[Stateful Session Guide](docs/STATEFUL_SESSION_GUIDE.md)** – how Builders and clients manage `sessionId`, `lockHandle`, and the lock registry
@@ -1,48 +1,43 @@
1
1
  /**
2
2
  * CrudClient - Full CRUD operations for SAP ADT
3
3
  *
4
- * Extends ReadOnlyClient with Create, Update, and Delete operations.
5
- * All methods return raw AxiosResponse - no MCP formatting.
6
- *
7
- * All implementations are in core/{object}/ modules (e.g., core/program/, core/class/).
8
- * Read operations are inherited from ReadOnlyClient (which delegates to core/{object}/read.ts).
4
+ * Extends ReadOnlyClient with Create, Update, Lock, Unlock, Activate, Check, Validate operations.
5
+ * Methods return `this` for chaining. Results stored in state and accessible via getters.
9
6
  */
10
7
  import { ReadOnlyClient } from './ReadOnlyClient';
11
8
  import { AbapConnection } from '@mcp-abap-adt/connection';
12
9
  import { AxiosResponse } from 'axios';
13
- import * as programOps from '../core/program';
14
- import * as classOps from '../core/class';
15
- import * as domainOps from '../core/domain';
16
- import * as dataElementOps from '../core/dataElement';
17
- import * as interfaceOps from '../core/interface';
18
- import * as tableOps from '../core/table';
19
- import * as structureOps from '../core/structure';
20
- import * as viewOps from '../core/view';
21
- import * as functionGroupOps from '../core/functionGroup';
22
- import * as functionModuleOps from '../core/functionModule';
23
- import * as packageOps from '../core/package';
24
- import * as transportOps from '../core/transport';
25
- import * as deleteOps from '../core/delete';
26
10
  export declare class CrudClient extends ReadOnlyClient {
11
+ private state;
27
12
  constructor(connection: AbapConnection);
28
- createProgram(params: programOps.CreateProgramParams): Promise<AxiosResponse>;
29
- updateProgramSource(params: programOps.UpdateProgramSourceParams): Promise<AxiosResponse>;
30
- createClass(params: classOps.CreateClassParams): Promise<AxiosResponse>;
31
- createDomain(params: domainOps.CreateDomainParams): Promise<AxiosResponse>;
32
- updateDomain(params: domainOps.UpdateDomainParams): Promise<AxiosResponse>;
33
- createDataElement(params: dataElementOps.CreateDataElementParams): Promise<AxiosResponse>;
34
- updateDataElement(params: dataElementOps.UpdateDataElementParams): Promise<AxiosResponse>;
35
- createInterface(params: interfaceOps.CreateInterfaceParams): Promise<AxiosResponse>;
36
- updateInterfaceSource(params: interfaceOps.UpdateInterfaceSourceParams): Promise<AxiosResponse>;
37
- createTable(params: tableOps.CreateTableParams): Promise<AxiosResponse>;
38
- createStructure(params: structureOps.CreateStructureParams): Promise<AxiosResponse>;
39
- createView(params: viewOps.CreateViewParams): Promise<AxiosResponse>;
40
- updateViewSource(params: viewOps.UpdateViewSourceParams): Promise<AxiosResponse>;
41
- createFunctionGroup(params: functionGroupOps.CreateFunctionGroupParams): Promise<AxiosResponse>;
42
- createFunctionModule(params: functionModuleOps.CreateFunctionModuleParams): Promise<AxiosResponse>;
43
- updateFunctionModuleSource(params: functionModuleOps.UpdateFunctionModuleSourceParams): Promise<AxiosResponse>;
44
- createPackage(params: packageOps.CreatePackageParams): Promise<AxiosResponse>;
45
- createTransport(params: transportOps.CreateTransportParams): Promise<AxiosResponse>;
46
- deleteObject(params: deleteOps.DeleteObjectParams): Promise<AxiosResponse>;
13
+ getCreateResult(): AxiosResponse | undefined;
14
+ getLockHandle(): string | undefined;
15
+ getUnlockResult(): AxiosResponse | undefined;
16
+ getUpdateResult(): AxiosResponse | undefined;
17
+ getActivateResult(): AxiosResponse | undefined;
18
+ getCheckResult(): AxiosResponse | undefined;
19
+ getValidationResult(): any | undefined;
20
+ getReadResult(): AxiosResponse | undefined;
21
+ createProgram(programName: string, description: string, packageName: string, transportRequest?: string): Promise<this>;
22
+ lockProgram(programName: string): Promise<this>;
23
+ unlockProgram(programName: string, lockHandle?: string): Promise<this>;
24
+ updateProgram(programName: string, sourceCode: string, lockHandle?: string): Promise<this>;
25
+ activateProgram(programName: string): Promise<this>;
26
+ checkProgram(programName: string): Promise<this>;
27
+ validateProgram(programName: string): Promise<this>;
28
+ createClass(className: string, description: string, packageName: string, transportRequest?: string): Promise<this>;
29
+ lockClass(className: string): Promise<this>;
30
+ unlockClass(className: string, lockHandle?: string): Promise<this>;
31
+ updateClass(className: string, sourceCode: string, lockHandle?: string): Promise<this>;
32
+ activateClass(className: string): Promise<this>;
33
+ checkClass(className: string): Promise<this>;
34
+ validateClass(className: string): Promise<this>;
35
+ createInterface(interfaceName: string, description: string, packageName: string, transportRequest?: string): Promise<this>;
36
+ lockInterface(interfaceName: string): Promise<this>;
37
+ unlockInterface(interfaceName: string, lockHandle?: string): Promise<this>;
38
+ updateInterface(interfaceName: string, sourceCode: string, lockHandle?: string): Promise<this>;
39
+ activateInterface(interfaceName: string): Promise<this>;
40
+ checkInterface(interfaceName: string): Promise<this>;
41
+ validateInterface(interfaceName: string): Promise<this>;
47
42
  }
48
43
  //# sourceMappingURL=CrudClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CrudClient.d.ts","sourceRoot":"","sources":["../../src/clients/CrudClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CrudClient.d.ts","sourceRoot":"","sources":["../../src/clients/CrudClient.ts"],"names":[],"mappings":"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"}