@mcp-abap-adt/adt-clients 38.0.0 → 39.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/README.md +45 -7
- package/dist/core/shared/AdtUtils.d.ts +11 -17
- package/dist/core/shared/AdtUtils.d.ts.map +1 -1
- package/dist/core/shared/AdtUtils.js +13 -1
- package/dist/core/shared/codeSets.d.ts +54 -25
- package/dist/core/shared/codeSets.d.ts.map +1 -1
- package/dist/index.core.d.ts +1 -1
- package/dist/index.core.d.ts.map +1 -1
- package/docs/README.md +2 -1
- package/docs/usage/CLIENT_API_REFERENCE.md +63 -9
- package/docs/usage/MIGRATION-39.md +150 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -16,6 +16,16 @@ TypeScript clients for SAP ABAP Development Tools (ADT).
|
|
|
16
16
|
> **From 18.x?** Read [`docs/usage/MIGRATION-19.md`](docs/usage/MIGRATION-19.md)
|
|
17
17
|
> first: 19.0.0 is where members became one endpoint call each.
|
|
18
18
|
>
|
|
19
|
+
> **From 38.x?** 39.0.0 (on `interfaces-adt` ^24.0.1) types the search filter
|
|
20
|
+
> by the release's search names: `getUtils().search({ objectType })` takes
|
|
21
|
+
> `'DEVC'`, `'STRU'` or a group (`'ABAP_TEST_COCKPIT'`), not a code
|
|
22
|
+
> (`'DEVC/K'`), and a 7.40 client takes only the eleven names 7.40 selects by.
|
|
23
|
+
> Where-used and the group members take interfaces-adt's typed references —
|
|
24
|
+
> `VIEW/DV` compiles, a function module names its group — so `getUtils()`
|
|
25
|
+
> satisfies `IAdtTypedWhereUsed<…, V>` and `IAdtTypedGroupLifecycle<…, V>`.
|
|
26
|
+
> See [Release variants and type codes](#release-variants-and-type-codes) and
|
|
27
|
+
> [`docs/usage/MIGRATION-39.md`](docs/usage/MIGRATION-39.md).
|
|
28
|
+
>
|
|
19
29
|
> **From 37.x?** 38.0.0 (on `interfaces-adt` ^23.1.1) is typed by the ADT type
|
|
20
30
|
> tables: a client is fixed to its release variant (`AdtClientOnPrem`,
|
|
21
31
|
> `AdtClientCloud`, `createAdtClient(connection, { variant })`), every type
|
|
@@ -345,7 +355,9 @@ const utils = client.getUtils({
|
|
|
345
355
|
whereUsed: utilWhereUsedReferences,
|
|
346
356
|
});
|
|
347
357
|
|
|
348
|
-
|
|
358
|
+
// The filter is a search name of the release's object types list — `CLAS`,
|
|
359
|
+
// an alias such as `STRU` (structures alone), a group — not a code.
|
|
360
|
+
const found = await utils.search({ query: 'Z*', objectType: 'CLAS' });
|
|
349
361
|
if (found.ok) {
|
|
350
362
|
found.getResult().value; // ISearchResult[] — the document, without utilSearchHits
|
|
351
363
|
} else {
|
|
@@ -792,7 +804,13 @@ The ADT type tables of `@mcp-abap-adt/interfaces-adt` (`ADT_TYPES_ONPREM`,
|
|
|
792
804
|
answers: its `typestructure`, its `discovery` and, per sample object, its
|
|
793
805
|
`urimapper` and metadata answers. The answers are recorded in `corpus/adt/`
|
|
794
806
|
(`typestructure/`, `discovery/`, `conformance/<release>/`; see
|
|
795
|
-
[`corpus/README.md`](corpus/README.md)).
|
|
807
|
+
[`corpus/README.md`](corpus/README.md)). The search type tables
|
|
808
|
+
(`ADT_SEARCH_TYPES_ONPREM`, `_CLOUD`, `_BASIS_740`) are held to each
|
|
809
|
+
release's recorded object types list, or on 7.40 its recorded quick searches
|
|
810
|
+
(`informationsystem/<release>/`), by
|
|
811
|
+
`src/__tests__/unit/conformance/searchTypesConformance.test.ts`: the table
|
|
812
|
+
equals the list name for name and type for type, every `main` of the type
|
|
813
|
+
table is a search name, every evidence name is a recorded case.
|
|
796
814
|
|
|
797
815
|
- **In CI** — `src/__tests__/unit/conformance/typeTablesConformance.test.ts`
|
|
798
816
|
runs the check against the recorded answers. What it finds is committed
|
|
@@ -1364,17 +1382,36 @@ them to what each release answers.
|
|
|
1364
1382
|
it, and no factory serves it.
|
|
1365
1383
|
- **An API with a parent takes it.** A function module and a function include
|
|
1366
1384
|
are addressed under their function group: their members, a
|
|
1367
|
-
`readObjectSource('FUGR/FF', name, group)
|
|
1368
|
-
`IObjectReference<'FUGR/FF'>`
|
|
1385
|
+
`readObjectSource('FUGR/FF', name, group)`, an
|
|
1386
|
+
`IObjectReference<'FUGR/FF'>` and a group reference (`IAdtCodedReference`)
|
|
1387
|
+
require the group.
|
|
1388
|
+
- **The search filter is a search name, not a code** (39.0.0). The quick
|
|
1389
|
+
search's `objectType` is read against the release's object types list
|
|
1390
|
+
(`GET /repository/informationsystem/objecttypes`): most names are a main
|
|
1391
|
+
type (`DEVC` selects `DEVC/K`, `TABL` both table kinds), six are aliases of
|
|
1392
|
+
one code (`STRU` → `TABL/DS`, `DTAB` → `TABL/DT`, `REPO`, `INCL`, `FUNC`,
|
|
1393
|
+
`BADI`), about fifty are groups (`ABAP_TEST_COCKPIT`). A code that is no
|
|
1394
|
+
item's type selects as its main type and an unknown one answers nothing,
|
|
1395
|
+
silently, so `search` takes `IAdtSearchObjectsParamsOf<V>`: the names of
|
|
1396
|
+
`ADT_SEARCH_TYPES_ONPREM` (385) or `ADT_SEARCH_TYPES_CLOUD` (372), and on
|
|
1397
|
+
7.40, which has no list and answers the aliases with no hits, the eleven of
|
|
1398
|
+
`ADT_SEARCH_TYPES_BASIS_740`. A main type comes from the table entry
|
|
1399
|
+
(`ADT_TYPES_ONPREM.package.codes['DEVC/K'].main`). A subtype without an
|
|
1400
|
+
alias (`ENHO/XHH`) is searched by its main type, the hits filtered by you.
|
|
1401
|
+
- **`getUtils()` is typed per variant** (39.0.0): `AdtUtils<R, V>` is an
|
|
1402
|
+
`IAdtTypedWhereUsed<…, V>` and an `IAdtTypedGroupLifecycle<…, V>` of
|
|
1403
|
+
interfaces-adt — `VIEW/DV` in where-used and the group members, a parented
|
|
1404
|
+
code's `parentName` required.
|
|
1369
1405
|
- **What an answer names is `type` or `unknownType`.** A reading of
|
|
1370
1406
|
`@mcp-abap-adt/adt-strategies` that takes a code from an answer answers an
|
|
1371
1407
|
`IAdtAnsweredObject`: `type` for a code a table holds, `unknownType` — the
|
|
1372
1408
|
text as ADT sent it — for any other.
|
|
1373
1409
|
|
|
1374
1410
|
`src/__tests__/unit/typeCodeLiterals.test.ts` (one per package) holds the
|
|
1375
|
-
source to it: a code literal
|
|
1376
|
-
|
|
1377
|
-
|
|
1411
|
+
source to it: a code literal — and, since 39.0.0, a main-type literal
|
|
1412
|
+
(`'ENHO'`) or a search-name literal (`'STRU'`) — passes only where the
|
|
1413
|
+
compiler types it by the tables, and a code named in a comment or inside a
|
|
1414
|
+
longer string (a message, an XML template's span) is a code of the tables.
|
|
1378
1415
|
|
|
1379
1416
|
### The contract you accept is yours
|
|
1380
1417
|
|
|
@@ -1455,6 +1492,7 @@ See [Architecture Documentation](docs/architecture/ARCHITECTURE.md#type-system-a
|
|
|
1455
1492
|
One document per breaking release, each written for a consumer on the contract
|
|
1456
1493
|
before it:
|
|
1457
1494
|
|
|
1495
|
+
- **[38.x → 39.0.0](docs/usage/MIGRATION-39.md)** — the search filter takes the release's search names (`DEVC`, `STRU`), not a code; where-used and the group members take interfaces-adt's typed references (`VIEW/DV`, a function module's group), and `getUtils()` satisfies `IAdtTypedWhereUsed` / `IAdtTypedGroupLifecycle` instead of `IAdtWhereUsed` / `IAdtGroupLifecycle`.
|
|
1458
1496
|
- **[37.x → 38.0.0](docs/usage/MIGRATION-38.md)** — the ADT type tables decide: a client is fixed to its release variant, every type code is a code of the tables, an API with a parent takes it, answered objects are `type` / `unknownType`, and `updateMetadata` covers fifteen more types; the result-set contracts are imported from `@mcp-abap-adt/interfaces-adt`, and each factory answers its class, so a consumer composes the contract it accepts from interfaces-adt.
|
|
1459
1497
|
- **[36.x → 37.0.0](docs/usage/MIGRATION-37.md)** — `getSystemInformation` answers an `IAdtResponse` (present, absent for a `404`, or a failure, through `options.analyse`), and `IUtilResults` has the required `objectProperties` slot.
|
|
1460
1498
|
- **[35.x → 36.0.0](docs/usage/MIGRATION-36.md)** — a request's `Accept` and `Content-Type` are the caller's: 32 members take the required `options.headers` and send exactly that pair.
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* const utils = client.getUtils();
|
|
19
19
|
*
|
|
20
20
|
* // Search for objects
|
|
21
|
-
* const searchResult = await utils.
|
|
21
|
+
* const searchResult = await utils.search({ query: 'Z*', objectType: 'CLAS' });
|
|
22
22
|
*
|
|
23
23
|
* // Get where-used references
|
|
24
24
|
* const whereUsed = await utils.getWhereUsed({ object_name: 'ZMY_CLASS', object_type: 'CLAS/OC' });
|
|
@@ -79,14 +79,14 @@
|
|
|
79
79
|
* AdtClass, AdtProgram, AdtFunctionGroup and AdtInclude. Their
|
|
80
80
|
* `readEnhancementOptions` member lists the places that can be enhanced.
|
|
81
81
|
*/
|
|
82
|
-
import type { AdtVariant, IAdtAnalyseOptions, IAdtDataPreview, IAdtDiscovery, IAdtError, IAdtGroupLifecycle, IAdtHeaders,
|
|
82
|
+
import type { AdtVariant, IAdtAnalyseOptions, IAdtCodedReference, IAdtDataPreview, IAdtDiscovery, IAdtError, IAdtGroupLifecycle, IAdtHeaders, IAdtObjectAccess, IAdtObjectProperties, IAdtObjectSearch, IAdtOperationOptions, IAdtRepositoryStructure, IAdtResponse, IAdtSearchObjectsParamsOf, IAdtTypeCatalogue, IAdtVirtualFolders, IUtilResults } from '@mcp-abap-adt/interfaces-adt';
|
|
83
83
|
import type { IAbapConnection } from '@mcp-abap-adt/interfaces-adt-connection';
|
|
84
84
|
import type { AdtLoggedOptions } from './handlerOptions';
|
|
85
85
|
import type { AdtModernVariant } from '../../clients/variant';
|
|
86
|
-
import { type AdtActivationCode, type AdtDeletionCheckCode, type AdtDeletionCode, type AdtMetadataReadCodeOf, type
|
|
87
|
-
import type { AdtSourceTypeCode, AdtTypeCode, IGetDiscoveryParams, IGetNodeContentsOptions, IGetSqlQueryParams, IGetTableContentsParams, IGetVirtualFoldersContentsParams, IGetWhereUsedParams, IGetWhereUsedScopeParams, IReadOptions
|
|
86
|
+
import { type AdtActivationCode, type AdtDeletionCheckCode, type AdtDeletionCode, type AdtMetadataReadCodeOf, type AdtSourceReadCodeOf, type AdtStructureCode, type AdtWhereUsedCode, type ParentedArguments } from './codeSets';
|
|
87
|
+
import type { AdtSourceTypeCode, AdtTypeCode, IGetDiscoveryParams, IGetNodeContentsOptions, IGetSqlQueryParams, IGetTableContentsParams, IGetVirtualFoldersContentsParams, IGetWhereUsedParams, IGetWhereUsedScopeParams, IReadOptions } from './types';
|
|
88
88
|
import type { utilDocuments } from './utilResultSet';
|
|
89
|
-
export declare class AdtUtils<R extends IUtilResults = typeof utilDocuments, V extends AdtVariant = AdtModernVariant> implements
|
|
89
|
+
export declare class AdtUtils<R extends IUtilResults = typeof utilDocuments, V extends AdtVariant = AdtModernVariant> implements IAdtObjectSearch<ReturnType<R['search']>>, IAdtVirtualFolders<ReturnType<R['folders']>>, IAdtTypeCatalogue<ReturnType<R['types']>>, IAdtRepositoryStructure<ReturnType<R['node']>, ReturnType<R['objectStructure']>>, Pick<IAdtGroupLifecycle<ReturnType<R['inactive']>, ReturnType<R['activation']>, ReturnType<R['run']>, ReturnType<R['results']>, ReturnType<R['deletionCheck']>, ReturnType<R['deletion']>>, 'getInactiveObjects' | 'getActivationRun' | 'getActivationResults'>, IAdtDataPreview<ReturnType<R['query']>, ReturnType<R['columns']>, ReturnType<R['contents']>>, IAdtDiscovery<ReturnType<R['discovery']>>, IAdtObjectAccess<ReturnType<R['source']>, ReturnType<R['metadata']>, ReturnType<R['include']>>, IAdtObjectProperties<ReturnType<R['objectProperties']>> {
|
|
90
90
|
protected connection: IAbapConnection;
|
|
91
91
|
private logger;
|
|
92
92
|
protected readonly results: R;
|
|
@@ -104,9 +104,7 @@ export declare class AdtUtils<R extends IUtilResults = typeof utilDocuments, V e
|
|
|
104
104
|
* 473 rows and 1.3MB. A caller who wants the hits passes `utilSearchHits`
|
|
105
105
|
* from `@mcp-abap-adt/adt-strategies` for `search` when constructing this.
|
|
106
106
|
*/
|
|
107
|
-
search<E extends IAdtError = IAdtError>(criteria:
|
|
108
|
-
objectType?: AdtSearchCode<V>;
|
|
109
|
-
}, options?: IAdtOperationOptions<E>): Promise<IAdtResponse<ReturnType<R['search']>, E>>;
|
|
107
|
+
search<E extends IAdtError = IAdtError>(criteria: IAdtSearchObjectsParamsOf<V>, options?: IAdtOperationOptions<E>): Promise<IAdtResponse<ReturnType<R['search']>, E>>;
|
|
110
108
|
/**
|
|
111
109
|
* Fetch virtual folder contents for hierarchical browsing.
|
|
112
110
|
*
|
|
@@ -148,9 +146,7 @@ export declare class AdtUtils<R extends IUtilResults = typeof utilDocuments, V e
|
|
|
148
146
|
* scopeXml: scopeXml
|
|
149
147
|
* });
|
|
150
148
|
*/
|
|
151
|
-
getWhereUsedScope<E extends IAdtError = IAdtError>(params:
|
|
152
|
-
object_type: AdtWhereUsedCode<V>;
|
|
153
|
-
}, options: {
|
|
149
|
+
getWhereUsedScope<E extends IAdtError = IAdtError>(params: IGetWhereUsedScopeParams<AdtWhereUsedCode<V>>, options: {
|
|
154
150
|
headers: IAdtHeaders;
|
|
155
151
|
} & IAdtAnalyseOptions<E>): Promise<IAdtResponse<ReturnType<R['whereUsedScope']>, E>>;
|
|
156
152
|
/**
|
|
@@ -222,9 +218,7 @@ export declare class AdtUtils<R extends IUtilResults = typeof utilDocuments, V e
|
|
|
222
218
|
* searchInAllTypes: ['CLAS/OC', 'INTF/OI']
|
|
223
219
|
* });
|
|
224
220
|
*/
|
|
225
|
-
getWhereUsed<E extends IAdtError = IAdtError>(params:
|
|
226
|
-
object_type: AdtWhereUsedCode<V>;
|
|
227
|
-
}, options: {
|
|
221
|
+
getWhereUsed<E extends IAdtError = IAdtError>(params: IGetWhereUsedParams<AdtWhereUsedCode<V>>, options: {
|
|
228
222
|
headers: IAdtHeaders;
|
|
229
223
|
} & IAdtAnalyseOptions<E>): Promise<IAdtResponse<ReturnType<R['whereUsed']>, E>>;
|
|
230
224
|
/**
|
|
@@ -244,7 +238,7 @@ export declare class AdtUtils<R extends IUtilResults = typeof utilDocuments, V e
|
|
|
244
238
|
* `@mcp-abap-adt/adt-strategies` for the `activation` slot (or keeps the
|
|
245
239
|
* exchange with `wireItself` and reads it with `extractRunId`).
|
|
246
240
|
*/
|
|
247
|
-
activateObjectsGroup<E extends IAdtError = IAdtError>(objects:
|
|
241
|
+
activateObjectsGroup<E extends IAdtError = IAdtError>(objects: IAdtCodedReference<AdtActivationCode<V>>[], preauditRequested: boolean | undefined, options: {
|
|
248
242
|
headers: IAdtHeaders;
|
|
249
243
|
} & IAdtAnalyseOptions<E>): Promise<IAdtResponse<ReturnType<R['activation']>, E>>;
|
|
250
244
|
/**
|
|
@@ -271,7 +265,7 @@ export declare class AdtUtils<R extends IUtilResults = typeof utilDocuments, V e
|
|
|
271
265
|
* @param objects - Array of object references to check
|
|
272
266
|
* @returns Check result
|
|
273
267
|
*/
|
|
274
|
-
checkDeletionGroup<E extends IAdtError = IAdtError>(objects:
|
|
268
|
+
checkDeletionGroup<E extends IAdtError = IAdtError>(objects: IAdtCodedReference<AdtDeletionCheckCode<V>>[], options: {
|
|
275
269
|
headers: IAdtHeaders;
|
|
276
270
|
} & IAdtAnalyseOptions<E>): Promise<IAdtResponse<ReturnType<R['deletionCheck']>, E>>;
|
|
277
271
|
/**
|
|
@@ -285,7 +279,7 @@ export declare class AdtUtils<R extends IUtilResults = typeof utilDocuments, V e
|
|
|
285
279
|
* @param objects - Array of object references to delete
|
|
286
280
|
* @param transportRequest - Optional transport request
|
|
287
281
|
*/
|
|
288
|
-
deleteObjectsGroup<E extends IAdtError = IAdtError>(objects:
|
|
282
|
+
deleteObjectsGroup<E extends IAdtError = IAdtError>(objects: IAdtCodedReference<AdtDeletionCode<V>>[], transportRequest: string | undefined, options: {
|
|
289
283
|
headers: IAdtHeaders;
|
|
290
284
|
} & IAdtAnalyseOptions<E>): Promise<IAdtResponse<ReturnType<R['deletion']>, E>>;
|
|
291
285
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdtUtils.d.ts","sourceRoot":"","sources":["../../../src/core/shared/AdtUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AAEH,OAAO,KAAK,EAEV,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"AdtUtils.d.ts","sourceRoot":"","sources":["../../../src/core/shared/AdtUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* const utils = client.getUtils();
|
|
20
20
|
*
|
|
21
21
|
* // Search for objects
|
|
22
|
-
* const searchResult = await utils.
|
|
22
|
+
* const searchResult = await utils.search({ query: 'Z*', objectType: 'CLAS' });
|
|
23
23
|
*
|
|
24
24
|
* // Get where-used references
|
|
25
25
|
* const whereUsed = await utils.getWhereUsed({ object_name: 'ZMY_CLASS', object_type: 'CLAS/OC' });
|
|
@@ -133,6 +133,18 @@ const codeSets_1 = require("./codeSets");
|
|
|
133
133
|
* its `node` reading. The atom stays in `@mcp-abap-adt/interfaces` for whoever
|
|
134
134
|
* implements it; this class no longer claims it.
|
|
135
135
|
*
|
|
136
|
+
* **Where-used and the group members answer to the typed atoms (39.0.0).**
|
|
137
|
+
* They take `VIEW/DV` and require `parentName` for a parented code — the
|
|
138
|
+
* references of `IAdtTypedWhereUsed<…, V>` and `IAdtTypedGroupLifecycle<…,
|
|
139
|
+
* V>` — so the 21.0.0 atoms, whose `IObjectReference` holds only an
|
|
140
|
+
* `AdtTypeCode`, are no longer declared for them: `IAdtWhereUsed` (and with
|
|
141
|
+
* it `IAdtInformationSystem`, whose other three atoms are declared one by
|
|
142
|
+
* one) and the three group members of `IAdtGroupLifecycle`. The typed atoms
|
|
143
|
+
* are not in this list either, because the compiler cannot relate their code
|
|
144
|
+
* sets to this class's while `V` is open; per variant they are held by
|
|
145
|
+
* `utilsTypedAtoms.test.ts` — `AdtUtils<R, 'onprem'>`, `<R, 'cloud'>`
|
|
146
|
+
* and `<R, 'basis740'>` each assignable to both.
|
|
147
|
+
*
|
|
136
148
|
* And it said a caller who needs another shape "passes a parser" to the sibling.
|
|
137
149
|
* The parser overloads went in 30.0.0, when the reading became something
|
|
138
150
|
* injected once rather than passed per call — and since 19.0.0 there is nothing
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* measured with 38.0.0), each with its own Accept; no request this library
|
|
10
10
|
* never sent becomes possible through them.
|
|
11
11
|
*/
|
|
12
|
-
import type { AdtParentedTypeCode, AdtUtilityCode, AdtVariant } from '@mcp-abap-adt/interfaces-adt';
|
|
13
|
-
import type { AdtCodeOf, AdtCodeWith
|
|
12
|
+
import type { AdtParentedTypeCode, AdtUtilityCode, AdtUtilityOperation, AdtVariant, IAdtUtilityCodeTables } from '@mcp-abap-adt/interfaces-adt';
|
|
13
|
+
import type { AdtCodeOf, AdtCodeWith } from '../../clients/variant';
|
|
14
14
|
/**
|
|
15
15
|
* The codes `readObjectMetadata` reads, each with the Accept it is asked
|
|
16
16
|
* for: the codes it served before 38.0.0 under its friendly names and
|
|
@@ -60,13 +60,16 @@ export declare function isMetadataReadCode(code: string): code is AdtMetadataRea
|
|
|
60
60
|
/** Whether text from outside the types is a code `readObjectSource` reads. */
|
|
61
61
|
export declare function isSourceReadCode(code: string): code is AdtSourceReadCode;
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
63
|
+
* What the request builders of a group operation read, per object.
|
|
64
|
+
*
|
|
65
|
+
* The members take the contract's typed references instead
|
|
66
|
+
* (`IAdtGroupActivationReference<V>`, `IAdtGroupDeletionCheckReference<V>`,
|
|
67
|
+
* `IAdtGroupDeletionReference<V>`): their codes are the group and where-used
|
|
68
|
+
* sets below, `VIEW/DV` among them (interfaces-adt types the group-only codes
|
|
69
|
+
* since 22.0.0, `ADT_UTILITY_CODES_*`), and they require `parentName` for a
|
|
70
|
+
* parented code. Each is assignable to this shape, so `AdtUtils<R, V>` is an
|
|
71
|
+
* `IAdtTypedGroupLifecycle<…, V>` and an `IAdtTypedWhereUsed<…, V>`.
|
|
68
72
|
*/
|
|
69
|
-
/** What a group operation, where-used or a structure read is given, per object. */
|
|
70
73
|
export interface IAdtGroupReference<C extends string> {
|
|
71
74
|
/** Object name, `adtcore:name`. */
|
|
72
75
|
name: string;
|
|
@@ -77,8 +80,6 @@ export interface IAdtGroupReference<C extends string> {
|
|
|
77
80
|
/** The parent's name: the function group of `FUGR/FF` or `FUGR/I`. */
|
|
78
81
|
parentName?: string;
|
|
79
82
|
}
|
|
80
|
-
/** The codes `search` filters by on variant `V`. */
|
|
81
|
-
export type AdtSearchCode<V extends AdtVariant> = AdtCodeOf<V>;
|
|
82
83
|
/**
|
|
83
84
|
* The codes the node and object structure reads are asked of: the variant's
|
|
84
85
|
* codes, and `DEVC/K` on every variant — a package's contents are a node
|
|
@@ -87,12 +88,34 @@ export type AdtSearchCode<V extends AdtVariant> = AdtCodeOf<V>;
|
|
|
87
88
|
* 7.40's table has no package API.
|
|
88
89
|
*/
|
|
89
90
|
export type AdtStructureCode<V extends AdtVariant> = AdtCodeOf<V> | AdtCodes<'DEVC/K'>;
|
|
91
|
+
/** Every code a utility table of interfaces-adt holds: `VIEW/DV`, `DEVC/K`. */
|
|
92
|
+
type AdtUtilityTableCode = {
|
|
93
|
+
[W in AdtVariant]: keyof IAdtUtilityCodeTables[W];
|
|
94
|
+
}[AdtVariant] & AdtUtilityCode;
|
|
95
|
+
/** The variants whose utility table lists operation `Op` for code `C`. */
|
|
96
|
+
type VariantsWhereUtilityHas<C extends AdtUtilityTableCode, Op extends AdtUtilityOperation> = {
|
|
97
|
+
[W in AdtVariant]: C extends keyof IAdtUtilityCodeTables[W] ? IAdtUtilityCodeTables[W][C] extends {
|
|
98
|
+
readonly operations: readonly (infer O)[];
|
|
99
|
+
} ? [Op] extends [O] ? W : never : never : never;
|
|
100
|
+
}[AdtVariant];
|
|
101
|
+
/**
|
|
102
|
+
* The codes for which every variant of `V` lists utility operation `Op` in
|
|
103
|
+
* its utility table (`ADT_UTILITY_CODES_*`): `VIEW/DV`, and `DEVC/K` in a
|
|
104
|
+
* modern group activation. interfaces-adt's `AdtUtilityCodeWith<V, Op>` per
|
|
105
|
+
* variant, written over every utility code like `AdtCodeOf`, so a member
|
|
106
|
+
* generic in `V` keeps the variance the client's gates rely on.
|
|
107
|
+
*/
|
|
108
|
+
export type AdtUtilityCodeOf<V extends AdtVariant, Op extends AdtUtilityOperation> = {
|
|
109
|
+
[C in AdtUtilityTableCode]: [V] extends [VariantsWhereUtilityHas<C, Op>] ? C : never;
|
|
110
|
+
}[AdtUtilityTableCode];
|
|
90
111
|
/**
|
|
91
|
-
* The codes where-used is asked of
|
|
92
|
-
*
|
|
93
|
-
*
|
|
112
|
+
* The codes where-used is asked of on variant `V` — interfaces-adt's
|
|
113
|
+
* `AdtWhereUsedCode<V>` (`utilsTypedAtoms.test.ts` holds them equal per
|
|
114
|
+
* variant): every code of `V` but a function include, whose group where-used
|
|
115
|
+
* has no field for (a function module names it as `GROUP|FM`), and a message
|
|
116
|
+
* class message, which has no address of its own; and `VIEW/DV`.
|
|
94
117
|
*/
|
|
95
|
-
export type AdtWhereUsedCode<V extends AdtVariant> = Exclude<AdtCodeOf<V>, AdtCodes<'FUGR/I' | 'MSAG/NN'
|
|
118
|
+
export type AdtWhereUsedCode<V extends AdtVariant> = Exclude<AdtCodeOf<V>, AdtCodes<'FUGR/I' | 'MSAG/NN'>> | AdtUtilityCodeOf<V, 'whereUsed'>;
|
|
96
119
|
/**
|
|
97
120
|
* The codes the tables list no `activate` for that a modern group activation
|
|
98
121
|
* still sends: `DEVC/K`. A package in a group activation was sent before
|
|
@@ -102,22 +125,28 @@ export type AdtWhereUsedCode<V extends AdtVariant> = Exclude<AdtCodeOf<V>, AdtCo
|
|
|
102
125
|
export declare const ACTIVATED_WITHOUT_TABLE: {
|
|
103
126
|
readonly 'DEVC/K': true;
|
|
104
127
|
};
|
|
105
|
-
/** The codes of {@link ACTIVATED_WITHOUT_TABLE} on variant `V`. */
|
|
106
|
-
type ActivatedWithoutTable<V extends AdtVariant> = [V] extends [
|
|
107
|
-
AdtModernVariant
|
|
108
|
-
] ? keyof typeof ACTIVATED_WITHOUT_TABLE : never;
|
|
109
128
|
/**
|
|
110
|
-
* The codes a group activation activates
|
|
111
|
-
* `
|
|
112
|
-
* variant,
|
|
129
|
+
* The codes a group activation activates on variant `V` — interfaces-adt's
|
|
130
|
+
* `AdtGroupActivationCode<V>`: the codes whose API lists `activate` on every
|
|
131
|
+
* variant of `V` (no message class message, which lists none), and the utility codes listing
|
|
132
|
+
* `groupActivation` — `VIEW/DV`, and a package on a modern variant
|
|
133
|
+
* (`ACTIVATED_WITHOUT_TABLE`).
|
|
113
134
|
*/
|
|
114
|
-
export type AdtActivationCode<V extends AdtVariant> = Exclude<AdtCodeWith<V, 'activate'>, AdtCodes<'MSAG/NN'>> |
|
|
135
|
+
export type AdtActivationCode<V extends AdtVariant> = Exclude<AdtCodeWith<V, 'activate'>, AdtCodes<'MSAG/NN'>> | AdtUtilityCodeOf<V, 'groupActivation'>;
|
|
115
136
|
/** Whether text from outside the types is activated without the table's word. */
|
|
116
137
|
export declare function isActivatedWithoutTable(code: string): boolean;
|
|
117
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* The codes a group deletion check asks about — interfaces-adt's
|
|
140
|
+
* `AdtGroupDeletionCheckCode<V>`: those listing `deletionCheck` (no message
|
|
141
|
+
* class message, which lists none).
|
|
142
|
+
*/
|
|
118
143
|
export type AdtDeletionCheckCode<V extends AdtVariant> = Exclude<AdtCodeWith<V, 'deletionCheck'>, AdtCodes<'MSAG/NN'>>;
|
|
119
|
-
/**
|
|
120
|
-
|
|
144
|
+
/**
|
|
145
|
+
* The codes a group deletion deletes — interfaces-adt's
|
|
146
|
+
* `AdtGroupDeletionCode<V>`: those listing `delete` but a message class
|
|
147
|
+
* message, which has no address of its own, and `VIEW/DV`.
|
|
148
|
+
*/
|
|
149
|
+
export type AdtDeletionCode<V extends AdtVariant> = Exclude<AdtCodeWith<V, 'delete'>, AdtCodes<'MSAG/NN'>> | AdtUtilityCodeOf<V, 'groupDeletion'>;
|
|
121
150
|
/** The codes `readObjectMetadata` reads on variant `V`. */
|
|
122
151
|
export type AdtMetadataReadCodeOf<V extends AdtVariant> = Extract<AdtCodeOf<V>, AdtMetadataReadCode>;
|
|
123
152
|
/** The codes `readObjectSource` reads on variant `V`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeSets.d.ts","sourceRoot":"","sources":["../../../src/core/shared/codeSets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAEnB,cAAc,EACd,UAAU,
|
|
1
|
+
{"version":3,"file":"codeSets.d.ts","sourceRoot":"","sources":["../../../src/core/shared/codeSets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAEnB,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAgBpE;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;CAa+B,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,CAAC;AAEnD,yCAAyC;AACzC,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,aAAa,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;;;;CAQ+B,CAAC;AAExD,uCAAuC;AACvC,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,WAAW,CAAC;AAEzD,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,mBAAmB,CAE5E;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,iBAAiB,CAExE;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAC7C,SAAS,CAAC,CAAC,CAAC,GACZ,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEvB,+EAA+E;AAC/E,KAAK,mBAAmB,GAAG;KACxB,CAAC,IAAI,UAAU,GAAG,MAAM,qBAAqB,CAAC,CAAC,CAAC;CAClD,CAAC,UAAU,CAAC,GACX,cAAc,CAAC;AAEjB,0EAA0E;AAC1E,KAAK,uBAAuB,CAC1B,CAAC,SAAS,mBAAmB,EAC7B,EAAE,SAAS,mBAAmB,IAC5B;KACD,CAAC,IAAI,UAAU,GAAG,CAAC,SAAS,MAAM,qBAAqB,CAAC,CAAC,CAAC,GACvD,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;KAC3C,GACC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GACd,CAAC,GACD,KAAK,GACP,KAAK,GACP,KAAK;CACV,CAAC,UAAU,CAAC,CAAC;AAEd;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,UAAU,EACpB,EAAE,SAAS,mBAAmB,IAC5B;KACD,CAAC,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GACpE,CAAC,GACD,KAAK;CACV,CAAC,mBAAmB,CAAC,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAC7C,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,GACrD,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;CAEmB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,IAC9C,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,GACxD,gBAAgB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAE3C,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAC9D,WAAW,CAAC,CAAC,EAAE,eAAe,CAAC,EAC/B,QAAQ,CAAC,SAAS,CAAC,CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAC5C,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,GACtD,gBAAgB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AAEzC,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAC/D,SAAS,CAAC,CAAC,CAAC,EACZ,mBAAmB,CACpB,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAC7D,SAAS,CAAC,CAAC,CAAC,EACZ,iBAAiB,CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,SAAS,OAAO,EAAE,IAAI;IACxE,CAAC;CACF,SAAS,CAAC,mBAAmB,CAAC,GAC3B,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAChC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC"}
|
package/dist/index.core.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export { AdtServiceBinding, resolveBindingVariant, } from './core/service';
|
|
|
40
40
|
export { AdtServiceDefinition } from './core/serviceDefinition';
|
|
41
41
|
export { AdtUtils } from './core/shared/AdtUtils';
|
|
42
42
|
export { startUnitTestRunSync } from './core/shared/abapUnit';
|
|
43
|
-
export type { AdtActivationCode, AdtDeletionCheckCode, AdtDeletionCode, AdtMetadataReadCode, AdtMetadataReadCodeOf,
|
|
43
|
+
export type { AdtActivationCode, AdtDeletionCheckCode, AdtDeletionCode, AdtMetadataReadCode, AdtMetadataReadCodeOf, AdtSourceReadCode, AdtSourceReadCodeOf, AdtStructureCode, AdtWhereUsedCode, IAdtGroupReference, ParentedArguments, } from './core/shared/codeSets';
|
|
44
44
|
export { AdtContentTypesBase, AdtContentTypesModern, } from './core/shared/contentTypes';
|
|
45
45
|
export type { AdtHandlerOptions, AdtLoggedOptions, AdtShippedOptions, IAdtHandlerContext, } from './core/shared/handlerOptions';
|
|
46
46
|
export { AdtStructure } from './core/structure';
|
package/dist/index.core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.core.d.ts","sourceRoot":"","sources":["../src/index.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EACL,eAAe,EACf,KAAK,uBAAuB,GAC7B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,oBAAoB,EACpB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"index.core.d.ts","sourceRoot":"","sources":["../src/index.core.ts"],"names":[],"mappings":"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"}
|
package/docs/README.md
CHANGED
|
@@ -22,6 +22,7 @@ Complete documentation for the `@mcp-abap-adt/adt-clients` package.
|
|
|
22
22
|
|
|
23
23
|
## Usage Guides
|
|
24
24
|
|
|
25
|
+
- [**MIGRATION-39.md**](usage/MIGRATION-39.md) — what a consumer on 38.x has to change: the search filter takes the release's search names, and where-used and the group members take interfaces-adt's typed references (`VIEW/DV`, a function module's group)
|
|
25
26
|
- [**MIGRATION-38.md**](usage/MIGRATION-38.md) — what a consumer on 37.x has to change: the ADT type tables decide (release variants, codes of the tables, parents, `type` / `unknownType`, the new `updateMetadata` members); the result-set contracts come from `@mcp-abap-adt/interfaces-adt`, and each factory answers its class, so a consumer composes the contract it accepts from interfaces-adt
|
|
26
27
|
- [**MIGRATION-37.md**](usage/MIGRATION-37.md) — what a consumer on 36.x has to change: `getSystemInformation` answers an `IAdtResponse`, and `IUtilResults` has the required `objectProperties` slot; and, in 37.4.0, the legacy classes live in `@mcp-abap-adt/adt-clients-legacy`
|
|
27
28
|
- [**MIGRATION-36.md**](usage/MIGRATION-36.md) — what a consumer on 35.x has to change: a request's `Accept` and `Content-Type` are the caller's
|
|
@@ -113,7 +114,7 @@ if (!created.ok) throw new Error(created.getError().message);
|
|
|
113
114
|
|
|
114
115
|
// Utility operations. The search hits are a reading you choose, once.
|
|
115
116
|
const utils = client.getUtils({ ...utilDocuments, search: utilSearchHits });
|
|
116
|
-
const found = await utils.search({ query: 'Z*', objectType: 'CLAS
|
|
117
|
+
const found = await utils.search({ query: 'Z*', objectType: 'CLAS' });
|
|
117
118
|
if (found.ok) found.getResult().value; // ISearchResult[]; the document without utilSearchHits
|
|
118
119
|
```
|
|
119
120
|
|
|
@@ -25,7 +25,9 @@ names the type of the client it accepts composes that contract from
|
|
|
25
25
|
the result-set contracts (`IClassResults`, …) that package declares — and the
|
|
26
26
|
compiler checks, where the client is taken, that `AdtClient` satisfies it. See
|
|
27
27
|
[The contract you accept is yours](../../README.md#the-contract-you-accept-is-yours)
|
|
28
|
-
and [MIGRATION-38.md](MIGRATION-38.md).
|
|
28
|
+
and [MIGRATION-38.md](MIGRATION-38.md); since 39.0.0 the search filter takes
|
|
29
|
+
search names and where-used and the group members interfaces-adt's typed
|
|
30
|
+
references ([MIGRATION-39.md](MIGRATION-39.md)).
|
|
29
31
|
|
|
30
32
|
**Every member issues one ADT request.** `create` is the POST, `update` is the
|
|
31
33
|
write and carries `options.lockHandle` as given, `delete` is the DELETE,
|
|
@@ -1623,17 +1625,64 @@ if (!listed.ok) {
|
|
|
1623
1625
|
}
|
|
1624
1626
|
```
|
|
1625
1627
|
|
|
1628
|
+
### AdtUtils (Search)
|
|
1629
|
+
|
|
1630
|
+
`search(criteria, options?)` is one `GET
|
|
1631
|
+
/sap/bc/adt/repository/informationsystem/search?operation=quickSearch&query=…&maxResults=…`
|
|
1632
|
+
(`maxResults` 100 when not given), `Accept: application/xml`, with
|
|
1633
|
+
`&objectType=<name>` when `criteria.objectType` is given. The default `search`
|
|
1634
|
+
slot answers the `adtcore:objectReferences` document as it came;
|
|
1635
|
+
`utilSearchHits` from `@mcp-abap-adt/adt-strategies` reads it into hits.
|
|
1636
|
+
|
|
1637
|
+
**The filter is a search name of the variant** (39.0.0,
|
|
1638
|
+
`IAdtSearchObjectsParamsOf<V>` of interfaces-adt). The quick search reads
|
|
1639
|
+
`objectType` against the release's object types list
|
|
1640
|
+
(`GET /repository/informationsystem/objecttypes`), measured 2026-10-29:
|
|
1641
|
+
|
|
1642
|
+
| Filter | S/4HANA 2025 and ABAP cloud | SAP_BASIS 7.40 SP04 |
|
|
1643
|
+
|---|---|---|
|
|
1644
|
+
| a main type: `DEVC`, `CLAS`, `TABL`, … | the list's item: `DEVC/K`; `TABL` both table kinds | selects, for the eleven of `ADT_SEARCH_TYPES_BASIS_740` |
|
|
1645
|
+
| an alias: `STRU`, `DTAB`, `REPO`, `INCL`, `FUNC`, `BADI` | its one code: `STRU` only `TABL/DS` | `FUNC` selects function modules; the others answer no hits |
|
|
1646
|
+
| a group: `ABAP_TEST_COCKPIT`, … (about fifty) | its members | — (no list) |
|
|
1647
|
+
| a code, `ENHO/XHH` | as its main type, other first hits under `maxResults` — does not compile | as its main type — does not compile |
|
|
1648
|
+
| an unknown name | `400` — does not compile | no hits — does not compile |
|
|
1649
|
+
|
|
1650
|
+
`ADT_SEARCH_TYPES_ONPREM` (385 names) and `ADT_SEARCH_TYPES_CLOUD` (372) are
|
|
1651
|
+
the recorded lists, each name with the code it selects or `group: true`;
|
|
1652
|
+
`ADT_SEARCH_TYPES_BASIS_740` holds the eleven names measured to select on
|
|
1653
|
+
7.40. A main type comes from the table entry:
|
|
1654
|
+
|
|
1655
|
+
```typescript
|
|
1656
|
+
import { ADT_TYPES_ONPREM } from '@mcp-abap-adt/interfaces-adt';
|
|
1657
|
+
|
|
1658
|
+
const hits = await client.getUtils().search({
|
|
1659
|
+
query: 'Z*',
|
|
1660
|
+
objectType: ADT_TYPES_ONPREM.package.codes['DEVC/K'].main, // 'DEVC'
|
|
1661
|
+
maxResults: 50,
|
|
1662
|
+
});
|
|
1663
|
+
```
|
|
1664
|
+
|
|
1665
|
+
A subtype without an alias (`ENHO/XHH`) cannot be searched alone: search its
|
|
1666
|
+
main type and keep the hits of the code you want. On a legacy system
|
|
1667
|
+
(`AdtUtilsLegacy` of `@mcp-abap-adt/adt-clients-legacy`) a name outside
|
|
1668
|
+
`ADT_SEARCH_TYPES_BASIS_740` is refused without a request.
|
|
1669
|
+
|
|
1626
1670
|
### AdtUtils (Group activation and deletion)
|
|
1627
1671
|
|
|
1628
1672
|
`activateObjectsGroup`, `checkDeletionGroup` and `deleteObjectsGroup` take
|
|
1629
|
-
`
|
|
1630
|
-
lists the operation (`AdtActivationCode<V>`,
|
|
1631
|
-
`
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
`
|
|
1635
|
-
|
|
1636
|
-
|
|
1673
|
+
interfaces-adt's typed references, `IAdtCodedReference<C>[]`, `C` the codes
|
|
1674
|
+
of the client's variant whose API lists the operation (`AdtActivationCode<V>`,
|
|
1675
|
+
`AdtDeletionCheckCode<V>`, `AdtDeletionCode<V>` — equal, per variant, to
|
|
1676
|
+
interfaces-adt's `AdtGroupActivationCode<V>`, `AdtGroupDeletionCheckCode<V>`
|
|
1677
|
+
and `AdtGroupDeletionCode<V>`; since 39.0.0 `AdtUtils<R, V>` is an
|
|
1678
|
+
`IAdtTypedGroupLifecycle<…, V>`). A group activation also takes `DEVC/K` on
|
|
1679
|
+
the modern variants, and the group activation and deletion take `VIEW/DV`, a
|
|
1680
|
+
DDIC database view no factory serves, addressed under
|
|
1681
|
+
`/sap/bc/adt/ddic/views`. Each reference names its ADT type code (`CLAS/OC`,
|
|
1682
|
+
`PROG/P`, `PROG/I`, `DDLS/DF`, …). Two kinds also need the object that owns
|
|
1683
|
+
them: `FUGR/FF` (a function module) and `FUGR/I` (a function include) need
|
|
1684
|
+
`parentName`, the function group — a reference without it does not compile
|
|
1685
|
+
(39.0.0).
|
|
1637
1686
|
|
|
1638
1687
|
A reference **without a type**, with a type this library has no address for, or
|
|
1639
1688
|
a module or include without its group, **throws before any request**. It used
|
|
@@ -1690,6 +1739,11 @@ Where-used is two requests, and both are yours:
|
|
|
1690
1739
|
|
|
1691
1740
|
`modifyWhereUsedScope` edits the scope XML locally — no ADT call.
|
|
1692
1741
|
|
|
1742
|
+
Both take `IGetWhereUsedParams<AdtWhereUsedCode<V>>`: every code of the
|
|
1743
|
+
variant but a function include (`FUGR/I`, whose group where-used has no field
|
|
1744
|
+
for — a function module is named `GROUP|FM`) and a message class message, and
|
|
1745
|
+
`VIEW/DV` (39.0.0; `AdtUtils<R, V>` is an `IAdtTypedWhereUsed<…, V>`).
|
|
1746
|
+
|
|
1693
1747
|
See `docs/architecture/ARCHITECTURE.md` for the architectural overview.
|
|
1694
1748
|
|
|
1695
1749
|
```typescript
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Migrating to 39.0.0
|
|
2
|
+
|
|
3
|
+
39.0.0 moves to `@mcp-abap-adt/interfaces-adt` `^24.0.1` and
|
|
4
|
+
`@mcp-abap-adt/adt-strategies` `^0.17.0`. Two things change for a consumer:
|
|
5
|
+
|
|
6
|
+
- [The search filter takes the release's search names](#the-search-filter-takes-the-releases-search-names):
|
|
7
|
+
`getUtils().search({ objectType })` takes a name of the release's object
|
|
8
|
+
types list (`DEVC`, `STRU`, `ABAP_TEST_COCKPIT`), not a code (`DEVC/K`).
|
|
9
|
+
- [Where-used and the group members take the typed atoms' references](#where-used-and-the-group-members-take-the-typed-atoms-references):
|
|
10
|
+
`VIEW/DV` compiles, a function module's reference names its group, and
|
|
11
|
+
`getUtils()` is an `IAdtTypedWhereUsed<…, V>` and an
|
|
12
|
+
`IAdtTypedGroupLifecycle<…, V>` instead of an `IAdtWhereUsed` /
|
|
13
|
+
`IAdtGroupLifecycle`.
|
|
14
|
+
|
|
15
|
+
Code that searches without a filter, and passes literal codes with their
|
|
16
|
+
parents to where-used and the group members, compiles and behaves as on 38.x.
|
|
17
|
+
No request changes for a call that compiled on 38.x and compiles on 39.0.0.
|
|
18
|
+
|
|
19
|
+
## The search filter takes the release's search names
|
|
20
|
+
|
|
21
|
+
### What changed
|
|
22
|
+
|
|
23
|
+
`/sap/bc/adt/repository/informationsystem/search?operation=quickSearch`
|
|
24
|
+
filters by `objectType`, and what that parameter takes is the release's object
|
|
25
|
+
types list (`GET /sap/bc/adt/repository/informationsystem/objecttypes`), not
|
|
26
|
+
the type codes. Measured on S/4HANA 2025 and ABAP cloud (2026-10-29, read
|
|
27
|
+
only):
|
|
28
|
+
|
|
29
|
+
- a **name** selects what the list says of it: `DEVC` the packages, `STRU`
|
|
30
|
+
only `TABL/DS`, `DTAB` only `TABL/DT`, `TABL` both, a group
|
|
31
|
+
(`ABAP_TEST_COCKPIT`) its members;
|
|
32
|
+
- a **code** equal to an item's type selects as that item; any other code
|
|
33
|
+
selects as the text before its `/` — `ENHO/XHH` answers as `ENHO`, with
|
|
34
|
+
other first hits under `maxResults` — and an unknown code (`NOPE/XX`)
|
|
35
|
+
answers `200` and nothing, silently;
|
|
36
|
+
- an **unknown name** is refused `400`.
|
|
37
|
+
|
|
38
|
+
On SAP_BASIS 7.40 there is no list (`404`); the names `DEVC`, `CLAS`, `INTF`,
|
|
39
|
+
`PROG`, `FUGR`, `FUNC`, `DDLS`, `MSAG`, `TABL`, `ENHO` and `ENHS` select, and
|
|
40
|
+
the aliases (`STRU`, `DTAB`, `REPO`, `INCL`, `BADI`) and an unknown name answer
|
|
41
|
+
`200` and no hits, silently.
|
|
42
|
+
|
|
43
|
+
So the filter is typed by the variant's names, `IAdtSearchObjectsParamsOf<V>`
|
|
44
|
+
of interfaces-adt 24.0.0: `ADT_SEARCH_TYPES_ONPREM` (385 names),
|
|
45
|
+
`ADT_SEARCH_TYPES_CLOUD` (372), `ADT_SEARCH_TYPES_BASIS_740` (the eleven). A
|
|
46
|
+
code no longer compiles as the filter, nor does a name the variant does not
|
|
47
|
+
take: `STRU` on a 7.40 client, `NOPE` anywhere. `AdtSearchCode<V>` is gone;
|
|
48
|
+
the type is interfaces-adt's `AdtSearchTypeOf<V>`. The request is the one the
|
|
49
|
+
library always sent: the name as the `objectType` parameter.
|
|
50
|
+
|
|
51
|
+
### What to do
|
|
52
|
+
|
|
53
|
+
Pass the search name. For a main type, take it from the table entry:
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { ADT_TYPES_ONPREM } from '@mcp-abap-adt/interfaces-adt';
|
|
57
|
+
|
|
58
|
+
const utils = client.getUtils();
|
|
59
|
+
|
|
60
|
+
// 38.x: objectType: 'DEVC/K' — a code, which the search reads as `DEVC`.
|
|
61
|
+
const packages = await utils.search({
|
|
62
|
+
query: 'Z*',
|
|
63
|
+
objectType: ADT_TYPES_ONPREM.package.codes['DEVC/K'].main, // 'DEVC'
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// A subtype is searched by its alias: structures alone.
|
|
67
|
+
const structures = await utils.search({ query: 'Z*', objectType: 'STRU' });
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
A subtype without an alias (`ENHO/XHH`) cannot be searched alone: search its
|
|
71
|
+
main type (`ENHO`) and keep the hits of the code you want.
|
|
72
|
+
|
|
73
|
+
`adt-clients-legacy` 0.3.0's `AdtUtilsLegacy.search` takes
|
|
74
|
+
`IAdtSearchObjectsParamsOf<'basis740'>`: a name 7.40 is not measured to select
|
|
75
|
+
does not compile there, and from a caller outside the type system it is
|
|
76
|
+
refused without a request (the refusal names `ADT_SEARCH_TYPES_BASIS_740`) —
|
|
77
|
+
an alias would answer no hits, which the caller could not tell from an empty
|
|
78
|
+
search.
|
|
79
|
+
|
|
80
|
+
## Where-used and the group members take the typed atoms' references
|
|
81
|
+
|
|
82
|
+
### What changed
|
|
83
|
+
|
|
84
|
+
interfaces-adt 22.0.0 added `IAdtTypedGroupLifecycle<…, V>` and
|
|
85
|
+
`IAdtTypedWhereUsed<…, V>`: the group and where-used members over the
|
|
86
|
+
references each request serves on variant `V` (`IAdtGroupActivationReference<V>`,
|
|
87
|
+
`IAdtGroupDeletionCheckReference<V>`, `IAdtGroupDeletionReference<V>`,
|
|
88
|
+
`IAdtWhereUsedParamsOf<V>`, `IAdtWhereUsedScopeParamsOf<V>`). 38.0.0's
|
|
89
|
+
members did not satisfy them, so a consumer composing its contract from them
|
|
90
|
+
could not take `getUtils()`. Now:
|
|
91
|
+
|
|
92
|
+
- **`VIEW/DV` compiles** in `activateObjectsGroup`, `deleteObjectsGroup`,
|
|
93
|
+
`getWhereUsed` and `getWhereUsedScope` — on 7.40 too for the group
|
|
94
|
+
activation, which 7.40's utility table lists — and is sent under
|
|
95
|
+
`/sap/bc/adt/ddic/views/<name>`, as 38.x sent it for a caller outside the
|
|
96
|
+
type system.
|
|
97
|
+
- **A parented code requires `parentName`** in a group reference
|
|
98
|
+
(`IAdtCodedReference<C>`): `{ type: 'FUGR/FF', name }` without the group no
|
|
99
|
+
longer compiles; it threw before any request on 38.x.
|
|
100
|
+
- **The code sets** (`AdtActivationCode<V>`, `AdtDeletionCheckCode<V>`,
|
|
101
|
+
`AdtDeletionCode<V>`, `AdtWhereUsedCode<V>`) equal interfaces-adt's
|
|
102
|
+
(`AdtGroupActivationCode<V>`, …), per variant — held by a compile check.
|
|
103
|
+
- **`getUtils()` declares the typed atoms' signatures**, not the 21.0.0
|
|
104
|
+
atoms': `AdtUtils<R, V>` no longer implements `IAdtInformationSystem`,
|
|
105
|
+
`IAdtWhereUsed`, or the three group members of `IAdtGroupLifecycle`, whose
|
|
106
|
+
`IObjectReference` holds only an `AdtTypeCode` and so cannot carry
|
|
107
|
+
`VIEW/DV`. It still implements `IAdtObjectSearch`, `IAdtVirtualFolders`,
|
|
108
|
+
`IAdtTypeCatalogue` and `IAdtGroupLifecycle`'s run and inactive members
|
|
109
|
+
(`getInactiveObjects`, `getActivationRun`, `getActivationResults`), and
|
|
110
|
+
`AdtUtils<R, 'onprem'>`, `<R, 'cloud'>`, `<R, 'basis740'>` and the modern
|
|
111
|
+
default are each assignable to both typed atoms of their variant.
|
|
112
|
+
|
|
113
|
+
### What to do
|
|
114
|
+
|
|
115
|
+
A reference whose code is known only by its set names its parent, or is
|
|
116
|
+
typed as a code without one:
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
import type {
|
|
120
|
+
AdtParentedTypeCode,
|
|
121
|
+
IAdtGroupActivationReference,
|
|
122
|
+
} from '@mcp-abap-adt/interfaces-adt';
|
|
123
|
+
import type { AdtActivationCode, AdtModernVariant } from '@mcp-abap-adt/adt-clients';
|
|
124
|
+
|
|
125
|
+
declare const code: Exclude<AdtActivationCode<AdtModernVariant>, AdtParentedTypeCode>;
|
|
126
|
+
|
|
127
|
+
const objects: IAdtGroupActivationReference<AdtModernVariant>[] = [
|
|
128
|
+
{ type: code, name: 'ZOBJECT' },
|
|
129
|
+
{ type: 'FUGR/FF', name: 'Z_MY_FM', parentName: 'Z_MY_GROUP' },
|
|
130
|
+
{ type: 'VIEW/DV', name: 'ZMY_VIEW' },
|
|
131
|
+
];
|
|
132
|
+
await client.getUtils().activateObjectsGroup(objects, undefined, { headers });
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
A consumer that typed `getUtils()` as `IAdtInformationSystem`,
|
|
136
|
+
`IAdtWhereUsed` or `IAdtGroupLifecycle` composes the typed atoms instead:
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
import type {
|
|
140
|
+
IAdtObjectSearch,
|
|
141
|
+
IAdtTypedGroupLifecycle,
|
|
142
|
+
IAdtTypedWhereUsed,
|
|
143
|
+
} from '@mcp-abap-adt/interfaces-adt';
|
|
144
|
+
|
|
145
|
+
type Utils<V extends 'onprem' | 'cloud'> = IAdtObjectSearch<string> &
|
|
146
|
+
IAdtTypedWhereUsed<string, string, V> &
|
|
147
|
+
IAdtTypedGroupLifecycle<string, string, string, V>;
|
|
148
|
+
|
|
149
|
+
const utils: Utils<'onprem'> = onPremClient.getUtils();
|
|
150
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-abap-adt/adt-clients",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "39.0.0",
|
|
4
4
|
"description": "ADT clients for SAP ABAP systems - AdtClient and AdtRuntimeClient",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"node": ">=18.0.0"
|
|
117
117
|
},
|
|
118
118
|
"dependencies": {
|
|
119
|
-
"@mcp-abap-adt/interfaces-adt": "^
|
|
119
|
+
"@mcp-abap-adt/interfaces-adt": "^24.0.1",
|
|
120
120
|
"@mcp-abap-adt/interfaces-adt-connection": "^3.0.0",
|
|
121
121
|
"@mcp-abap-adt/interfaces-network": "^2.0.1",
|
|
122
122
|
"@mcp-abap-adt/interfaces-utils": "^1.1.1",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
},
|
|
127
127
|
"devDependencies": {
|
|
128
128
|
"@biomejs/biome": "^2.4.4",
|
|
129
|
-
"@mcp-abap-adt/adt-strategies": "^0.
|
|
129
|
+
"@mcp-abap-adt/adt-strategies": "^0.17.0",
|
|
130
130
|
"@mcp-abap-adt/auth-providers": "^6.0.2",
|
|
131
131
|
"@mcp-abap-adt/connection": "^19.0.0",
|
|
132
132
|
"@mcp-abap-adt/interfaces-auth": "^7.5.0",
|