@mcp-abap-adt/connection 0.1.4 → 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 with storage
19
- * @param sessionId - Unique session identifier
20
- * @param storage - Storage implementation for persisting session state
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(sessionId: string, storage: ISessionStorage): Promise<void>;
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":"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"}
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"}
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.AbstractAbapConnection = void 0;
37
37
  const axios_1 = __importStar(require("axios"));
38
38
  const https_1 = require("https");
39
+ const crypto_1 = require("crypto");
39
40
  const timeouts_js_1 = require("../utils/timeouts.js");
40
41
  class AbstractAbapConnection {
41
42
  config;
@@ -52,23 +53,22 @@ class AbstractAbapConnection {
52
53
  this.config = config;
53
54
  this.logger = logger;
54
55
  this.sessionStorage = sessionStorage || null;
55
- this.sessionId = sessionId || null;
56
- this.sessionMode = sessionId && sessionStorage ? "stateful" : "stateless";
56
+ // Always generate sessionId (used for sap-adt-connection-id header in all session types)
57
+ this.sessionId = sessionId || (0, crypto_1.randomUUID)();
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}`);
57
61
  }
58
62
  /**
59
- * Enable stateful session mode with storage
60
- * @param sessionId - Unique session identifier
61
- * @param storage - Storage implementation for persisting session state
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()
62
66
  */
63
- async enableStatefulSession(sessionId, storage) {
64
- this.sessionId = sessionId;
65
- this.sessionStorage = storage;
67
+ enableStatefulSession() {
66
68
  this.sessionMode = "stateful";
67
- // Try to load existing session state
68
- await this.loadSessionState();
69
- this.logger.debug("Stateful session enabled", {
70
- sessionId,
71
- hasExistingState: !!this.csrfToken || !!this.cookies
69
+ this.logger.debug("Stateful session mode enabled", {
70
+ sessionId: this.sessionId?.substring(0, 8),
71
+ hasStorage: !!this.sessionStorage
72
72
  });
73
73
  }
74
74
  /**
@@ -83,9 +83,7 @@ class AbstractAbapConnection {
83
83
  await this.saveSessionState();
84
84
  }
85
85
  this.sessionMode = "stateless";
86
- this.sessionId = null;
87
- this.sessionStorage = null;
88
- this.logger.debug("Stateful session disabled", {
86
+ this.logger.debug("Stateful session mode disabled", {
89
87
  savedBeforeDisable: saveBeforeDisable
90
88
  });
91
89
  }
@@ -117,15 +115,18 @@ class AbstractAbapConnection {
117
115
  }
118
116
  /**
119
117
  * Set session storage (can be changed at runtime)
118
+ * This controls whether session state (cookies, CSRF token) is persisted to disk/storage
120
119
  */
121
- setSessionStorage(storage) {
120
+ async setSessionStorage(storage) {
122
121
  this.sessionStorage = storage;
122
+ // Load existing session state if storage is provided
123
123
  if (storage && this.sessionId) {
124
- this.sessionMode = "stateful";
125
- }
126
- else if (!storage) {
127
- this.sessionMode = "stateless";
124
+ await this.loadSessionState();
128
125
  }
126
+ this.logger.debug("Session storage configured", {
127
+ hasStorage: !!storage,
128
+ sessionMode: this.sessionMode
129
+ });
129
130
  }
130
131
  /**
131
132
  * Get current session storage
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/connection",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "ABAP connection layer for MCP ABAP ADT server",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",