@mcp-abap-adt/connection 0.1.6 → 0.1.7
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/dist/connection/AbapConnection.d.ts +2 -0
- package/dist/connection/AbapConnection.d.ts.map +1 -1
- package/dist/connection/AbstractAbapConnection.d.ts +9 -0
- package/dist/connection/AbstractAbapConnection.d.ts.map +1 -1
- package/dist/connection/AbstractAbapConnection.js +26 -5
- package/package.json +1 -1
|
@@ -13,6 +13,8 @@ export interface AbapConnection {
|
|
|
13
13
|
getConfig(): SapConfig;
|
|
14
14
|
getBaseUrl(): Promise<string>;
|
|
15
15
|
getAuthHeaders(): Promise<Record<string, string>>;
|
|
16
|
+
getSessionId(): string | null;
|
|
17
|
+
setSessionType(type: "stateful" | "stateless"): void;
|
|
16
18
|
makeAdtRequest(options: AbapRequestOptions): Promise<AxiosResponse>;
|
|
17
19
|
connect(): Promise<void>;
|
|
18
20
|
reset(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbapConnection.d.ts","sourceRoot":"","sources":["../../src/connection/AbapConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,IAAI,SAAS,CAAC;IACvB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,eAAe,IAAI,YAAY,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5C"}
|
|
1
|
+
{"version":3,"file":"AbapConnection.d.ts","sourceRoot":"","sources":["../../src/connection/AbapConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,IAAI,SAAS,CAAC;IACvB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;IACrD,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,eAAe,IAAI,YAAY,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5C"}
|
|
@@ -14,15 +14,24 @@ declare abstract class AbstractAbapConnection implements AbapConnection {
|
|
|
14
14
|
private sessionStorage;
|
|
15
15
|
private sessionMode;
|
|
16
16
|
protected constructor(config: SapConfig, logger: ILogger, sessionStorage?: ISessionStorage, sessionId?: string);
|
|
17
|
+
/**
|
|
18
|
+
* Set session type (stateful or stateless)
|
|
19
|
+
* Controls whether x-sap-adt-sessiontype: stateful header is added to requests
|
|
20
|
+
* - stateful: SAP maintains session state between requests (locks, transactions)
|
|
21
|
+
* - stateless: Each request is independent
|
|
22
|
+
*/
|
|
23
|
+
setSessionType(type: "stateful" | "stateless"): void;
|
|
17
24
|
/**
|
|
18
25
|
* Enable stateful session mode (tells SAP to maintain stateful session)
|
|
19
26
|
* This controls whether x-sap-adt-sessiontype: stateful header is used
|
|
20
27
|
* Storage is controlled separately via setSessionStorage()
|
|
28
|
+
* @deprecated Use setSessionType("stateful") instead
|
|
21
29
|
*/
|
|
22
30
|
enableStatefulSession(): void;
|
|
23
31
|
/**
|
|
24
32
|
* Disable stateful session mode (switch to stateless)
|
|
25
33
|
* Optionally saves current state before switching
|
|
34
|
+
* @deprecated Use setSessionType("stateless") instead
|
|
26
35
|
*/
|
|
27
36
|
disableStatefulSession(saveBeforeDisable?: boolean): Promise<void>;
|
|
28
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractAbapConnection.d.ts","sourceRoot":"","sources":["../../src/connection/AbstractAbapConnection.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiD,aAAa,EAAE,MAAM,OAAO,CAAC;AAG5F,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,uBAAe,sBAAuB,YAAW,cAAc;IAW3D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO;IAXpC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,WAAW,CAAyC;IAE5D,SAAS,aACU,MAAM,EAAE,SAAS,EACf,MAAM,EAAE,OAAO,EAClC,cAAc,CAAC,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,MAAM;IAWpB
|
|
1
|
+
{"version":3,"file":"AbstractAbapConnection.d.ts","sourceRoot":"","sources":["../../src/connection/AbstractAbapConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,21 +59,32 @@ class AbstractAbapConnection {
|
|
|
59
59
|
this.sessionMode = sessionStorage ? "stateful" : "stateless";
|
|
60
60
|
this.logger.debug(`AbstractAbapConnection - Session ID: ${this.sessionId.substring(0, 8)}..., mode: ${this.sessionMode}`);
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Set session type (stateful or stateless)
|
|
64
|
+
* Controls whether x-sap-adt-sessiontype: stateful header is added to requests
|
|
65
|
+
* - stateful: SAP maintains session state between requests (locks, transactions)
|
|
66
|
+
* - stateless: Each request is independent
|
|
67
|
+
*/
|
|
68
|
+
setSessionType(type) {
|
|
69
|
+
this.sessionMode = type;
|
|
70
|
+
this.logger.debug(`Session type set to: ${type}`, {
|
|
71
|
+
sessionId: this.sessionId?.substring(0, 8),
|
|
72
|
+
hasStorage: !!this.sessionStorage
|
|
73
|
+
});
|
|
74
|
+
}
|
|
62
75
|
/**
|
|
63
76
|
* Enable stateful session mode (tells SAP to maintain stateful session)
|
|
64
77
|
* This controls whether x-sap-adt-sessiontype: stateful header is used
|
|
65
78
|
* Storage is controlled separately via setSessionStorage()
|
|
79
|
+
* @deprecated Use setSessionType("stateful") instead
|
|
66
80
|
*/
|
|
67
81
|
enableStatefulSession() {
|
|
68
|
-
this.
|
|
69
|
-
this.logger.debug("Stateful session mode enabled", {
|
|
70
|
-
sessionId: this.sessionId?.substring(0, 8),
|
|
71
|
-
hasStorage: !!this.sessionStorage
|
|
72
|
-
});
|
|
82
|
+
this.setSessionType("stateful");
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
75
85
|
* Disable stateful session mode (switch to stateless)
|
|
76
86
|
* Optionally saves current state before switching
|
|
87
|
+
* @deprecated Use setSessionType("stateless") instead
|
|
77
88
|
*/
|
|
78
89
|
async disableStatefulSession(saveBeforeDisable = false) {
|
|
79
90
|
if (this.sessionMode === "stateless") {
|
|
@@ -306,6 +317,16 @@ class AbstractAbapConnection {
|
|
|
306
317
|
if (customHeaders) {
|
|
307
318
|
Object.assign(requestHeaders, customHeaders);
|
|
308
319
|
}
|
|
320
|
+
// ALWAYS add sap-adt-connection-id header (connectionId is sent for ALL session types)
|
|
321
|
+
if (this.sessionId) {
|
|
322
|
+
requestHeaders["sap-adt-connection-id"] = this.sessionId;
|
|
323
|
+
}
|
|
324
|
+
// Add stateful session headers if stateful mode enabled via enableStatefulSession()
|
|
325
|
+
if (this.sessionMode === "stateful") {
|
|
326
|
+
requestHeaders["x-sap-adt-sessiontype"] = "stateful";
|
|
327
|
+
requestHeaders["sap-adt-request-id"] = (0, crypto_1.randomUUID)().replace(/-/g, '');
|
|
328
|
+
requestHeaders["X-sap-adt-profiling"] = "server-time";
|
|
329
|
+
}
|
|
309
330
|
// Add auth headers (these MUST NOT be overridden)
|
|
310
331
|
Object.assign(requestHeaders, await this.getAuthHeaders());
|
|
311
332
|
if ((normalizedMethod === "POST" || normalizedMethod === "PUT" || normalizedMethod === "DELETE") && this.csrfToken) {
|