@babamba2/mcp-abap-connection 1.5.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/LICENSE +21 -0
- package/README.md +522 -0
- package/bin/sap-abap-auth.js +665 -0
- package/dist/config/sapConfig.d.ts +5 -0
- package/dist/config/sapConfig.d.ts.map +1 -0
- package/dist/config/sapConfig.js +26 -0
- package/dist/connection/AbapConnection.d.ts +4 -0
- package/dist/connection/AbapConnection.d.ts.map +1 -0
- package/dist/connection/AbapConnection.js +2 -0
- package/dist/connection/AbstractAbapConnection.d.ts +89 -0
- package/dist/connection/AbstractAbapConnection.d.ts.map +1 -0
- package/dist/connection/AbstractAbapConnection.js +612 -0
- package/dist/connection/BaseAbapConnection.d.ts +19 -0
- package/dist/connection/BaseAbapConnection.d.ts.map +1 -0
- package/dist/connection/BaseAbapConnection.js +65 -0
- package/dist/connection/GenericWebSocketTransport.d.ts +46 -0
- package/dist/connection/GenericWebSocketTransport.d.ts.map +1 -0
- package/dist/connection/GenericWebSocketTransport.js +135 -0
- package/dist/connection/JwtAbapConnection.d.ts +37 -0
- package/dist/connection/JwtAbapConnection.d.ts.map +1 -0
- package/dist/connection/JwtAbapConnection.js +181 -0
- package/dist/connection/RfcAbapConnection.d.ts +49 -0
- package/dist/connection/RfcAbapConnection.d.ts.map +1 -0
- package/dist/connection/RfcAbapConnection.js +322 -0
- package/dist/connection/SamlAbapConnection.d.ts +21 -0
- package/dist/connection/SamlAbapConnection.d.ts.map +1 -0
- package/dist/connection/SamlAbapConnection.js +65 -0
- package/dist/connection/connectionFactory.d.ts +8 -0
- package/dist/connection/connectionFactory.d.ts.map +1 -0
- package/dist/connection/connectionFactory.js +23 -0
- package/dist/connection/csrfConfig.d.ts +46 -0
- package/dist/connection/csrfConfig.d.ts.map +1 -0
- package/dist/connection/csrfConfig.js +48 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +2 -0
- package/dist/utils/timeouts.d.ts +5 -0
- package/dist/utils/timeouts.d.ts.map +1 -0
- package/dist/utils/timeouts.js +21 -0
- package/dist/utils/tokenRefresh.d.ts +15 -0
- package/dist/utils/tokenRefresh.d.ts.map +1 -0
- package/dist/utils/tokenRefresh.js +55 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbapConnection.d.ts","sourceRoot":"","sources":["../../src/connection/AbapConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAG3C,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACrD,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type IAdtResponse } from '@babamba2/mcp-abap-adt-interfaces';
|
|
2
|
+
import type { SapConfig } from '../config/sapConfig.js';
|
|
3
|
+
import type { ILogger } from '../logger.js';
|
|
4
|
+
import type { AbapConnection, AbapRequestOptions } from './AbapConnection.js';
|
|
5
|
+
declare abstract class AbstractAbapConnection implements AbapConnection {
|
|
6
|
+
private readonly config;
|
|
7
|
+
protected readonly logger: ILogger | null;
|
|
8
|
+
private axiosInstance;
|
|
9
|
+
private csrfToken;
|
|
10
|
+
private cookies;
|
|
11
|
+
private cookieStore;
|
|
12
|
+
private baseUrl;
|
|
13
|
+
private sessionId;
|
|
14
|
+
private sessionMode;
|
|
15
|
+
private skipSessionType;
|
|
16
|
+
protected constructor(config: SapConfig, logger: ILogger | null, sessionId?: string, options?: {
|
|
17
|
+
skipSessionType?: boolean;
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* Set session type (stateful or stateless)
|
|
21
|
+
* Controls whether x-sap-adt-sessiontype: stateful header is added to requests
|
|
22
|
+
* - stateful: SAP maintains session state between requests (locks, transactions)
|
|
23
|
+
* - stateless: Each request is independent
|
|
24
|
+
*
|
|
25
|
+
* When skipSessionType is enabled (via constructor options), this is a no-op:
|
|
26
|
+
* the x-sap-adt-sessiontype header will never be sent. This is needed for
|
|
27
|
+
* older BASIS versions (e.g. 7.40) where the stateful header causes locks
|
|
28
|
+
* to be stored in ABAP session memory instead of the global enqueue table,
|
|
29
|
+
* resulting in HTTP 423 on subsequent PUT requests.
|
|
30
|
+
*/
|
|
31
|
+
setSessionType(type: 'stateful' | 'stateless'): void;
|
|
32
|
+
/**
|
|
33
|
+
* Get current session mode
|
|
34
|
+
*/
|
|
35
|
+
getSessionMode(): 'stateless' | 'stateful';
|
|
36
|
+
/**
|
|
37
|
+
* Set session ID
|
|
38
|
+
* @deprecated Session ID is auto-generated, use setSessionType() to control session mode
|
|
39
|
+
*/
|
|
40
|
+
setSessionId(sessionId: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Get current session ID
|
|
43
|
+
*/
|
|
44
|
+
getSessionId(): string | null;
|
|
45
|
+
getConfig(): SapConfig;
|
|
46
|
+
reset(): void;
|
|
47
|
+
getBaseUrl(): Promise<string>;
|
|
48
|
+
getAuthHeaders(): Promise<Record<string, string>>;
|
|
49
|
+
/**
|
|
50
|
+
* Connect to SAP system and initialize session (get CSRF token and cookies)
|
|
51
|
+
* This should be called explicitly before making the first request to ensure
|
|
52
|
+
* proper authentication and session initialization.
|
|
53
|
+
*
|
|
54
|
+
* Concrete implementations must provide auth-specific connection logic:
|
|
55
|
+
* - BaseAbapConnection: Basic auth with CSRF token fetch
|
|
56
|
+
* - JwtAbapConnection: JWT auth with token refresh on 401/403
|
|
57
|
+
*/
|
|
58
|
+
abstract connect(): Promise<void>;
|
|
59
|
+
makeAdtRequest<T = any, D = any>(options: AbapRequestOptions): Promise<IAdtResponse<T, D>>;
|
|
60
|
+
protected abstract buildAuthorizationHeader(): string;
|
|
61
|
+
/**
|
|
62
|
+
* Fetch CSRF token from SAP system
|
|
63
|
+
* Protected method for use by concrete implementations in their connect() method
|
|
64
|
+
*/
|
|
65
|
+
protected fetchCsrfToken(url: string, retryCount?: number, retryDelay?: number): Promise<string>;
|
|
66
|
+
/**
|
|
67
|
+
* Fetch CSRF token from a specific endpoint with retries
|
|
68
|
+
*/
|
|
69
|
+
private fetchCsrfTokenFromEndpoint;
|
|
70
|
+
/**
|
|
71
|
+
* Get CSRF token (protected for use by subclasses)
|
|
72
|
+
*/
|
|
73
|
+
protected getCsrfToken(): string | null;
|
|
74
|
+
/**
|
|
75
|
+
* Set CSRF token (protected for use by subclasses)
|
|
76
|
+
*/
|
|
77
|
+
protected setCsrfToken(token: string | null): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get cookies (protected for use by subclasses)
|
|
80
|
+
*/
|
|
81
|
+
protected getCookies(): string | null;
|
|
82
|
+
protected setInitialCookies(cookies: string): void;
|
|
83
|
+
private updateCookiesFromResponse;
|
|
84
|
+
private getAxiosInstance;
|
|
85
|
+
private ensureFreshCsrfToken;
|
|
86
|
+
private shouldRetryCsrf;
|
|
87
|
+
}
|
|
88
|
+
export { AbstractAbapConnection };
|
|
89
|
+
//# sourceMappingURL=AbstractAbapConnection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractAbapConnection.d.ts","sourceRoot":"","sources":["../../src/connection/AbstractAbapConnection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,mCAAmC,CAAC;AAMtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,uBAAe,sBAAuB,YAAW,cAAc;IAW3D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAX3C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,eAAe,CAAU;IAEjC,SAAS,aACU,MAAM,EAAE,SAAS,EACf,MAAM,EAAE,OAAO,GAAG,IAAI,EACzC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE;IAqBzC;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;IAUpD;;OAEG;IACH,cAAc,IAAI,WAAW,GAAG,UAAU;IAI1C;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,SAAS,IAAI,SAAS;IAItB,KAAK,IAAI,IAAI;IAYP,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAevD;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EACnC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA4P9B,SAAS,CAAC,QAAQ,CAAC,wBAAwB,IAAI,MAAM;IAErD;;;OAGG;cACa,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,UAAU,GAAE,MAAgC,EAC5C,UAAU,GAAE,MAAgC,GAC3C,OAAO,CAAC,MAAM,CAAC;IA2ClB;;OAEG;YACW,0BAA0B;IAsKxC;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,MAAM,GAAG,IAAI;IAIvC;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIlD;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM,GAAG,IAAI;IAIrC,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlD,OAAO,CAAC,yBAAyB;IAkEjC,OAAO,CAAC,gBAAgB;YAqBV,oBAAoB;IAiClC,OAAO,CAAC,eAAe;CA+BxB;AAGD,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|