@mcp-abap-adt/interfaces-adt 7.0.0 → 9.0.0
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/CHANGELOG.md +154 -0
- package/README.md +64 -14
- package/dist/connection/IAbapConnection.d.ts +12 -20
- package/dist/connection/IAbapConnection.d.ts.map +1 -1
- package/dist/connection/ITimeoutConfig.d.ts +15 -0
- package/dist/connection/ITimeoutConfig.d.ts.map +1 -0
- package/dist/index.d.ts +10 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -43
- package/package.json +3 -4
- package/dist/Headers.d.ts +0 -57
- package/dist/Headers.d.ts.map +0 -1
- package/dist/Headers.js +0 -62
- package/dist/adt/AdtTypes.d.ts +0 -40
- package/dist/adt/AdtTypes.d.ts.map +0 -1
- package/dist/adt/AdtTypes.js +0 -5
- package/dist/auth/AssertionErrorCodes.d.ts +0 -15
- package/dist/auth/AssertionErrorCodes.d.ts.map +0 -1
- package/dist/auth/AssertionErrorCodes.js +0 -16
- package/dist/auth/AuthType.d.ts +0 -5
- package/dist/auth/AuthType.d.ts.map +0 -1
- package/dist/auth/IAssertionValidator.d.ts +0 -100
- package/dist/auth/IAssertionValidator.d.ts.map +0 -1
- package/dist/auth/IAssertionValidator.js +0 -10
- package/dist/auth/IAuthorizationConfig.d.ts +0 -15
- package/dist/auth/IAuthorizationConfig.d.ts.map +0 -1
- package/dist/auth/IAuthorizationConfig.js +0 -2
- package/dist/auth/IAuthorizationStrategy.d.ts +0 -59
- package/dist/auth/IAuthorizationStrategy.d.ts.map +0 -1
- package/dist/auth/IAuthorizationStrategy.js +0 -12
- package/dist/auth/ICallbackServer.d.ts +0 -139
- package/dist/auth/ICallbackServer.d.ts.map +0 -1
- package/dist/auth/ICallbackServer.js +0 -2
- package/dist/auth/ICertificateMaterialLoader.d.ts +0 -7
- package/dist/auth/ICertificateMaterialLoader.d.ts.map +0 -1
- package/dist/auth/ICertificateMaterialLoader.js +0 -2
- package/dist/auth/IConfig.d.ts +0 -8
- package/dist/auth/IConfig.d.ts.map +0 -1
- package/dist/auth/IConfig.js +0 -2
- package/dist/auth/IConnectionConfig.d.ts +0 -23
- package/dist/auth/IConnectionConfig.d.ts.map +0 -1
- package/dist/auth/IConnectionConfig.js +0 -2
- package/dist/connection/CalmService.d.ts +0 -3
- package/dist/connection/CalmService.d.ts.map +0 -1
- package/dist/connection/CalmService.js +0 -14
- package/dist/connection/ICalmConnection.d.ts +0 -29
- package/dist/connection/ICalmConnection.d.ts.map +0 -1
- package/dist/connection/ICalmConnection.js +0 -2
- package/dist/connection/ICalmRequestOptions.d.ts +0 -11
- package/dist/connection/ICalmRequestOptions.d.ts.map +0 -1
- package/dist/connection/ICalmRequestOptions.js +0 -2
- package/dist/sap/ISapConfig.d.ts +0 -22
- package/dist/sap/ISapConfig.d.ts.map +0 -1
- package/dist/sap/ISapConfig.js +0 -2
- package/dist/sap/SapAuthType.d.ts +0 -3
- package/dist/sap/SapAuthType.d.ts.map +0 -1
- package/dist/sap/SapAuthType.js +0 -2
- package/dist/serviceKey/IServiceKeyStore.d.ts +0 -31
- package/dist/serviceKey/IServiceKeyStore.d.ts.map +0 -1
- package/dist/serviceKey/IServiceKeyStore.js +0 -7
- package/dist/session/ISessionStore.d.ts +0 -59
- package/dist/session/ISessionStore.d.ts.map +0 -1
- package/dist/session/ISessionStore.js +0 -7
- package/dist/store/StoreErrorCodes.d.ts +0 -12
- package/dist/store/StoreErrorCodes.d.ts.map +0 -1
- package/dist/store/StoreErrorCodes.js +0 -13
- package/dist/token/AuthType.d.ts +0 -43
- package/dist/token/AuthType.d.ts.map +0 -1
- package/dist/token/AuthType.js +0 -41
- package/dist/token/ITokenProvider.d.ts +0 -27
- package/dist/token/ITokenProvider.d.ts.map +0 -1
- package/dist/token/ITokenProvider.js +0 -8
- package/dist/token/ITokenProviderOptions.d.ts +0 -23
- package/dist/token/ITokenProviderOptions.d.ts.map +0 -1
- package/dist/token/ITokenProviderOptions.js +0 -2
- package/dist/token/ITokenRefresher.d.ts +0 -39
- package/dist/token/ITokenRefresher.d.ts.map +0 -1
- package/dist/token/ITokenRefresher.js +0 -12
- package/dist/token/ITokenResult.d.ts +0 -36
- package/dist/token/ITokenResult.d.ts.map +0 -1
- package/dist/token/ITokenResult.js +0 -7
- package/dist/token/TokenProviderErrorCodes.d.ts +0 -26
- package/dist/token/TokenProviderErrorCodes.d.ts.map +0 -1
- package/dist/token/TokenProviderErrorCodes.js +0 -24
- package/dist/utils/ITokenRefreshResult.d.ts +0 -8
- package/dist/utils/ITokenRefreshResult.d.ts.map +0 -1
- package/dist/utils/ITokenRefreshResult.js +0 -2
- package/dist/validation/IHeaderValidationResult.d.ts +0 -15
- package/dist/validation/IHeaderValidationResult.d.ts.map +0 -1
- package/dist/validation/IHeaderValidationResult.js +0 -2
- package/dist/validation/IValidatedAuthConfig.d.ts +0 -46
- package/dist/validation/IValidatedAuthConfig.d.ts.map +0 -1
- package/dist/validation/IValidatedAuthConfig.js +0 -15
- /package/dist/{auth/AuthType.js → connection/ITimeoutConfig.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,160 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [9.0.0] - 2026-09-23
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`ITimeoutConfig`, from `@mcp-abap-adt/interfaces-network` 2.0.0** — the
|
|
15
|
+
deadlines a caller gives an ADT connection: `default`, `csrf`, `long`.
|
|
16
|
+
|
|
17
|
+
**Fetching a CSRF token is an SAP operation, not a transport primitive**, and
|
|
18
|
+
`long` is a client's policy for a long-polling read rather than anything a
|
|
19
|
+
network layer knows. It sat in `-network` against that package's own README,
|
|
20
|
+
which says nothing there is SAP-specific. Its one consumer,
|
|
21
|
+
`mcp-abap-connection`, takes this package already.
|
|
22
|
+
|
|
23
|
+
### Removed
|
|
24
|
+
|
|
25
|
+
- **BREAKING: every authentication contract leaves** — 51 symbols out of 30
|
|
26
|
+
files, split by what each one's fields and values name. Measured against the
|
|
27
|
+
published 8.0.0 tarball, which exported 262 names; this release exports 210.
|
|
28
|
+
|
|
29
|
+
- **32 to `@mcp-abap-adt/interfaces-auth` 1.2.0** — credentials, OAuth
|
|
30
|
+
grants, tokens, interactive login, SAML assertions, `STORE_ERROR_CODES`,
|
|
31
|
+
and `AUTH_TYPE_JWT`/`AUTH_TYPE_BASIC`. A bearer token and a user with a
|
|
32
|
+
password mean the same thing off SAP entirely.
|
|
33
|
+
- **16 to `@mcp-abap-adt/interfaces-auth-sap` 1.0.0** — `ISapConfig`,
|
|
34
|
+
`SapAuthType`, `SapConnectionType`, `IConfig`, `IConnectionConfig`,
|
|
35
|
+
`IAuthorizationConfig`, `ICertificateMaterialLoader`, `IServiceKeyStore`,
|
|
36
|
+
`ISessionStore`, `ITokenProviderResult`, `IValidatedAuthConfig`,
|
|
37
|
+
`AuthMethodPriority`, `IHeaderValidationResult`, and `AUTH_TYPE_XSUAA`
|
|
38
|
+
with the `AuthType`/`AUTH_TYPES` union. XSUAA is a **BTP service**, so a
|
|
39
|
+
set that includes it describes what a BTP connection accepts.
|
|
40
|
+
- **`ISessionState` and `ISessionStorage` are deleted**, not moved: cookies,
|
|
41
|
+
a CSRF token and a cookie store are HTTP session state, which no package's
|
|
42
|
+
subject names, and nothing under development imports them. They arrived
|
|
43
|
+
here in 8.0.0 from the facade with *"removed in the next major"* on them;
|
|
44
|
+
this is that major (decision 30).
|
|
45
|
+
|
|
46
|
+
**The criterion is who imports this package**, and it should be
|
|
47
|
+
`@mcp-abap-adt/adt-clients` and whatever replaces its objects. It was not:
|
|
48
|
+
`auth-broker`, `auth-stores` and `auth-providers` imported 10, 7 and 17 names
|
|
49
|
+
from here and **not one was an ADT contract**; `header-validator` took 7 more.
|
|
50
|
+
They were pinned to the release rate of the ADT contract to describe
|
|
51
|
+
authentication.
|
|
52
|
+
|
|
53
|
+
After this, all four take **zero** from here. What is left reaching in is
|
|
54
|
+
`gcts-client` and `cloud-llm-hub`, for `IAbapConnection`,
|
|
55
|
+
`IAbapRequestOptions` and `IAdtResponse` — consumers that speak ADT over a
|
|
56
|
+
connection, which is the criterion met.
|
|
57
|
+
|
|
58
|
+
- **BREAKING: `HttpError` leaves, for `@mcp-abap-adt/interfaces-network`
|
|
59
|
+
2.0.0.** Nothing about an HTTP error is ABAP. This contract declared it and
|
|
60
|
+
never used it, while 14 files in `@mcp-abap-adt/adt-clients` import it and so
|
|
61
|
+
does `sap-cloud-alm-odata-mcp`, which speaks no ADT at all.
|
|
62
|
+
|
|
63
|
+
- **BREAKING: `XmlNode` leaves, for `@mcp-abap-adt/interfaces-utils` 1.1.0.** A
|
|
64
|
+
parser's output shape is not an ADT contract, whatever the document happens to
|
|
65
|
+
contain. Declared here, used here by nothing.
|
|
66
|
+
|
|
67
|
+
- **`@mcp-abap-adt/interfaces-auth` is no longer a dependency.** The last thread
|
|
68
|
+
was `validation/IValidatedAuthConfig` importing `AuthType`, and `validation/`
|
|
69
|
+
went with the SAP cluster. This package depends on `interfaces-network` and
|
|
70
|
+
`interfaces-utils`, and nothing else.
|
|
71
|
+
|
|
72
|
+
- **`AuthTypeEnum` is dropped.** It was `export type { AuthType as AuthTypeEnum }`
|
|
73
|
+
— a second name for one type, which no package imported under either name from
|
|
74
|
+
here. `AuthType` itself is in `interfaces-auth-sap`; the alias is not
|
|
75
|
+
recreated there, because one contract with two names is what a consumer has to
|
|
76
|
+
guess between.
|
|
77
|
+
|
|
78
|
+
### Dependencies
|
|
79
|
+
|
|
80
|
+
- **`@mcp-abap-adt/interfaces-network` `^2.0.0` is the only dependency.**
|
|
81
|
+
`interfaces-utils` is gone: it was here for `ILogger` and then for `XmlNode`,
|
|
82
|
+
and with `XmlNode` in that package no file in `src/` imports it. The
|
|
83
|
+
`tsconfig` project references went with it — two of them, one still pointing
|
|
84
|
+
at `interfaces-auth` a release after the last import of it left.
|
|
85
|
+
|
|
86
|
+
`tools/check-graph.js` now fails on a declared dependency or a project
|
|
87
|
+
reference that no file imports, so this cannot recur silently: it checked
|
|
88
|
+
only that an import was permitted and declared, never that a declaration was
|
|
89
|
+
used.
|
|
90
|
+
|
|
91
|
+
- The `-network` range names the version `HttpError` lands in, so an install
|
|
92
|
+
resolves one copy rather than nesting an older one.
|
|
93
|
+
|
|
94
|
+
## [8.0.0] - 2026-09-23
|
|
95
|
+
|
|
96
|
+
### Added
|
|
97
|
+
|
|
98
|
+
- **The SAP header groups live with the headers they group** —
|
|
99
|
+
`SAP_CONNECTION_HEADERS`, `UAA_HEADERS`, `PRESERVED_HEADERS`, and the
|
|
100
|
+
`ISessionState`, `ISessionStorage` and `ITokenProviderResult` contracts.
|
|
101
|
+
|
|
102
|
+
All six were declared in the `@mcp-abap-adt/interfaces` facade, which
|
|
103
|
+
declares no header name of its own: it imported all eighteen from here to
|
|
104
|
+
build the groups, and `ITokenProviderResult` imported `IConnectionConfig`
|
|
105
|
+
from here too. A grouping one package away from what it groups, and a token
|
|
106
|
+
result one package away from the token contracts. They are beside
|
|
107
|
+
`ISessionStore` and `ITokenProvider` now.
|
|
108
|
+
|
|
109
|
+
Each carried *"No package imports this; it is removed in the next major"*,
|
|
110
|
+
and the premise held — nothing under development imports them. They moved
|
|
111
|
+
rather than being deleted because where they belong is not in doubt, and a
|
|
112
|
+
grouping is cheap to keep and expensive to reinvent.
|
|
113
|
+
|
|
114
|
+
### Removed
|
|
115
|
+
|
|
116
|
+
- **BREAKING: every header name leaves, and the groups with them.** The three
|
|
117
|
+
routing names — `HEADER_BTP_DESTINATION`, `HEADER_MCP_DESTINATION`,
|
|
118
|
+
`HEADER_MCP_URL` — and all fifteen SAP and UAA ones are in
|
|
119
|
+
`@mcp-abap-adt/interfaces-network` `1.1.0`, together with
|
|
120
|
+
`PROXY_ROUTING_HEADERS`, `SAP_CONNECTION_HEADERS`, `UAA_HEADERS`,
|
|
121
|
+
`PRESERVED_HEADERS` and `PROXY_MODIFIED_HEADERS`.
|
|
122
|
+
|
|
123
|
+
**A header name says how a value travels, not what it means.** That is the
|
|
124
|
+
whole argument, and the code agrees with it: nothing in this contract ever
|
|
125
|
+
used one — only the index re-exported them. Keeping them here bound
|
|
126
|
+
`mcp-abap-adt-header-validator`, which imports fifteen of them and nothing
|
|
127
|
+
else from this package, and `cloud-llm-hub` to the release rate of the ADT
|
|
128
|
+
contract.
|
|
129
|
+
|
|
130
|
+
`PROXY_MODIFIED_HEADERS` is the case that proves the placement. It groups
|
|
131
|
+
`HEADER_AUTHORIZATION` with three SAP names, so while the two halves lived in
|
|
132
|
+
different packages — and neither may import the other — it could exist in
|
|
133
|
+
neither and was deleted. With the names where they belong it exists again, in
|
|
134
|
+
`-network`, beside everything it groups.
|
|
135
|
+
|
|
136
|
+
This package keeps `AUTH_TYPE_JWT`, `AUTH_TYPE_BASIC`, `AUTH_TYPE_XSUAA` and
|
|
137
|
+
`AUTH_TYPES`: those are values a header carries, not names of headers.
|
|
138
|
+
|
|
139
|
+
- **BREAKING: the Cloud ALM contracts leave** — `CalmService`, `CALM_SERVICES`,
|
|
140
|
+
`ICalmConnection`, `ICalmRequestOptions` and `ICalmResponse` are
|
|
141
|
+
`@mcp-abap-adt/interfaces-calm` `1.0.0`.
|
|
142
|
+
|
|
143
|
+
Cloud ALM is not ABAP, and the only thing holding them here was one line:
|
|
144
|
+
`ICalmResponse` was an alias of `IAdtWireResponse`. `mcp-calm-client` and
|
|
145
|
+
`mcp-calm-server` therefore tracked the ADT contract's releases to describe a
|
|
146
|
+
service that has nothing to do with ADT.
|
|
147
|
+
|
|
148
|
+
### Changed
|
|
149
|
+
|
|
150
|
+
- **`IAdtWireResponse` narrows a shape it no longer declares.** The HTTP frame
|
|
151
|
+
— `data`, `status`, `statusText`, `config`, `request` — is
|
|
152
|
+
`IHttpWireResponse` in `@mcp-abap-adt/interfaces-network`; this type extends
|
|
153
|
+
it and keeps the `headers` ADT actually sends. `IAdtHeaderValue` is an alias
|
|
154
|
+
of `IHttpHeaderValue`.
|
|
155
|
+
|
|
156
|
+
**Nothing renames.** Both names still exist here with the same meaning, so a
|
|
157
|
+
consumer holding `IAdtWireResponse` — 335 files in
|
|
158
|
+
`@mcp-abap-adt/adt-clients` do — changes nothing. What changes is that a
|
|
159
|
+
package needing only an HTTP frame no longer has to come here for it.
|
|
160
|
+
|
|
161
|
+
This package now depends on `interfaces-network`, which it did not before.
|
|
162
|
+
That edge is honest: ADT speaks HTTP.
|
|
163
|
+
|
|
10
164
|
## [7.0.0] - 2026-09-23
|
|
11
165
|
|
|
12
166
|
### Added
|
package/README.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# @mcp-abap-adt/interfaces-adt
|
|
2
2
|
|
|
3
|
-
ADT contracts, the ABAP
|
|
3
|
+
ADT contracts: object operations, the ABAP connection, runtime analysis, execution, feeds and service bindings.
|
|
4
4
|
|
|
5
5
|
## TL;DR
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
7
|
+
- **Only ADT.** The test is who imports this package: `@mcp-abap-adt/adt-clients` and whatever replaces its objects, and nobody else. Measured against every repository in development — the only others reaching in are `gcts-client` and `cloud-llm-hub`, for `IAbapConnection`, `IAbapRequestOptions` and `IAdtResponse`, which is that test met.
|
|
8
|
+
- What it holds: ADT object operations for 31 object types, the ABAP connection and its capability atoms, runtime analysis, execution, feeds, service bindings, `IAdtResponse` and the error codes.
|
|
9
|
+
- **What left, and where.** Every HTTP header name, the HTTP frame and `HttpError` → [`interfaces-network`](../interfaces-network). Cloud ALM → [`interfaces-calm`](../interfaces-calm). `XmlNode` → [`interfaces-utils`](../interfaces-utils). Authentication in general — credentials, OAuth grants, tokens, interactive login, SAML assertions, `AUTH_TYPE_JWT`/`BASIC` → [`interfaces-auth`](../interfaces-auth). Everything naming SAP or BTP — `ISapConfig`, `SapAuthType`, `SapConnectionType`, `IConfig`, `IConnectionConfig`, `IAuthorizationConfig`, `ICertificateMaterialLoader`, `IServiceKeyStore`, `ISessionStore`, `ITokenProviderResult`, the two validation results and `AUTH_TYPE_XSUAA` with its union → [`interfaces-auth-sap`](../interfaces-auth-sap). `ISessionState` and `ISessionStorage` are deleted, not moved.
|
|
10
|
+
- `IAdtWireResponse` extends `IHttpWireResponse` from `-network` and keeps the headers ADT sends (`sap-adt-location`, both spellings of `content-location`). Name and shape unchanged for a consumer.
|
|
11
|
+
- Depends on `@mcp-abap-adt/interfaces-network`, and on nothing else. Types and constants; no implementation.
|
|
10
12
|
|
|
11
13
|
## Install
|
|
12
14
|
|
|
@@ -16,17 +18,21 @@ npm install @mcp-abap-adt/interfaces-adt
|
|
|
16
18
|
|
|
17
19
|
## What it holds
|
|
18
20
|
|
|
19
|
-
| directory | what |
|
|
20
|
-
|
|
21
|
-
| `adt
|
|
22
|
-
| `connection/` | `IAbapConnection`, `IAbapRequestOptions`, the connection capability atoms, `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `
|
|
21
|
+
| directory | files | what |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `adt/` | 39 | the object contracts: capability atoms, the object types, `IAdtResponse`, `IAdtError`, the error codes, the transport request's object list |
|
|
24
|
+
| `connection/` | 4 | `IAbapConnection`, `IAbapRequestOptions`, the connection capability atoms, and `ITimeoutConfig` — here since 9.0.0, because `csrf` names an SAP operation rather than a transport primitive. `IAdtWireResponse` extends `IHttpWireResponse` from `-network` |
|
|
25
|
+
| `runtime/` | 11 | runtime analysis: `IProfiler`, the trace contracts (`ITraceListing`/`ITraceReading`, `ICrossTrace`, `ISt05Trace`), `IApplicationLog`, `IAtcLog` and the ATC run (`IAtcRunOptions`, `IAtcFindings`), `IDdicActivation`, `IGatewayErrorLog`, `IRuntimeDumps`, `ISystemMessages` |
|
|
26
|
+
| `execution/` | 3 | class and program execution, with profiling |
|
|
27
|
+
| `feeds/` | 2 | the ADT feed contracts |
|
|
28
|
+
| `service/` | 1 | service definitions and bindings |
|
|
29
|
+
| `shared/` | 1 | what more than one object type needs |
|
|
30
|
+
|
|
31
|
+
Seven directories, all ADT. `sap/`, `auth/`, `token/`, `session/`, `serviceKey/`, `store/`, `validation/` and `Headers.ts` were here until 9.0.0 and are listed above under what left; `__typechecks__/` holds 21 files that compile shapes this contract must and must not accept, and ships in no tarball.
|
|
26
32
|
|
|
27
|
-
The contract rules — what a member answers, how a strategy is supplied, how a contract is built — are in [`docs/architecture/ARCHITECTURE.md`](../../docs/architecture/ARCHITECTURE.md). Domain-by-domain documentation with examples
|
|
33
|
+
The contract rules — what a member answers, how a strategy is supplied, how a contract is built — are in [`docs/architecture/ARCHITECTURE.md`](../../docs/architecture/ARCHITECTURE.md). Domain-by-domain documentation with examples used to sit in the facade's README; the facade is deleted, and each package documents its own contracts.
|
|
28
34
|
|
|
29
|
-
**
|
|
35
|
+
**There is no facade to stay compatible with.** It was pinned to its 44.0.0 surface in both directions — nothing from that release could disappear from it and nothing could appear without being written down — and `tools/check-surface.js`, `surface-44.0.0.txt`, `baseline-44.0.0.json` and `surface-added.txt` existed to enforce exactly that. The facade is deleted in its 52.0.0 (decision 34), so the property is gone along with the files that proved it; git holds them. What `check-surface.js` still asks is the half that never depended on it: is each symbol declared in the package `tools/package-map.json` assigns it to.
|
|
30
36
|
|
|
31
37
|
## The transport request's object list
|
|
32
38
|
|
|
@@ -45,6 +51,50 @@ So `createTask` requires `targetUser` and `removeObject` requires `position`, an
|
|
|
45
51
|
|
|
46
52
|
`addObject` still takes an entry without a position — one that does not exist yet has none.
|
|
47
53
|
|
|
54
|
+
## Migrating to 9.0.0
|
|
55
|
+
|
|
56
|
+
Nothing changed shape. Every break is an import moving to the package that
|
|
57
|
+
declares the name now, so `tsc` finds all of them and none of them silently.
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
// Authentication in general — 32 names, among them:
|
|
61
|
+
- import type { IAuthProvider, ITokenProvider, ITokenRefresher } from '@mcp-abap-adt/interfaces-adt';
|
|
62
|
+
+ import type { IAuthProvider, ITokenProvider, ITokenRefresher } from '@mcp-abap-adt/interfaces-auth';
|
|
63
|
+
|
|
64
|
+
// Authentication that names SAP or BTP — 16 names, among them:
|
|
65
|
+
- import type { ISapConfig, IConnectionConfig, ISessionStore } from '@mcp-abap-adt/interfaces-adt';
|
|
66
|
+
+ import type { ISapConfig, IConnectionConfig, ISessionStore } from '@mcp-abap-adt/interfaces-auth-sap';
|
|
67
|
+
- import { AUTH_TYPE_XSUAA, AUTH_TYPES } from '@mcp-abap-adt/interfaces-adt';
|
|
68
|
+
+ import { AUTH_TYPE_XSUAA, AUTH_TYPES } from '@mcp-abap-adt/interfaces-auth-sap';
|
|
69
|
+
+ import { AUTH_TYPE_JWT, AUTH_TYPE_BASIC } from '@mcp-abap-adt/interfaces-auth'; // not re-exported
|
|
70
|
+
|
|
71
|
+
// An HTTP failure, and a parsed node:
|
|
72
|
+
- import type { HttpError, XmlNode } from '@mcp-abap-adt/interfaces-adt';
|
|
73
|
+
+ import type { HttpError } from '@mcp-abap-adt/interfaces-network';
|
|
74
|
+
+ import type { XmlNode } from '@mcp-abap-adt/interfaces-utils';
|
|
75
|
+
|
|
76
|
+
// And one arriving here, from interfaces-network:
|
|
77
|
+
- import type { ITimeoutConfig } from '@mcp-abap-adt/interfaces-network';
|
|
78
|
+
+ import type { ITimeoutConfig } from '@mcp-abap-adt/interfaces-adt';
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Three names are not anywhere.** `ISessionState` and `ISessionStorage` are
|
|
82
|
+
deleted — cookies, a CSRF token and a cookie store are HTTP session state, which
|
|
83
|
+
no package's subject names and which no repository under development imports; a
|
|
84
|
+
consumer that wants them declares them, since what a cookie jar holds is an
|
|
85
|
+
implementation's business. `AuthTypeEnum` was an alias of `AuthType`, and one
|
|
86
|
+
contract with two names is something a consumer has to guess between: take
|
|
87
|
+
`AuthType` from `interfaces-auth-sap`.
|
|
88
|
+
|
|
89
|
+
**Ranges, so an install resolves one copy of each package.** A range one major
|
|
90
|
+
behind is what npm answers by silently nesting a second copy, so a consumer on
|
|
91
|
+
this release takes `interfaces-network@^2.0.0`, `interfaces-auth@^1.2.0`,
|
|
92
|
+
`interfaces-auth-sap@^1.0.0` and `interfaces-utils@^1.1.0` — whichever of them it
|
|
93
|
+
imports from.
|
|
94
|
+
|
|
95
|
+
Decision 35 in the repository's `docs/architecture/DECISIONS.md` says why each
|
|
96
|
+
name went where it did, and why the accepting package stopped deciding it.
|
|
97
|
+
|
|
48
98
|
## Migrating to 7.0.0
|
|
49
99
|
|
|
50
100
|
Two changes.
|
|
@@ -108,7 +158,7 @@ Both old call shapes compile against 1.2.0 and cannot work: `createTask(n)` thro
|
|
|
108
158
|
|
|
109
159
|
## Coming from `@mcp-abap-adt/interfaces`
|
|
110
160
|
|
|
111
|
-
Replace the package name in the import. The facade
|
|
161
|
+
Replace the package name in the import. The facade is **deleted** as of its 52.0.0, which was never published — npm still serves 51.0.0, with every symbol re-exported and deprecated, to anyone pinned to it. There is nothing further to move to: take the package that declares the name.
|
|
112
162
|
|
|
113
163
|
## Licence
|
|
114
164
|
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import type { IAbapRequestOptions } from './IAbapRequestOptions';
|
|
2
1
|
/**
|
|
3
2
|
* Minimal response type for ADT requests.
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*/
|
|
18
|
-
export interface IAdtWireResponse<T = any, D = any> {
|
|
19
|
-
data: T;
|
|
20
|
-
status: number;
|
|
21
|
-
statusText: string;
|
|
4
|
+
import type { IHttpHeaderValue, IHttpWireResponse } from '@mcp-abap-adt/interfaces-network';
|
|
5
|
+
import type { IAbapRequestOptions } from './IAbapRequestOptions';
|
|
6
|
+
export type IAdtHeaderValue = IHttpHeaderValue;
|
|
7
|
+
export interface IAdtWireResponse<T = any, D = any> extends Omit<IHttpWireResponse<T, D>, 'headers'> {
|
|
8
|
+
/**
|
|
9
|
+
* **The generic shape, narrowed by the headers ADT actually sends.** The
|
|
10
|
+
* frame itself — `data`, `status`, `statusText`, `config`, `request` — is
|
|
11
|
+
* `IHttpWireResponse` in `@mcp-abap-adt/interfaces-network`, because nothing
|
|
12
|
+
* about it is ABAP. What stays here is this list: `sap-adt-location` and the
|
|
13
|
+
* two spellings of `content-location` are where ADT puts the URI of what it
|
|
14
|
+
* just created, and a caller reads them by name.
|
|
15
|
+
*/
|
|
22
16
|
headers: Record<string, IAdtHeaderValue> & {
|
|
23
17
|
location?: string;
|
|
24
18
|
Location?: string;
|
|
@@ -26,8 +20,6 @@ export interface IAdtWireResponse<T = any, D = any> {
|
|
|
26
20
|
'Content-Location'?: IAdtHeaderValue;
|
|
27
21
|
'sap-adt-location'?: IAdtHeaderValue;
|
|
28
22
|
};
|
|
29
|
-
config?: D;
|
|
30
|
-
request?: unknown;
|
|
31
23
|
}
|
|
32
24
|
/**
|
|
33
25
|
* ABAP Connection interface
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IAbapConnection.d.ts","sourceRoot":"","sources":["../../src/connection/IAbapConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"IAbapConnection.d.ts","sourceRoot":"","sources":["../../src/connection/IAbapConnection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAE/C,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAChD,SAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC;IAChD;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,eAAe,CAAC;QACrC,kBAAkB,CAAC,EAAE,eAAe,CAAC;QACrC,kBAAkB,CAAC,EAAE,eAAe,CAAC;KACtC,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;IAErD;;;;;;;;;;OAUG;IACH,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAC7B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACpC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The deadlines a caller gives an ADT connection.
|
|
3
|
+
*
|
|
4
|
+
* **`csrf` is why this is not in `@mcp-abap-adt/interfaces-network`.** Fetching
|
|
5
|
+
* a CSRF token is an SAP operation, not a transport primitive, and `long` is a
|
|
6
|
+
* client's policy for a long-polling read rather than anything the network
|
|
7
|
+
* layer knows. It was in that package until `interfaces-adt` 9.0.0, against its
|
|
8
|
+
* own README's claim that it holds nothing SAP-specific.
|
|
9
|
+
*/
|
|
10
|
+
export interface ITimeoutConfig {
|
|
11
|
+
default: number;
|
|
12
|
+
csrf: number;
|
|
13
|
+
long: number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ITimeoutConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITimeoutConfig.d.ts","sourceRoot":"","sources":["../../src/connection/ITimeoutConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @mcp-abap-adt/interfaces-adt
|
|
3
3
|
*
|
|
4
|
-
* ADT contracts, the ABAP
|
|
4
|
+
* ADT contracts: object operations, the ABAP connection, runtime analysis,
|
|
5
|
+
* execution, feeds and service bindings.
|
|
6
|
+
*
|
|
7
|
+
* **Only ADT.** The test is who imports this package: `@mcp-abap-adt/adt-clients`
|
|
8
|
+
* and whatever replaces its objects, and nobody else. Everything that failed
|
|
9
|
+
* that test has left — headers and the HTTP frame to `interfaces-network`, Cloud
|
|
10
|
+
* ALM to `interfaces-calm`, authentication, tokens and stores to
|
|
11
|
+
* `interfaces-auth`, the SAP system configuration to `interfaces-auth-sap`,
|
|
12
|
+
* `HttpError` to `-network` and `XmlNode` to `-utils`.
|
|
5
13
|
*/
|
|
6
|
-
export type { HttpError, XmlNode } from './adt/AdtTypes';
|
|
7
14
|
export type { IAbapGitExternalRepoCredentials, IAbapGitLinkArgs, IAbapGitPullArgs, IAbapGitUnlinkArgs, IAdtAbapGitClient, IAdtAbapGitClientOptions, } from './adt/IAdtAbapGit';
|
|
8
15
|
export type { IAccessControlConfig } from './adt/IAdtAccessControl';
|
|
9
16
|
export type { IAppendStructureConfig } from './adt/IAdtAppendStructure';
|
|
@@ -47,31 +54,16 @@ export type { AdtTaskType, IAbapObjectEntry, IAdtRequest, IAdtTransportObjectAct
|
|
|
47
54
|
export { ADT_TASK_TYPE, TRANSPORT_SEARCH_CONFIGURATIONS_URL, } from './adt/IAdtTransport';
|
|
48
55
|
export type { ICdsTestDoubleCheckable, ICdsUnitTestConfig, IClassUnitTestDefinition, IClassUnitTestRunOptions, ITestRunInformation, IUnitTestConfig, IUnitTestDuration, IUnitTestResultOptions, IUnitTestRiskLevel, IUnitTestScope, } from './adt/IAdtUnitTest';
|
|
49
56
|
export type { IAdtDataPreview, IAdtDiscovery, IAdtGroupLifecycle, IAdtInformationSystem, IAdtObjectAccess, IAdtObjectSearch, IAdtRepositoryStructure, IAdtTypeCatalogue, IAdtVirtualFolders, IAdtWhereUsed, IGetNodeContentsOptions, } from './adt/IAdtUtilities';
|
|
50
|
-
export type { AssertionErrorCode } from './auth/AssertionErrorCodes';
|
|
51
|
-
export { ASSERTION_ERROR_CODES } from './auth/AssertionErrorCodes';
|
|
52
|
-
export type { AuthType as AuthTypeEnum } from './auth/AuthType';
|
|
53
|
-
export type { AssertionContext, AssertionReplayKey, IAssertionReplayStore, IAssertionValidator, ValidatedAssertion, } from './auth/IAssertionValidator';
|
|
54
|
-
export type { IAuthorizationConfig } from './auth/IAuthorizationConfig';
|
|
55
|
-
export type { AuthorizationOutcome, AuthorizationRequest, IAuthorizationStrategy, } from './auth/IAuthorizationStrategy';
|
|
56
|
-
export type { CallbackServerFactory, ICallbackServerHandle, ICallbackServerOptions, } from './auth/ICallbackServer';
|
|
57
|
-
export type { ICertificateMaterialLoader } from './auth/ICertificateMaterialLoader';
|
|
58
|
-
export type { IConfig } from './auth/IConfig';
|
|
59
|
-
export type { IConnectionConfig } from './auth/IConnectionConfig';
|
|
60
|
-
export type { CalmService } from './connection/CalmService';
|
|
61
|
-
export { CALM_SERVICES } from './connection/CalmService';
|
|
62
57
|
export type { IAbapConnection, IAdtWireResponse, } from './connection/IAbapConnection';
|
|
63
58
|
export type { IAbapRequestOptions } from './connection/IAbapRequestOptions';
|
|
64
|
-
export type { ICalmConnection, ICalmResponse, } from './connection/ICalmConnection';
|
|
65
|
-
export type { ICalmRequestOptions } from './connection/ICalmRequestOptions';
|
|
66
59
|
export type { AdtSessionErrorCode, ICriticalSection, IDeferredResponseConnection, IRequestProfiling, ISessionLifecycleAware, } from './connection/IConnectionCapabilities';
|
|
67
60
|
export { ADT_SESSION_ERROR } from './connection/IConnectionCapabilities';
|
|
61
|
+
export type { ITimeoutConfig } from './connection/ITimeoutConfig';
|
|
68
62
|
export type { IClassExecuteWithProfilerOptions, IClassExecuteWithProfilingOptions, IClassExecuteWithProfilingResult, IClassExecutionTarget, IClassExecutor, IProgramExecuteWithProfilerOptions, IProgramExecuteWithProfilingOptions, IProgramExecuteWithProfilingResult, IProgramExecutionTarget, IProgramExecutor, } from './execution/IAdtExecutors';
|
|
69
63
|
export type { IAdtRunnable, IRunnableWithProfiler, IRunnableWithProfiling, } from './execution/IAdtRunnable';
|
|
70
64
|
export type { ITraceScheduling } from './execution/ITraceScheduling';
|
|
71
65
|
export type { IFeedRepository } from './feeds/IFeedRepository';
|
|
72
66
|
export type { IAbapTimestamp, IFeedQueryOptions } from './feeds/types';
|
|
73
|
-
export type { AuthType } from './Headers';
|
|
74
|
-
export { AUTH_TYPE_BASIC, AUTH_TYPE_JWT, AUTH_TYPE_XSUAA, AUTH_TYPES, HEADER_BTP_DESTINATION, HEADER_MCP_DESTINATION, HEADER_MCP_URL, HEADER_SAP_AUTH_TYPE, HEADER_SAP_CLIENT, HEADER_SAP_DESTINATION, HEADER_SAP_DESTINATION_SERVICE, HEADER_SAP_JWT_TOKEN, HEADER_SAP_LOGIN, HEADER_SAP_PASSWORD, HEADER_SAP_REFRESH_TOKEN, HEADER_SAP_UAA_CLIENT_ID, HEADER_SAP_UAA_CLIENT_SECRET, HEADER_SAP_UAA_URL, HEADER_SAP_URL, HEADER_UAA_CLIENT_ID, HEADER_UAA_CLIENT_SECRET, HEADER_UAA_URL, } from './Headers';
|
|
75
67
|
export type { IApplicationLog, IGetApplicationLogObjectOptions, IGetApplicationLogSourceOptions, } from './runtime/IApplicationLog';
|
|
76
68
|
export type { IAtcLog, IGetCheckFailureLogsOptions } from './runtime/IAtcLog';
|
|
77
69
|
export type { AtcObjectType, IAtcFindings, IAtcObjectRef, IAtcRunOptions, IAtcRunStatusReadable, IAtcRunTarget, } from './runtime/IAtcRun';
|
|
@@ -83,24 +75,6 @@ export type { IRuntimeDumpReadOptions, IRuntimeDumpReadView, IRuntimeDumps, IRun
|
|
|
83
75
|
export type { ISt05Trace } from './runtime/ISt05Trace';
|
|
84
76
|
export type { ISystemMessages } from './runtime/ISystemMessages';
|
|
85
77
|
export type { ITraceDeletion, ITraceEntry, ITraceFamily, ITraceListing, ITraceReading, ITraceState, ITraceView, ViewArgs, ViewOptions, ViewResult, } from './runtime/ITrace';
|
|
86
|
-
export type { ISapConfig } from './sap/ISapConfig';
|
|
87
|
-
export type { SapAuthType, SapConnectionType } from './sap/SapAuthType';
|
|
88
78
|
export type { ICreateAndGenerateServiceBindingParams, ICreateAndGenerateServiceBindingParamsLegacy, } from './service/IAdtService';
|
|
89
|
-
export type { IServiceKeyStore } from './serviceKey/IServiceKeyStore';
|
|
90
|
-
export type { ISessionStore } from './session/ISessionStore';
|
|
91
79
|
export type { IReadOptions } from './shared/IReadOptions';
|
|
92
|
-
export type { StoreErrorCode } from './store/StoreErrorCodes';
|
|
93
|
-
export { STORE_ERROR_CODES } from './store/StoreErrorCodes';
|
|
94
|
-
export type { OAuth2GrantType } from './token/AuthType';
|
|
95
|
-
export { AUTH_TYPE_AUTHORIZATION_CODE, AUTH_TYPE_AUTHORIZATION_CODE_PKCE, AUTH_TYPE_CLIENT_CREDENTIALS, AUTH_TYPE_CLIENT_X509, AUTH_TYPE_PASSWORD, AUTH_TYPE_SAML2_BEARER, AUTH_TYPE_USER_TOKEN, } from './token/AuthType';
|
|
96
|
-
export type { ITokenProvider } from './token/ITokenProvider';
|
|
97
|
-
export type { ITokenProviderOptions } from './token/ITokenProviderOptions';
|
|
98
|
-
export type { ITokenRefresher } from './token/ITokenRefresher';
|
|
99
|
-
export type { ITokenResult } from './token/ITokenResult';
|
|
100
|
-
export type { TokenProviderErrorCode } from './token/TokenProviderErrorCodes';
|
|
101
|
-
export { TOKEN_PROVIDER_ERROR_CODES } from './token/TokenProviderErrorCodes';
|
|
102
|
-
export type { ITokenRefreshResult } from './utils/ITokenRefreshResult';
|
|
103
|
-
export type { IHeaderValidationResult } from './validation/IHeaderValidationResult';
|
|
104
|
-
export type { IValidatedAuthConfig } from './validation/IValidatedAuthConfig';
|
|
105
|
-
export { AuthMethodPriority } from './validation/IValidatedAuthConfig';
|
|
106
80
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,10 +2,18 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @mcp-abap-adt/interfaces-adt
|
|
4
4
|
*
|
|
5
|
-
* ADT contracts, the ABAP
|
|
5
|
+
* ADT contracts: object operations, the ABAP connection, runtime analysis,
|
|
6
|
+
* execution, feeds and service bindings.
|
|
7
|
+
*
|
|
8
|
+
* **Only ADT.** The test is who imports this package: `@mcp-abap-adt/adt-clients`
|
|
9
|
+
* and whatever replaces its objects, and nobody else. Everything that failed
|
|
10
|
+
* that test has left — headers and the HTTP frame to `interfaces-network`, Cloud
|
|
11
|
+
* ALM to `interfaces-calm`, authentication, tokens and stores to
|
|
12
|
+
* `interfaces-auth`, the SAP system configuration to `interfaces-auth-sap`,
|
|
13
|
+
* `HttpError` to `-network` and `XmlNode` to `-utils`.
|
|
6
14
|
*/
|
|
7
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
16
|
+
exports.ADT_SESSION_ERROR = exports.TRANSPORT_SEARCH_CONFIGURATIONS_URL = exports.ADT_TASK_TYPE = exports.SERVICE_BINDING_VARIANT_MAP = exports.ADT_NO_FAILURE = exports.AdtObjectErrorCodes = void 0;
|
|
9
17
|
var IAdtObject_1 = require("./adt/IAdtObject");
|
|
10
18
|
Object.defineProperty(exports, "AdtObjectErrorCodes", { enumerable: true, get: function () { return IAdtObject_1.AdtObjectErrorCodes; } });
|
|
11
19
|
var IAdtResponse_1 = require("./adt/IAdtResponse");
|
|
@@ -15,46 +23,5 @@ Object.defineProperty(exports, "SERVICE_BINDING_VARIANT_MAP", { enumerable: true
|
|
|
15
23
|
var IAdtTransport_1 = require("./adt/IAdtTransport");
|
|
16
24
|
Object.defineProperty(exports, "ADT_TASK_TYPE", { enumerable: true, get: function () { return IAdtTransport_1.ADT_TASK_TYPE; } });
|
|
17
25
|
Object.defineProperty(exports, "TRANSPORT_SEARCH_CONFIGURATIONS_URL", { enumerable: true, get: function () { return IAdtTransport_1.TRANSPORT_SEARCH_CONFIGURATIONS_URL; } });
|
|
18
|
-
var AssertionErrorCodes_1 = require("./auth/AssertionErrorCodes");
|
|
19
|
-
Object.defineProperty(exports, "ASSERTION_ERROR_CODES", { enumerable: true, get: function () { return AssertionErrorCodes_1.ASSERTION_ERROR_CODES; } });
|
|
20
|
-
var CalmService_1 = require("./connection/CalmService");
|
|
21
|
-
Object.defineProperty(exports, "CALM_SERVICES", { enumerable: true, get: function () { return CalmService_1.CALM_SERVICES; } });
|
|
22
26
|
var IConnectionCapabilities_1 = require("./connection/IConnectionCapabilities");
|
|
23
27
|
Object.defineProperty(exports, "ADT_SESSION_ERROR", { enumerable: true, get: function () { return IConnectionCapabilities_1.ADT_SESSION_ERROR; } });
|
|
24
|
-
var Headers_1 = require("./Headers");
|
|
25
|
-
Object.defineProperty(exports, "AUTH_TYPE_BASIC", { enumerable: true, get: function () { return Headers_1.AUTH_TYPE_BASIC; } });
|
|
26
|
-
Object.defineProperty(exports, "AUTH_TYPE_JWT", { enumerable: true, get: function () { return Headers_1.AUTH_TYPE_JWT; } });
|
|
27
|
-
Object.defineProperty(exports, "AUTH_TYPE_XSUAA", { enumerable: true, get: function () { return Headers_1.AUTH_TYPE_XSUAA; } });
|
|
28
|
-
Object.defineProperty(exports, "AUTH_TYPES", { enumerable: true, get: function () { return Headers_1.AUTH_TYPES; } });
|
|
29
|
-
Object.defineProperty(exports, "HEADER_BTP_DESTINATION", { enumerable: true, get: function () { return Headers_1.HEADER_BTP_DESTINATION; } });
|
|
30
|
-
Object.defineProperty(exports, "HEADER_MCP_DESTINATION", { enumerable: true, get: function () { return Headers_1.HEADER_MCP_DESTINATION; } });
|
|
31
|
-
Object.defineProperty(exports, "HEADER_MCP_URL", { enumerable: true, get: function () { return Headers_1.HEADER_MCP_URL; } });
|
|
32
|
-
Object.defineProperty(exports, "HEADER_SAP_AUTH_TYPE", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_AUTH_TYPE; } });
|
|
33
|
-
Object.defineProperty(exports, "HEADER_SAP_CLIENT", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_CLIENT; } });
|
|
34
|
-
Object.defineProperty(exports, "HEADER_SAP_DESTINATION", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_DESTINATION; } });
|
|
35
|
-
Object.defineProperty(exports, "HEADER_SAP_DESTINATION_SERVICE", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_DESTINATION_SERVICE; } });
|
|
36
|
-
Object.defineProperty(exports, "HEADER_SAP_JWT_TOKEN", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_JWT_TOKEN; } });
|
|
37
|
-
Object.defineProperty(exports, "HEADER_SAP_LOGIN", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_LOGIN; } });
|
|
38
|
-
Object.defineProperty(exports, "HEADER_SAP_PASSWORD", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_PASSWORD; } });
|
|
39
|
-
Object.defineProperty(exports, "HEADER_SAP_REFRESH_TOKEN", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_REFRESH_TOKEN; } });
|
|
40
|
-
Object.defineProperty(exports, "HEADER_SAP_UAA_CLIENT_ID", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_UAA_CLIENT_ID; } });
|
|
41
|
-
Object.defineProperty(exports, "HEADER_SAP_UAA_CLIENT_SECRET", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_UAA_CLIENT_SECRET; } });
|
|
42
|
-
Object.defineProperty(exports, "HEADER_SAP_UAA_URL", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_UAA_URL; } });
|
|
43
|
-
Object.defineProperty(exports, "HEADER_SAP_URL", { enumerable: true, get: function () { return Headers_1.HEADER_SAP_URL; } });
|
|
44
|
-
Object.defineProperty(exports, "HEADER_UAA_CLIENT_ID", { enumerable: true, get: function () { return Headers_1.HEADER_UAA_CLIENT_ID; } });
|
|
45
|
-
Object.defineProperty(exports, "HEADER_UAA_CLIENT_SECRET", { enumerable: true, get: function () { return Headers_1.HEADER_UAA_CLIENT_SECRET; } });
|
|
46
|
-
Object.defineProperty(exports, "HEADER_UAA_URL", { enumerable: true, get: function () { return Headers_1.HEADER_UAA_URL; } });
|
|
47
|
-
var StoreErrorCodes_1 = require("./store/StoreErrorCodes");
|
|
48
|
-
Object.defineProperty(exports, "STORE_ERROR_CODES", { enumerable: true, get: function () { return StoreErrorCodes_1.STORE_ERROR_CODES; } });
|
|
49
|
-
var AuthType_1 = require("./token/AuthType");
|
|
50
|
-
Object.defineProperty(exports, "AUTH_TYPE_AUTHORIZATION_CODE", { enumerable: true, get: function () { return AuthType_1.AUTH_TYPE_AUTHORIZATION_CODE; } });
|
|
51
|
-
Object.defineProperty(exports, "AUTH_TYPE_AUTHORIZATION_CODE_PKCE", { enumerable: true, get: function () { return AuthType_1.AUTH_TYPE_AUTHORIZATION_CODE_PKCE; } });
|
|
52
|
-
Object.defineProperty(exports, "AUTH_TYPE_CLIENT_CREDENTIALS", { enumerable: true, get: function () { return AuthType_1.AUTH_TYPE_CLIENT_CREDENTIALS; } });
|
|
53
|
-
Object.defineProperty(exports, "AUTH_TYPE_CLIENT_X509", { enumerable: true, get: function () { return AuthType_1.AUTH_TYPE_CLIENT_X509; } });
|
|
54
|
-
Object.defineProperty(exports, "AUTH_TYPE_PASSWORD", { enumerable: true, get: function () { return AuthType_1.AUTH_TYPE_PASSWORD; } });
|
|
55
|
-
Object.defineProperty(exports, "AUTH_TYPE_SAML2_BEARER", { enumerable: true, get: function () { return AuthType_1.AUTH_TYPE_SAML2_BEARER; } });
|
|
56
|
-
Object.defineProperty(exports, "AUTH_TYPE_USER_TOKEN", { enumerable: true, get: function () { return AuthType_1.AUTH_TYPE_USER_TOKEN; } });
|
|
57
|
-
var TokenProviderErrorCodes_1 = require("./token/TokenProviderErrorCodes");
|
|
58
|
-
Object.defineProperty(exports, "TOKEN_PROVIDER_ERROR_CODES", { enumerable: true, get: function () { return TokenProviderErrorCodes_1.TOKEN_PROVIDER_ERROR_CODES; } });
|
|
59
|
-
var IValidatedAuthConfig_1 = require("./validation/IValidatedAuthConfig");
|
|
60
|
-
Object.defineProperty(exports, "AuthMethodPriority", { enumerable: true, get: function () { return IValidatedAuthConfig_1.AuthMethodPriority; } });
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-abap-adt/interfaces-adt",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "ADT contracts, the ABAP
|
|
3
|
+
"version": "9.0.0",
|
|
4
|
+
"description": "ADT contracts: object operations, the ABAP connection, runtime analysis, execution, feeds and service bindings",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
"node": ">=18.0.0"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@mcp-abap-adt/interfaces-
|
|
40
|
-
"@mcp-abap-adt/interfaces-utils": "^1.0.0"
|
|
39
|
+
"@mcp-abap-adt/interfaces-network": "^2.0.0"
|
|
41
40
|
}
|
|
42
41
|
}
|
package/dist/Headers.d.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Header Constants for MCP ABAP ADT
|
|
3
|
-
*
|
|
4
|
-
* This file contains all HTTP header names used across MCP ABAP ADT packages.
|
|
5
|
-
* These constants should be used instead of hardcoded string values to ensure
|
|
6
|
-
* consistency and prevent typos.
|
|
7
|
-
*
|
|
8
|
-
* Priority: Values from mcp-abap-adt-interfaces package take precedence.
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Proxy Routing Headers
|
|
12
|
-
* Used by the proxy to determine routing and authentication
|
|
13
|
-
*/
|
|
14
|
-
export declare const HEADER_BTP_DESTINATION = "x-btp-destination";
|
|
15
|
-
export declare const HEADER_MCP_DESTINATION = "x-mcp-destination";
|
|
16
|
-
export declare const HEADER_MCP_URL = "x-mcp-url";
|
|
17
|
-
/**
|
|
18
|
-
* SAP ABAP Connection Headers
|
|
19
|
-
* Used for SAP ABAP system connection
|
|
20
|
-
*/
|
|
21
|
-
export declare const HEADER_SAP_DESTINATION = "x-sap-destination";
|
|
22
|
-
/**
|
|
23
|
-
* SAP Destination Header (for Cloud ABAP connection via SAP destination service)
|
|
24
|
-
* This header is used to specify the SAP destination name for connecting to ABAP systems on SAP Cloud.
|
|
25
|
-
* The URL is automatically derived from the destination service key.
|
|
26
|
-
* This is a separate constant to emphasize its specific purpose for SAP destination service.
|
|
27
|
-
*/
|
|
28
|
-
export declare const HEADER_SAP_DESTINATION_SERVICE = "x-sap-destination";
|
|
29
|
-
export declare const HEADER_SAP_URL = "x-sap-url";
|
|
30
|
-
export declare const HEADER_SAP_JWT_TOKEN = "x-sap-jwt-token";
|
|
31
|
-
export declare const HEADER_SAP_AUTH_TYPE = "x-sap-auth-type";
|
|
32
|
-
export declare const HEADER_SAP_CLIENT = "x-sap-client";
|
|
33
|
-
export declare const HEADER_SAP_LOGIN = "x-sap-login";
|
|
34
|
-
export declare const HEADER_SAP_PASSWORD = "x-sap-password";
|
|
35
|
-
export declare const HEADER_SAP_REFRESH_TOKEN = "x-sap-refresh-token";
|
|
36
|
-
/**
|
|
37
|
-
* UAA/XSUAA Headers
|
|
38
|
-
* Used for UAA/XSUAA authentication
|
|
39
|
-
*/
|
|
40
|
-
export declare const HEADER_SAP_UAA_URL = "x-sap-uaa-url";
|
|
41
|
-
export declare const HEADER_UAA_URL = "uaa-url";
|
|
42
|
-
export declare const HEADER_SAP_UAA_CLIENT_ID = "x-sap-uaa-client-id";
|
|
43
|
-
export declare const HEADER_UAA_CLIENT_ID = "uaa-client-id";
|
|
44
|
-
export declare const HEADER_SAP_UAA_CLIENT_SECRET = "x-sap-uaa-client-secret";
|
|
45
|
-
export declare const HEADER_UAA_CLIENT_SECRET = "uaa-client-secret";
|
|
46
|
-
/**
|
|
47
|
-
* Authentication type values
|
|
48
|
-
*/
|
|
49
|
-
export declare const AUTH_TYPE_JWT = "jwt";
|
|
50
|
-
export declare const AUTH_TYPE_BASIC = "basic";
|
|
51
|
-
export declare const AUTH_TYPE_XSUAA = "xsuaa";
|
|
52
|
-
/**
|
|
53
|
-
* Valid authentication types
|
|
54
|
-
*/
|
|
55
|
-
export declare const AUTH_TYPES: readonly ["jwt", "basic", "xsuaa"];
|
|
56
|
-
export type AuthType = (typeof AUTH_TYPES)[number];
|
|
57
|
-
//# sourceMappingURL=Headers.d.ts.map
|
package/dist/Headers.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Headers.d.ts","sourceRoot":"","sources":["../src/Headers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAC1D,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAC1D;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AACpD,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AACtE,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAC5D;;GAEG;AACH,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC;;GAEG;AACH,eAAO,MAAM,UAAU,oCAIb,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC"}
|