@numends/abap-client 0.0.1 → 0.0.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 +3 -82
- package/dist/config.js +1 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +28 -29
- package/dist/index.js.map +1 -1
- package/dist/lock-manager.d.ts +0 -1
- package/dist/lock-manager.js +1 -39
- package/dist/lock-manager.js.map +1 -1
- package/dist/sap-client.d.ts +0 -2
- package/dist/sap-client.js +0 -83
- package/dist/sap-client.js.map +1 -1
- package/dist/websocket-client.js +18 -105
- package/dist/websocket-client.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,95 +1,16 @@
|
|
|
1
1
|
# @numends/abap-client
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## How it works
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
┌─────────────┐ ┌──────────────┐
|
|
9
|
-
│ Cursor/ │ │ abap-client │
|
|
10
|
-
│ Claude IDE │ │ (this tool) │
|
|
11
|
-
└──────┬──────┘ └──────┬───────┘
|
|
12
|
-
│ │
|
|
13
|
-
↓ │
|
|
14
|
-
┌─────────────┐ WebSocket │
|
|
15
|
-
│ MCP Cloud │◄──────────────────────────┤
|
|
16
|
-
│ (Server) │ │
|
|
17
|
-
└──────┬──────┘ │
|
|
18
|
-
│ │
|
|
19
|
-
└──────Command──────────────────────►
|
|
20
|
-
↓
|
|
21
|
-
┌──────────────┐
|
|
22
|
-
│ SAP S/4 │
|
|
23
|
-
│ (VPN) │
|
|
24
|
-
└──────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
1. Connects to MCP Cloud via WebSocket (outbound connection)
|
|
28
|
-
2. Receives commands from MCP Cloud
|
|
29
|
-
3. Executes HTTP requests to SAP S/4HANA (within VPN)
|
|
30
|
-
4. Returns results back to MCP Cloud
|
|
31
|
-
5. Manages SAP session automatically (CSRF tokens, cookies, keep-alive)
|
|
3
|
+
Bridge between Arcanum MCP Cloud and your SAP system. Runs locally within your VPN and executes SAP ADT operations on demand.
|
|
32
4
|
|
|
33
5
|
## Quick Start
|
|
34
6
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- Node.js 20 or higher
|
|
38
|
-
- VPN access to the SAP system
|
|
39
|
-
- An `arc_*` API key from the [Arcanum admin portal](https://arcanum.mcps.b2rise.com)
|
|
40
|
-
- SAP environments registered in the admin portal
|
|
41
|
-
|
|
42
|
-
### Run with npx (no install needed)
|
|
7
|
+
**Requirements:** Node.js 20+, VPN access to the SAP system, and an API key from [arcanum.mcps.b2rise.com](https://arcanum.mcps.b2rise.com).
|
|
43
8
|
|
|
44
9
|
```bash
|
|
45
10
|
npx @numends/abap-client
|
|
46
11
|
```
|
|
47
12
|
|
|
48
|
-
On first run
|
|
49
|
-
|
|
50
|
-
You can also pass it directly:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
API_KEY=arc_your_key_here npx @numends/abap-client
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Global install
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
npm install -g @numends/abap-client
|
|
60
|
-
abap-client
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Configuration
|
|
64
|
-
|
|
65
|
-
The only required configuration is your API key. All other settings (WebSocket URL, admin URL, keep-alive) are handled automatically.
|
|
66
|
-
|
|
67
|
-
| Variable | Required | Description |
|
|
68
|
-
|----------|----------|-------------|
|
|
69
|
-
| `API_KEY` | Yes | Your `arc_*` API key from the admin portal |
|
|
70
|
-
| `ENV` | No | Set to `DEVELOPMENT` to use QAS endpoints |
|
|
71
|
-
|
|
72
|
-
SAP system credentials are managed in the [Arcanum admin portal](https://arcanum.mcps.b2rise.com) and fetched automatically on startup.
|
|
73
|
-
|
|
74
|
-
## Troubleshooting
|
|
75
|
-
|
|
76
|
-
### "401 Unauthorized" from SAP
|
|
77
|
-
- Verify SAP username and password in the admin portal
|
|
78
|
-
- Check that the SAP user has the required ADT permissions
|
|
79
|
-
|
|
80
|
-
### Connection keeps reconnecting
|
|
81
|
-
- Check if API_KEY is valid and has an active subscription
|
|
82
|
-
- Verify the MCP Cloud server is accessible
|
|
83
|
-
|
|
84
|
-
### "No SAP environments configured"
|
|
85
|
-
- Register your SAP systems in the admin portal first
|
|
86
|
-
|
|
87
|
-
## Security
|
|
88
|
-
|
|
89
|
-
- Never commit `.env` files with real credentials
|
|
90
|
-
- API keys should be treated as secrets
|
|
91
|
-
- SAP passwords are encrypted at rest in the admin portal
|
|
92
|
-
- Connections to MCP Cloud use WSS (TLS)
|
|
13
|
+
On first run you'll be asked for your API key. It's saved to `~/.abap-client/.env` automatically.
|
|
93
14
|
|
|
94
15
|
## License
|
|
95
16
|
|
package/dist/config.js
CHANGED
|
@@ -41,8 +41,7 @@ export async function fetchSapSystems() {
|
|
|
41
41
|
...sapSystems[activeSystemKey],
|
|
42
42
|
systemKey: activeSystemKey,
|
|
43
43
|
};
|
|
44
|
-
console.log(`
|
|
45
|
-
console.log(` 📌 Active system: ${activeSystemKey}`);
|
|
44
|
+
console.log(` ${systemKeys.length} SAP system(s) loaded. Active: ${activeSystemKey}`);
|
|
46
45
|
return sapSystems;
|
|
47
46
|
}
|
|
48
47
|
export function getSapConfig(systemKey = null) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;AAC/D,MAAM,qBAAqB,GAAG,qCAAqC,CAAC;AAEpE,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AAC9D,MAAM,kBAAkB,GAAG,uCAAuC,CAAC;AAEnE,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAoD5C,SAAS,aAAa;IAClB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC;AACnE,CAAC;AAED,IAAI,UAAU,GAAoC,EAAE,CAAC;AACrD,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAE9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAC7B,GAAG,QAAQ,kCAAkC,EAC7C,EAAE,GAAG,EAAE,MAAM,EAAE,EACf,EAAE,OAAO,EAAE,MAAM,EAAE,CACtB,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAEzC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAClG,CAAC;IAED,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnD,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,GAAG,GAAG;QACT,GAAG,UAAU,CAAC,eAAe,CAAC;QAC9B,SAAS,EAAE,eAAe;KAC7B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -4,13 +4,19 @@
|
|
|
4
4
|
* WebSocket client that connects to MCP Cloud and executes SAP ADT operations locally.
|
|
5
5
|
* SAP environments are fetched from the Arcanum admin portal on startup.
|
|
6
6
|
*/
|
|
7
|
-
import 'dotenv/config';
|
|
8
7
|
import { createInterface } from 'readline';
|
|
9
|
-
import { writeFileSync, existsSync, readFileSync } from 'fs';
|
|
8
|
+
import { writeFileSync, existsSync, readFileSync, mkdirSync } from 'fs';
|
|
10
9
|
import { join } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
import { config as dotenvConfig } from 'dotenv';
|
|
11
12
|
import { CONFIG, fetchSapSystems } from './config.js';
|
|
12
13
|
import { WebSocketClient } from './websocket-client.js';
|
|
13
|
-
const
|
|
14
|
+
const CONFIG_DIR = join(homedir(), '.abap-client');
|
|
15
|
+
const ENV_PATH = join(CONFIG_DIR, '.env');
|
|
16
|
+
dotenvConfig({ path: ENV_PATH });
|
|
17
|
+
if (process.env.API_KEY && !CONFIG.API_KEY) {
|
|
18
|
+
CONFIG.API_KEY = process.env.API_KEY;
|
|
19
|
+
}
|
|
14
20
|
function prompt(question) {
|
|
15
21
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
16
22
|
return new Promise((resolve) => {
|
|
@@ -21,6 +27,9 @@ function prompt(question) {
|
|
|
21
27
|
});
|
|
22
28
|
}
|
|
23
29
|
function saveApiKey(apiKey) {
|
|
30
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
31
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
32
|
+
}
|
|
24
33
|
if (existsSync(ENV_PATH)) {
|
|
25
34
|
const content = readFileSync(ENV_PATH, 'utf-8');
|
|
26
35
|
if (content.includes('API_KEY=')) {
|
|
@@ -37,64 +46,54 @@ function saveApiKey(apiKey) {
|
|
|
37
46
|
}
|
|
38
47
|
async function interactiveSetup() {
|
|
39
48
|
console.log('');
|
|
40
|
-
console.log('
|
|
41
|
-
console.log('─────────────────────────────────────────────');
|
|
49
|
+
console.log(' First-time setup');
|
|
50
|
+
console.log(' ─────────────────────────────────────────────');
|
|
42
51
|
console.log('');
|
|
43
|
-
console.log('You need an API key to connect to Arcanum MCP Cloud.');
|
|
44
|
-
console.log('Get yours at: https://arcanum.mcps.b2rise.com');
|
|
52
|
+
console.log(' You need an API key to connect to Arcanum MCP Cloud.');
|
|
53
|
+
console.log(' Get yours at: https://arcanum.mcps.b2rise.com');
|
|
45
54
|
console.log('');
|
|
46
|
-
const apiKey = await prompt('
|
|
55
|
+
const apiKey = await prompt(' Paste your API key (arc_...): ');
|
|
47
56
|
if (!apiKey || !apiKey.startsWith('arc_')) {
|
|
48
|
-
console.error('\n
|
|
57
|
+
console.error('\n Invalid API key. It must start with "arc_".');
|
|
49
58
|
process.exit(1);
|
|
50
59
|
}
|
|
51
60
|
saveApiKey(apiKey);
|
|
52
|
-
console.log(
|
|
53
|
-
console.log('
|
|
61
|
+
console.log('\n API key saved to ~/.abap-client/.env');
|
|
62
|
+
console.log(' You won\'t need to enter it again.\n');
|
|
54
63
|
return apiKey;
|
|
55
64
|
}
|
|
56
65
|
async function main() {
|
|
57
|
-
console.log('
|
|
58
|
-
console.log('
|
|
59
|
-
console.log('
|
|
60
|
-
console.log('╚════════════════════════════════════════════════════════════╝\n');
|
|
66
|
+
console.log('');
|
|
67
|
+
console.log(' ABAP Client - SAP WebSocket Bridge');
|
|
68
|
+
console.log(' ═══════════════════════════════════\n');
|
|
61
69
|
if (!CONFIG.API_KEY) {
|
|
62
70
|
const apiKey = await interactiveSetup();
|
|
63
71
|
CONFIG.API_KEY = apiKey;
|
|
64
72
|
}
|
|
65
|
-
console.log('
|
|
66
|
-
console.log(` WebSocket: ${CONFIG.WS_URL}`);
|
|
67
|
-
console.log(` Admin: ${CONFIG.MCP_ADMIN_URL}`);
|
|
68
|
-
console.log(` API Key: ${CONFIG.API_KEY.substring(0, 12)}...`);
|
|
69
|
-
console.log('');
|
|
70
|
-
console.log('🔄 Fetching SAP environments from admin...');
|
|
73
|
+
console.log(' Loading SAP environments...');
|
|
71
74
|
try {
|
|
72
75
|
await fetchSapSystems();
|
|
73
76
|
}
|
|
74
77
|
catch (error) {
|
|
75
|
-
console.error(
|
|
78
|
+
console.error(` Failed to load SAP environments: ${error.message}`);
|
|
76
79
|
process.exit(1);
|
|
77
80
|
}
|
|
78
81
|
console.log('');
|
|
79
|
-
console.log(` SAP System: ${CONFIG.SAP.baseUrl}`);
|
|
80
|
-
console.log(` SAP Client: ${CONFIG.SAP.client}`);
|
|
81
|
-
console.log(` SAP User: ${CONFIG.SAP.username}`);
|
|
82
|
-
console.log('');
|
|
83
82
|
const client = new WebSocketClient(CONFIG);
|
|
84
83
|
client.connect();
|
|
85
84
|
process.on('SIGINT', () => {
|
|
86
|
-
console.log('\n
|
|
85
|
+
console.log('\n Shutting down...');
|
|
87
86
|
client.disconnect();
|
|
88
87
|
process.exit(0);
|
|
89
88
|
});
|
|
90
89
|
process.on('SIGTERM', () => {
|
|
91
|
-
console.log('\n
|
|
90
|
+
console.log('\n Shutting down...');
|
|
92
91
|
client.disconnect();
|
|
93
92
|
process.exit(0);
|
|
94
93
|
});
|
|
95
94
|
}
|
|
96
95
|
main().catch((error) => {
|
|
97
|
-
console.error(
|
|
96
|
+
console.error(` Fatal error: ${error.message}`);
|
|
98
97
|
process.exit(1);
|
|
99
98
|
});
|
|
100
99
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lock-manager.d.ts
CHANGED
package/dist/lock-manager.js
CHANGED
|
@@ -22,12 +22,9 @@ export class LockManager {
|
|
|
22
22
|
}
|
|
23
23
|
const age = Date.now() - lock.timestamp;
|
|
24
24
|
if (age > this.lockTTL) {
|
|
25
|
-
console.log(` ⏰ Lock expired for ${key} (age: ${Math.round(age / 1000 / 60)}min)`);
|
|
26
25
|
this.locks.delete(key);
|
|
27
26
|
return null;
|
|
28
27
|
}
|
|
29
|
-
console.log(` 🔓 Found cached lock for ${key} (age: ${Math.round(age / 1000)}s)`);
|
|
30
|
-
this.printLockTable('GET_LOCK (cache hit)');
|
|
31
28
|
return lock;
|
|
32
29
|
}
|
|
33
30
|
saveLock(objectName, objectType, lockHandle, transportRequest, suffix = '') {
|
|
@@ -37,27 +34,14 @@ export class LockManager {
|
|
|
37
34
|
transportRequest,
|
|
38
35
|
timestamp: Date.now()
|
|
39
36
|
});
|
|
40
|
-
console.log(` 🔒 Lock cached for ${key}`);
|
|
41
|
-
console.log(` lockHandle: ${lockHandle}`);
|
|
42
|
-
console.log(` transportRequest: ${transportRequest || '(empty)'}`);
|
|
43
|
-
this.printLockTable('SAVE_LOCK');
|
|
44
37
|
}
|
|
45
38
|
clearLock(objectName, objectType, suffix = '') {
|
|
46
39
|
const key = this.buildKey(objectName, objectType, suffix);
|
|
47
|
-
|
|
48
|
-
if (deleted) {
|
|
49
|
-
console.log(` 🗑️ Lock cleared for ${key}`);
|
|
50
|
-
this.printLockTable('CLEAR_LOCK');
|
|
51
|
-
}
|
|
52
|
-
return deleted;
|
|
40
|
+
return this.locks.delete(key);
|
|
53
41
|
}
|
|
54
42
|
clearAll() {
|
|
55
43
|
const count = this.locks.size;
|
|
56
44
|
this.locks.clear();
|
|
57
|
-
if (count > 0) {
|
|
58
|
-
console.log(` 🧹 All locks cleared (${count} lock(s))`);
|
|
59
|
-
this.printLockTable('CLEAR_ALL');
|
|
60
|
-
}
|
|
61
45
|
return count;
|
|
62
46
|
}
|
|
63
47
|
getStats() {
|
|
@@ -66,27 +50,5 @@ export class LockManager {
|
|
|
66
50
|
locks: Array.from(this.locks.keys())
|
|
67
51
|
};
|
|
68
52
|
}
|
|
69
|
-
printLockTable(operation = '') {
|
|
70
|
-
console.log('');
|
|
71
|
-
console.log(' ╔══════════════════════════════════════════════════════════════════════════════');
|
|
72
|
-
console.log(' ║ 🔐 LOCK TABLE ' + (operation ? '(after ' + operation + ')' : '') + ' - ' + this.locks.size + ' active lock(s)');
|
|
73
|
-
console.log(' ╠══════════════════════════════════════════════════════════════════════════════');
|
|
74
|
-
if (this.locks.size === 0) {
|
|
75
|
-
console.log(' ║ (empty - no locks cached)');
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
let idx = 1;
|
|
79
|
-
for (const [key, lock] of this.locks) {
|
|
80
|
-
const age = Math.round((Date.now() - lock.timestamp) / 1000);
|
|
81
|
-
console.log(' ║ [' + idx + '] ' + key);
|
|
82
|
-
console.log(' ║ Handle: ' + lock.lockHandle);
|
|
83
|
-
console.log(' ║ Transport: ' + (lock.transportRequest || '(none)'));
|
|
84
|
-
console.log(' ║ Age: ' + age + 's');
|
|
85
|
-
idx++;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
console.log(' ╚══════════════════════════════════════════════════════════════════════════════');
|
|
89
|
-
console.log('');
|
|
90
|
-
}
|
|
91
53
|
}
|
|
92
54
|
//# sourceMappingURL=lock-manager.js.map
|
package/dist/lock-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-manager.js","sourceRoot":"","sources":["../src/lock-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAarC,MAAM,OAAO,WAAW;IACZ,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;IACrC,OAAO,CAAS;IAExB;QACI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxD,CAAC;IAED,QAAQ,CAAC,UAAkB,EAAE,UAAkB,EAAE,MAAM,GAAG,EAAE;QACxD,OAAO,MAAM;YACT,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;YACnF,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;IACpE,CAAC;IAED,OAAO,CAAC,UAAkB,EAAE,UAAkB,EAAE,MAAM,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,
|
|
1
|
+
{"version":3,"file":"lock-manager.js","sourceRoot":"","sources":["../src/lock-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAarC,MAAM,OAAO,WAAW;IACZ,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;IACrC,OAAO,CAAS;IAExB;QACI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxD,CAAC;IAED,QAAQ,CAAC,UAAkB,EAAE,UAAkB,EAAE,MAAM,GAAG,EAAE;QACxD,OAAO,MAAM;YACT,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;YACnF,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;IACpE,CAAC;IAED,OAAO,CAAC,UAAkB,EAAE,UAAkB,EAAE,MAAM,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,UAAkB,EAAE,UAAkB,EAAE,UAAkB,EAAE,gBAAwB,EAAE,MAAM,GAAG,EAAE;QACtG,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAChB,UAAU;YACV,gBAAgB;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,UAAkB,EAAE,UAAkB,EAAE,MAAM,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,QAAQ;QACJ,OAAO;YACH,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YAC5B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACvC,CAAC;IACN,CAAC;CACJ"}
|
package/dist/sap-client.d.ts
CHANGED
|
@@ -27,8 +27,6 @@ export declare class SAPClient {
|
|
|
27
27
|
constructor(config?: SapActiveConfig);
|
|
28
28
|
executeCallspec(callspec: Callspec): Promise<CallspecResult>;
|
|
29
29
|
private extractDataFromResponse;
|
|
30
|
-
private logRequest;
|
|
31
|
-
private logResponse;
|
|
32
30
|
fetchCsrfToken(): Promise<void>;
|
|
33
31
|
clearSession(): void;
|
|
34
32
|
ping(): Promise<{
|
package/dist/sap-client.js
CHANGED
|
@@ -40,12 +40,10 @@ export class SAPClient {
|
|
|
40
40
|
}
|
|
41
41
|
if (response.headers['x-csrf-token']) {
|
|
42
42
|
this.csrfToken = response.headers['x-csrf-token'];
|
|
43
|
-
console.log(` [KEY] CSRF token obtained: ${this.csrfToken.substring(0, 15)}...`);
|
|
44
43
|
}
|
|
45
44
|
return response;
|
|
46
45
|
}, (error) => {
|
|
47
46
|
if (error.response?.status === 401 || error.response?.status === 403) {
|
|
48
|
-
console.error(` [WARN] Session error (${error.response.status}) - clearing session...`);
|
|
49
47
|
this.clearSession();
|
|
50
48
|
}
|
|
51
49
|
return Promise.reject(error);
|
|
@@ -75,8 +73,6 @@ export class SAPClient {
|
|
|
75
73
|
if (finalHeaders['Cookie'] === '<SESSION_COOKIE>') {
|
|
76
74
|
delete finalHeaders['Cookie'];
|
|
77
75
|
}
|
|
78
|
-
console.log(` [HTTP] ${method} ${url}`);
|
|
79
|
-
this.logRequest(method, url, finalHeaders, finalBody);
|
|
80
76
|
try {
|
|
81
77
|
const response = await this.client.request({
|
|
82
78
|
method,
|
|
@@ -85,16 +81,8 @@ export class SAPClient {
|
|
|
85
81
|
data: finalBody || undefined,
|
|
86
82
|
timeout: 60000
|
|
87
83
|
});
|
|
88
|
-
console.log(` [OK] ${response.status} ${response.statusText}`);
|
|
89
|
-
this.logResponse(response);
|
|
90
84
|
const extractedData = this.extractDataFromResponse(response.data, extract_from_response);
|
|
91
85
|
const { hasErrors, errorMessages } = parseSAPResponse(response.data);
|
|
92
|
-
if (hasErrors) {
|
|
93
|
-
console.log(` [WARN] Found ${errorMessages.length} error(s) in SAP response`);
|
|
94
|
-
errorMessages.forEach((errMsg, index) => {
|
|
95
|
-
console.log(` [ERR] Error ${index + 1}: ${errMsg}`);
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
86
|
return {
|
|
99
87
|
success: !hasErrors,
|
|
100
88
|
status: response.status,
|
|
@@ -112,7 +100,6 @@ export class SAPClient {
|
|
|
112
100
|
}
|
|
113
101
|
catch (error) {
|
|
114
102
|
const axiosErr = error;
|
|
115
|
-
console.error(` [ERR] ${axiosErr.response?.status || 'Error'} ${axiosErr.message}`);
|
|
116
103
|
return {
|
|
117
104
|
success: false,
|
|
118
105
|
status: axiosErr.response?.status,
|
|
@@ -123,92 +110,23 @@ export class SAPClient {
|
|
|
123
110
|
}
|
|
124
111
|
extractDataFromResponse(responseData, extractRules) {
|
|
125
112
|
const extractedData = {};
|
|
126
|
-
console.log(' [DEBUG] extract_from_response:', extractRules);
|
|
127
|
-
console.log(' [DEBUG] response.data type:', typeof responseData);
|
|
128
|
-
console.log(' [DEBUG] response.data (first 200 chars):', typeof responseData === 'string' ? responseData.substring(0, 200) : 'NOT A STRING');
|
|
129
113
|
if (extractRules && typeof responseData === 'string') {
|
|
130
|
-
console.log(' [DEBUG] Attempting to extract values from XML...');
|
|
131
114
|
if (extractRules.lock_handle) {
|
|
132
|
-
console.log(' [DEBUG] Looking for lockHandle in XML...');
|
|
133
115
|
const lockHandleMatch = responseData.match(/<(?:adtcore:)?(?:lock[Hh]andle|LOCK_HANDLE)>(.*?)<\/(?:adtcore:)?(?:lock[Hh]andle|LOCK_HANDLE)>/);
|
|
134
116
|
if (lockHandleMatch) {
|
|
135
117
|
extractedData.lockHandle = lockHandleMatch[1];
|
|
136
|
-
console.log(` [KEY] Extracted lock_handle: ${extractedData.lockHandle}`);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
console.log(' [WARN] lockHandle NOT found in XML');
|
|
140
118
|
}
|
|
141
119
|
}
|
|
142
120
|
if (extractRules.transport_request) {
|
|
143
|
-
console.log(' [DEBUG] Looking for transportRequest in XML...');
|
|
144
121
|
const transportMatch = responseData.match(/<(?:adtcore:)?(?:corrNr|CORRNR)>(.*?)<\/(?:adtcore:)?(?:corrNr|CORRNR)>/);
|
|
145
122
|
if (transportMatch) {
|
|
146
123
|
extractedData.transportRequest = transportMatch[1];
|
|
147
|
-
console.log(` [KEY] Extracted transport_request: ${extractedData.transportRequest}`);
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
console.log(' [WARN] transportRequest NOT found in XML (or empty)');
|
|
151
124
|
}
|
|
152
125
|
}
|
|
153
126
|
}
|
|
154
|
-
else {
|
|
155
|
-
console.log(` [WARN] No extraction: extract_from_response=${!!extractRules}, is string=${typeof responseData === 'string'}`);
|
|
156
|
-
}
|
|
157
127
|
return extractedData;
|
|
158
128
|
}
|
|
159
|
-
logRequest(method, url, headers, body) {
|
|
160
|
-
console.log('\n ================================================================');
|
|
161
|
-
console.log(' | [REQ] DETAILED REQUEST LOG');
|
|
162
|
-
console.log(' |---------------------------------------------------------------');
|
|
163
|
-
console.log(` | Method: ${method}`);
|
|
164
|
-
console.log(` | URL: ${url}`);
|
|
165
|
-
console.log(' |---------------------------------------------------------------');
|
|
166
|
-
console.log(' | [HEADERS] REQUEST HEADERS:');
|
|
167
|
-
Object.entries(headers).forEach(([key, value]) => {
|
|
168
|
-
console.log(` | ${key}: ${value}`);
|
|
169
|
-
});
|
|
170
|
-
if (this.csrfToken) {
|
|
171
|
-
console.log(' |---------------------------------------------------------------');
|
|
172
|
-
console.log(` | [CSRF] CSRF Token: ${this.csrfToken}`);
|
|
173
|
-
}
|
|
174
|
-
if (body && (method === 'POST' || method === 'PUT')) {
|
|
175
|
-
console.log(' |---------------------------------------------------------------');
|
|
176
|
-
console.log(` | [BODY] REQUEST BODY (${body.length} chars):`);
|
|
177
|
-
console.log(' |');
|
|
178
|
-
body.split('\n').forEach(line => {
|
|
179
|
-
console.log(` | ${line}`);
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
console.log(' ================================================================\n');
|
|
183
|
-
}
|
|
184
|
-
logResponse(response) {
|
|
185
|
-
console.log('\n ================================================================');
|
|
186
|
-
console.log(' | [RES] DETAILED RESPONSE LOG');
|
|
187
|
-
console.log(' |---------------------------------------------------------------');
|
|
188
|
-
console.log(` | Status: ${response.status} ${response.statusText}`);
|
|
189
|
-
console.log(' |---------------------------------------------------------------');
|
|
190
|
-
console.log(' | [HEADERS] RESPONSE HEADERS:');
|
|
191
|
-
if (response.headers) {
|
|
192
|
-
Object.entries(response.headers).forEach(([key, value]) => {
|
|
193
|
-
console.log(` | ${key}: ${value}`);
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
console.log(' |---------------------------------------------------------------');
|
|
197
|
-
console.log(` | [DATA] RESPONSE BODY (${typeof response.data === 'string' ? response.data.length : '?'} chars):`);
|
|
198
|
-
if (typeof response.data === 'string' && response.data.length < 2000) {
|
|
199
|
-
console.log(' |');
|
|
200
|
-
response.data.split('\n').forEach((line) => {
|
|
201
|
-
console.log(` | ${line}`);
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
else if (typeof response.data === 'string') {
|
|
205
|
-
console.log(' | (First 500 chars):');
|
|
206
|
-
console.log(` | ${response.data.substring(0, 500)}...`);
|
|
207
|
-
}
|
|
208
|
-
console.log(' ================================================================\n');
|
|
209
|
-
}
|
|
210
129
|
async fetchCsrfToken() {
|
|
211
|
-
console.log(' [KEY] Fetching CSRF token...');
|
|
212
130
|
try {
|
|
213
131
|
await this.client.get('/sap/bc/adt/compatibility/graph', {
|
|
214
132
|
headers: { 'X-CSRF-Token': 'Fetch' }
|
|
@@ -224,7 +142,6 @@ export class SAPClient {
|
|
|
224
142
|
clearSession() {
|
|
225
143
|
this.csrfToken = null;
|
|
226
144
|
this.cookies.clear();
|
|
227
|
-
console.log(' [CLEAN] Session cleared');
|
|
228
145
|
}
|
|
229
146
|
async ping() {
|
|
230
147
|
try {
|
package/dist/sap-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sap-client.js","sourceRoot":"","sources":["../src/sap-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAmE,MAAM,OAAO,CAAC;AACxF,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAwB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAmBlD,MAAM,OAAO,SAAS;IACV,MAAM,CAAkB;IAChC,SAAS,GAAkB,IAAI,CAAC;IACxB,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,MAAM,CAAgB;IAE9B,YAAY,SAA0B,MAAM,CAAC,GAAG;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE;gBACL,YAAY,EAAE,MAAM,CAAC,MAAM;gBAC3B,cAAc,EAAE,MAAM,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,gCAAgC;gBAC1C,uBAAuB,EAAE,UAAU;aACtC;YACD,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC;gBACxB,kBAAkB,EAAE,KAAK;aAC5B,CAAC;YACF,IAAI,EAAE;gBACF,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC5B;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACjC,CAAC,QAAuB,EAAE,EAAE;YACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,SAAS,EAAE,CAAC;gBACX,SAAsB,CAAC,OAAO,CAAC,CAAC,YAAoB,EAAE,EAAE;oBACrD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC;YAED,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sap-client.js","sourceRoot":"","sources":["../src/sap-client.ts"],"names":[],"mappings":"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"}
|
package/dist/websocket-client.js
CHANGED
|
@@ -22,22 +22,14 @@ export class WebSocketClient {
|
|
|
22
22
|
}
|
|
23
23
|
connect() {
|
|
24
24
|
if (this.ws) {
|
|
25
|
-
if (this.ws.readyState === WebSocket.CONNECTING) {
|
|
26
|
-
console.log('⚠️ Already connecting, skipping duplicate connection attempt');
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
if (this.ws.readyState === WebSocket.OPEN) {
|
|
30
|
-
console.log('⚠️ Already connected, skipping duplicate connection attempt');
|
|
25
|
+
if (this.ws.readyState === WebSocket.CONNECTING || this.ws.readyState === WebSocket.OPEN) {
|
|
31
26
|
return;
|
|
32
27
|
}
|
|
33
28
|
}
|
|
34
29
|
if (this.isReconnecting) {
|
|
35
|
-
console.log('⚠️ Reconnection already scheduled, skipping duplicate attempt');
|
|
36
30
|
return;
|
|
37
31
|
}
|
|
38
|
-
console.log('
|
|
39
|
-
console.log(` URL: ${this.config.WS_URL}`);
|
|
40
|
-
console.log(` API_KEY: ${this.config.API_KEY.substring(0, 15)}...`);
|
|
32
|
+
console.log(' Connecting...');
|
|
41
33
|
this.ws = new WebSocket(this.config.WS_URL, {
|
|
42
34
|
headers: {
|
|
43
35
|
'Authorization': `Bearer ${this.config.API_KEY}`
|
|
@@ -49,7 +41,7 @@ export class WebSocketClient {
|
|
|
49
41
|
this.ws.on('close', () => this.onClose());
|
|
50
42
|
}
|
|
51
43
|
onOpen() {
|
|
52
|
-
console.log('
|
|
44
|
+
console.log(' Connected!\n');
|
|
53
45
|
if (this.reconnectTimer) {
|
|
54
46
|
clearTimeout(this.reconnectTimer);
|
|
55
47
|
this.reconnectTimer = null;
|
|
@@ -63,30 +55,22 @@ export class WebSocketClient {
|
|
|
63
55
|
}
|
|
64
56
|
const intervalMs = this.config.KEEPALIVE?.intervalMs || 300000;
|
|
65
57
|
this.keepAliveTimer = setInterval(async () => {
|
|
66
|
-
console.log(' 💓 Pinging SAP to keep session alive...');
|
|
67
58
|
const result = await this.sapClient.ping();
|
|
68
|
-
if (result.success) {
|
|
69
|
-
console.
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
console.error(` ⚠️ SAP ping failed: ${result.error}`);
|
|
59
|
+
if (!result.success) {
|
|
60
|
+
console.error(' Keep-alive failed');
|
|
73
61
|
}
|
|
74
62
|
}, intervalMs);
|
|
75
|
-
const minutes = Math.floor(intervalMs / 60000);
|
|
76
|
-
console.log(` 💓 SAP keep-alive started (ping every ${minutes} min)`);
|
|
77
63
|
}
|
|
78
64
|
stopKeepAlive() {
|
|
79
65
|
if (this.keepAliveTimer) {
|
|
80
66
|
clearInterval(this.keepAliveTimer);
|
|
81
67
|
this.keepAliveTimer = null;
|
|
82
|
-
console.log(' 💓 SAP keep-alive stopped');
|
|
83
68
|
}
|
|
84
69
|
}
|
|
85
70
|
async onMessage(data) {
|
|
86
71
|
try {
|
|
87
72
|
const message = JSON.parse(data.toString());
|
|
88
73
|
if (message.type === 'welcome') {
|
|
89
|
-
console.log('👋 Welcome message:', message.message);
|
|
90
74
|
return;
|
|
91
75
|
}
|
|
92
76
|
if (message.action && ['switch_system', 'reset_session', 'get_status', 'list_systems', 'refresh_systems'].includes(message.action)) {
|
|
@@ -104,10 +88,9 @@ export class WebSocketClient {
|
|
|
104
88
|
}
|
|
105
89
|
const { requestId, action, callspecs } = message;
|
|
106
90
|
if (!requestId || !action) {
|
|
107
|
-
console.error('❌ Invalid message format (missing requestId or action)');
|
|
108
91
|
return;
|
|
109
92
|
}
|
|
110
|
-
console.log(
|
|
93
|
+
console.log(` >> ${action}`);
|
|
111
94
|
const executionResult = await this.executeCallspecs(action, callspecs || []);
|
|
112
95
|
if (Array.isArray(callspecs) && Array.isArray(executionResult.results)) {
|
|
113
96
|
for (let i = 0; i < callspecs.length; i++) {
|
|
@@ -121,50 +104,44 @@ export class WebSocketClient {
|
|
|
121
104
|
if (objectName && objectType) {
|
|
122
105
|
this.lockManager.clearLock(objectName, objectType);
|
|
123
106
|
this.lockManager.clearLock(objectName, objectType, 'TESTCLASSES');
|
|
124
|
-
console.log(` 🧹 Lock cache cleared for ${objectName} (UNLOCK succeeded)`);
|
|
125
107
|
}
|
|
126
108
|
}
|
|
127
109
|
}
|
|
128
110
|
}
|
|
129
111
|
this.sendResponse(requestId, executionResult.allSuccessful, executionResult.results);
|
|
130
|
-
console.log(
|
|
112
|
+
console.log(` << ${action} ${executionResult.allSuccessful ? 'OK' : 'FAIL'}`);
|
|
131
113
|
}
|
|
132
114
|
catch (error) {
|
|
133
|
-
console.error(
|
|
134
|
-
console.error(` Stack: ${error.stack}`);
|
|
115
|
+
console.error(` Error: ${error.message}`);
|
|
135
116
|
try {
|
|
136
117
|
const parsedMessage = JSON.parse(data.toString());
|
|
137
118
|
if (parsedMessage?.requestId) {
|
|
138
119
|
this.sendResponse(parsedMessage.requestId, false, { error: error.message });
|
|
139
120
|
}
|
|
140
121
|
}
|
|
141
|
-
catch
|
|
142
|
-
|
|
122
|
+
catch {
|
|
123
|
+
// could not send error response
|
|
143
124
|
}
|
|
144
125
|
}
|
|
145
126
|
}
|
|
146
127
|
async handleCommand(message) {
|
|
147
128
|
if (message.command === 'clear_locks') {
|
|
148
|
-
console.log('\n🧹 Clearing all locks...');
|
|
149
129
|
this.lockManager.clearAll();
|
|
150
130
|
return;
|
|
151
131
|
}
|
|
152
132
|
if (message.command === 'lock_stats') {
|
|
153
133
|
const stats = this.lockManager.getStats();
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
134
|
+
if (message.requestId) {
|
|
135
|
+
this.sendResponse(message.requestId, true, stats);
|
|
136
|
+
}
|
|
157
137
|
return;
|
|
158
138
|
}
|
|
159
139
|
if (message.command === 'switch_system') {
|
|
160
|
-
console.log(`\n🔄 Switching SAP system to: ${message.system}`);
|
|
161
140
|
try {
|
|
162
141
|
const result = switchSystem(message.system);
|
|
163
142
|
this.sapClient = new SAPClient(CONFIG.SAP);
|
|
164
143
|
this.lockManager.clearAll();
|
|
165
|
-
console.log(`
|
|
166
|
-
console.log(` 🔍 URL: ${result.config.baseUrl}`);
|
|
167
|
-
console.log(` 🏢 Client: ${result.config.client}`);
|
|
144
|
+
console.log(` Switched to ${result.system}`);
|
|
168
145
|
if (message.requestId) {
|
|
169
146
|
this.sendResponse(message.requestId, true, {
|
|
170
147
|
success: true,
|
|
@@ -175,7 +152,6 @@ export class WebSocketClient {
|
|
|
175
152
|
}
|
|
176
153
|
}
|
|
177
154
|
catch (error) {
|
|
178
|
-
console.error(` ❌ Switch failed: ${error.message}`);
|
|
179
155
|
if (message.requestId) {
|
|
180
156
|
this.sendResponse(message.requestId, false, {
|
|
181
157
|
success: false,
|
|
@@ -186,10 +162,8 @@ export class WebSocketClient {
|
|
|
186
162
|
return;
|
|
187
163
|
}
|
|
188
164
|
if (message.command === 'reset_session') {
|
|
189
|
-
console.log('\n🔄 Resetting SAP session...');
|
|
190
165
|
this.sapClient.clearSession();
|
|
191
166
|
this.lockManager.clearAll();
|
|
192
|
-
console.log(' ✅ Session reset complete');
|
|
193
167
|
if (message.requestId) {
|
|
194
168
|
this.sendResponse(message.requestId, true, {
|
|
195
169
|
success: true,
|
|
@@ -199,7 +173,6 @@ export class WebSocketClient {
|
|
|
199
173
|
return;
|
|
200
174
|
}
|
|
201
175
|
if (message.command === 'get_status') {
|
|
202
|
-
console.log('\n📊 Getting system status...');
|
|
203
176
|
const currentSystem = getActiveSystem();
|
|
204
177
|
const lockStats = this.lockManager.getStats();
|
|
205
178
|
const status = {
|
|
@@ -213,22 +186,14 @@ export class WebSocketClient {
|
|
|
213
186
|
locks: lockStats.locks,
|
|
214
187
|
connected: this.ws?.readyState === WebSocket.OPEN
|
|
215
188
|
};
|
|
216
|
-
console.log(` System: ${status.activeSystem} (${status.systemName})`);
|
|
217
|
-
console.log(` Session: ${status.hasSession ? 'Active' : 'Not established'}`);
|
|
218
|
-
console.log(` Locks: ${status.activeLocks}`);
|
|
219
189
|
if (message.requestId) {
|
|
220
190
|
this.sendResponse(message.requestId, true, status);
|
|
221
191
|
}
|
|
222
192
|
return;
|
|
223
193
|
}
|
|
224
194
|
if (message.command === 'list_systems') {
|
|
225
|
-
console.log('\n📋 Listing available systems...');
|
|
226
195
|
const systems = getAvailableSystems();
|
|
227
196
|
const currentSystem = getActiveSystem();
|
|
228
|
-
systems.forEach(sys => {
|
|
229
|
-
const marker = sys.key === currentSystem ? ' ← active' : '';
|
|
230
|
-
console.log(` ${sys.key}: ${sys.name} (${sys.baseUrl})${marker}`);
|
|
231
|
-
});
|
|
232
197
|
if (message.requestId) {
|
|
233
198
|
this.sendResponse(message.requestId, true, {
|
|
234
199
|
systems,
|
|
@@ -238,14 +203,12 @@ export class WebSocketClient {
|
|
|
238
203
|
return;
|
|
239
204
|
}
|
|
240
205
|
if (message.command === 'refresh_systems') {
|
|
241
|
-
console.log('\n🔄 Refreshing SAP environments from admin...');
|
|
242
206
|
try {
|
|
243
207
|
await fetchSapSystems();
|
|
244
208
|
this.sapClient = new SAPClient(CONFIG.SAP);
|
|
245
209
|
this.lockManager.clearAll();
|
|
246
210
|
const systems = getAvailableSystems();
|
|
247
211
|
const currentSystem = getActiveSystem();
|
|
248
|
-
console.log(` ✅ Refreshed ${systems.length} system(s)`);
|
|
249
212
|
if (message.requestId) {
|
|
250
213
|
this.sendResponse(message.requestId, true, {
|
|
251
214
|
success: true,
|
|
@@ -256,7 +219,6 @@ export class WebSocketClient {
|
|
|
256
219
|
}
|
|
257
220
|
}
|
|
258
221
|
catch (error) {
|
|
259
|
-
console.error(` ❌ Refresh failed: ${error.message}`);
|
|
260
222
|
if (message.requestId) {
|
|
261
223
|
this.sendResponse(message.requestId, false, {
|
|
262
224
|
success: false,
|
|
@@ -268,7 +230,6 @@ export class WebSocketClient {
|
|
|
268
230
|
}
|
|
269
231
|
}
|
|
270
232
|
async executeCallspecs(action, callspecs) {
|
|
271
|
-
console.log(` Executing ${action} on SAP...`);
|
|
272
233
|
if (Array.isArray(callspecs)) {
|
|
273
234
|
const results = [];
|
|
274
235
|
const extractedValues = {};
|
|
@@ -290,24 +251,12 @@ export class WebSocketClient {
|
|
|
290
251
|
}
|
|
291
252
|
}
|
|
292
253
|
}
|
|
293
|
-
if (objectName && objectType) {
|
|
294
|
-
if (lockSuffix) {
|
|
295
|
-
console.log(` 🏷️ Detected: ${objectName} (${objectType}:${lockSuffix})`);
|
|
296
|
-
}
|
|
297
|
-
else {
|
|
298
|
-
console.log(` 🏷️ Detected: ${objectName} (${objectType})`);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
254
|
for (let i = 0; i < callspecs.length; i++) {
|
|
302
255
|
const callspec = callspecs[i];
|
|
303
|
-
console.log(`\n 📋 Processing callspec: ${callspec.name || callspec.step}`);
|
|
304
|
-
console.log(' 🔍 DEBUG - Full callspec received:', JSON.stringify(callspec, null, 2));
|
|
305
|
-
console.log(` Original URL: ${callspec.url}`);
|
|
306
256
|
const isLock = isLockOperation(callspec);
|
|
307
257
|
if (isLock && objectName && objectType) {
|
|
308
258
|
const cachedLock = this.lockManager.getLock(objectName, objectType, lockSuffix);
|
|
309
259
|
if (cachedLock) {
|
|
310
|
-
console.log(' ⚡ SKIPPING LOCK - Using cached lock!');
|
|
311
260
|
extractedValues.lockHandle = cachedLock.lockHandle;
|
|
312
261
|
extractedValues.transportRequest = cachedLock.transportRequest;
|
|
313
262
|
results.push({
|
|
@@ -320,84 +269,53 @@ export class WebSocketClient {
|
|
|
320
269
|
transportRequest: cachedLock.transportRequest,
|
|
321
270
|
}
|
|
322
271
|
});
|
|
323
|
-
console.log(' ✅ Using cached lock (skip HTTP request)');
|
|
324
272
|
continue;
|
|
325
273
|
}
|
|
326
274
|
}
|
|
327
275
|
const processedCallspec = { ...callspec };
|
|
328
276
|
if (processedCallspec.url) {
|
|
329
|
-
const originalUrl = processedCallspec.url;
|
|
330
277
|
if (extractedValues.lockHandle) {
|
|
331
|
-
console.log(` 🔑 Substituting <LOCK_HANDLE> with: ${extractedValues.lockHandle}`);
|
|
332
278
|
processedCallspec.url = processedCallspec.url.replace(/<LOCK_HANDLE>/g, extractedValues.lockHandle);
|
|
333
279
|
}
|
|
334
|
-
else if (processedCallspec.url.includes('<LOCK_HANDLE>')) {
|
|
335
|
-
console.log(' ⚠️ URL contains <LOCK_HANDLE> but no value available!');
|
|
336
|
-
}
|
|
337
280
|
if (extractedValues.transportRequest) {
|
|
338
|
-
console.log(` 🔑 Substituting <TRANSPORT_REQUEST> with: ${extractedValues.transportRequest}`);
|
|
339
281
|
processedCallspec.url = processedCallspec.url.replace(/<TRANSPORT_REQUEST>/g, extractedValues.transportRequest);
|
|
340
282
|
}
|
|
341
|
-
else if (processedCallspec.url.includes('<TRANSPORT_REQUEST>')) {
|
|
342
|
-
console.log(' ⚠️ URL contains <TRANSPORT_REQUEST> but no value available!');
|
|
343
|
-
}
|
|
344
|
-
if (originalUrl !== processedCallspec.url) {
|
|
345
|
-
console.log(` ✅ URL after substitution: ${processedCallspec.url}`);
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
console.log(' ℹ️ URL unchanged (no placeholders or no values)');
|
|
349
|
-
}
|
|
350
283
|
}
|
|
351
284
|
if (processedCallspec.body === '<NAMING_JSON>' && extractedValues.namingJson) {
|
|
352
|
-
console.log(' 📦 Substituting <NAMING_JSON> with naming JSON from Step 1');
|
|
353
285
|
const namingWithPackage = { ...extractedValues.namingJson };
|
|
354
286
|
if (processedCallspec.package) {
|
|
355
287
|
namingWithPackage.metadata = namingWithPackage.metadata || {};
|
|
356
288
|
namingWithPackage.metadata.package = processedCallspec.package;
|
|
357
|
-
console.log(` 📦 Injected package: ${processedCallspec.package}`);
|
|
358
289
|
}
|
|
359
290
|
processedCallspec.body = JSON.stringify(namingWithPackage);
|
|
360
291
|
}
|
|
361
|
-
else if (processedCallspec.body === '<NAMING_JSON>' && !extractedValues.namingJson) {
|
|
362
|
-
console.log(' ⚠️ Body contains <NAMING_JSON> but no naming JSON available!');
|
|
363
|
-
}
|
|
364
292
|
const result = await this.sapClient.executeCallspec(processedCallspec);
|
|
365
293
|
if (result.success && result.data?.raw && typeof result.data.raw === 'string') {
|
|
366
294
|
if (result.data.raw.includes('<SEVERITY>ERROR</SEVERITY>')) {
|
|
367
|
-
console.log(' ⚠️ Validation returned SEVERITY=ERROR');
|
|
368
295
|
const shortTextMatch = result.data.raw.match(/<SHORT_TEXT>([^<]*)<\/SHORT_TEXT>/);
|
|
369
296
|
if (shortTextMatch) {
|
|
370
|
-
console.log(`
|
|
297
|
+
console.log(` Error: ${shortTextMatch[1]}`);
|
|
371
298
|
}
|
|
372
299
|
result.success = false;
|
|
373
300
|
result.validationError = true;
|
|
374
301
|
}
|
|
375
302
|
}
|
|
376
303
|
results.push(result);
|
|
377
|
-
console.log(` 📊 Result: success=${result.success}, status=${result.status}`);
|
|
378
304
|
if (result.success && result.data) {
|
|
379
|
-
console.log(' 🔍 Checking for extractable values...');
|
|
380
305
|
if (result.data.lockHandle) {
|
|
381
306
|
extractedValues.lockHandle = result.data.lockHandle;
|
|
382
|
-
console.log(` 🔑 Extracted lock_handle: ${extractedValues.lockHandle}`);
|
|
383
307
|
if (isLock && objectName && objectType) {
|
|
384
308
|
this.lockManager.saveLock(objectName, objectType, result.data.lockHandle, result.data.transportRequest || '', lockSuffix);
|
|
385
309
|
}
|
|
386
310
|
}
|
|
387
311
|
if (result.data.transportRequest) {
|
|
388
312
|
extractedValues.transportRequest = result.data.transportRequest;
|
|
389
|
-
console.log(` 🔑 Extracted transport_request: ${extractedValues.transportRequest}`);
|
|
390
313
|
}
|
|
391
314
|
if (result.data.raw && typeof result.data.raw === 'object') {
|
|
392
315
|
extractedValues.namingJson = result.data.raw;
|
|
393
|
-
console.log(' 📦 Saved naming JSON for RAP UI workflow');
|
|
394
|
-
}
|
|
395
|
-
if (!result.data.lockHandle && !result.data.transportRequest && !(result.data.raw && typeof result.data.raw === 'object')) {
|
|
396
|
-
console.log(' ℹ️ No extractable values in this response');
|
|
397
316
|
}
|
|
398
317
|
}
|
|
399
318
|
if (!result.success) {
|
|
400
|
-
console.error(' ⚠️ Callspec failed, stopping execution');
|
|
401
319
|
allSuccessful = false;
|
|
402
320
|
break;
|
|
403
321
|
}
|
|
@@ -411,7 +329,6 @@ export class WebSocketClient {
|
|
|
411
329
|
}
|
|
412
330
|
sendResponse(requestId, success, data) {
|
|
413
331
|
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
414
|
-
console.error('❌ Cannot send response: WebSocket not connected');
|
|
415
332
|
return;
|
|
416
333
|
}
|
|
417
334
|
this.ws.send(JSON.stringify({
|
|
@@ -421,29 +338,25 @@ export class WebSocketClient {
|
|
|
421
338
|
data,
|
|
422
339
|
timestamp: new Date().toISOString()
|
|
423
340
|
}));
|
|
424
|
-
console.log(` 📤 Response sent (success: ${success})`);
|
|
425
341
|
}
|
|
426
342
|
onError(error) {
|
|
427
|
-
console.error(
|
|
343
|
+
console.error(` Connection error: ${error.message}`);
|
|
428
344
|
}
|
|
429
345
|
onClose() {
|
|
430
|
-
console.log('
|
|
346
|
+
console.log(' Disconnected');
|
|
431
347
|
this.ws = null;
|
|
432
348
|
this.stopKeepAlive();
|
|
433
349
|
this.sapClient.clearSession();
|
|
434
350
|
this.lockManager.clearAll();
|
|
435
351
|
const reconnectDelay = this.config.RETRY?.delayMs || 5000;
|
|
436
352
|
if (!this.isReconnecting && !this.reconnectTimer) {
|
|
437
|
-
console.log(`
|
|
353
|
+
console.log(` Reconnecting in ${reconnectDelay / 1000}s...`);
|
|
438
354
|
this.isReconnecting = true;
|
|
439
355
|
this.reconnectTimer = setTimeout(() => {
|
|
440
356
|
this.isReconnecting = false;
|
|
441
357
|
this.connect();
|
|
442
358
|
}, reconnectDelay);
|
|
443
359
|
}
|
|
444
|
-
else {
|
|
445
|
-
console.log(' ⚠️ Reconnection already scheduled, skipping');
|
|
446
|
-
}
|
|
447
360
|
}
|
|
448
361
|
disconnect() {
|
|
449
362
|
if (this.reconnectTimer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../src/websocket-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../src/websocket-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED