@mcp-abap-adt/connection 0.1.5 → 0.1.6
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.
|
@@ -15,11 +15,11 @@ declare abstract class AbstractAbapConnection implements AbapConnection {
|
|
|
15
15
|
private sessionMode;
|
|
16
16
|
protected constructor(config: SapConfig, logger: ILogger, sessionStorage?: ISessionStorage, sessionId?: string);
|
|
17
17
|
/**
|
|
18
|
-
* Enable stateful session mode
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* Enable stateful session mode (tells SAP to maintain stateful session)
|
|
19
|
+
* This controls whether x-sap-adt-sessiontype: stateful header is used
|
|
20
|
+
* Storage is controlled separately via setSessionStorage()
|
|
21
21
|
*/
|
|
22
|
-
enableStatefulSession(
|
|
22
|
+
enableStatefulSession(): void;
|
|
23
23
|
/**
|
|
24
24
|
* Disable stateful session mode (switch to stateless)
|
|
25
25
|
* Optionally saves current state before switching
|
|
@@ -41,8 +41,9 @@ declare abstract class AbstractAbapConnection implements AbapConnection {
|
|
|
41
41
|
getSessionId(): string | null;
|
|
42
42
|
/**
|
|
43
43
|
* Set session storage (can be changed at runtime)
|
|
44
|
+
* This controls whether session state (cookies, CSRF token) is persisted to disk/storage
|
|
44
45
|
*/
|
|
45
|
-
setSessionStorage(storage: ISessionStorage | null): void
|
|
46
|
+
setSessionStorage(storage: ISessionStorage | null): Promise<void>;
|
|
46
47
|
/**
|
|
47
48
|
* Get current session storage
|
|
48
49
|
*/
|
|
@@ -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;
|
|
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;;;;OAIG;IACH,qBAAqB,IAAI,IAAI;IAQ7B;;;OAGG;IACG,sBAAsB,CAAC,iBAAiB,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/E;;OAEG;IACH,cAAc,IAAI,WAAW,GAAG,UAAU;IAI1C;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASrC;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE;;OAEG;IACH,iBAAiB,IAAI,eAAe,GAAG,IAAI;IAI3C;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBvC;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBvC;;;;OAIG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAYtC;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAY1C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBxC,SAAS,IAAI,SAAS;IAItB,KAAK,IAAI,IAAI;IAYP,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAkB7B,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,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAwMzE,SAAS,CAAC,QAAQ,CAAC,wBAAwB,IAAI,MAAM;IAErD;;;OAGG;cACa,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,SAAI,EAAE,UAAU,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAgL/F;;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,OAAO,CAAC,yBAAyB;IAuDjC,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,mBAAmB;YAOb,oBAAoB;IAwBlC,OAAO,CAAC,eAAe;CAyBxB;AAGD,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -53,25 +53,22 @@ class AbstractAbapConnection {
|
|
|
53
53
|
this.config = config;
|
|
54
54
|
this.logger = logger;
|
|
55
55
|
this.sessionStorage = sessionStorage || null;
|
|
56
|
-
//
|
|
56
|
+
// Always generate sessionId (used for sap-adt-connection-id header in all session types)
|
|
57
57
|
this.sessionId = sessionId || (0, crypto_1.randomUUID)();
|
|
58
|
-
|
|
59
|
-
this.
|
|
58
|
+
// Session mode depends only on storage availability (sessionId exists for both modes)
|
|
59
|
+
this.sessionMode = sessionStorage ? "stateful" : "stateless";
|
|
60
|
+
this.logger.debug(`AbstractAbapConnection - Session ID: ${this.sessionId.substring(0, 8)}..., mode: ${this.sessionMode}`);
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
62
|
-
* Enable stateful session mode
|
|
63
|
-
*
|
|
64
|
-
*
|
|
63
|
+
* Enable stateful session mode (tells SAP to maintain stateful session)
|
|
64
|
+
* This controls whether x-sap-adt-sessiontype: stateful header is used
|
|
65
|
+
* Storage is controlled separately via setSessionStorage()
|
|
65
66
|
*/
|
|
66
|
-
|
|
67
|
-
this.sessionId = sessionId;
|
|
68
|
-
this.sessionStorage = storage;
|
|
67
|
+
enableStatefulSession() {
|
|
69
68
|
this.sessionMode = "stateful";
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
sessionId,
|
|
74
|
-
hasExistingState: !!this.csrfToken || !!this.cookies
|
|
69
|
+
this.logger.debug("Stateful session mode enabled", {
|
|
70
|
+
sessionId: this.sessionId?.substring(0, 8),
|
|
71
|
+
hasStorage: !!this.sessionStorage
|
|
75
72
|
});
|
|
76
73
|
}
|
|
77
74
|
/**
|
|
@@ -86,9 +83,7 @@ class AbstractAbapConnection {
|
|
|
86
83
|
await this.saveSessionState();
|
|
87
84
|
}
|
|
88
85
|
this.sessionMode = "stateless";
|
|
89
|
-
this.
|
|
90
|
-
this.sessionStorage = null;
|
|
91
|
-
this.logger.debug("Stateful session disabled", {
|
|
86
|
+
this.logger.debug("Stateful session mode disabled", {
|
|
92
87
|
savedBeforeDisable: saveBeforeDisable
|
|
93
88
|
});
|
|
94
89
|
}
|
|
@@ -120,15 +115,18 @@ class AbstractAbapConnection {
|
|
|
120
115
|
}
|
|
121
116
|
/**
|
|
122
117
|
* Set session storage (can be changed at runtime)
|
|
118
|
+
* This controls whether session state (cookies, CSRF token) is persisted to disk/storage
|
|
123
119
|
*/
|
|
124
|
-
setSessionStorage(storage) {
|
|
120
|
+
async setSessionStorage(storage) {
|
|
125
121
|
this.sessionStorage = storage;
|
|
122
|
+
// Load existing session state if storage is provided
|
|
126
123
|
if (storage && this.sessionId) {
|
|
127
|
-
this.
|
|
128
|
-
}
|
|
129
|
-
else if (!storage) {
|
|
130
|
-
this.sessionMode = "stateless";
|
|
124
|
+
await this.loadSessionState();
|
|
131
125
|
}
|
|
126
|
+
this.logger.debug("Session storage configured", {
|
|
127
|
+
hasStorage: !!storage,
|
|
128
|
+
sessionMode: this.sessionMode
|
|
129
|
+
});
|
|
132
130
|
}
|
|
133
131
|
/**
|
|
134
132
|
* Get current session storage
|