@numends/abap-client 0.0.1 → 0.0.3
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 +57 -32
- 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":"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,KAAK,UAAU,CAAC,MAAM,kCAAkC,eAAe,EAAE,CAAC,CAAC;IAEvF,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,YAA2B,IAAI;IACxD,MAAM,GAAG,GAAG,SAAS,IAAI,eAAe,CAAC;IAEzC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,2BAA2B,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO;QACH,GAAG,UAAU,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE,GAAG;KACjB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC1C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,2BAA2B,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,eAAe,GAAG,SAAS,CAAC;IAE5B,MAAM,CAAC,GAAG,GAAG;QACT,GAAG,UAAU,CAAC,SAAS,CAAC;QACxB,SAAS;KACZ,CAAC;IAEF,OAAO;QACH,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE;YACJ,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI;YAChC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO;YACtC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM;YACpC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ;SAC3C;KACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,GAAG;QACH,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI;QAC1B,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO;QAChC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM;KACjC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,eAAe;IAC3B,OAAO,eAAe,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAc;IAC7B,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB;IAChE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE;IAClC,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB;IAE7E,GAAG,EAAE;QACD,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;KACf;IAED,KAAK,EAAE;QACH,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,IAAI;QACb,iBAAiB,EAAE,CAAC;KACvB;IAED,SAAS,EAAE;QACP,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,qBAAqB;KACpC;IAED,IAAI,EAAE;QACF,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;KACxB;CACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -4,13 +4,20 @@
|
|
|
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
|
+
}
|
|
20
|
+
const args = process.argv.slice(2);
|
|
14
21
|
function prompt(question) {
|
|
15
22
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
16
23
|
return new Promise((resolve) => {
|
|
@@ -21,6 +28,9 @@ function prompt(question) {
|
|
|
21
28
|
});
|
|
22
29
|
}
|
|
23
30
|
function saveApiKey(apiKey) {
|
|
31
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
32
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
33
|
+
}
|
|
24
34
|
if (existsSync(ENV_PATH)) {
|
|
25
35
|
const content = readFileSync(ENV_PATH, 'utf-8');
|
|
26
36
|
if (content.includes('API_KEY=')) {
|
|
@@ -35,66 +45,81 @@ function saveApiKey(apiKey) {
|
|
|
35
45
|
writeFileSync(ENV_PATH, `API_KEY=${apiKey}\n`);
|
|
36
46
|
}
|
|
37
47
|
}
|
|
38
|
-
async function
|
|
48
|
+
async function askApiKey() {
|
|
39
49
|
console.log('');
|
|
40
|
-
console.log('
|
|
41
|
-
console.log('
|
|
50
|
+
console.log(' You need an API key to connect to Arcanum MCP Cloud.');
|
|
51
|
+
console.log(' Get yours at: https://arcanum.mcps.b2rise.com');
|
|
42
52
|
console.log('');
|
|
43
|
-
|
|
44
|
-
console.log('Get yours at: https://arcanum.mcps.b2rise.com');
|
|
45
|
-
console.log('');
|
|
46
|
-
const apiKey = await prompt(' Paste your API key (arc_...): ');
|
|
53
|
+
const apiKey = await prompt(' Paste your API key (arc_...): ');
|
|
47
54
|
if (!apiKey || !apiKey.startsWith('arc_')) {
|
|
48
|
-
console.error('\n
|
|
55
|
+
console.error('\n Invalid API key. It must start with "arc_".');
|
|
49
56
|
process.exit(1);
|
|
50
57
|
}
|
|
51
58
|
saveApiKey(apiKey);
|
|
52
|
-
console.log(
|
|
53
|
-
console.log(' You won\'t need to enter it again.\n');
|
|
59
|
+
console.log('\n API key saved to ~/.abap-client/.env');
|
|
54
60
|
return apiKey;
|
|
55
61
|
}
|
|
62
|
+
async function handleSetup() {
|
|
63
|
+
console.log('');
|
|
64
|
+
console.log(' Setup');
|
|
65
|
+
console.log(' ─────────────────────────────────────────────');
|
|
66
|
+
const apiKey = await askApiKey();
|
|
67
|
+
CONFIG.API_KEY = apiKey;
|
|
68
|
+
console.log(' Done!\n');
|
|
69
|
+
}
|
|
70
|
+
function handleHelp() {
|
|
71
|
+
console.log('');
|
|
72
|
+
console.log(' Usage: abap-client [command]');
|
|
73
|
+
console.log('');
|
|
74
|
+
console.log(' Commands:');
|
|
75
|
+
console.log(' (none) Start the client');
|
|
76
|
+
console.log(' --setup Configure or change API key');
|
|
77
|
+
console.log(' --help Show this help');
|
|
78
|
+
console.log('');
|
|
79
|
+
}
|
|
56
80
|
async function main() {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
81
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
82
|
+
handleHelp();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
console.log('');
|
|
86
|
+
console.log(' ABAP Client - SAP WebSocket Bridge');
|
|
87
|
+
console.log(' ═══════════════════════════════════\n');
|
|
88
|
+
if (args.includes('--setup')) {
|
|
89
|
+
await handleSetup();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
61
92
|
if (!CONFIG.API_KEY) {
|
|
62
|
-
|
|
93
|
+
console.log(' First-time setup');
|
|
94
|
+
console.log(' ─────────────────────────────────────────────');
|
|
95
|
+
const apiKey = await askApiKey();
|
|
63
96
|
CONFIG.API_KEY = apiKey;
|
|
97
|
+
console.log('');
|
|
64
98
|
}
|
|
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...');
|
|
99
|
+
console.log(' Loading SAP environments...');
|
|
71
100
|
try {
|
|
72
101
|
await fetchSapSystems();
|
|
73
102
|
}
|
|
74
103
|
catch (error) {
|
|
75
|
-
console.error(
|
|
104
|
+
console.error(` Failed to load SAP environments: ${error.message}`);
|
|
76
105
|
process.exit(1);
|
|
77
106
|
}
|
|
78
107
|
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
108
|
const client = new WebSocketClient(CONFIG);
|
|
84
109
|
client.connect();
|
|
85
110
|
process.on('SIGINT', () => {
|
|
86
|
-
console.log('\n
|
|
111
|
+
console.log('\n Shutting down...');
|
|
87
112
|
client.disconnect();
|
|
88
113
|
process.exit(0);
|
|
89
114
|
});
|
|
90
115
|
process.on('SIGTERM', () => {
|
|
91
|
-
console.log('\n
|
|
116
|
+
console.log('\n Shutting down...');
|
|
92
117
|
client.disconnect();
|
|
93
118
|
process.exit(0);
|
|
94
119
|
});
|
|
95
120
|
}
|
|
96
121
|
main().catch((error) => {
|
|
97
|
-
console.error(
|
|
122
|
+
console.error(` Fatal error: ${error.message}`);
|
|
98
123
|
process.exit(1);
|
|
99
124
|
});
|
|
100
125
|
//# 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