@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.
Files changed (266) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/COPYING +674 -0
  3. package/LICENSE +165 -0
  4. package/README.md +35 -0
  5. package/dist/Headers.d.ts +57 -0
  6. package/dist/Headers.d.ts.map +1 -0
  7. package/dist/Headers.js +62 -0
  8. package/dist/adt/AdtTypes.d.ts +40 -0
  9. package/dist/adt/AdtTypes.d.ts.map +1 -0
  10. package/dist/adt/AdtTypes.js +5 -0
  11. package/dist/adt/IAdtAbapGit.d.ts +60 -0
  12. package/dist/adt/IAdtAbapGit.d.ts.map +1 -0
  13. package/dist/adt/IAdtAbapGit.js +2 -0
  14. package/dist/adt/IAdtAccessControl.d.ts +30 -0
  15. package/dist/adt/IAdtAccessControl.d.ts.map +1 -0
  16. package/dist/adt/IAdtAccessControl.js +5 -0
  17. package/dist/adt/IAdtAppendStructure.d.ts +32 -0
  18. package/dist/adt/IAdtAppendStructure.d.ts.map +1 -0
  19. package/dist/adt/IAdtAppendStructure.js +5 -0
  20. package/dist/adt/IAdtAuthorizationField.d.ts +49 -0
  21. package/dist/adt/IAdtAuthorizationField.d.ts.map +1 -0
  22. package/dist/adt/IAdtAuthorizationField.js +5 -0
  23. package/dist/adt/IAdtBehaviorDefinition.d.ts +58 -0
  24. package/dist/adt/IAdtBehaviorDefinition.d.ts.map +1 -0
  25. package/dist/adt/IAdtBehaviorDefinition.js +7 -0
  26. package/dist/adt/IAdtBehaviorImplementation.d.ts +30 -0
  27. package/dist/adt/IAdtBehaviorImplementation.d.ts.map +1 -0
  28. package/dist/adt/IAdtBehaviorImplementation.js +5 -0
  29. package/dist/adt/IAdtCapabilities.d.ts +391 -0
  30. package/dist/adt/IAdtCapabilities.d.ts.map +1 -0
  31. package/dist/adt/IAdtCapabilities.js +2 -0
  32. package/dist/adt/IAdtClass.d.ts +66 -0
  33. package/dist/adt/IAdtClass.d.ts.map +1 -0
  34. package/dist/adt/IAdtClass.js +5 -0
  35. package/dist/adt/IAdtClientOptions.d.ts +25 -0
  36. package/dist/adt/IAdtClientOptions.d.ts.map +1 -0
  37. package/dist/adt/IAdtClientOptions.js +9 -0
  38. package/dist/adt/IAdtContentTypes.d.ts +45 -0
  39. package/dist/adt/IAdtContentTypes.d.ts.map +1 -0
  40. package/dist/adt/IAdtContentTypes.js +13 -0
  41. package/dist/adt/IAdtDataElement.d.ts +95 -0
  42. package/dist/adt/IAdtDataElement.d.ts.map +1 -0
  43. package/dist/adt/IAdtDataElement.js +5 -0
  44. package/dist/adt/IAdtDdl.d.ts +37 -0
  45. package/dist/adt/IAdtDdl.d.ts.map +1 -0
  46. package/dist/adt/IAdtDdl.js +7 -0
  47. package/dist/adt/IAdtDomain.d.ts +79 -0
  48. package/dist/adt/IAdtDomain.d.ts.map +1 -0
  49. package/dist/adt/IAdtDomain.js +5 -0
  50. package/dist/adt/IAdtEnhancement.d.ts +61 -0
  51. package/dist/adt/IAdtEnhancement.d.ts.map +1 -0
  52. package/dist/adt/IAdtEnhancement.js +7 -0
  53. package/dist/adt/IAdtFeatureToggle.d.ts +100 -0
  54. package/dist/adt/IAdtFeatureToggle.d.ts.map +1 -0
  55. package/dist/adt/IAdtFeatureToggle.js +5 -0
  56. package/dist/adt/IAdtFunctionGroup.d.ts +52 -0
  57. package/dist/adt/IAdtFunctionGroup.d.ts.map +1 -0
  58. package/dist/adt/IAdtFunctionGroup.js +5 -0
  59. package/dist/adt/IAdtFunctionInclude.d.ts +23 -0
  60. package/dist/adt/IAdtFunctionInclude.d.ts.map +1 -0
  61. package/dist/adt/IAdtFunctionInclude.js +5 -0
  62. package/dist/adt/IAdtFunctionModule.d.ts +35 -0
  63. package/dist/adt/IAdtFunctionModule.d.ts.map +1 -0
  64. package/dist/adt/IAdtFunctionModule.js +5 -0
  65. package/dist/adt/IAdtInclude.d.ts +45 -0
  66. package/dist/adt/IAdtInclude.d.ts.map +1 -0
  67. package/dist/adt/IAdtInclude.js +17 -0
  68. package/dist/adt/IAdtInterface.d.ts +33 -0
  69. package/dist/adt/IAdtInterface.d.ts.map +1 -0
  70. package/dist/adt/IAdtInterface.js +5 -0
  71. package/dist/adt/IAdtMessageClass.d.ts +35 -0
  72. package/dist/adt/IAdtMessageClass.d.ts.map +1 -0
  73. package/dist/adt/IAdtMessageClass.js +2 -0
  74. package/dist/adt/IAdtMetadataExtension.d.ts +29 -0
  75. package/dist/adt/IAdtMetadataExtension.d.ts.map +1 -0
  76. package/dist/adt/IAdtMetadataExtension.js +5 -0
  77. package/dist/adt/IAdtObject.d.ts +224 -0
  78. package/dist/adt/IAdtObject.d.ts.map +1 -0
  79. package/dist/adt/IAdtObject.js +82 -0
  80. package/dist/adt/IAdtObjectState.d.ts +36 -0
  81. package/dist/adt/IAdtObjectState.d.ts.map +1 -0
  82. package/dist/adt/IAdtObjectState.js +13 -0
  83. package/dist/adt/IAdtPackage.d.ts +69 -0
  84. package/dist/adt/IAdtPackage.d.ts.map +1 -0
  85. package/dist/adt/IAdtPackage.js +5 -0
  86. package/dist/adt/IAdtProgram.d.ts +37 -0
  87. package/dist/adt/IAdtProgram.d.ts.map +1 -0
  88. package/dist/adt/IAdtProgram.js +5 -0
  89. package/dist/adt/IAdtResponse.d.ts +289 -0
  90. package/dist/adt/IAdtResponse.d.ts.map +1 -0
  91. package/dist/adt/IAdtResponse.js +51 -0
  92. package/dist/adt/IAdtScalarFunction.d.ts +30 -0
  93. package/dist/adt/IAdtScalarFunction.d.ts.map +1 -0
  94. package/dist/adt/IAdtScalarFunction.js +5 -0
  95. package/dist/adt/IAdtScalarFunctionImplementation.d.ts +35 -0
  96. package/dist/adt/IAdtScalarFunctionImplementation.d.ts.map +1 -0
  97. package/dist/adt/IAdtScalarFunctionImplementation.js +5 -0
  98. package/dist/adt/IAdtServiceBinding.d.ts +61 -0
  99. package/dist/adt/IAdtServiceBinding.d.ts.map +1 -0
  100. package/dist/adt/IAdtServiceBinding.js +33 -0
  101. package/dist/adt/IAdtServiceDefinition.d.ts +30 -0
  102. package/dist/adt/IAdtServiceDefinition.d.ts.map +1 -0
  103. package/dist/adt/IAdtServiceDefinition.js +5 -0
  104. package/dist/adt/IAdtShared.d.ts +110 -0
  105. package/dist/adt/IAdtShared.d.ts.map +1 -0
  106. package/dist/adt/IAdtShared.js +5 -0
  107. package/dist/adt/IAdtStructure.d.ts +48 -0
  108. package/dist/adt/IAdtStructure.d.ts.map +1 -0
  109. package/dist/adt/IAdtStructure.js +5 -0
  110. package/dist/adt/IAdtTable.d.ts +30 -0
  111. package/dist/adt/IAdtTable.d.ts.map +1 -0
  112. package/dist/adt/IAdtTable.js +5 -0
  113. package/dist/adt/IAdtTableType.d.ts +61 -0
  114. package/dist/adt/IAdtTableType.d.ts.map +1 -0
  115. package/dist/adt/IAdtTableType.js +5 -0
  116. package/dist/adt/IAdtTransformation.d.ts +33 -0
  117. package/dist/adt/IAdtTransformation.d.ts.map +1 -0
  118. package/dist/adt/IAdtTransformation.js +7 -0
  119. package/dist/adt/IAdtTransport.d.ts +104 -0
  120. package/dist/adt/IAdtTransport.d.ts.map +1 -0
  121. package/dist/adt/IAdtTransport.js +8 -0
  122. package/dist/adt/IAdtUnitTest.d.ts +125 -0
  123. package/dist/adt/IAdtUnitTest.d.ts.map +1 -0
  124. package/dist/adt/IAdtUnitTest.js +5 -0
  125. package/dist/adt/IAdtUtilities.d.ts +310 -0
  126. package/dist/adt/IAdtUtilities.d.ts.map +1 -0
  127. package/dist/adt/IAdtUtilities.js +92 -0
  128. package/dist/auth/AuthType.d.ts +5 -0
  129. package/dist/auth/AuthType.d.ts.map +1 -0
  130. package/dist/auth/AuthType.js +2 -0
  131. package/dist/auth/IAuthorizationConfig.d.ts +15 -0
  132. package/dist/auth/IAuthorizationConfig.d.ts.map +1 -0
  133. package/dist/auth/IAuthorizationConfig.js +2 -0
  134. package/dist/auth/IAuthorizationStrategy.d.ts +59 -0
  135. package/dist/auth/IAuthorizationStrategy.d.ts.map +1 -0
  136. package/dist/auth/IAuthorizationStrategy.js +12 -0
  137. package/dist/auth/ICallbackServer.d.ts +139 -0
  138. package/dist/auth/ICallbackServer.d.ts.map +1 -0
  139. package/dist/auth/ICallbackServer.js +2 -0
  140. package/dist/auth/ICertificateMaterialLoader.d.ts +7 -0
  141. package/dist/auth/ICertificateMaterialLoader.d.ts.map +1 -0
  142. package/dist/auth/ICertificateMaterialLoader.js +2 -0
  143. package/dist/auth/IConfig.d.ts +8 -0
  144. package/dist/auth/IConfig.d.ts.map +1 -0
  145. package/dist/auth/IConfig.js +2 -0
  146. package/dist/auth/IConnectionConfig.d.ts +23 -0
  147. package/dist/auth/IConnectionConfig.d.ts.map +1 -0
  148. package/dist/auth/IConnectionConfig.js +2 -0
  149. package/dist/connection/CalmService.d.ts +3 -0
  150. package/dist/connection/CalmService.d.ts.map +1 -0
  151. package/dist/connection/CalmService.js +14 -0
  152. package/dist/connection/IAbapConnection.d.ts +73 -0
  153. package/dist/connection/IAbapConnection.d.ts.map +1 -0
  154. package/dist/connection/IAbapConnection.js +2 -0
  155. package/dist/connection/IAbapRequestOptions.d.ts +9 -0
  156. package/dist/connection/IAbapRequestOptions.d.ts.map +1 -0
  157. package/dist/connection/IAbapRequestOptions.js +2 -0
  158. package/dist/connection/ICalmConnection.d.ts +29 -0
  159. package/dist/connection/ICalmConnection.d.ts.map +1 -0
  160. package/dist/connection/ICalmConnection.js +2 -0
  161. package/dist/connection/ICalmRequestOptions.d.ts +11 -0
  162. package/dist/connection/ICalmRequestOptions.d.ts.map +1 -0
  163. package/dist/connection/ICalmRequestOptions.js +2 -0
  164. package/dist/connection/IConnectionCapabilities.d.ts +217 -0
  165. package/dist/connection/IConnectionCapabilities.d.ts.map +1 -0
  166. package/dist/connection/IConnectionCapabilities.js +29 -0
  167. package/dist/execution/IAdtExecutors.d.ts +78 -0
  168. package/dist/execution/IAdtExecutors.d.ts.map +1 -0
  169. package/dist/execution/IAdtExecutors.js +9 -0
  170. package/dist/execution/IAdtRunnable.d.ts +61 -0
  171. package/dist/execution/IAdtRunnable.d.ts.map +1 -0
  172. package/dist/execution/IAdtRunnable.js +2 -0
  173. package/dist/execution/ITraceScheduling.d.ts +39 -0
  174. package/dist/execution/ITraceScheduling.d.ts.map +1 -0
  175. package/dist/execution/ITraceScheduling.js +15 -0
  176. package/dist/feeds/IFeedRepository.d.ts +32 -0
  177. package/dist/feeds/IFeedRepository.d.ts.map +1 -0
  178. package/dist/feeds/IFeedRepository.js +8 -0
  179. package/dist/feeds/types.d.ts +18 -0
  180. package/dist/feeds/types.d.ts.map +1 -0
  181. package/dist/feeds/types.js +9 -0
  182. package/dist/index.d.ts +103 -0
  183. package/dist/index.d.ts.map +1 -0
  184. package/dist/index.js +57 -0
  185. package/dist/runtime/IApplicationLog.d.ts +21 -0
  186. package/dist/runtime/IApplicationLog.d.ts.map +1 -0
  187. package/dist/runtime/IApplicationLog.js +2 -0
  188. package/dist/runtime/IAtcLog.d.ts +15 -0
  189. package/dist/runtime/IAtcLog.d.ts.map +1 -0
  190. package/dist/runtime/IAtcLog.js +2 -0
  191. package/dist/runtime/IAtcRun.d.ts +99 -0
  192. package/dist/runtime/IAtcRun.d.ts.map +1 -0
  193. package/dist/runtime/IAtcRun.js +10 -0
  194. package/dist/runtime/ICrossTrace.d.ts +32 -0
  195. package/dist/runtime/ICrossTrace.d.ts.map +1 -0
  196. package/dist/runtime/ICrossTrace.js +2 -0
  197. package/dist/runtime/IDdicActivation.d.ts +12 -0
  198. package/dist/runtime/IDdicActivation.d.ts.map +1 -0
  199. package/dist/runtime/IDdicActivation.js +2 -0
  200. package/dist/runtime/IGatewayErrorLog.d.ts +10 -0
  201. package/dist/runtime/IGatewayErrorLog.d.ts.map +1 -0
  202. package/dist/runtime/IGatewayErrorLog.js +2 -0
  203. package/dist/runtime/IProfiler.d.ts +65 -0
  204. package/dist/runtime/IProfiler.d.ts.map +1 -0
  205. package/dist/runtime/IProfiler.js +2 -0
  206. package/dist/runtime/IRuntimeDumps.d.ts +23 -0
  207. package/dist/runtime/IRuntimeDumps.d.ts.map +1 -0
  208. package/dist/runtime/IRuntimeDumps.js +2 -0
  209. package/dist/runtime/ISt05Trace.d.ts +8 -0
  210. package/dist/runtime/ISt05Trace.d.ts.map +1 -0
  211. package/dist/runtime/ISt05Trace.js +2 -0
  212. package/dist/runtime/ISystemMessages.d.ts +10 -0
  213. package/dist/runtime/ISystemMessages.d.ts.map +1 -0
  214. package/dist/runtime/ISystemMessages.js +2 -0
  215. package/dist/runtime/ITrace.d.ts +170 -0
  216. package/dist/runtime/ITrace.d.ts.map +1 -0
  217. package/dist/runtime/ITrace.js +14 -0
  218. package/dist/sap/ISapConfig.d.ts +22 -0
  219. package/dist/sap/ISapConfig.d.ts.map +1 -0
  220. package/dist/sap/ISapConfig.js +2 -0
  221. package/dist/sap/SapAuthType.d.ts +3 -0
  222. package/dist/sap/SapAuthType.d.ts.map +1 -0
  223. package/dist/sap/SapAuthType.js +2 -0
  224. package/dist/service/IAdtService.d.ts +84 -0
  225. package/dist/service/IAdtService.d.ts.map +1 -0
  226. package/dist/service/IAdtService.js +27 -0
  227. package/dist/serviceKey/IServiceKeyStore.d.ts +31 -0
  228. package/dist/serviceKey/IServiceKeyStore.d.ts.map +1 -0
  229. package/dist/serviceKey/IServiceKeyStore.js +7 -0
  230. package/dist/session/ISessionStore.d.ts +59 -0
  231. package/dist/session/ISessionStore.d.ts.map +1 -0
  232. package/dist/session/ISessionStore.js +7 -0
  233. package/dist/shared/IReadOptions.d.ts +9 -0
  234. package/dist/shared/IReadOptions.d.ts.map +1 -0
  235. package/dist/shared/IReadOptions.js +2 -0
  236. package/dist/store/StoreErrorCodes.d.ts +12 -0
  237. package/dist/store/StoreErrorCodes.d.ts.map +1 -0
  238. package/dist/store/StoreErrorCodes.js +13 -0
  239. package/dist/token/AuthType.d.ts +43 -0
  240. package/dist/token/AuthType.d.ts.map +1 -0
  241. package/dist/token/AuthType.js +41 -0
  242. package/dist/token/ITokenProvider.d.ts +27 -0
  243. package/dist/token/ITokenProvider.d.ts.map +1 -0
  244. package/dist/token/ITokenProvider.js +8 -0
  245. package/dist/token/ITokenProviderOptions.d.ts +23 -0
  246. package/dist/token/ITokenProviderOptions.d.ts.map +1 -0
  247. package/dist/token/ITokenProviderOptions.js +2 -0
  248. package/dist/token/ITokenRefresher.d.ts +39 -0
  249. package/dist/token/ITokenRefresher.d.ts.map +1 -0
  250. package/dist/token/ITokenRefresher.js +12 -0
  251. package/dist/token/ITokenResult.d.ts +36 -0
  252. package/dist/token/ITokenResult.d.ts.map +1 -0
  253. package/dist/token/ITokenResult.js +7 -0
  254. package/dist/token/TokenProviderErrorCodes.d.ts +26 -0
  255. package/dist/token/TokenProviderErrorCodes.d.ts.map +1 -0
  256. package/dist/token/TokenProviderErrorCodes.js +24 -0
  257. package/dist/utils/ITokenRefreshResult.d.ts +8 -0
  258. package/dist/utils/ITokenRefreshResult.d.ts.map +1 -0
  259. package/dist/utils/ITokenRefreshResult.js +2 -0
  260. package/dist/validation/IHeaderValidationResult.d.ts +15 -0
  261. package/dist/validation/IHeaderValidationResult.d.ts.map +1 -0
  262. package/dist/validation/IHeaderValidationResult.js +2 -0
  263. package/dist/validation/IValidatedAuthConfig.d.ts +46 -0
  264. package/dist/validation/IValidatedAuthConfig.d.ts.map +1 -0
  265. package/dist/validation/IValidatedAuthConfig.js +15 -0
  266. 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,5 @@
1
+ /**
2
+ * Authentication type
3
+ */
4
+ export type AuthType = 'jwt' | 'xsuaa' | 'basic';
5
+ //# sourceMappingURL=AuthType.d.ts.map
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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 });