@mcp-abap-adt/adt-clients 6.0.0 → 6.1.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 CHANGED
@@ -185,6 +185,14 @@ for (const ref of result.references) {
185
185
  console.log(`${ref.name} (${ref.type}) in ${ref.packageName}`);
186
186
  }
187
187
 
188
+ // Restrict to specific object types — SAP filters server-side, so it never
189
+ // returns the unwanted types (e.g. hundreds of classes when you want structures)
190
+ await utils.getWhereUsedList({
191
+ object_name: 'ZMY_TABLE',
192
+ object_type: 'table',
193
+ enableOnlyTypes: ['TABL/DS', 'TABL/DT'] // or disableTypes: ['CLAS/OC']
194
+ });
195
+
188
196
  // Where-used with raw XML (legacy)
189
197
  await utils.getWhereUsed({ object_name: 'ZCL_TEST', object_type: 'class' });
190
198
  ```
@@ -97,6 +97,19 @@ export interface IGetWhereUsedListParams {
97
97
  * Default: false (uses SAP default scope)
98
98
  */
99
99
  enableAllTypes?: boolean;
100
+ /**
101
+ * Restrict the search to ONLY these object types (e.g. ['TABL/DS', 'TABL/DT']).
102
+ * All other types are deselected, so SAP does not search them at all — this is
103
+ * how you avoid getting 1000 classes back when you only want structures/tables.
104
+ * Type names are the ADT global types from the scope (e.g. 'CLAS/OC', 'STRU/DT').
105
+ * Takes precedence over `enableAllTypes`. Ignored if empty.
106
+ */
107
+ enableOnlyTypes?: string[];
108
+ /**
109
+ * Remove these object types from the default SAP scope, keeping the rest.
110
+ * Applied on top of the default scope (or after `enableOnlyTypes`/`enableAllTypes`).
111
+ */
112
+ disableTypes?: string[];
100
113
  /**
101
114
  * Include raw XML in response
102
115
  * Default: false
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/shared/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/shared/types.ts"],"names":[],"mappings":"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"}
@@ -92,14 +92,23 @@ export declare function getWhereUsed(connection: IAbapConnection, params: IGetWh
92
92
  *
93
93
  * @example
94
94
  * ```typescript
