arc-1 0.2.0 → 0.4.1

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.
Files changed (159) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +77 -199
  3. package/dist/adt/btp.d.ts +2 -2
  4. package/dist/adt/btp.d.ts.map +1 -1
  5. package/dist/adt/btp.js +1 -1
  6. package/dist/adt/btp.js.map +1 -1
  7. package/dist/adt/client.d.ts +13 -1
  8. package/dist/adt/client.d.ts.map +1 -1
  9. package/dist/adt/client.js +40 -1
  10. package/dist/adt/client.js.map +1 -1
  11. package/dist/adt/codeintel.d.ts +41 -0
  12. package/dist/adt/codeintel.d.ts.map +1 -1
  13. package/dist/adt/codeintel.js +99 -27
  14. package/dist/adt/codeintel.js.map +1 -1
  15. package/dist/adt/config.d.ts +6 -0
  16. package/dist/adt/config.d.ts.map +1 -1
  17. package/dist/adt/config.js.map +1 -1
  18. package/dist/adt/cookies.d.ts.map +1 -1
  19. package/dist/adt/cookies.js.map +1 -1
  20. package/dist/adt/crud.d.ts.map +1 -1
  21. package/dist/adt/crud.js.map +1 -1
  22. package/dist/adt/devtools.d.ts +14 -0
  23. package/dist/adt/devtools.d.ts.map +1 -1
  24. package/dist/adt/devtools.js +28 -3
  25. package/dist/adt/devtools.js.map +1 -1
  26. package/dist/adt/diagnostics.d.ts +101 -0
  27. package/dist/adt/diagnostics.d.ts.map +1 -0
  28. package/dist/adt/diagnostics.js +349 -0
  29. package/dist/adt/diagnostics.js.map +1 -0
  30. package/dist/adt/errors.d.ts.map +1 -1
  31. package/dist/adt/errors.js.map +1 -1
  32. package/dist/adt/features.d.ts +11 -2
  33. package/dist/adt/features.d.ts.map +1 -1
  34. package/dist/adt/features.js +37 -12
  35. package/dist/adt/features.js.map +1 -1
  36. package/dist/adt/http.d.ts +33 -7
  37. package/dist/adt/http.d.ts.map +1 -1
  38. package/dist/adt/http.js +148 -84
  39. package/dist/adt/http.js.map +1 -1
  40. package/dist/adt/oauth.d.ts +120 -0
  41. package/dist/adt/oauth.d.ts.map +1 -0
  42. package/dist/adt/oauth.js +321 -0
  43. package/dist/adt/oauth.js.map +1 -0
  44. package/dist/adt/safety.d.ts.map +1 -1
  45. package/dist/adt/safety.js.map +1 -1
  46. package/dist/adt/transport.d.ts.map +1 -1
  47. package/dist/adt/transport.js.map +1 -1
  48. package/dist/adt/types.d.ts +143 -0
  49. package/dist/adt/types.d.ts.map +1 -1
  50. package/dist/adt/types.js.map +1 -1
  51. package/dist/adt/xml-parser.d.ts +37 -1
  52. package/dist/adt/xml-parser.d.ts.map +1 -1
  53. package/dist/adt/xml-parser.js +147 -0
  54. package/dist/adt/xml-parser.js.map +1 -1
  55. package/dist/cache/cache.d.ts +47 -4
  56. package/dist/cache/cache.d.ts.map +1 -1
  57. package/dist/cache/cache.js +16 -5
  58. package/dist/cache/cache.js.map +1 -1
  59. package/dist/cache/caching-layer.d.ts +82 -0
  60. package/dist/cache/caching-layer.d.ts.map +1 -0
  61. package/dist/cache/caching-layer.js +134 -0
  62. package/dist/cache/caching-layer.js.map +1 -0
  63. package/dist/cache/memory.d.ts +14 -2
  64. package/dist/cache/memory.d.ts.map +1 -1
  65. package/dist/cache/memory.js +72 -5
  66. package/dist/cache/memory.js.map +1 -1
  67. package/dist/cache/sqlite.d.ts +10 -1
  68. package/dist/cache/sqlite.d.ts.map +1 -1
  69. package/dist/cache/sqlite.js +90 -2
  70. package/dist/cache/sqlite.js.map +1 -1
  71. package/dist/cache/warmup.d.ts +41 -0
  72. package/dist/cache/warmup.d.ts.map +1 -0
  73. package/dist/cache/warmup.js +286 -0
  74. package/dist/cache/warmup.js.map +1 -0
  75. package/dist/cli.d.ts.map +1 -1
  76. package/dist/cli.js.map +1 -1
  77. package/dist/context/cds-deps.d.ts +35 -0
  78. package/dist/context/cds-deps.d.ts.map +1 -0
  79. package/dist/context/cds-deps.js +201 -0
  80. package/dist/context/cds-deps.js.map +1 -0
  81. package/dist/context/compressor.d.ts +20 -1
  82. package/dist/context/compressor.d.ts.map +1 -1
  83. package/dist/context/compressor.js +178 -17
  84. package/dist/context/compressor.js.map +1 -1
  85. package/dist/context/contract.d.ts.map +1 -1
  86. package/dist/context/contract.js.map +1 -1
  87. package/dist/context/deps.d.ts.map +1 -1
  88. package/dist/context/deps.js.map +1 -1
  89. package/dist/context/method-surgery.d.ts +91 -0
  90. package/dist/context/method-surgery.d.ts.map +1 -0
  91. package/dist/context/method-surgery.js +441 -0
  92. package/dist/context/method-surgery.js.map +1 -0
  93. package/dist/context/types.d.ts +7 -0
  94. package/dist/context/types.d.ts.map +1 -1
  95. package/dist/context/types.js.map +1 -1
  96. package/dist/handlers/hyperfocused.d.ts +35 -0
  97. package/dist/handlers/hyperfocused.d.ts.map +1 -0
  98. package/dist/handlers/hyperfocused.js +104 -0
  99. package/dist/handlers/hyperfocused.js.map +1 -0
  100. package/dist/handlers/intent.d.ts +5 -1
  101. package/dist/handlers/intent.d.ts.map +1 -1
  102. package/dist/handlers/intent.js +462 -44
  103. package/dist/handlers/intent.js.map +1 -1
  104. package/dist/handlers/tools.d.ts +5 -0
  105. package/dist/handlers/tools.d.ts.map +1 -1
  106. package/dist/handlers/tools.js +270 -87
  107. package/dist/handlers/tools.js.map +1 -1
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js.map +1 -1
  110. package/dist/lint/config-builder.d.ts +60 -0
  111. package/dist/lint/config-builder.d.ts.map +1 -0
  112. package/dist/lint/config-builder.js +187 -0
  113. package/dist/lint/config-builder.js.map +1 -0
  114. package/dist/lint/lint.d.ts +43 -0
  115. package/dist/lint/lint.d.ts.map +1 -1
  116. package/dist/lint/lint.js +77 -2
  117. package/dist/lint/lint.js.map +1 -1
  118. package/dist/lint/presets/cloud.d.ts +16 -0
  119. package/dist/lint/presets/cloud.d.ts.map +1 -0
  120. package/dist/lint/presets/cloud.js +111 -0
  121. package/dist/lint/presets/cloud.js.map +1 -0
  122. package/dist/lint/presets/onprem.d.ts +17 -0
  123. package/dist/lint/presets/onprem.d.ts.map +1 -0
  124. package/dist/lint/presets/onprem.js +82 -0
  125. package/dist/lint/presets/onprem.js.map +1 -0
  126. package/dist/server/audit.d.ts +1 -0
  127. package/dist/server/audit.d.ts.map +1 -1
  128. package/dist/server/audit.js.map +1 -1
  129. package/dist/server/config.d.ts.map +1 -1
  130. package/dist/server/config.js +20 -0
  131. package/dist/server/config.js.map +1 -1
  132. package/dist/server/context.d.ts.map +1 -1
  133. package/dist/server/context.js.map +1 -1
  134. package/dist/server/elicit.d.ts.map +1 -1
  135. package/dist/server/elicit.js.map +1 -1
  136. package/dist/server/http.d.ts.map +1 -1
  137. package/dist/server/http.js +4 -1
  138. package/dist/server/http.js.map +1 -1
  139. package/dist/server/logger.d.ts.map +1 -1
  140. package/dist/server/logger.js.map +1 -1
  141. package/dist/server/server.d.ts +4 -2
  142. package/dist/server/server.d.ts.map +1 -1
  143. package/dist/server/server.js +121 -8
  144. package/dist/server/server.js.map +1 -1
  145. package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
  146. package/dist/server/sinks/btp-auditlog.js.map +1 -1
  147. package/dist/server/sinks/file.d.ts.map +1 -1
  148. package/dist/server/sinks/file.js.map +1 -1
  149. package/dist/server/sinks/stderr.d.ts.map +1 -1
  150. package/dist/server/sinks/stderr.js.map +1 -1
  151. package/dist/server/sinks/types.d.ts.map +1 -1
  152. package/dist/server/sinks/types.js.map +1 -1
  153. package/dist/server/types.d.ts +19 -0
  154. package/dist/server/types.d.ts.map +1 -1
  155. package/dist/server/types.js +8 -0
  156. package/dist/server/types.js.map +1 -1
  157. package/dist/server/xsuaa.d.ts.map +1 -1
  158. package/dist/server/xsuaa.js.map +1 -1
  159. package/package.json +14 -6
package/dist/adt/http.js CHANGED
@@ -19,15 +19,14 @@
19
19
  * 3. Stateful sessions use "X-sap-adt-sessiontype: stateful" header.
20
20
  * Lock/modify/unlock must use the same session cookies.
21
21
  * withStatefulSession() ensures session isolation.
22
- * (fr0ster uses AsyncLocalStorage for this — we use a simpler approach
23
- * with an isolated axios instance per session.)
24
22
  *
25
23
  * 4. sap-client and sap-language are added to every request as query params.
26
24
  * This is an SAP convention, not ADT-specific.
25
+ *
26
+ * 5. Uses native fetch() with undici dispatchers for proxy and TLS configuration.
27
+ * No external HTTP dependencies — undici ships with Node.js 22+.
27
28
  */
28
- import { Agent as HttpAgent } from 'node:http';
29
- import { Agent as HttpsAgent } from 'node:https';
30
- import axios from 'axios';
29
+ import { Agent, ProxyAgent, fetch as undiciFetch } from 'undici';
31
30
  import { logger } from '../server/logger.js';
32
31
  import { AdtApiError, AdtNetworkError } from './errors.js';
33
32
  /**
@@ -37,7 +36,7 @@ import { AdtApiError, AdtNetworkError } from './errors.js';
37
36
  */
38
37
  export class AdtHttpClient {
39
38
  csrfToken = '';
40
- axios;
39
+ dispatcher;
41
40
  config;
42
41
  /**
43
42
  * Cookie jar — stores Set-Cookie headers from responses and sends them back.
@@ -51,42 +50,23 @@ export class AdtHttpClient {
51
50
  * (domain, path, expiry) because all requests go to the same SAP host.
52
51
  */
53
52
  cookieJar = new Map();
53
+ /** Guard to prevent infinite retry loops for DB connection errors */
54
+ dbRetryInProgress = false;
54
55
  constructor(config) {
55
56
  this.config = config;
56
- const axiosConfig = {
57
- baseURL: config.baseUrl,
58
- // SAP ADT can be slow 60s timeout
59
- timeout: 60000,
60
- // Don't throw on non-2xx (we handle errors ourselves)
61
- validateStatus: () => true,
62
- headers: {
63
- Accept: '*/*',
64
- },
65
- };
66
- // Basic auth
67
- if (config.username && config.password) {
68
- axiosConfig.auth = {
69
- username: config.username,
70
- password: config.password,
71
- };
72
- }
73
- // Skip TLS verification (for self-signed SAP certs)
74
- if (config.insecure) {
75
- axiosConfig.httpsAgent = new HttpsAgent({ rejectUnauthorized: false });
76
- }
77
- // BTP Connectivity proxy (Cloud Connector)
78
- // Routes requests through the BTP connectivity service to reach on-premise SAP.
79
- // The Proxy-Authorization header is injected per-request in the request() method.
57
+ // Set up undici dispatcher for proxy and/or TLS configuration.
58
+ // When neither proxy nor insecure mode is needed, we use the global fetch
59
+ // (no dispatcher), which is the default Node.js behavior.
80
60
  if (config.btpProxy) {
81
- axiosConfig.proxy = {
82
- host: config.btpProxy.host,
83
- port: config.btpProxy.port,
84
- protocol: config.btpProxy.protocol,
85
- };
86
- // Need an HTTP agent for the proxy connection (not HTTPS)
87
- axiosConfig.httpAgent = new HttpAgent({ keepAlive: true });
61
+ const proxyUri = `${config.btpProxy.protocol}://${config.btpProxy.host}:${config.btpProxy.port}`;
62
+ this.dispatcher = new ProxyAgent({
63
+ uri: proxyUri,
64
+ ...(config.insecure ? { requestTls: { rejectUnauthorized: false } } : {}),
65
+ });
66
+ }
67
+ else if (config.insecure) {
68
+ this.dispatcher = new Agent({ connect: { rejectUnauthorized: false } });
88
69
  }
89
- this.axios = axios.create(axiosConfig);
90
70
  }
91
71
  /** GET request */
92
72
  async get(path, headers) {
@@ -108,7 +88,7 @@ export class AdtHttpClient {
108
88
  * Execute a function within an isolated stateful session.
109
89
  * Ensures lock/modify/unlock share the same SAP session cookies.
110
90
  *
111
- * Creates a new axios instance with stateful session header,
91
+ * Creates a new client instance with stateful session header,
112
92
  * shares CSRF token with the main client.
113
93
  */
114
94
  async withStatefulSession(fn) {
@@ -129,6 +109,7 @@ export class AdtHttpClient {
129
109
  await this.fetchCsrfToken();
130
110
  }
131
111
  const headers = {
112
+ Accept: '*/*',
132
113
  ...extraHeaders,
133
114
  };
134
115
  if (isModifyingMethod(method)) {
@@ -140,6 +121,12 @@ export class AdtHttpClient {
140
121
  if (contentType) {
141
122
  headers['Content-Type'] = contentType;
142
123
  }
124
+ // Auth: Bearer token (BTP ABAP) or Basic Auth (on-premise)
125
+ this.applyAuthHeader(headers);
126
+ if (this.config.bearerTokenProvider) {
127
+ const token = await this.config.bearerTokenProvider();
128
+ headers.Authorization = `Bearer ${token}`;
129
+ }
143
130
  // Build cookie header from: config cookies + cookie jar (jar takes precedence)
144
131
  const cookieParts = [];
145
132
  if (this.config.cookies) {
@@ -180,14 +167,66 @@ export class AdtHttpClient {
180
167
  const url = this.buildUrl(path);
181
168
  const httpStart = Date.now();
182
169
  try {
183
- const response = await this.axios.request({
184
- method,
185
- url,
186
- data: body,
187
- headers,
188
- });
170
+ const response = await this.doFetch(url, method, headers, body);
171
+ const responseBody = await response.text();
189
172
  // Persist any Set-Cookie headers from the response
190
173
  this.storeCookies(response);
174
+ // Detect broken DB connection on the assigned work process.
175
+ // SAP's ICM routes all requests with the same session cookie to the same
176
+ // work process. If that WP has a broken HANA connection, every request fails
177
+ // with "database connection is not open". Fix: clear the session to force
178
+ // ICM to assign a different work process on retry.
179
+ if (this.isDbConnectionError(responseBody) && !this.dbRetryInProgress) {
180
+ this.dbRetryInProgress = true;
181
+ try {
182
+ logger.emitAudit({
183
+ timestamp: new Date().toISOString(),
184
+ level: 'warn',
185
+ event: 'http_request',
186
+ method,
187
+ path,
188
+ statusCode: response.status,
189
+ durationMs: Date.now() - httpStart,
190
+ errorBody: 'DB connection broken — resetting session and retrying',
191
+ });
192
+ // Clear session to get a different work process
193
+ this.resetSession();
194
+ // Re-fetch CSRF token (needed for modifying requests, harmless for reads)
195
+ if (isModifyingMethod(method)) {
196
+ await this.fetchCsrfToken();
197
+ headers['X-CSRF-Token'] = this.csrfToken;
198
+ }
199
+ // Rebuild cookie header from fresh jar
200
+ const freshCookieParts = [];
201
+ for (const [k, v] of this.cookieJar) {
202
+ freshCookieParts.push(`${k}=${v}`);
203
+ }
204
+ if (freshCookieParts.length > 0) {
205
+ headers.Cookie = freshCookieParts.join('; ');
206
+ }
207
+ else {
208
+ delete headers.Cookie;
209
+ }
210
+ const retryResp = await this.doFetch(url, method, headers, body);
211
+ const retryBody = await retryResp.text();
212
+ this.storeCookies(retryResp);
213
+ const retryResult = this.handleResponse(retryResp.status, retryResp.headers, retryBody, path);
214
+ logger.emitAudit({
215
+ timestamp: new Date().toISOString(),
216
+ level: 'info',
217
+ event: 'http_request',
218
+ method,
219
+ path,
220
+ statusCode: retryResp.status,
221
+ durationMs: Date.now() - httpStart,
222
+ errorBody: 'DB connection retry succeeded',
223
+ });
224
+ return retryResult;
225
+ }
226
+ finally {
227
+ this.dbRetryInProgress = false;
228
+ }
229
+ }
191
230
  // Handle CSRF token refresh on 403 (modifying requests only)
192
231
  if (response.status === 403 && isModifyingMethod(method)) {
193
232
  await this.fetchCsrfToken();
@@ -200,14 +239,10 @@ export class AdtHttpClient {
200
239
  if (updatedCookieParts.length > 0) {
201
240
  headers.Cookie = updatedCookieParts.join('; ');
202
241
  }
203
- const retryResponse = await this.axios.request({
204
- method,
205
- url,
206
- data: body,
207
- headers,
208
- });
242
+ const retryResponse = await this.doFetch(url, method, headers, body);
243
+ const retryBody = await retryResponse.text();
209
244
  this.storeCookies(retryResponse);
210
- const result = this.handleResponse(retryResponse, path);
245
+ const result = this.handleResponse(retryResponse.status, retryResponse.headers, retryBody, path);
211
246
  logger.emitAudit({
212
247
  timestamp: new Date().toISOString(),
213
248
  level: 'info',
@@ -220,11 +255,11 @@ export class AdtHttpClient {
220
255
  return result;
221
256
  }
222
257
  // Store CSRF token from response
223
- const responseToken = response.headers['x-csrf-token'];
258
+ const responseToken = response.headers.get('x-csrf-token');
224
259
  if (responseToken && responseToken !== 'Required') {
225
260
  this.csrfToken = responseToken;
226
261
  }
227
- const result = this.handleResponse(response, path);
262
+ const result = this.handleResponse(response.status, response.headers, responseBody, path);
228
263
  logger.emitAudit({
229
264
  timestamp: new Date().toISOString(),
230
265
  level: 'debug',
@@ -250,29 +285,25 @@ export class AdtHttpClient {
250
285
  durationMs,
251
286
  errorBody: err.responseBody?.slice(0, 200),
252
287
  });
288
+ throw err;
253
289
  }
254
- if (axios.isAxiosError(err)) {
255
- throw new AdtNetworkError(err.message, err);
256
- }
257
- throw err;
290
+ const message = err instanceof Error ? err.message : String(err);
291
+ throw new AdtNetworkError(message, err instanceof Error ? err : undefined);
258
292
  }
259
293
  }
260
294
  /** Handle response: throw on error status, return normalized response */
261
- handleResponse(response, path) {
262
- const body = typeof response.data === 'string' ? response.data : String(response.data ?? '');
263
- if (response.status >= 400) {
264
- throw new AdtApiError(body.slice(0, 500), response.status, path, body);
295
+ handleResponse(status, headers, body, path) {
296
+ if (status >= 400) {
297
+ throw new AdtApiError(body.slice(0, 500), status, path, body);
265
298
  }
266
299
  // Flatten headers to Record<string, string>
267
- const headers = {};
268
- for (const [key, value] of Object.entries(response.headers)) {
269
- if (typeof value === 'string') {
270
- headers[key] = value;
271
- }
300
+ const flatHeaders = {};
301
+ for (const [key, value] of headers.entries()) {
302
+ flatHeaders[key] = value;
272
303
  }
273
304
  return {
274
- statusCode: response.status,
275
- headers,
305
+ statusCode: status,
306
+ headers: flatHeaders,
276
307
  body,
277
308
  };
278
309
  }
@@ -289,6 +320,12 @@ export class AdtHttpClient {
289
320
  if (this.config.sessionType === 'stateful') {
290
321
  headers['X-sap-adt-sessiontype'] = 'stateful';
291
322
  }
323
+ // Auth: Bearer token (BTP ABAP) or Basic Auth (on-premise)
324
+ this.applyAuthHeader(headers);
325
+ if (this.config.bearerTokenProvider) {
326
+ const token = await this.config.bearerTokenProvider();
327
+ headers.Authorization = `Bearer ${token}`;
328
+ }
292
329
  // Include existing cookies (config + jar) so session is maintained
293
330
  const cookieParts = [];
294
331
  if (this.config.cookies) {
@@ -303,14 +340,10 @@ export class AdtHttpClient {
303
340
  headers.Cookie = cookieParts.join('; ');
304
341
  }
305
342
  try {
306
- const response = await this.axios.request({
307
- method: 'HEAD',
308
- url,
309
- headers,
310
- });
343
+ const response = await this.doFetch(url, 'HEAD', headers);
311
344
  // Store cookies from CSRF response — critical for session correlation
312
345
  this.storeCookies(response);
313
- const token = response.headers['x-csrf-token'];
346
+ const token = response.headers.get('x-csrf-token');
314
347
  if (!token || token === 'Required') {
315
348
  if (response.status === 401) {
316
349
  throw new AdtApiError(`Authentication failed (401) using sap-client=${this.config.client ?? '100'}. Check SAP_CLIENT, SAP_USER, and SAP_PASSWORD.`, 401, '/sap/bc/adt/core/discovery');
@@ -325,20 +358,29 @@ export class AdtHttpClient {
325
358
  catch (err) {
326
359
  if (err instanceof AdtApiError)
327
360
  throw err;
328
- if (axios.isAxiosError(err)) {
329
- throw new AdtNetworkError(`CSRF token fetch failed: ${err.message}`, err);
330
- }
331
- throw err;
361
+ const message = err instanceof Error ? err.message : String(err);
362
+ throw new AdtNetworkError(`CSRF token fetch failed: ${message}`, err instanceof Error ? err : undefined);
332
363
  }
333
364
  }
334
365
  /**
335
- * Extract and store cookies from a response's Set-Cookie headers.
336
- * Only stores the name=value part; ignores path, domain, expiry
337
- * since all requests go to the same SAP host.
366
+ * Detect "database connection is not open" error from SAP.
367
+ * This happens when a work process loses its HANA DB connection.
368
+ * SAP returns a 500 with this message in the body (plain text or XML).
338
369
  */
370
+ isDbConnectionError(body) {
371
+ return body.toLowerCase().includes('database connection is not open');
372
+ }
373
+ /**
374
+ * Reset HTTP session state to force SAP's ICM to assign a new work process.
375
+ * Clears session cookies and CSRF token so the next request gets a fresh session.
376
+ */
377
+ resetSession() {
378
+ this.cookieJar.clear();
379
+ this.csrfToken = '';
380
+ }
339
381
  storeCookies(response) {
340
- const setCookieHeaders = response.headers['set-cookie'];
341
- if (!setCookieHeaders || !Array.isArray(setCookieHeaders))
382
+ const setCookieHeaders = response.headers.getSetCookie();
383
+ if (!setCookieHeaders || setCookieHeaders.length === 0)
342
384
  return;
343
385
  for (const cookie of setCookieHeaders) {
344
386
  // Set-Cookie: name=value; Path=/; HttpOnly; ...
@@ -366,6 +408,28 @@ export class AdtHttpClient {
366
408
  }
367
409
  return url.toString();
368
410
  }
411
+ /** Apply Basic Auth header if username/password are configured (and no bearer provider) */
412
+ applyAuthHeader(headers) {
413
+ if (this.config.username && this.config.password && !this.config.bearerTokenProvider) {
414
+ headers.Authorization = `Basic ${Buffer.from(`${this.config.username}:${this.config.password}`).toString('base64')}`;
415
+ }
416
+ }
417
+ /**
418
+ * Execute a fetch request with the configured dispatcher and timeout.
419
+ *
420
+ * Always uses undici's own fetch rather than the global fetch because
421
+ * Node 22's built-in fetch embeds an older undici version whose dispatcher
422
+ * interface is incompatible with npm undici@8 Agent/ProxyAgent instances.
423
+ */
424
+ async doFetch(url, method, headers, body) {
425
+ return undiciFetch(url, {
426
+ method,
427
+ headers,
428
+ body,
429
+ signal: AbortSignal.timeout(60_000),
430
+ ...(this.dispatcher ? { dispatcher: this.dispatcher } : {}),
431
+ });
432
+ }
369
433
  }
370
434
  /** HTTP methods that modify server state and require CSRF token */
371
435
  function isModifyingMethod(method) {
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../ts-src/adt/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/adt/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * OAuth 2.0 Authorization Code flow for BTP ABAP Environment.
3
+ *
4
+ * Implements the browser-based login flow used by Eclipse ADT and fr0ster/mcp-abap-adt:
5
+ * 1. Parse BTP service key JSON (from file or env var)
6
+ * 2. Start local callback server to receive authorization code
7
+ * 3. Open browser to XSUAA authorization endpoint
8
+ * 4. Exchange code for JWT access + refresh tokens
9
+ * 5. Cache tokens, auto-refresh before expiry
10
+ *
11
+ * The resulting Bearer token is used with `Authorization: Bearer <token>`
12
+ * on all ADT requests (replacing Basic Auth).
13
+ *
14
+ * Cross-platform: uses `open` (macOS), `xdg-open` (Linux), `start` (Windows).
15
+ */
16
+ import { type Server as HttpServer } from 'node:http';
17
+ /** BTP ABAP service key structure (from BTP Cockpit) */
18
+ export interface BTPServiceKey {
19
+ /** UAA (XSUAA) credentials for OAuth */
20
+ uaa: {
21
+ /** XSUAA base URL (e.g., "https://subdomain.authentication.eu10.hana.ondemand.com") */
22
+ url: string;
23
+ /** OAuth client ID */
24
+ clientid: string;
25
+ /** OAuth client secret */
26
+ clientsecret: string;
27
+ };
28
+ /** ABAP system URL (e.g., "https://system-id.abap.eu10.hana.ondemand.com") */
29
+ url: string;
30
+ /** Optional: ABAP-specific section */
31
+ abap?: {
32
+ url?: string;
33
+ sapClient?: string;
34
+ };
35
+ /** Optional: Binding metadata */
36
+ binding?: {
37
+ env?: string;
38
+ type?: string;
39
+ };
40
+ /** Optional: Catalog info */
41
+ catalogs?: Record<string, {
42
+ path: string;
43
+ type: string;
44
+ }>;
45
+ }
46
+ /** OAuth token response from XSUAA */
47
+ export interface OAuthTokenResponse {
48
+ access_token: string;
49
+ token_type: string;
50
+ expires_in: number;
51
+ refresh_token?: string;
52
+ scope?: string;
53
+ }
54
+ /**
55
+ * Parse a BTP ABAP service key from JSON string.
56
+ * Validates required fields.
57
+ */
58
+ export declare function parseServiceKey(json: string): BTPServiceKey;
59
+ /**
60
+ * Load service key from file path.
61
+ */
62
+ export declare function loadServiceKeyFile(filePath: string): BTPServiceKey;
63
+ /**
64
+ * Resolve service key from environment variables.
65
+ * Priority: SAP_BTP_SERVICE_KEY (inline JSON) > SAP_BTP_SERVICE_KEY_FILE (file path)
66
+ */
67
+ export declare function resolveServiceKey(): BTPServiceKey | undefined;
68
+ /**
69
+ * Exchange an authorization code for OAuth tokens.
70
+ */
71
+ export declare function exchangeCodeForToken(serviceKey: BTPServiceKey, code: string, redirectUri: string): Promise<OAuthTokenResponse>;
72
+ /**
73
+ * Refresh an OAuth access token using a refresh token.
74
+ */
75
+ export declare function refreshAccessToken(serviceKey: BTPServiceKey, refreshToken: string): Promise<OAuthTokenResponse>;
76
+ /**
77
+ * Open a URL in the user's default browser.
78
+ * Cross-platform: macOS (open), Linux (xdg-open), Windows (start).
79
+ */
80
+ export declare function openBrowser(url: string): Promise<void>;
81
+ /**
82
+ * Start a local HTTP server to receive the OAuth callback.
83
+ * Returns a promise that resolves with the authorization code.
84
+ *
85
+ * @param port Port to listen on (0 = auto-assign)
86
+ * @param timeoutMs Maximum wait time for callback (default: 120s)
87
+ */
88
+ export declare function startCallbackServer(port: number, timeoutMs?: number): {
89
+ promise: Promise<string>;
90
+ server: HttpServer;
91
+ getPort: () => number;
92
+ };
93
+ /**
94
+ * Perform the full browser-based Authorization Code flow.
95
+ *
96
+ * 1. Start local callback server
97
+ * 2. Open browser to XSUAA authorize endpoint
98
+ * 3. Wait for callback with authorization code
99
+ * 4. Exchange code for tokens
100
+ *
101
+ * @param serviceKey BTP service key
102
+ * @param callbackPort Port for callback server (0 = auto-assign)
103
+ * @returns OAuth token response
104
+ */
105
+ export declare function performBrowserLogin(serviceKey: BTPServiceKey, callbackPort?: number): Promise<OAuthTokenResponse>;
106
+ /**
107
+ * Create a bearer token provider function for the ADT HTTP client.
108
+ *
109
+ * The returned function handles:
110
+ * - First call: triggers browser login
111
+ * - Subsequent calls: returns cached token
112
+ * - Token refresh: uses refresh token when access token expires
113
+ * - Re-login: triggers browser login if refresh token also expires
114
+ *
115
+ * @param serviceKey BTP service key
116
+ * @param callbackPort Port for OAuth callback (0 = auto-assign)
117
+ * @returns Async function that returns a valid Bearer token
118
+ */
119
+ export declare function createBearerTokenProvider(serviceKey: BTPServiceKey, callbackPort?: number): () => Promise<string>;
120
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/adt/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAgB,KAAK,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAKpE,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,GAAG,EAAE;QACH,uFAAuF;QACvF,GAAG,EAAE,MAAM,CAAC;QACZ,sBAAsB;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,0BAA0B;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,iCAAiC;IACjC,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CA8B3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAUlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,SAAS,CAY7D;AAID;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,aAAa,EACzB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAyB7B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAuBrH;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B5D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,SAAS,GACjB;IAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,MAAM,CAAA;CAAE,CAiEzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,SAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6ClH;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,SAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAsC5G"}