@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.
- package/README.md +170 -56
- package/dist/clients/CrudClient.d.ts +32 -37
- package/dist/clients/CrudClient.d.ts.map +1 -1
- package/dist/clients/CrudClient.js +153 -120
- package/dist/clients/ReadOnlyClient.d.ts +13 -58
- package/dist/clients/ReadOnlyClient.d.ts.map +1 -1
- package/dist/clients/ReadOnlyClient.js +73 -114
- package/dist/core/class/ClassBuilder.d.ts +1 -1
- package/dist/core/class/ClassBuilder.d.ts.map +1 -1
- package/dist/core/class/ClassBuilder.js +2 -2
- package/dist/core/class/create.d.ts +4 -11
- package/dist/core/class/create.d.ts.map +1 -1
- package/dist/core/class/create.js +5 -38
- package/dist/core/class/delete.d.ts +18 -0
- package/dist/core/class/delete.d.ts.map +1 -0
- package/dist/core/class/delete.js +85 -0
- package/dist/core/class/index.d.ts +0 -9
- package/dist/core/class/index.d.ts.map +1 -1
- package/dist/core/class/index.js +0 -23
- package/dist/core/dataElement/DataElementBuilder.d.ts +1 -1
- package/dist/core/dataElement/DataElementBuilder.d.ts.map +1 -1
- package/dist/core/dataElement/DataElementBuilder.js +1 -1
- package/dist/core/dataElement/create.d.ts +4 -4
- package/dist/core/dataElement/create.d.ts.map +1 -1
- package/dist/core/dataElement/create.js +10 -70
- package/dist/core/dataElement/delete.d.ts +6 -2
- package/dist/core/dataElement/delete.d.ts.map +1 -1
- package/dist/core/dataElement/delete.js +70 -9
- package/dist/core/dataElement/index.d.ts +0 -8
- package/dist/core/dataElement/index.d.ts.map +1 -1
- package/dist/core/dataElement/index.js +0 -8
- package/dist/core/domain/DomainBuilder.d.ts +1 -1
- package/dist/core/domain/DomainBuilder.d.ts.map +1 -1
- package/dist/core/domain/DomainBuilder.js +3 -3
- package/dist/core/domain/create.d.ts +5 -9
- package/dist/core/domain/create.d.ts.map +1 -1
- package/dist/core/domain/create.js +7 -90
- package/dist/core/domain/delete.d.ts +6 -2
- package/dist/core/domain/delete.d.ts.map +1 -1
- package/dist/core/domain/delete.js +69 -9
- package/dist/core/domain/index.d.ts +0 -8
- package/dist/core/domain/index.d.ts.map +1 -1
- package/dist/core/domain/index.js +0 -8
- package/dist/core/functionGroup/FunctionGroupBuilder.d.ts +1 -1
- package/dist/core/functionGroup/FunctionGroupBuilder.d.ts.map +1 -1
- package/dist/core/functionGroup/FunctionGroupBuilder.js +2 -8
- package/dist/core/functionGroup/create.d.ts +3 -4
- package/dist/core/functionGroup/create.d.ts.map +1 -1
- package/dist/core/functionGroup/create.js +3 -54
- package/dist/core/functionGroup/delete.d.ts +6 -2
- package/dist/core/functionGroup/delete.d.ts.map +1 -1
- package/dist/core/functionGroup/delete.js +69 -9
- package/dist/core/functionGroup/index.d.ts +0 -9
- package/dist/core/functionGroup/index.d.ts.map +1 -1
- package/dist/core/functionGroup/index.js +0 -9
- package/dist/core/functionModule/FunctionModuleBuilder.d.ts +1 -1
- package/dist/core/functionModule/FunctionModuleBuilder.d.ts.map +1 -1
- package/dist/core/functionModule/FunctionModuleBuilder.js +5 -16
- package/dist/core/functionModule/create.d.ts +3 -4
- package/dist/core/functionModule/create.d.ts.map +1 -1
- package/dist/core/functionModule/create.js +3 -121
- package/dist/core/functionModule/delete.d.ts +6 -2
- package/dist/core/functionModule/delete.d.ts.map +1 -1
- package/dist/core/functionModule/delete.js +76 -11
- package/dist/core/functionModule/index.d.ts +0 -9
- package/dist/core/functionModule/index.d.ts.map +1 -1
- package/dist/core/functionModule/index.js +0 -9
- package/dist/core/functionModule/types.d.ts +0 -6
- package/dist/core/functionModule/types.d.ts.map +1 -1
- package/dist/core/functionModule/update.d.ts +4 -9
- package/dist/core/functionModule/update.d.ts.map +1 -1
- package/dist/core/functionModule/update.js +10 -72
- package/dist/core/interface/InterfaceBuilder.d.ts +1 -1
- package/dist/core/interface/InterfaceBuilder.d.ts.map +1 -1
- package/dist/core/interface/InterfaceBuilder.js +16 -19
- package/dist/core/interface/create.d.ts +13 -5
- package/dist/core/interface/create.d.ts.map +1 -1
- package/dist/core/interface/create.js +10 -57
- package/dist/core/interface/delete.d.ts +4 -6
- package/dist/core/interface/delete.d.ts.map +1 -1
- package/dist/core/interface/delete.js +66 -28
- package/dist/core/interface/index.d.ts +0 -9
- package/dist/core/interface/index.d.ts.map +1 -1
- package/dist/core/interface/index.js +0 -9
- package/dist/core/interface/types.d.ts +0 -5
- package/dist/core/interface/types.d.ts.map +1 -1
- package/dist/core/interface/update.d.ts +7 -9
- package/dist/core/interface/update.d.ts.map +1 -1
- package/dist/core/interface/update.js +2 -78
- package/dist/core/package/PackageBuilder.d.ts +1 -1
- package/dist/core/package/PackageBuilder.d.ts.map +1 -1
- package/dist/core/package/index.d.ts +0 -9
- package/dist/core/package/index.d.ts.map +1 -1
- package/dist/core/package/index.js +0 -9
- package/dist/core/program/ProgramBuilder.d.ts +1 -1
- package/dist/core/program/ProgramBuilder.d.ts.map +1 -1
- package/dist/core/program/ProgramBuilder.js +45 -7
- package/dist/core/program/create.d.ts +4 -4
- package/dist/core/program/create.d.ts.map +1 -1
- package/dist/core/program/create.js +5 -61
- package/dist/core/program/delete.d.ts +6 -2
- package/dist/core/program/delete.d.ts.map +1 -1
- package/dist/core/program/delete.js +72 -9
- package/dist/core/program/index.d.ts +0 -9
- package/dist/core/program/index.d.ts.map +1 -1
- package/dist/core/program/index.js +0 -23
- package/dist/core/program/update.d.ts +5 -5
- package/dist/core/program/update.d.ts.map +1 -1
- package/dist/core/program/update.js +7 -65
- package/dist/core/shared/getInactiveObjects.d.ts +41 -0
- package/dist/core/shared/getInactiveObjects.d.ts.map +1 -0
- package/dist/core/shared/getInactiveObjects.js +72 -0
- package/dist/core/structure/StructureBuilder.d.ts +1 -1
- package/dist/core/structure/StructureBuilder.d.ts.map +1 -1
- package/dist/core/structure/StructureBuilder.js +6 -20
- package/dist/core/structure/create.d.ts +3 -4
- package/dist/core/structure/create.d.ts.map +1 -1
- package/dist/core/structure/create.js +12 -126
- package/dist/core/structure/delete.d.ts +7 -2
- package/dist/core/structure/delete.d.ts.map +1 -1
- package/dist/core/structure/delete.js +71 -9
- package/dist/core/structure/index.d.ts +0 -9
- package/dist/core/structure/index.d.ts.map +1 -1
- package/dist/core/structure/index.js +0 -9
- package/dist/core/structure/update.d.ts +6 -0
- package/dist/core/structure/update.d.ts.map +1 -1
- package/dist/core/structure/update.js +15 -0
- package/dist/core/table/delete.d.ts +6 -2
- package/dist/core/table/delete.d.ts.map +1 -1
- package/dist/core/table/delete.js +69 -9
- package/dist/core/table/index.d.ts +0 -9
- package/dist/core/table/index.d.ts.map +1 -1
- package/dist/core/table/index.js +0 -9
- package/dist/core/transport/index.d.ts +0 -2
- package/dist/core/transport/index.d.ts.map +1 -1
- package/dist/core/transport/index.js +0 -2
- package/dist/core/view/ViewBuilder.d.ts +1 -1
- package/dist/core/view/ViewBuilder.d.ts.map +1 -1
- package/dist/core/view/delete.d.ts +6 -2
- package/dist/core/view/delete.d.ts.map +1 -1
- package/dist/core/view/delete.js +69 -9
- package/dist/core/view/index.d.ts +0 -9
- package/dist/core/view/index.d.ts.map +1 -1
- package/dist/core/view/index.js +0 -9
- package/dist/core.d.ts +4 -111
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +6 -124
- package/dist/index.d.ts +24 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -42
- package/package.json +1 -2
- package/dist/clients/LockClient.d.ts +0 -28
- package/dist/clients/LockClient.d.ts.map +0 -1
- package/dist/clients/LockClient.js +0 -141
- package/dist/clients/ManagementClient.d.ts +0 -34
- package/dist/clients/ManagementClient.d.ts.map +0 -1
- package/dist/clients/ManagementClient.js +0 -80
- package/dist/clients/ValidationClient.d.ts +0 -8
- package/dist/clients/ValidationClient.d.ts.map +0 -1
- package/dist/clients/ValidationClient.js +0 -14
- package/dist/core/delete.d.ts +0 -22
- package/dist/core/delete.d.ts.map +0 -1
- 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
|
-
|
|
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
|
|
9
|
-
- ✅ **
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- ✅ **
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
##
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
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,
|
|
5
|
-
*
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"CrudClient.d.ts","sourceRoot":"","sources":["../../src/clients/CrudClient.ts"],"names":[],"mappings":"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"}
|