95
- * const result = await getWhereUsedList(connection, {
95
+ * // Search every object type (Eclipse 'select all') — may return many results
96
+ * const all = await getWhereUsedList(connection, {
96
97
  * object_name: 'ZMY_TABLE',
97
98
  * object_type: 'table',
98
99
  * enableAllTypes: true
99
100
  * });
100
101
  *
101
- * console.log(`Found ${result.totalReferences} references`);
102
- * for (const ref of result.references) {
102
+ * // Or restrict to just the types you care about (e.g. only structures/tables),
103
+ * // so SAP never searches — and never returns — hundreds of classes.
104
+ * const structuresOnly = await getWhereUsedList(connection, {
105
+ * object_name: 'ZMY_TABLE',
106
+ * object_type: 'table',
107
+ * enableOnlyTypes: ['TABL/DS', 'TABL/DT']
108
+ * });
109
+ *
110
+ * console.log(`Found ${structuresOnly.totalReferences} references`);
111
+ * for (const ref of structuresOnly.references) {
103
112
  * console.log(`${ref.name} (${ref.type}) in package ${ref.packageName}`);
104
113
  * }
105
114
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"whereUsed.d.ts","sourceRoot":"","sources":["../../../src/core/shared/whereUsed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,IAAI,aAAa,EAC7B,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAQjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACA,MAAM,CAwCR;AAuDD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,eAAe,EAC3B,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAuBxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,eAAe,EAC3B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAgDxB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,eAAe,EAC3B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CA2F/B"}
1
+ {"version":3,"file":"whereUsed.d.ts","sourceRoot":"","sources":["../../../src/core/shared/whereUsed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,IAAI,aAAa,EAC7B,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAQjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACA,MAAM,CAyBR;AAyED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,eAAe,EAC3B,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAuBxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,eAAe,EAC3B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAgDxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,eAAe,EAC3B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CA8G/B"}
@@ -46,36 +46,43 @@ const xmlParser = new fast_xml_parser_1.XMLParser({
46
46
  * });
47
47
  */
48
48
  function modifyWhereUsedScope(scopeXml, options) {
49
- let result = scopeXml;
50
- if (options.enableAll) {
51
- // Enable all object types
52
- result = result.replace(/isSelected="false"/g, 'isSelected="true"');
53
- }
54
- else if (options.enableOnly) {
55
- // First disable all, then enable only specified
56
- result = result.replace(/isSelected="true"/g, 'isSelected="false"');
57
- for (const typeName of options.enableOnly) {
58
- const typeRegex = new RegExp(`(<usagereferences:type[^>]*name="${typeName.replace(/\//g, '\\/')})"[^>]*(isSelected=)"false"`, 'g');
59
- result = result.replace(typeRegex, '$1 $2"true"');
49
+ // Each available type is a self-closing <usagereferences:type .../> tag.
50
+ // We rewrite ONLY the isSelected attribute per tag and never touch the
51
+ // opaque <usagereferences:payload> blob or attribute ordering — SAP emits
52
+ // attributes as `isDefault isSelected name`, so logic must read `name`
53
+ // wherever it appears, not assume it precedes isSelected.
54
+ const typeTagRegex = /<usagereferences:type\b[^>]*?\/>/g;
55
+ return scopeXml.replace(typeTagRegex, (tag) => {
56
+ const nameMatch = tag.match(/\bname="([^"]*)"/);
57
+ const name = nameMatch ? nameMatch[1] : '';
58
+ let selected;
59
+ if (options.enableAll) {
60
+ selected = true;
60
61
  }
61
- }
62
- else {
63
- // Enable specific types (keep existing selections)
64
- if (options.enable) {
65
- for (const typeName of options.enable) {
66
- const typeRegex = new RegExp(`(<usagereferences:type[^>]*name="${typeName.replace(/\//g, '\\/')})"[^>]*(isSelected=)"false"`, 'g');
67
- result = result.replace(typeRegex, '$1 $2"true"');
68
- }
62
+ else if (options.enableOnly) {
63
+ selected = options.enableOnly.includes(name);
69
64
  }
70
- // Disable specific types
71
- if (options.disable) {
72
- for (const typeName of options.disable) {
73
- const typeRegex = new RegExp(`(<usagereferences:type[^>]*name="${typeName.replace(/\//g, '\\/')})"[^>]*(isSelected=)"true"`, 'g');
74
- result = result.replace(typeRegex, '$1 $2"false"');
75
- }
65
+ else {
66
+ if (options.enable?.includes(name))
67
+ selected = true;
68
+ if (options.disable?.includes(name))
69
+ selected = false;
76
70
  }
71
+ if (selected === undefined)
72
+ return tag;
73
+ return setIsSelected(tag, selected);
74
+ });
75
+ }
76
+ /**
77
+ * Set the isSelected attribute on a single <usagereferences:type> tag,
78
+ * inserting it if absent. Leaves all other attributes and their order intact.
79
+ */
80
+ function setIsSelected(typeTag, selected) {
81
+ const value = selected ? 'true' : 'false';
82
+ if (/\bisSelected="(?:true|false)"/.test(typeTag)) {
83
+ return typeTag.replace(/\bisSelected="(?:true|false)"/, `isSelected="${value}"`);
77
84
  }
78
- return result;
85
+ return typeTag.replace(/<usagereferences:type\b/, `<usagereferences:type isSelected="${value}"`);
79
86
  }
80
87
  /**
81
88
  * Build object URI based on type and name
@@ -238,14 +245,23 @@ async function getWhereUsed(connection, params) {
238
245
  *
239
246
  * @example
240
247
  * ```typescript
241
- * const result = await getWhereUsedList(connection, {
248
+ * // Search every object type (Eclipse 'select all') — may return many results
249
+ * const all = await getWhereUsedList(connection, {
242
250
  * object_name: 'ZMY_TABLE',
243
251
  * object_type: 'table',
244
252
  * enableAllTypes: true
245
253
  * });
246
254
  *
247
- * console.log(`Found ${result.totalReferences} references`);
248
- * for (const ref of result.references) {
255
+ * // Or restrict to just the types you care about (e.g. only structures/tables),
256
+ * // so SAP never searches — and never returns — hundreds of classes.
257
+ * const structuresOnly = await getWhereUsedList(connection, {
258
+ * object_name: 'ZMY_TABLE',
259
+ * object_type: 'table',
260
+ * enableOnlyTypes: ['TABL/DS', 'TABL/DT']
261
+ * });
262
+ *
263
+ * console.log(`Found ${structuresOnly.totalReferences} references`);
264
+ * for (const ref of structuresOnly.references) {
249
265
  * console.log(`${ref.name} (${ref.type}) in package ${ref.packageName}`);
250
266
  * }
251
267
  * ```
@@ -258,13 +274,31 @@ async function getWhereUsedList(connection, params) {
258
274
  throw new Error('Object type is required');
259
275
  }
260
276
  let scopeXml;
261
- // If enableAllTypes, fetch scope and modify it
262
- if (params.enableAllTypes) {
277
+ // Fetch and modify the scope only when the caller wants to constrain which
278
+ // object types are searched. Otherwise getWhereUsed() falls back to SAP's
279
+ // default scope.
280
+ const enableOnly = params.enableOnlyTypes?.length
281
+ ? params.enableOnlyTypes
282
+ : undefined;
283
+ const disable = params.disableTypes?.length ? params.disableTypes : undefined;
284
+ if (params.enableAllTypes || enableOnly || disable) {
263
285
  const scopeResponse = await getWhereUsedScope(connection, {
264
286
  object_name: params.object_name,
265
287
  object_type: params.object_type,
266
288
  });
267
- scopeXml = modifyWhereUsedScope(scopeResponse.data, { enableAll: true });
289
+ // enableOnly wins over enableAll; disable is then applied on top so callers
290
+ // can both narrow to a set and prune one of those, in a single pass.
291
+ let modified = scopeResponse.data;
292
+ if (enableOnly) {
293
+ modified = modifyWhereUsedScope(modified, { enableOnly });
294
+ }
295
+ else if (params.enableAllTypes) {
296
+ modified = modifyWhereUsedScope(modified, { enableAll: true });
297
+ }
298
+ if (disable) {
299
+ modified = modifyWhereUsedScope(modified, { disable });
300
+ }
301
+ scopeXml = modified;
268
302
  }
269
303
  // Execute where-used search
270
304
  const response = await getWhereUsed(connection, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/adt-clients",
3
- "version": "6.0.0",
3
+ "version": "6.1.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",