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.
- package/LICENSE +1 -0
- package/README.md +77 -199
- package/dist/adt/btp.d.ts +2 -2
- package/dist/adt/btp.d.ts.map +1 -1
- package/dist/adt/btp.js +1 -1
- package/dist/adt/btp.js.map +1 -1
- package/dist/adt/client.d.ts +13 -1
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +40 -1
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/codeintel.d.ts +41 -0
- package/dist/adt/codeintel.d.ts.map +1 -1
- package/dist/adt/codeintel.js +99 -27
- package/dist/adt/codeintel.js.map +1 -1
- package/dist/adt/config.d.ts +6 -0
- package/dist/adt/config.d.ts.map +1 -1
- package/dist/adt/config.js.map +1 -1
- package/dist/adt/cookies.d.ts.map +1 -1
- package/dist/adt/cookies.js.map +1 -1
- package/dist/adt/crud.d.ts.map +1 -1
- package/dist/adt/crud.js.map +1 -1
- package/dist/adt/devtools.d.ts +14 -0
- package/dist/adt/devtools.d.ts.map +1 -1
- package/dist/adt/devtools.js +28 -3
- package/dist/adt/devtools.js.map +1 -1
- package/dist/adt/diagnostics.d.ts +101 -0
- package/dist/adt/diagnostics.d.ts.map +1 -0
- package/dist/adt/diagnostics.js +349 -0
- package/dist/adt/diagnostics.js.map +1 -0
- package/dist/adt/errors.d.ts.map +1 -1
- package/dist/adt/errors.js.map +1 -1
- package/dist/adt/features.d.ts +11 -2
- package/dist/adt/features.d.ts.map +1 -1
- package/dist/adt/features.js +37 -12
- package/dist/adt/features.js.map +1 -1
- package/dist/adt/http.d.ts +33 -7
- package/dist/adt/http.d.ts.map +1 -1
- package/dist/adt/http.js +148 -84
- package/dist/adt/http.js.map +1 -1
- package/dist/adt/oauth.d.ts +120 -0
- package/dist/adt/oauth.d.ts.map +1 -0
- package/dist/adt/oauth.js +321 -0
- package/dist/adt/oauth.js.map +1 -0
- package/dist/adt/safety.d.ts.map +1 -1
- package/dist/adt/safety.js.map +1 -1
- package/dist/adt/transport.d.ts.map +1 -1
- package/dist/adt/transport.js.map +1 -1
- package/dist/adt/types.d.ts +143 -0
- package/dist/adt/types.d.ts.map +1 -1
- package/dist/adt/types.js.map +1 -1
- package/dist/adt/xml-parser.d.ts +37 -1
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +147 -0
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/cache/cache.d.ts +47 -4
- package/dist/cache/cache.d.ts.map +1 -1
- package/dist/cache/cache.js +16 -5
- package/dist/cache/cache.js.map +1 -1
- package/dist/cache/caching-layer.d.ts +82 -0
- package/dist/cache/caching-layer.d.ts.map +1 -0
- package/dist/cache/caching-layer.js +134 -0
- package/dist/cache/caching-layer.js.map +1 -0
- package/dist/cache/memory.d.ts +14 -2
- package/dist/cache/memory.d.ts.map +1 -1
- package/dist/cache/memory.js +72 -5
- package/dist/cache/memory.js.map +1 -1
- package/dist/cache/sqlite.d.ts +10 -1
- package/dist/cache/sqlite.d.ts.map +1 -1
- package/dist/cache/sqlite.js +90 -2
- package/dist/cache/sqlite.js.map +1 -1
- package/dist/cache/warmup.d.ts +41 -0
- package/dist/cache/warmup.d.ts.map +1 -0
- package/dist/cache/warmup.js +286 -0
- package/dist/cache/warmup.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/context/cds-deps.d.ts +35 -0
- package/dist/context/cds-deps.d.ts.map +1 -0
- package/dist/context/cds-deps.js +201 -0
- package/dist/context/cds-deps.js.map +1 -0
- package/dist/context/compressor.d.ts +20 -1
- package/dist/context/compressor.d.ts.map +1 -1
- package/dist/context/compressor.js +178 -17
- package/dist/context/compressor.js.map +1 -1
- package/dist/context/contract.d.ts.map +1 -1
- package/dist/context/contract.js.map +1 -1
- package/dist/context/deps.d.ts.map +1 -1
- package/dist/context/deps.js.map +1 -1
- package/dist/context/method-surgery.d.ts +91 -0
- package/dist/context/method-surgery.d.ts.map +1 -0
- package/dist/context/method-surgery.js +441 -0
- package/dist/context/method-surgery.js.map +1 -0
- package/dist/context/types.d.ts +7 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js.map +1 -1
- package/dist/handlers/hyperfocused.d.ts +35 -0
- package/dist/handlers/hyperfocused.d.ts.map +1 -0
- package/dist/handlers/hyperfocused.js +104 -0
- package/dist/handlers/hyperfocused.js.map +1 -0
- package/dist/handlers/intent.d.ts +5 -1
- package/dist/handlers/intent.d.ts.map +1 -1
- package/dist/handlers/intent.js +462 -44
- package/dist/handlers/intent.js.map +1 -1
- package/dist/handlers/tools.d.ts +5 -0
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +270 -87
- package/dist/handlers/tools.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lint/config-builder.d.ts +60 -0
- package/dist/lint/config-builder.d.ts.map +1 -0
- package/dist/lint/config-builder.js +187 -0
- package/dist/lint/config-builder.js.map +1 -0
- package/dist/lint/lint.d.ts +43 -0
- package/dist/lint/lint.d.ts.map +1 -1
- package/dist/lint/lint.js +77 -2
- package/dist/lint/lint.js.map +1 -1
- package/dist/lint/presets/cloud.d.ts +16 -0
- package/dist/lint/presets/cloud.d.ts.map +1 -0
- package/dist/lint/presets/cloud.js +111 -0
- package/dist/lint/presets/cloud.js.map +1 -0
- package/dist/lint/presets/onprem.d.ts +17 -0
- package/dist/lint/presets/onprem.d.ts.map +1 -0
- package/dist/lint/presets/onprem.js +82 -0
- package/dist/lint/presets/onprem.js.map +1 -0
- package/dist/server/audit.d.ts +1 -0
- package/dist/server/audit.d.ts.map +1 -1
- package/dist/server/audit.js.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +20 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js.map +1 -1
- package/dist/server/elicit.d.ts.map +1 -1
- package/dist/server/elicit.js.map +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +4 -1
- package/dist/server/http.js.map +1 -1
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/logger.js.map +1 -1
- package/dist/server/server.d.ts +4 -2
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +121 -8
- package/dist/server/server.js.map +1 -1
- package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
- package/dist/server/sinks/btp-auditlog.js.map +1 -1
- package/dist/server/sinks/file.d.ts.map +1 -1
- package/dist/server/sinks/file.js.map +1 -1
- package/dist/server/sinks/stderr.d.ts.map +1 -1
- package/dist/server/sinks/stderr.js.map +1 -1
- package/dist/server/sinks/types.d.ts.map +1 -1
- package/dist/server/sinks/types.js.map +1 -1
- package/dist/server/types.d.ts +19 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +8 -0
- package/dist/server/types.js.map +1 -1
- package/dist/server/xsuaa.d.ts.map +1 -1
- package/dist/server/xsuaa.js.map +1 -1
- 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
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
|
|
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
|
|
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.
|
|
184
|
-
|
|
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.
|
|
204
|
-
|
|
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
|
|
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
|
-
|
|
255
|
-
|
|
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(
|
|
262
|
-
|
|
263
|
-
|
|
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
|
|
268
|
-
for (const [key, value] of
|
|
269
|
-
|
|
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:
|
|
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.
|
|
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
|
|
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
|
-
|
|
329
|
-
|
|
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
|
-
*
|
|
336
|
-
*
|
|
337
|
-
*
|
|
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
|
|
341
|
-
if (!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) {
|
package/dist/adt/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../ts-src/adt/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAA0E,MAAM,OAAO,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoC3D;;;;GAIG;AACH,MAAM,OAAO,aAAa;IAChB,SAAS,GAAG,EAAE,CAAC;IACf,KAAK,CAAgB;IACrB,MAAM,CAAgB;IAC9B;;;;;;;;;;OAUG;IACK,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEnD,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,WAAW,GAAuB;YACtC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,oCAAoC;YACpC,OAAO,EAAE,KAAK;YACd,sDAAsD;YACtD,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;YAC1B,OAAO,EAAE;gBACP,MAAM,EAAE,KAAK;aACd;SACF,CAAC;QAEF,aAAa;QACb,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,WAAW,CAAC,IAAI,GAAG;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC;QAED,oDAAoD;QACpD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,WAAW,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,2CAA2C;QAC3C,gFAAgF;QAChF,kFAAkF;QAClF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,WAAW,CAAC,KAAK,GAAG;gBAClB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;gBAC1B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;gBAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;aACnC,CAAC;YACF,0DAA0D;YAC1D,WAAW,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAgC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,IAAa,EACb,WAAoB,EACpB,OAAgC;QAEhC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,WAAoB,EAAE,OAAgC;QAC1F,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAgC;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB,CAAI,EAAyC;QACpE,MAAM,aAAa,GAAkB;YACnC,GAAG,IAAI,CAAC,MAAM;YACd,WAAW,EAAE,UAAU;SACxB,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;QACvD,4DAA4D;QAC5D,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,aAAa,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED,0BAA0B;IAClB,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAa,EACb,WAAoB,EACpB,YAAqC;QAErC,+CAA+C;QAC/C,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,OAAO,GAA2B;YACtC,GAAG,YAAY;SAChB,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YAC3C,OAAO,CAAC,uBAAuB,CAAC,GAAG,UAAU,CAAC;QAChD,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;QACxC,CAAC;QAED,+EAA+E;QAC/E,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,oFAAoF;QACpF,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC5B,oEAAoE;gBACpE,mEAAmE;gBACnE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,oEAAoE;gBACpE,8EAA8E;gBAC9E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAC9D,OAAO,CAAC,qBAAqB,CAAC,GAAG,UAAU,UAAU,EAAE,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,+EAA+E;QAC/E,4EAA4E;QAC5E,2EAA2E;QAC3E,yEAAyE;QACzE,4EAA4E;QAC5E,8HAA8H;QAC9H,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAChE,OAAO,CAAC,iCAAiC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC/E,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACxC,MAAM;gBACN,GAAG;gBACH,IAAI,EAAE,IAAI;gBACV,OAAO;aACR,CAAC,CAAC;YAEH,mDAAmD;YACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAE5B,6DAA6D;YAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;gBACzC,iEAAiE;gBACjE,MAAM,kBAAkB,GAAa,EAAE,CAAC;gBACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,OAAO,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC7C,MAAM;oBACN,GAAG;oBACH,IAAI,EAAE,IAAI;oBACV,OAAO;iBACR,CAAC,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBAExD,MAAM,CAAC,SAAS,CAAC;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,cAAc;oBACrB,MAAM;oBACN,IAAI;oBACJ,UAAU,EAAE,aAAa,CAAC,MAAM;oBAChC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,iCAAiC;YACjC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,aAAa,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;gBAClD,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;YACjC,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAEnD,MAAM,CAAC,SAAS,CAAC;gBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,cAAc;gBACrB,MAAM;gBACN,IAAI;gBACJ,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2BAA2B;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,CAAC;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,cAAc;oBACrB,MAAM;oBACN,IAAI;oBACJ,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,UAAU;oBACV,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBAC3C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,yEAAyE;IACjE,cAAc,CAAC,QAAuB,EAAE,IAAY;QAC1D,MAAM,IAAI,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAE7F,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC;QAED,4CAA4C;QAC5C,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,MAAM;YAC3B,OAAO;YACP,IAAI;SACL,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;QACxD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,OAAO;YACvB,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YAC3C,OAAO,CAAC,uBAAuB,CAAC,GAAG,UAAU,CAAC;QAChD,CAAC;QAED,mEAAmE;QACnE,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACxC,MAAM,EAAE,MAAM;gBACd,GAAG;gBACH,OAAO;aACR,CAAC,CAAC;YAEH,sEAAsE;YACtE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAE5B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,MAAM,IAAI,WAAW,CACnB,gDAAgD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,iDAAiD,EAC5H,GAAG,EACH,4BAA4B,CAC7B,CAAC;gBACJ,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,MAAM,IAAI,WAAW,CACnB,2CAA2C,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,8BAA8B,EACpG,GAAG,EACH,4BAA4B,CAC7B,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,WAAW,CACnB,mCAAmC,QAAQ,CAAC,MAAM,GAAG,EACrD,QAAQ,CAAC,MAAM,EACf,4BAA4B,CAC7B,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,WAAW;gBAAE,MAAM,GAAG,CAAC;YAC1C,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5E,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,QAAuB;QAC1C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAAE,OAAO;QAElE,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,gDAAgD;YAChD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,KAAK,IAAI,CAAC;gBAAE,SAAS;YACzB,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,mEAAmE;IAC3D,QAAQ,CAAC,IAAY;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;CACF;AAED,mEAAmE;AACnE,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3E,CAAC"}
|
|
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"}
|