@mcp-abap-adt/interfaces-adt 1.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 +16 -0
- package/COPYING +674 -0
- package/LICENSE +165 -0
- package/README.md +35 -0
- package/dist/Headers.d.ts +57 -0
- package/dist/Headers.d.ts.map +1 -0
- package/dist/Headers.js +62 -0
- package/dist/adt/AdtTypes.d.ts +40 -0
- package/dist/adt/AdtTypes.d.ts.map +1 -0
- package/dist/adt/AdtTypes.js +5 -0
- package/dist/adt/IAdtAbapGit.d.ts +60 -0
- package/dist/adt/IAdtAbapGit.d.ts.map +1 -0
- package/dist/adt/IAdtAbapGit.js +2 -0
- package/dist/adt/IAdtAccessControl.d.ts +30 -0
- package/dist/adt/IAdtAccessControl.d.ts.map +1 -0
- package/dist/adt/IAdtAccessControl.js +5 -0
- package/dist/adt/IAdtAppendStructure.d.ts +32 -0
- package/dist/adt/IAdtAppendStructure.d.ts.map +1 -0
- package/dist/adt/IAdtAppendStructure.js +5 -0
- package/dist/adt/IAdtAuthorizationField.d.ts +49 -0
- package/dist/adt/IAdtAuthorizationField.d.ts.map +1 -0
- package/dist/adt/IAdtAuthorizationField.js +5 -0
- package/dist/adt/IAdtBehaviorDefinition.d.ts +58 -0
- package/dist/adt/IAdtBehaviorDefinition.d.ts.map +1 -0
- package/dist/adt/IAdtBehaviorDefinition.js +7 -0
- package/dist/adt/IAdtBehaviorImplementation.d.ts +30 -0
- package/dist/adt/IAdtBehaviorImplementation.d.ts.map +1 -0
- package/dist/adt/IAdtBehaviorImplementation.js +5 -0
- package/dist/adt/IAdtCapabilities.d.ts +391 -0
- package/dist/adt/IAdtCapabilities.d.ts.map +1 -0
- package/dist/adt/IAdtCapabilities.js +2 -0
- package/dist/adt/IAdtClass.d.ts +66 -0
- package/dist/adt/IAdtClass.d.ts.map +1 -0
- package/dist/adt/IAdtClass.js +5 -0
- package/dist/adt/IAdtClientOptions.d.ts +25 -0
- package/dist/adt/IAdtClientOptions.d.ts.map +1 -0
- package/dist/adt/IAdtClientOptions.js +9 -0
- package/dist/adt/IAdtContentTypes.d.ts +45 -0
- package/dist/adt/IAdtContentTypes.d.ts.map +1 -0
- package/dist/adt/IAdtContentTypes.js +13 -0
- package/dist/adt/IAdtDataElement.d.ts +95 -0
- package/dist/adt/IAdtDataElement.d.ts.map +1 -0
- package/dist/adt/IAdtDataElement.js +5 -0
- package/dist/adt/IAdtDdl.d.ts +37 -0
- package/dist/adt/IAdtDdl.d.ts.map +1 -0
- package/dist/adt/IAdtDdl.js +7 -0
- package/dist/adt/IAdtDomain.d.ts +79 -0
- package/dist/adt/IAdtDomain.d.ts.map +1 -0
- package/dist/adt/IAdtDomain.js +5 -0
- package/dist/adt/IAdtEnhancement.d.ts +61 -0
- package/dist/adt/IAdtEnhancement.d.ts.map +1 -0
- package/dist/adt/IAdtEnhancement.js +7 -0
- package/dist/adt/IAdtFeatureToggle.d.ts +100 -0
- package/dist/adt/IAdtFeatureToggle.d.ts.map +1 -0
- package/dist/adt/IAdtFeatureToggle.js +5 -0
- package/dist/adt/IAdtFunctionGroup.d.ts +52 -0
- package/dist/adt/IAdtFunctionGroup.d.ts.map +1 -0
- package/dist/adt/IAdtFunctionGroup.js +5 -0
- package/dist/adt/IAdtFunctionInclude.d.ts +23 -0
- package/dist/adt/IAdtFunctionInclude.d.ts.map +1 -0
- package/dist/adt/IAdtFunctionInclude.js +5 -0
- package/dist/adt/IAdtFunctionModule.d.ts +35 -0
- package/dist/adt/IAdtFunctionModule.d.ts.map +1 -0
- package/dist/adt/IAdtFunctionModule.js +5 -0
- package/dist/adt/IAdtInclude.d.ts +45 -0
- package/dist/adt/IAdtInclude.d.ts.map +1 -0
- package/dist/adt/IAdtInclude.js +17 -0
- package/dist/adt/IAdtInterface.d.ts +33 -0
- package/dist/adt/IAdtInterface.d.ts.map +1 -0
- package/dist/adt/IAdtInterface.js +5 -0
- package/dist/adt/IAdtMessageClass.d.ts +35 -0
- package/dist/adt/IAdtMessageClass.d.ts.map +1 -0
- package/dist/adt/IAdtMessageClass.js +2 -0
- package/dist/adt/IAdtMetadataExtension.d.ts +29 -0
- package/dist/adt/IAdtMetadataExtension.d.ts.map +1 -0
- package/dist/adt/IAdtMetadataExtension.js +5 -0
- package/dist/adt/IAdtObject.d.ts +224 -0
- package/dist/adt/IAdtObject.d.ts.map +1 -0
- package/dist/adt/IAdtObject.js +82 -0
- package/dist/adt/IAdtObjectState.d.ts +36 -0
- package/dist/adt/IAdtObjectState.d.ts.map +1 -0
- package/dist/adt/IAdtObjectState.js +13 -0
- package/dist/adt/IAdtPackage.d.ts +69 -0
- package/dist/adt/IAdtPackage.d.ts.map +1 -0
- package/dist/adt/IAdtPackage.js +5 -0
- package/dist/adt/IAdtProgram.d.ts +37 -0
- package/dist/adt/IAdtProgram.d.ts.map +1 -0
- package/dist/adt/IAdtProgram.js +5 -0
- package/dist/adt/IAdtResponse.d.ts +289 -0
- package/dist/adt/IAdtResponse.d.ts.map +1 -0
- package/dist/adt/IAdtResponse.js +51 -0
- package/dist/adt/IAdtScalarFunction.d.ts +30 -0
- package/dist/adt/IAdtScalarFunction.d.ts.map +1 -0
- package/dist/adt/IAdtScalarFunction.js +5 -0
- package/dist/adt/IAdtScalarFunctionImplementation.d.ts +35 -0
- package/dist/adt/IAdtScalarFunctionImplementation.d.ts.map +1 -0
- package/dist/adt/IAdtScalarFunctionImplementation.js +5 -0
- package/dist/adt/IAdtServiceBinding.d.ts +61 -0
- package/dist/adt/IAdtServiceBinding.d.ts.map +1 -0
- package/dist/adt/IAdtServiceBinding.js +33 -0
- package/dist/adt/IAdtServiceDefinition.d.ts +30 -0
- package/dist/adt/IAdtServiceDefinition.d.ts.map +1 -0
- package/dist/adt/IAdtServiceDefinition.js +5 -0
- package/dist/adt/IAdtShared.d.ts +110 -0
- package/dist/adt/IAdtShared.d.ts.map +1 -0
- package/dist/adt/IAdtShared.js +5 -0
- package/dist/adt/IAdtStructure.d.ts +48 -0
- package/dist/adt/IAdtStructure.d.ts.map +1 -0
- package/dist/adt/IAdtStructure.js +5 -0
- package/dist/adt/IAdtTable.d.ts +30 -0
- package/dist/adt/IAdtTable.d.ts.map +1 -0
- package/dist/adt/IAdtTable.js +5 -0
- package/dist/adt/IAdtTableType.d.ts +61 -0
- package/dist/adt/IAdtTableType.d.ts.map +1 -0
- package/dist/adt/IAdtTableType.js +5 -0
- package/dist/adt/IAdtTransformation.d.ts +33 -0
- package/dist/adt/IAdtTransformation.d.ts.map +1 -0
- package/dist/adt/IAdtTransformation.js +7 -0
- package/dist/adt/IAdtTransport.d.ts +104 -0
- package/dist/adt/IAdtTransport.d.ts.map +1 -0
- package/dist/adt/IAdtTransport.js +8 -0
- package/dist/adt/IAdtUnitTest.d.ts +125 -0
- package/dist/adt/IAdtUnitTest.d.ts.map +1 -0
- package/dist/adt/IAdtUnitTest.js +5 -0
- package/dist/adt/IAdtUtilities.d.ts +310 -0
- package/dist/adt/IAdtUtilities.d.ts.map +1 -0
- package/dist/adt/IAdtUtilities.js +92 -0
- package/dist/auth/AuthType.d.ts +5 -0
- package/dist/auth/AuthType.d.ts.map +1 -0
- package/dist/auth/AuthType.js +2 -0
- package/dist/auth/IAuthorizationConfig.d.ts +15 -0
- package/dist/auth/IAuthorizationConfig.d.ts.map +1 -0
- package/dist/auth/IAuthorizationConfig.js +2 -0
- package/dist/auth/IAuthorizationStrategy.d.ts +59 -0
- package/dist/auth/IAuthorizationStrategy.d.ts.map +1 -0
- package/dist/auth/IAuthorizationStrategy.js +12 -0
- package/dist/auth/ICallbackServer.d.ts +139 -0
- package/dist/auth/ICallbackServer.d.ts.map +1 -0
- package/dist/auth/ICallbackServer.js +2 -0
- package/dist/auth/ICertificateMaterialLoader.d.ts +7 -0
- package/dist/auth/ICertificateMaterialLoader.d.ts.map +1 -0
- package/dist/auth/ICertificateMaterialLoader.js +2 -0
- package/dist/auth/IConfig.d.ts +8 -0
- package/dist/auth/IConfig.d.ts.map +1 -0
- package/dist/auth/IConfig.js +2 -0
- package/dist/auth/IConnectionConfig.d.ts +23 -0
- package/dist/auth/IConnectionConfig.d.ts.map +1 -0
- package/dist/auth/IConnectionConfig.js +2 -0
- package/dist/connection/CalmService.d.ts +3 -0
- package/dist/connection/CalmService.d.ts.map +1 -0
- package/dist/connection/CalmService.js +14 -0
- package/dist/connection/IAbapConnection.d.ts +73 -0
- package/dist/connection/IAbapConnection.d.ts.map +1 -0
- package/dist/connection/IAbapConnection.js +2 -0
- package/dist/connection/IAbapRequestOptions.d.ts +9 -0
- package/dist/connection/IAbapRequestOptions.d.ts.map +1 -0
- package/dist/connection/IAbapRequestOptions.js +2 -0
- package/dist/connection/ICalmConnection.d.ts +29 -0
- package/dist/connection/ICalmConnection.d.ts.map +1 -0
- package/dist/connection/ICalmConnection.js +2 -0
- package/dist/connection/ICalmRequestOptions.d.ts +11 -0
- package/dist/connection/ICalmRequestOptions.d.ts.map +1 -0
- package/dist/connection/ICalmRequestOptions.js +2 -0
- package/dist/connection/IConnectionCapabilities.d.ts +217 -0
- package/dist/connection/IConnectionCapabilities.d.ts.map +1 -0
- package/dist/connection/IConnectionCapabilities.js +29 -0
- package/dist/execution/IAdtExecutors.d.ts +78 -0
- package/dist/execution/IAdtExecutors.d.ts.map +1 -0
- package/dist/execution/IAdtExecutors.js +9 -0
- package/dist/execution/IAdtRunnable.d.ts +61 -0
- package/dist/execution/IAdtRunnable.d.ts.map +1 -0
- package/dist/execution/IAdtRunnable.js +2 -0
- package/dist/execution/ITraceScheduling.d.ts +39 -0
- package/dist/execution/ITraceScheduling.d.ts.map +1 -0
- package/dist/execution/ITraceScheduling.js +15 -0
- package/dist/feeds/IFeedRepository.d.ts +32 -0
- package/dist/feeds/IFeedRepository.d.ts.map +1 -0
- package/dist/feeds/IFeedRepository.js +8 -0
- package/dist/feeds/types.d.ts +18 -0
- package/dist/feeds/types.d.ts.map +1 -0
- package/dist/feeds/types.js +9 -0
- package/dist/index.d.ts +103 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/runtime/IApplicationLog.d.ts +21 -0
- package/dist/runtime/IApplicationLog.d.ts.map +1 -0
- package/dist/runtime/IApplicationLog.js +2 -0
- package/dist/runtime/IAtcLog.d.ts +15 -0
- package/dist/runtime/IAtcLog.d.ts.map +1 -0
- package/dist/runtime/IAtcLog.js +2 -0
- package/dist/runtime/IAtcRun.d.ts +99 -0
- package/dist/runtime/IAtcRun.d.ts.map +1 -0
- package/dist/runtime/IAtcRun.js +10 -0
- package/dist/runtime/ICrossTrace.d.ts +32 -0
- package/dist/runtime/ICrossTrace.d.ts.map +1 -0
- package/dist/runtime/ICrossTrace.js +2 -0
- package/dist/runtime/IDdicActivation.d.ts +12 -0
- package/dist/runtime/IDdicActivation.d.ts.map +1 -0
- package/dist/runtime/IDdicActivation.js +2 -0
- package/dist/runtime/IGatewayErrorLog.d.ts +10 -0
- package/dist/runtime/IGatewayErrorLog.d.ts.map +1 -0
- package/dist/runtime/IGatewayErrorLog.js +2 -0
- package/dist/runtime/IProfiler.d.ts +65 -0
- package/dist/runtime/IProfiler.d.ts.map +1 -0
- package/dist/runtime/IProfiler.js +2 -0
- package/dist/runtime/IRuntimeDumps.d.ts +23 -0
- package/dist/runtime/IRuntimeDumps.d.ts.map +1 -0
- package/dist/runtime/IRuntimeDumps.js +2 -0
- package/dist/runtime/ISt05Trace.d.ts +8 -0
- package/dist/runtime/ISt05Trace.d.ts.map +1 -0
- package/dist/runtime/ISt05Trace.js +2 -0
- package/dist/runtime/ISystemMessages.d.ts +10 -0
- package/dist/runtime/ISystemMessages.d.ts.map +1 -0
- package/dist/runtime/ISystemMessages.js +2 -0
- package/dist/runtime/ITrace.d.ts +170 -0
- package/dist/runtime/ITrace.d.ts.map +1 -0
- package/dist/runtime/ITrace.js +14 -0
- package/dist/sap/ISapConfig.d.ts +22 -0
- package/dist/sap/ISapConfig.d.ts.map +1 -0
- package/dist/sap/ISapConfig.js +2 -0
- package/dist/sap/SapAuthType.d.ts +3 -0
- package/dist/sap/SapAuthType.d.ts.map +1 -0
- package/dist/sap/SapAuthType.js +2 -0
- package/dist/service/IAdtService.d.ts +84 -0
- package/dist/service/IAdtService.d.ts.map +1 -0
- package/dist/service/IAdtService.js +27 -0
- package/dist/serviceKey/IServiceKeyStore.d.ts +31 -0
- package/dist/serviceKey/IServiceKeyStore.d.ts.map +1 -0
- package/dist/serviceKey/IServiceKeyStore.js +7 -0
- package/dist/session/ISessionStore.d.ts +59 -0
- package/dist/session/ISessionStore.d.ts.map +1 -0
- package/dist/session/ISessionStore.js +7 -0
- package/dist/shared/IReadOptions.d.ts +9 -0
- package/dist/shared/IReadOptions.d.ts.map +1 -0
- package/dist/shared/IReadOptions.js +2 -0
- package/dist/store/StoreErrorCodes.d.ts +12 -0
- package/dist/store/StoreErrorCodes.d.ts.map +1 -0
- package/dist/store/StoreErrorCodes.js +13 -0
- package/dist/token/AuthType.d.ts +43 -0
- package/dist/token/AuthType.d.ts.map +1 -0
- package/dist/token/AuthType.js +41 -0
- package/dist/token/ITokenProvider.d.ts +27 -0
- package/dist/token/ITokenProvider.d.ts.map +1 -0
- package/dist/token/ITokenProvider.js +8 -0
- package/dist/token/ITokenProviderOptions.d.ts +23 -0
- package/dist/token/ITokenProviderOptions.d.ts.map +1 -0
- package/dist/token/ITokenProviderOptions.js +2 -0
- package/dist/token/ITokenRefresher.d.ts +39 -0
- package/dist/token/ITokenRefresher.d.ts.map +1 -0
- package/dist/token/ITokenRefresher.js +12 -0
- package/dist/token/ITokenResult.d.ts +36 -0
- package/dist/token/ITokenResult.d.ts.map +1 -0
- package/dist/token/ITokenResult.js +7 -0
- package/dist/token/TokenProviderErrorCodes.d.ts +26 -0
- package/dist/token/TokenProviderErrorCodes.d.ts.map +1 -0
- package/dist/token/TokenProviderErrorCodes.js +24 -0
- package/dist/utils/ITokenRefreshResult.d.ts +8 -0
- package/dist/utils/ITokenRefreshResult.d.ts.map +1 -0
- package/dist/utils/ITokenRefreshResult.js +2 -0
- package/dist/validation/IHeaderValidationResult.d.ts +15 -0
- package/dist/validation/IHeaderValidationResult.d.ts.map +1 -0
- package/dist/validation/IHeaderValidationResult.js +2 -0
- package/dist/validation/IValidatedAuthConfig.d.ts +46 -0
- package/dist/validation/IValidatedAuthConfig.d.ts.map +1 -0
- package/dist/validation/IValidatedAuthConfig.js +15 -0
- package/package.json +42 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cross-cutting ADT operations, split by the resource families ADT itself
|
|
3
|
+
* has — not by which of them a particular system refuses.
|
|
4
|
+
*
|
|
5
|
+
* `AdtUtils` in `@mcp-abap-adt/adt-clients` is one class with 28 public methods,
|
|
6
|
+
* handed out by `AdtClient.getUtils()` as itself. A concrete return is the one a
|
|
7
|
+
* consumer cannot substitute, cannot compose with their own types, and cannot
|
|
8
|
+
* have checked at the factory — see decision 12 here and decision 10 there.
|
|
9
|
+
*
|
|
10
|
+
* **The grain comes from ADT's own resource space**, read out of the endpoints
|
|
11
|
+
* the implementation calls:
|
|
12
|
+
*
|
|
13
|
+
* | family | atom |
|
|
14
|
+
* |---|---|
|
|
15
|
+
* | `/repository/informationsystem/*` | {@link IAdtInformationSystem} |
|
|
16
|
+
* | `/repository/nodestructure`, `/repository/objectstructure` | {@link IAdtRepositoryStructure} |
|
|
17
|
+
* | `/activation`, `/deletion` | {@link IAdtGroupLifecycle} |
|
|
18
|
+
* | `/datapreview/*` | {@link IAdtDataPreview} |
|
|
19
|
+
* | `/discovery` | {@link IAdtDiscovery} |
|
|
20
|
+
* | the per-type resources — `oo`, `programs`, `ddic`, `functions`, `enhancements` | {@link IAdtObjectAccess} |
|
|
21
|
+
*
|
|
22
|
+
* Deliberately *not* the grain a measurement suggested. When this split was
|
|
23
|
+
* chosen, the one legacy implementation refused exactly `getSqlQuery`,
|
|
24
|
+
* `getTableContents` and `getTransaction` — which would have given three atoms
|
|
25
|
+
* and a bag of 28. Those refusals fall **inside** these families rather than
|
|
26
|
+
* defining them, so architecture and observation agree; observation is simply
|
|
27
|
+
* narrower, and a contract split by who refuses what is a contract that changes
|
|
28
|
+
* shape with the next system.
|
|
29
|
+
*
|
|
30
|
+
* Removing `getTransaction` made that concrete rather than theoretical. The
|
|
31
|
+
* legacy implementation now refuses two members, and **both are
|
|
32
|
+
* {@link IAdtDataPreview}** — a whole family, refused whole, which is what a
|
|
33
|
+
* split along ADT's resources predicts and a split along refusals could not have
|
|
34
|
+
* known in advance. Had the atoms been drawn from the observation, one of the
|
|
35
|
+
* three would have evaporated when its member did.
|
|
36
|
+
*
|
|
37
|
+
* A few members compute a string and issue no request — `supportsSourceCode`,
|
|
38
|
+
* `getObjectSourceUri`, `modifyWhereUsedScope`. They stay with the family whose
|
|
39
|
+
* requests they prepare, because a consumer replacing that family needs them to
|
|
40
|
+
* build the same call.
|
|
41
|
+
*
|
|
42
|
+
* ## The gap, named rather than papered over
|
|
43
|
+
*
|
|
44
|
+
* **Every member states its result.** Twelve of the twenty-five answered
|
|
45
|
+
* `IAdtWireResponse` — the transport envelope, which every method could name and
|
|
46
|
+
* which told a consumer only that a request happened. They now answer the
|
|
47
|
+
* document their endpoint produced, and parsing it is the consumer's (decision
|
|
48
|
+
* 5). The other thirteen already stated what the caller gets.
|
|
49
|
+
*
|
|
50
|
+
* Counted as **members**, not signatures: `search` has two, because one endpoint
|
|
51
|
+
* is one member (decision 16) and the second signature is the strategy, not a
|
|
52
|
+
* second capability. A parser that counts signatures reports 26 and is not
|
|
53
|
+
* wrong about anything except the word.
|
|
54
|
+
*
|
|
55
|
+
*
|
|
56
|
+
* Six were removed because nobody calls them — `getTypeInfo`, `getTransaction`,
|
|
57
|
+
* `getBdef`, `getEnhancements`, `getEnhancementSpot`, `getEnhancementImpl`. Every
|
|
58
|
+
* mention of them across the sibling repositories was their own doc comment.
|
|
59
|
+
* The question was never which result they promise, but why they were in a
|
|
60
|
+
* contract; three of them were a second door to a handler that was already
|
|
61
|
+
* there — `getBdef` to `getBehaviorDefinition().read()`, `getEnhancementImpl`
|
|
62
|
+
* and `getEnhancementSpot` to `getEnhancement()` — and the other three named
|
|
63
|
+
* resources nothing else reaches. Deleted in `@mcp-abap-adt/adt-clients` with
|
|
64
|
+
* those three endpoints recorded, so a typed handler can be built where one is
|
|
65
|
+
* wanted rather than a generic member kept in case one is.
|
|
66
|
+
*
|
|
67
|
+
* Two were closed from evidence rather than measurement: `getAllTypes` answers
|
|
68
|
+
* the named-item list a trace catalogue answers with, and
|
|
69
|
+
* `fetchNodeStructure` answers objects plus the typed child nodes to walk next.
|
|
70
|
+
* Both shapes were lifted from parsers that have been reading those documents in
|
|
71
|
+
* `mcp-abap-adt` against real systems — code that works is evidence; a shape
|
|
72
|
+
* nobody has read is not.
|
|
73
|
+
*
|
|
74
|
+
* Evidence is not the same as being finished. `fetchNodeStructure` first shipped
|
|
75
|
+
* carrying the ids alone, which cannot say *which* node holds a given type, and
|
|
76
|
+
* 27.0.0 is that correction — found by a consumer trying to walk with it.
|
|
77
|
+
*
|
|
78
|
+
* The twelve are left as they are, deliberately. Closing them means naming what
|
|
79
|
+
* each endpoint sends, and 12 shapes would have to be named,
|
|
80
|
+
* and nothing but a capture can name them, which decision 1 forbids. **A strategy does not close them
|
|
81
|
+
* either** — handing the caller a parser makes the caller decide what comes
|
|
82
|
+
* back, and the point of a contract is that the consumer is not rewritten when
|
|
83
|
+
* the implementation changes. Strategy and result contract are different planes;
|
|
84
|
+
* an attempt to use one for the other cost every implementer two signatures per
|
|
85
|
+
* method before it was reverted.
|
|
86
|
+
*
|
|
87
|
+
* So they close one at a time, on captures. Until then this file states what a
|
|
88
|
+
* consumer gets for 13 members and admits the gap for 12, which is the honest
|
|
89
|
+
* shape of the thing rather than a finished one.
|
|
90
|
+
*/
|
|
91
|
+
import type { IReadOptions } from '../shared/IReadOptions';
|
|
92
|
+
import type { IAdtResponse } from './IAdtResponse';
|
|
93
|
+
import type { AdtObjectType, AdtSourceObjectType, IGetDiscoveryParams, IGetSqlQueryParams, IGetTableContentsParams, IGetVirtualFoldersContentsParams, IGetWhereUsedParams, IGetWhereUsedScopeParams, IObjectReference, ISearchObjectsParams } from './IAdtShared';
|
|
94
|
+
/**
|
|
95
|
+
* `/sap/bc/adt/repository/informationsystem/*` — everything ADT answers about
|
|
96
|
+
* *where* something is: what exists, what uses it, and what the repository will
|
|
97
|
+
* show under a filter.
|
|
98
|
+
*
|
|
99
|
+
* **Four endpoints, so four atoms.** This was one interface until 40.0.0, and
|
|
100
|
+
* bundling them meant an implementation that offered three of the four could
|
|
101
|
+
* declare none of them. That is what happened: a where-used member that issued
|
|
102
|
+
* *two* requests — the scope, then the search — left `adt-clients` under the
|
|
103
|
+
* one-member-one-endpoint rule, and taking it out of a bundle would have
|
|
104
|
+
* dropped `search` and the scope members with it, which are single requests and
|
|
105
|
+
* staying.
|
|
106
|
+
*
|
|
107
|
+
* The composite below still exists and still means what it meant, so an
|
|
108
|
+
* implementation offering all four writes one name.
|
|
109
|
+
*/
|
|
110
|
+
export interface IAdtInformationSystem<TSearch, TWhereUsed, TScope, TFolders, TTypes> extends IAdtObjectSearch<TSearch>, IAdtWhereUsed<TWhereUsed, TScope>, IAdtVirtualFolders<TFolders>, IAdtTypeCatalogue<TTypes> {
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* `/informationsystem/search` — objects matching a query.
|
|
114
|
+
*
|
|
115
|
+
* **Not `IAdtSearchable`.** That name was removed in 30.0.0 and meant something
|
|
116
|
+
* else: an atom a per-object handler declared, which was wrong because
|
|
117
|
+
* searching is not something an object does to itself. This is the information
|
|
118
|
+
* system's own member, split out of the bundle so an implementation can offer
|
|
119
|
+
* it without offering the where-used pair.
|
|
120
|
+
*/
|
|
121
|
+
export interface IAdtObjectSearch<TSearch> {
|
|
122
|
+
/**
|
|
123
|
+
* Objects matching a query.
|
|
124
|
+
*
|
|
125
|
+
* One signature. Until 30.0.0 a second overload took
|
|
126
|
+
* `parse: (data: unknown) => T` so a caller could keep the document — a
|
|
127
|
+
* recorded hit list runs to 473 rows and 1.3MB, with nested references
|
|
128
|
+
* a parsed hit list deliberately does not carry. That reading is still
|
|
129
|
+
* available and is now chosen the way every other reading is: an
|
|
130
|
+
* {@link IResultStrategy} given to the implementation, with `TSearch`
|
|
131
|
+
* following it.
|
|
132
|
+
*
|
|
133
|
+
* Decision 20 — choice is offered by injection, never by more contract — and
|
|
134
|
+
* decision 22, which says where the injection happens. A per-call argument is
|
|
135
|
+
* a second signature every implementer pays for whether or not their callers
|
|
136
|
+
* use it.
|
|
137
|
+
*/
|
|
138
|
+
search(criteria: ISearchObjectsParams): Promise<IAdtResponse<TSearch>>;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* `/informationsystem/usageReferences` and its `scope` sub-resource.
|
|
142
|
+
*
|
|
143
|
+
* **Two requests, two members, and the caller joins them.** A run that wants a
|
|
144
|
+
* narrowed scope fetches the scope document, edits it, and passes it to the
|
|
145
|
+
* search. There is no member that does all three: the order, and what to do
|
|
146
|
+
* when the `scope` sub-resource is absent — some systems answer it `404` — are
|
|
147
|
+
* decisions that belong to whoever is asking, not to a client that would have
|
|
148
|
+
* to guess a fallback.
|
|
149
|
+
*/
|
|
150
|
+
export interface IAdtWhereUsed<TWhereUsed, TScope> {
|
|
151
|
+
/** Where an object is used. One request. */
|
|
152
|
+
getWhereUsed(params: IGetWhereUsedParams): Promise<IAdtResponse<TWhereUsed>>;
|
|
153
|
+
/** The scope document a where-used run is filtered by. */
|
|
154
|
+
getWhereUsedScope(params: IGetWhereUsedScopeParams): Promise<IAdtResponse<TScope>>;
|
|
155
|
+
/**
|
|
156
|
+
* That scope document, edited. Issues no request — it rewrites the XML the
|
|
157
|
+
* call above returned, and belongs here because nothing else can use it.
|
|
158
|
+
*/
|
|
159
|
+
modifyWhereUsedScope(scopeXml: string, options: {
|
|
160
|
+
enableAll?: boolean;
|
|
161
|
+
enableOnly?: string[];
|
|
162
|
+
enable?: string[];
|
|
163
|
+
disable?: string[];
|
|
164
|
+
}): string;
|
|
165
|
+
}
|
|
166
|
+
/** `/informationsystem/virtualfolders` — the repository as folders. */
|
|
167
|
+
export interface IAdtVirtualFolders<TFolders> {
|
|
168
|
+
/** The repository as folders, under a preselection. */
|
|
169
|
+
getVirtualFoldersContents(params: IGetVirtualFoldersContentsParams): Promise<IAdtResponse<TFolders>>;
|
|
170
|
+
}
|
|
171
|
+
/** `/informationsystem/objecttypes` — the types this system knows. */
|
|
172
|
+
export interface IAdtTypeCatalogue<TTypes> {
|
|
173
|
+
/**
|
|
174
|
+
* The object types this system knows.
|
|
175
|
+
*
|
|
176
|
+
* `nameditem:namedItemList` — the same document a trace catalogue serves from
|
|
177
|
+
* a different resource, so an implementation that reads one reads the other.
|
|
178
|
+
* Measured against real systems rather than invented; the shape itself is the
|
|
179
|
+
* implementation's since 31.0.0.
|
|
180
|
+
*/
|
|
181
|
+
getAllTypes(maxItemCount?: number, name?: string, data?: string): Promise<IAdtResponse<TTypes>>;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* `/sap/bc/adt/repository/nodestructure` and `/objectstructure` — the tree, and
|
|
185
|
+
* one object's place in it.
|
|
186
|
+
*/
|
|
187
|
+
export interface IAdtRepositoryStructure<TNode, TObjectStructure> {
|
|
188
|
+
/**
|
|
189
|
+
* Children of a node: the objects it holds, and the nodes below it.
|
|
190
|
+
*
|
|
191
|
+
* Both halves come from one document — `SEU_ADT_REPOSITORY_OBJ_NODE` entries
|
|
192
|
+
* and the `SEU_ADT_OBJECT_TYPE_INFO` pairs a caller walks next — and a
|
|
193
|
+
* consumer needs both to traverse, which is why the result names them rather
|
|
194
|
+
* than handing back the envelope. Lifted from a traversal running in
|
|
195
|
+
* `mcp-abap-adt`.
|
|
196
|
+
*
|
|
197
|
+
* The child half is pairs, not ids: an id on its own cannot answer "which node
|
|
198
|
+
* holds the includes", which is the question a walk asks. That is a property
|
|
199
|
+
* an implementation's reading must keep — the shape that used to state it left
|
|
200
|
+
* in 31.0.0.
|
|
201
|
+
*
|
|
202
|
+
* **`withShortDescriptions` reaches the wire, so it is a parameter** (decision
|
|
203
|
+
* 17). What no *result* has ever carried is a description — every parser that
|
|
204
|
+
* has read this document reads exactly four identity fields. A consumer who
|
|
205
|
+
* needs a description supplies an
|
|
206
|
+
* {@link IResultStrategy} that reads it, which is what `TNode` is for;
|
|
207
|
+
* inventing a `description?: string` field nobody has captured is what
|
|
208
|
+
* decision 1 forbids.
|
|
209
|
+
*
|
|
210
|
+
* **What this is for.** The node structure asked for as itself — a class's
|
|
211
|
+
* includes, a program's parts, a package's contents, a node walked by hand.
|
|
212
|
+
* It answers one level; walking further is the caller's, one call per level,
|
|
213
|
+
* because a member that walked could never be given a reading.
|
|
214
|
+
*/
|
|
215
|
+
fetchNodeStructure(parentType: string, parentName: string, options?: IGetNodeContentsOptions): Promise<IAdtResponse<TNode>>;
|
|
216
|
+
/** The parts one object is made of. */
|
|
217
|
+
getObjectStructure(objectType: string, objectName: string): Promise<IAdtResponse<TObjectStructure>>;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* What the node-structure request itself takes.
|
|
221
|
+
*
|
|
222
|
+
* `node_id` selects a sub-node of the parent; without it the server answers the
|
|
223
|
+
* parent's own level. Both reach the wire (decision 17), which is why they are
|
|
224
|
+
* here and a traversal depth is not.
|
|
225
|
+
*/
|
|
226
|
+
export interface IGetNodeContentsOptions {
|
|
227
|
+
nodeId?: string;
|
|
228
|
+
withShortDescriptions?: boolean;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* `/sap/bc/adt/activation` and `/sap/bc/adt/deletion` — operations ADT takes on
|
|
232
|
+
* a set of objects at once, rather than on one.
|
|
233
|
+
*/
|
|
234
|
+
export interface IAdtGroupLifecycle<TInactive, TActivation, TRun, TResults, TDeletionCheck, TDeletion> {
|
|
235
|
+
/** Activate several objects in one request. */
|
|
236
|
+
activateObjectsGroup(objects: IObjectReference[], preauditRequested?: boolean): Promise<IAdtResponse<TActivation>>;
|
|
237
|
+
/**
|
|
238
|
+
* What an activation run is doing — `/activation/runs/{runId}`.
|
|
239
|
+
*
|
|
240
|
+
* One request. `withLongPolling` reaches the wire — the server holds the
|
|
241
|
+
* request open rather than answering at once — so it is a parameter, not a
|
|
242
|
+
* reading (decision 17). Which value of `runs:status` ends a wait is the
|
|
243
|
+
* caller's to decide, and how long to wait is theirs to write.
|
|
244
|
+
*/
|
|
245
|
+
getActivationRun(runId: string, options?: {
|
|
246
|
+
withLongPolling?: boolean;
|
|
247
|
+
}): Promise<IAdtResponse<TRun>>;
|
|
248
|
+
/** What that run produced — `/activation/results/{runId}`. */
|
|
249
|
+
getActivationResults(runId: string): Promise<IAdtResponse<TResults>>;
|
|
250
|
+
/**
|
|
251
|
+
* What is inactive right now.
|
|
252
|
+
*
|
|
253
|
+
* **No `includeRawXml`.** A boolean that changes what the result *is* is a
|
|
254
|
+
* reading chosen at the call site, which is the shape decisions 16 and 20 rule
|
|
255
|
+
* out — and it could offer exactly two readings, chosen by whoever wrote the
|
|
256
|
+
* flag. `TInactive` spans the space instead, following the
|
|
257
|
+
* {@link IResultStrategy} the implementation was constructed with.
|
|
258
|
+
*/
|
|
259
|
+
getInactiveObjects(): Promise<IAdtResponse<TInactive>>;
|
|
260
|
+
/** Whether a set can be deleted, asked before deleting it. */
|
|
261
|
+
checkDeletionGroup(objects: IObjectReference[]): Promise<IAdtResponse<TDeletionCheck>>;
|
|
262
|
+
/** Delete several objects in one request. */
|
|
263
|
+
deleteObjectsGroup(objects: IObjectReference[], transportRequest?: string): Promise<IAdtResponse<TDeletion>>;
|
|
264
|
+
}
|
|
265
|
+
/** `/sap/bc/adt/datapreview/*` — reading data rather than definitions. */
|
|
266
|
+
export interface IAdtDataPreview<TQuery, TColumns, TContents> {
|
|
267
|
+
/** A freestyle SQL query. */
|
|
268
|
+
getSqlQuery(params: IGetSqlQueryParams): Promise<IAdtResponse<TQuery>>;
|
|
269
|
+
/** The rows of one table. */
|
|
270
|
+
/**
|
|
271
|
+
* The columns a DDIC entity has — `/datapreview/ddic/{name}/metadata`.
|
|
272
|
+
*
|
|
273
|
+
* One request. It exists because the member below no longer makes it: the
|
|
274
|
+
* statement is the caller's, and this is where they learn what they may name
|
|
275
|
+
* in it.
|
|
276
|
+
*/
|
|
277
|
+
getTableColumns(tableName: string): Promise<IAdtResponse<TColumns>>;
|
|
278
|
+
/**
|
|
279
|
+
* Rows from a DDIC entity — `/datapreview/ddic`.
|
|
280
|
+
*
|
|
281
|
+
* One request: the statement in `params.sql_query` is posted as given. Until
|
|
282
|
+
* 42.0.0 this read the entity's metadata first and built the statement from
|
|
283
|
+
* every column it found, which is a choice the caller could not reach.
|
|
284
|
+
*/
|
|
285
|
+
getTableContents(params: IGetTableContentsParams): Promise<IAdtResponse<TContents>>;
|
|
286
|
+
}
|
|
287
|
+
/** `/sap/bc/adt/discovery` — what this system says it serves. */
|
|
288
|
+
export interface IAdtDiscovery<TDiscovery> {
|
|
289
|
+
discovery(params?: IGetDiscoveryParams): Promise<IAdtResponse<TDiscovery>>;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* The per-type resources — `oo`, `programs`, `ddic`, `functions`,
|
|
293
|
+
* `enhancements` — reached generically, by type and name.
|
|
294
|
+
*
|
|
295
|
+
* This is what a caller uses when the type is a value rather than a decision:
|
|
296
|
+
* the typed handlers on `AdtClient` are for when it is known at the call site.
|
|
297
|
+
*/
|
|
298
|
+
export interface IAdtObjectAccess<TSource, TMetadata, TInclude> {
|
|
299
|
+
/** Source of any object that has source. */
|
|
300
|
+
readObjectSource(objectType: AdtSourceObjectType, objectName: string, functionGroup?: string, version?: 'active' | 'inactive', options?: IReadOptions): Promise<IAdtResponse<TSource>>;
|
|
301
|
+
/** Metadata of any object. */
|
|
302
|
+
readObjectMetadata(objectType: AdtObjectType, objectName: string, functionGroup?: string, options?: IReadOptions): Promise<IAdtResponse<TMetadata>>;
|
|
303
|
+
/** Whether that type has source at all. Issues no request. */
|
|
304
|
+
supportsSourceCode(objectType: AdtObjectType): boolean;
|
|
305
|
+
/** The URI the source read would use. Issues no request. */
|
|
306
|
+
getObjectSourceUri(objectType: AdtSourceObjectType, objectName: string, functionGroup?: string, version?: 'active' | 'inactive'): string;
|
|
307
|
+
/** A standalone include. */
|
|
308
|
+
getInclude(includeName: string): Promise<IAdtResponse<TInclude>>;
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=IAdtUtilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IAdtUtilities.d.ts","sourceRoot":"","sources":["../../src/adt/IAdtUtilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The cross-cutting ADT operations, split by the resource families ADT itself
|
|
4
|
+
* has — not by which of them a particular system refuses.
|
|
5
|
+
*
|
|
6
|
+
* `AdtUtils` in `@mcp-abap-adt/adt-clients` is one class with 28 public methods,
|
|
7
|
+
* handed out by `AdtClient.getUtils()` as itself. A concrete return is the one a
|
|
8
|
+
* consumer cannot substitute, cannot compose with their own types, and cannot
|
|
9
|
+
* have checked at the factory — see decision 12 here and decision 10 there.
|
|
10
|
+
*
|
|
11
|
+
* **The grain comes from ADT's own resource space**, read out of the endpoints
|
|
12
|
+
* the implementation calls:
|
|
13
|
+
*
|
|
14
|
+
* | family | atom |
|
|
15
|
+
* |---|---|
|
|
16
|
+
* | `/repository/informationsystem/*` | {@link IAdtInformationSystem} |
|
|
17
|
+
* | `/repository/nodestructure`, `/repository/objectstructure` | {@link IAdtRepositoryStructure} |
|
|
18
|
+
* | `/activation`, `/deletion` | {@link IAdtGroupLifecycle} |
|
|
19
|
+
* | `/datapreview/*` | {@link IAdtDataPreview} |
|
|
20
|
+
* | `/discovery` | {@link IAdtDiscovery} |
|
|
21
|
+
* | the per-type resources — `oo`, `programs`, `ddic`, `functions`, `enhancements` | {@link IAdtObjectAccess} |
|
|
22
|
+
*
|
|
23
|
+
* Deliberately *not* the grain a measurement suggested. When this split was
|
|
24
|
+
* chosen, the one legacy implementation refused exactly `getSqlQuery`,
|
|
25
|
+
* `getTableContents` and `getTransaction` — which would have given three atoms
|
|
26
|
+
* and a bag of 28. Those refusals fall **inside** these families rather than
|
|
27
|
+
* defining them, so architecture and observation agree; observation is simply
|
|
28
|
+
* narrower, and a contract split by who refuses what is a contract that changes
|
|
29
|
+
* shape with the next system.
|
|
30
|
+
*
|
|
31
|
+
* Removing `getTransaction` made that concrete rather than theoretical. The
|
|
32
|
+
* legacy implementation now refuses two members, and **both are
|
|
33
|
+
* {@link IAdtDataPreview}** — a whole family, refused whole, which is what a
|
|
34
|
+
* split along ADT's resources predicts and a split along refusals could not have
|
|
35
|
+
* known in advance. Had the atoms been drawn from the observation, one of the
|
|
36
|
+
* three would have evaporated when its member did.
|
|
37
|
+
*
|
|
38
|
+
* A few members compute a string and issue no request — `supportsSourceCode`,
|
|
39
|
+
* `getObjectSourceUri`, `modifyWhereUsedScope`. They stay with the family whose
|
|
40
|
+
* requests they prepare, because a consumer replacing that family needs them to
|
|
41
|
+
* build the same call.
|
|
42
|
+
*
|
|
43
|
+
* ## The gap, named rather than papered over
|
|
44
|
+
*
|
|
45
|
+
* **Every member states its result.** Twelve of the twenty-five answered
|
|
46
|
+
* `IAdtWireResponse` — the transport envelope, which every method could name and
|
|
47
|
+
* which told a consumer only that a request happened. They now answer the
|
|
48
|
+
* document their endpoint produced, and parsing it is the consumer's (decision
|
|
49
|
+
* 5). The other thirteen already stated what the caller gets.
|
|
50
|
+
*
|
|
51
|
+
* Counted as **members**, not signatures: `search` has two, because one endpoint
|
|
52
|
+
* is one member (decision 16) and the second signature is the strategy, not a
|
|
53
|
+
* second capability. A parser that counts signatures reports 26 and is not
|
|
54
|
+
* wrong about anything except the word.
|
|
55
|
+
*
|
|
56
|
+
*
|
|
57
|
+
* Six were removed because nobody calls them — `getTypeInfo`, `getTransaction`,
|
|
58
|
+
* `getBdef`, `getEnhancements`, `getEnhancementSpot`, `getEnhancementImpl`. Every
|
|
59
|
+
* mention of them across the sibling repositories was their own doc comment.
|
|
60
|
+
* The question was never which result they promise, but why they were in a
|
|
61
|
+
* contract; three of them were a second door to a handler that was already
|
|
62
|
+
* there — `getBdef` to `getBehaviorDefinition().read()`, `getEnhancementImpl`
|
|
63
|
+
* and `getEnhancementSpot` to `getEnhancement()` — and the other three named
|
|
64
|
+
* resources nothing else reaches. Deleted in `@mcp-abap-adt/adt-clients` with
|
|
65
|
+
* those three endpoints recorded, so a typed handler can be built where one is
|
|
66
|
+
* wanted rather than a generic member kept in case one is.
|
|
67
|
+
*
|
|
68
|
+
* Two were closed from evidence rather than measurement: `getAllTypes` answers
|
|
69
|
+
* the named-item list a trace catalogue answers with, and
|
|
70
|
+
* `fetchNodeStructure` answers objects plus the typed child nodes to walk next.
|
|
71
|
+
* Both shapes were lifted from parsers that have been reading those documents in
|
|
72
|
+
* `mcp-abap-adt` against real systems — code that works is evidence; a shape
|
|
73
|
+
* nobody has read is not.
|
|
74
|
+
*
|
|
75
|
+
* Evidence is not the same as being finished. `fetchNodeStructure` first shipped
|
|
76
|
+
* carrying the ids alone, which cannot say *which* node holds a given type, and
|
|
77
|
+
* 27.0.0 is that correction — found by a consumer trying to walk with it.
|
|
78
|
+
*
|
|
79
|
+
* The twelve are left as they are, deliberately. Closing them means naming what
|
|
80
|
+
* each endpoint sends, and 12 shapes would have to be named,
|
|
81
|
+
* and nothing but a capture can name them, which decision 1 forbids. **A strategy does not close them
|
|
82
|
+
* either** — handing the caller a parser makes the caller decide what comes
|
|
83
|
+
* back, and the point of a contract is that the consumer is not rewritten when
|
|
84
|
+
* the implementation changes. Strategy and result contract are different planes;
|
|
85
|
+
* an attempt to use one for the other cost every implementer two signatures per
|
|
86
|
+
* method before it was reverted.
|
|
87
|
+
*
|
|
88
|
+
* So they close one at a time, on captures. Until then this file states what a
|
|
89
|
+
* consumer gets for 13 members and admits the gap for 12, which is the honest
|
|
90
|
+
* shape of the thing rather than a finished one.
|
|
91
|
+
*/
|
|
92
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthType.d.ts","sourceRoot":"","sources":["../../src/auth/AuthType.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorization configuration - values needed for obtaining and refreshing tokens
|
|
3
|
+
* Returned by stores with actual values (not file paths)
|
|
4
|
+
*/
|
|
5
|
+
export interface IAuthorizationConfig {
|
|
6
|
+
/** UAA URL for token refresh */
|
|
7
|
+
uaaUrl: string;
|
|
8
|
+
/** UAA client ID */
|
|
9
|
+
uaaClientId: string;
|
|
10
|
+
/** UAA client secret */
|
|
11
|
+
uaaClientSecret: string;
|
|
12
|
+
/** Refresh token for token renewal (optional) */
|
|
13
|
+
refreshToken?: string;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=IAuthorizationConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IAuthorizationConfig.d.ts","sourceRoot":"","sources":["../../src/auth/IAuthorizationConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How an interactive authorization is conducted.
|
|
3
|
+
*
|
|
4
|
+
* The provider owns what it can compute — the authorization URL and the token
|
|
5
|
+
* exchange. Everything between them (reaching the URL, receiving what comes
|
|
6
|
+
* back, the port, the timeout) belongs to whoever implements this interface,
|
|
7
|
+
* which is why a consumer can replace it wholesale.
|
|
8
|
+
*
|
|
9
|
+
* See `ICallbackServer` for the transport a shipped strategy is composed of.
|
|
10
|
+
*/
|
|
11
|
+
import type { ILogger } from '@mcp-abap-adt/interfaces-utils';
|
|
12
|
+
/** What the provider tells a strategy about the login to conduct. */
|
|
13
|
+
export interface AuthorizationRequest {
|
|
14
|
+
/**
|
|
15
|
+
* Build the authorization URL for a redirect URI the strategy has settled on.
|
|
16
|
+
*
|
|
17
|
+
* Called once the strategy knows its redirect URI — which is what makes an
|
|
18
|
+
* ephemeral port possible, since the URL cannot be assembled before the
|
|
19
|
+
* socket is bound. May not be called at all: a strategy that already holds a
|
|
20
|
+
* payload needs no URL.
|
|
21
|
+
*
|
|
22
|
+
* Asynchronous because building may require OIDC discovery. Rejects when the
|
|
23
|
+
* redirect URI cannot be honoured — a pre-built authorization URL carries its
|
|
24
|
+
* own redirect, and a mismatch must fail here, before a browser is opened,
|
|
25
|
+
* rather than as a callback that never arrives.
|
|
26
|
+
*/
|
|
27
|
+
buildAuthorizationUrl(redirectUri: string): Promise<string>;
|
|
28
|
+
/** For progress messages. Absent means silence — never stdout. */
|
|
29
|
+
readonly logger?: ILogger;
|
|
30
|
+
}
|
|
31
|
+
/** How the login ended. */
|
|
32
|
+
export interface AuthorizationOutcome<TResult> {
|
|
33
|
+
/** What the redirect carried: a code, `{code, state}`, a SAMLResponse. */
|
|
34
|
+
readonly payload: TResult;
|
|
35
|
+
/**
|
|
36
|
+
* The redirect URI that actually took part. The token exchange must send this
|
|
37
|
+
* one — with an ephemeral port the provider has no other way to learn it.
|
|
38
|
+
*/
|
|
39
|
+
readonly redirectUri: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A way of conducting an interactive authorization.
|
|
43
|
+
*
|
|
44
|
+
* `authorize` may be called again sequentially; an implementation that holds a
|
|
45
|
+
* fixed port should reject overlapping calls rather than queue them.
|
|
46
|
+
*
|
|
47
|
+
* `dispose` carries four obligations:
|
|
48
|
+
* - idempotent — every call after the first resolves as a no-op;
|
|
49
|
+
* - legal during an active `authorize`, which it ends with a rejection, since
|
|
50
|
+
* releasing resources while a socket is still bound would be untrue;
|
|
51
|
+
* - resolves only once the resources are actually free;
|
|
52
|
+
* - never masks a failure from `authorize` — a caller invoking it from
|
|
53
|
+
* `finally` propagates the original error and logs the cleanup one.
|
|
54
|
+
*/
|
|
55
|
+
export interface IAuthorizationStrategy<TResult> {
|
|
56
|
+
authorize(request: AuthorizationRequest): Promise<AuthorizationOutcome<TResult>>;
|
|
57
|
+
dispose?(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=IAuthorizationStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IAuthorizationStrategy.d.ts","sourceRoot":"","sources":["../../src/auth/IAuthorizationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAE9D,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5D,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,2BAA2B;AAC3B,MAAM,WAAW,oBAAoB,CAAC,OAAO;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,sBAAsB,CAAC,OAAO;IAC7C,SAAS,CACP,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* How an interactive authorization is conducted.
|
|
4
|
+
*
|
|
5
|
+
* The provider owns what it can compute — the authorization URL and the token
|
|
6
|
+
* exchange. Everything between them (reaching the URL, receiving what comes
|
|
7
|
+
* back, the port, the timeout) belongs to whoever implements this interface,
|
|
8
|
+
* which is why a consumer can replace it wholesale.
|
|
9
|
+
*
|
|
10
|
+
* See `ICallbackServer` for the transport a shipped strategy is composed of.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|