@mcp-abap-adt/adt-clients 7.2.0 → 7.3.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 (46) hide show
  1. package/dist/clients/AdtClient.d.ts +12 -0
  2. package/dist/clients/AdtClient.d.ts.map +1 -1
  3. package/dist/clients/AdtClient.js +16 -0
  4. package/dist/constants/contentTypes.d.ts +1 -0
  5. package/dist/constants/contentTypes.d.ts.map +1 -1
  6. package/dist/constants/contentTypes.js +3 -1
  7. package/dist/core/messageClass/AdtMessageClass.d.ts +82 -0
  8. package/dist/core/messageClass/AdtMessageClass.d.ts.map +1 -0
  9. package/dist/core/messageClass/AdtMessageClass.js +246 -0
  10. package/dist/core/messageClass/AdtMessageClassMessage.d.ts +76 -0
  11. package/dist/core/messageClass/AdtMessageClassMessage.d.ts.map +1 -0
  12. package/dist/core/messageClass/AdtMessageClassMessage.js +314 -0
  13. package/dist/core/messageClass/create.d.ts +15 -0
  14. package/dist/core/messageClass/create.d.ts.map +1 -0
  15. package/dist/core/messageClass/create.js +39 -0
  16. package/dist/core/messageClass/delete.d.ts +25 -0
  17. package/dist/core/messageClass/delete.d.ts.map +1 -0
  18. package/dist/core/messageClass/delete.js +68 -0
  19. package/dist/core/messageClass/index.d.ts +13 -0
  20. package/dist/core/messageClass/index.d.ts.map +1 -0
  21. package/dist/core/messageClass/index.js +28 -0
  22. package/dist/core/messageClass/lock.d.ts +26 -0
  23. package/dist/core/messageClass/lock.d.ts.map +1 -0
  24. package/dist/core/messageClass/lock.js +82 -0
  25. package/dist/core/messageClass/read.d.ts +10 -0
  26. package/dist/core/messageClass/read.d.ts.map +1 -0
  27. package/dist/core/messageClass/read.js +24 -0
  28. package/dist/core/messageClass/types.d.ts +53 -0
  29. package/dist/core/messageClass/types.d.ts.map +1 -0
  30. package/dist/core/messageClass/types.js +5 -0
  31. package/dist/core/messageClass/unlock.d.ts +16 -0
  32. package/dist/core/messageClass/unlock.d.ts.map +1 -0
  33. package/dist/core/messageClass/unlock.js +39 -0
  34. package/dist/core/messageClass/update.d.ts +16 -0
  35. package/dist/core/messageClass/update.d.ts.map +1 -0
  36. package/dist/core/messageClass/update.js +44 -0
  37. package/dist/core/messageClass/xml.d.ts +24 -0
  38. package/dist/core/messageClass/xml.d.ts.map +1 -0
  39. package/dist/core/messageClass/xml.js +107 -0
  40. package/dist/core/shared/unsupported.d.ts +3 -0
  41. package/dist/core/shared/unsupported.d.ts.map +1 -0
  42. package/dist/core/shared/unsupported.js +10 -0
  43. package/dist/index.core.d.ts +2 -0
  44. package/dist/index.core.d.ts.map +1 -1
  45. package/dist/index.core.js +4 -1
  46. package/package.json +4 -4
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Message class read operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getMessageClassSource = getMessageClassSource;
7
+ const internalUtils_1 = require("../../utils/internalUtils");
8
+ const timeouts_1 = require("../../utils/timeouts");
9
+ const BASE = '/sap/bc/adt/messageclass';
10
+ /** Accept header covering both the dedicated MC content type and plain XML fallback. */
11
+ const ACCEPT_MESSAGE_CLASS = 'application/vnd.sap.adt.mc.messageclass+xml, application/xml';
12
+ /**
13
+ * Read message class metadata and messages.
14
+ * GET /sap/bc/adt/messageclass/{name}
15
+ */
16
+ async function getMessageClassSource(connection, name) {
17
+ const encoded = (0, internalUtils_1.encodeSapObjectName)(name.toLowerCase());
18
+ return connection.makeAdtRequest({
19
+ url: `${BASE}/${encoded}`,
20
+ method: 'GET',
21
+ timeout: (0, timeouts_1.getTimeout)('default'),
22
+ headers: { Accept: ACCEPT_MESSAGE_CLASS },
23
+ });
24
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Message class module type definitions
3
+ */
4
+ import type { IAdtObjectState } from '@mcp-abap-adt/interfaces';
5
+ import type { IParsedMessage, IParsedMessageClass } from './xml';
6
+ export interface ICreateMessageClassParams {
7
+ name: string;
8
+ description: string;
9
+ package_name: string;
10
+ transport_request?: string;
11
+ master_language?: string;
12
+ }
13
+ export interface IDeleteMessageClassParams {
14
+ name: string;
15
+ transport_request?: string;
16
+ }
17
+ export interface IMessageClassConfig {
18
+ /** Message class name (e.g. ZMY_MSGS) */
19
+ name: string;
20
+ /** Short description */
21
+ description?: string;
22
+ /** Package name — required for create */
23
+ packageName?: string;
24
+ /** Transport request — parsed but not sent until Task 6.2 wires corrNr */
25
+ transportRequest?: string;
26
+ /** Master language of the message class — defaults to 'EN' on create */
27
+ masterLanguage?: string;
28
+ }
29
+ export interface IMessageClassState extends IAdtObjectState {
30
+ /** Parsed message class returned after read() */
31
+ messageClass?: IParsedMessageClass;
32
+ }
33
+ /** Configuration for operating on a single message within a message class. */
34
+ export interface IMessageClassMessageConfig {
35
+ /** Parent message class name (e.g. ZMY_MSGS) */
36
+ className: string;
37
+ /** Message number (e.g. '001') */
38
+ msgno: string;
39
+ /** Message text — required for create/update */
40
+ msgtext?: string;
41
+ /** Whether the message is self-explanatory (mc:selfexplainatory attribute) */
42
+ selfExplanatory?: boolean;
43
+ /** Long description for the message (adtcore:description attribute) */
44
+ description?: string;
45
+ /** Transport request — parsed but not sent until Task 6.2 wires corrNr */
46
+ transportRequest?: string;
47
+ }
48
+ /** State returned from operations on a single message. */
49
+ export interface IMessageClassMessageState extends IAdtObjectState {
50
+ /** The individual message extracted from the parent class */
51
+ message?: IParsedMessage;
52
+ }
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/messageClass/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAGjE,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAGD,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,iDAAiD;IACjD,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAID,8EAA8E;AAC9E,MAAM,WAAW,0BAA0B;IACzC,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,0DAA0D;AAC1D,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAChE,6DAA6D;IAC7D,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * Message class module type definitions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Message class unlock operations
3
+ */
4
+ import type { IAbapConnection, IAdtResponse } from '@mcp-abap-adt/interfaces';
5
+ /**
6
+ * Unlock a message class after modification.
7
+ *
8
+ * NOTE: Caller should call connection.setSessionType('stateless') after this.
9
+ */
10
+ export declare function unlockMessageClass(connection: IAbapConnection, name: string, lockHandle: string): Promise<IAdtResponse>;
11
+ /**
12
+ * Release all message-level locks for a specific message number.
13
+ * Must be called after the class PUT to release the LOCK_MSG handle.
14
+ */
15
+ export declare function unlockAllMessages(connection: IAbapConnection, name: string, no: string): Promise<IAdtResponse>;
16
+ //# sourceMappingURL=unlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../src/core/messageClass/unlock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM9E;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,EAC3B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CAUvB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,eAAe,EAC3B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,CAAC,CAUvB"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * Message class unlock operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.unlockMessageClass = unlockMessageClass;
7
+ exports.unlockAllMessages = unlockAllMessages;
8
+ const internalUtils_1 = require("../../utils/internalUtils");
9
+ const timeouts_1 = require("../../utils/timeouts");
10
+ const BASE = '/sap/bc/adt/messageclass';
11
+ /**
12
+ * Unlock a message class after modification.
13
+ *
14
+ * NOTE: Caller should call connection.setSessionType('stateless') after this.
15
+ */
16
+ async function unlockMessageClass(connection, name, lockHandle) {
17
+ const encoded = (0, internalUtils_1.encodeSapObjectName)(name.toLowerCase());
18
+ const url = `${BASE}/${encoded}?_action=UNLOCK&lockHandle=${encodeURIComponent(lockHandle)}`;
19
+ return connection.makeAdtRequest({
20
+ url,
21
+ method: 'POST',
22
+ timeout: (0, timeouts_1.getTimeout)('default'),
23
+ data: null,
24
+ });
25
+ }
26
+ /**
27
+ * Release all message-level locks for a specific message number.
28
+ * Must be called after the class PUT to release the LOCK_MSG handle.
29
+ */
30
+ async function unlockAllMessages(connection, name, no) {
31
+ const encoded = (0, internalUtils_1.encodeSapObjectName)(name.toLowerCase());
32
+ const url = `${BASE}/${encoded}/messages/${encodeURIComponent(no)}?_action=UNLOCK_ALL`;
33
+ return connection.makeAdtRequest({
34
+ url,
35
+ method: 'POST',
36
+ timeout: (0, timeouts_1.getTimeout)('default'),
37
+ data: `[${no}]`,
38
+ });
39
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Message class update operations
3
+ *
4
+ * Uses read-modify-write pattern: GET current XML → apply description override
5
+ * → rebuild full XML (messages preserved) → PUT with lock handle.
6
+ */
7
+ import type { IAbapConnection, IAdtResponse } from '@mcp-abap-adt/interfaces';
8
+ /**
9
+ * Update a message class description.
10
+ * Reads the current XML first to preserve all existing messages and attributes,
11
+ * then rebuilds the full XML with the description override and PUTs it back.
12
+ *
13
+ * NOTE: Caller must enable stateful session and hold a valid lockHandle.
14
+ */
15
+ export declare function updateMessageClass(connection: IAbapConnection, name: string, lockHandle: string, description: string | undefined): Promise<IAdtResponse>;
16
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/core/messageClass/update.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAS9E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,EAC3B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAAC,YAAY,CAAC,CAyBvB"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * Message class update operations
4
+ *
5
+ * Uses read-modify-write pattern: GET current XML → apply description override
6
+ * → rebuild full XML (messages preserved) → PUT with lock handle.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.updateMessageClass = updateMessageClass;
10
+ const contentTypes_1 = require("../../constants/contentTypes");
11
+ const internalUtils_1 = require("../../utils/internalUtils");
12
+ const timeouts_1 = require("../../utils/timeouts");
13
+ const read_1 = require("./read");
14
+ const xml_1 = require("./xml");
15
+ const BASE = '/sap/bc/adt/messageclass';
16
+ /**
17
+ * Update a message class description.
18
+ * Reads the current XML first to preserve all existing messages and attributes,
19
+ * then rebuilds the full XML with the description override and PUTs it back.
20
+ *
21
+ * NOTE: Caller must enable stateful session and hold a valid lockHandle.
22
+ */
23
+ async function updateMessageClass(connection, name, lockHandle, description) {
24
+ // 1. Read current state to preserve existing messages and all SAP-managed attrs
25
+ const currentResponse = await (0, read_1.getMessageClassSource)(connection, name);
26
+ const current = (0, xml_1.parseMessageClass)(String(currentResponse.data));
27
+ // 2. Apply only the description override; everything else is preserved
28
+ const updated = {
29
+ ...current,
30
+ ...(description !== undefined ? { description } : {}),
31
+ };
32
+ // 3. Rebuild full XML (round-trip preserving rawAttrs)
33
+ const xmlBody = (0, xml_1.buildMessageClassXml)(updated);
34
+ // 4. PUT with lock handle
35
+ const encoded = (0, internalUtils_1.encodeSapObjectName)(name.toLowerCase());
36
+ const url = `${BASE}/${encoded}?lockHandle=${encodeURIComponent(lockHandle)}`;
37
+ return connection.makeAdtRequest({
38
+ url,
39
+ method: 'PUT',
40
+ timeout: (0, timeouts_1.getTimeout)('default'),
41
+ data: xmlBody,
42
+ headers: { 'Content-Type': contentTypes_1.MESSAGE_CLASS_UPDATE_CONTENT_TYPE },
43
+ });
44
+ }
@@ -0,0 +1,24 @@
1
+ export interface IParsedMessage {
2
+ msgno: string;
3
+ msgtext: string;
4
+ selfExplanatory?: boolean;
5
+ description?: string;
6
+ rawAttrs?: Record<string, string>;
7
+ }
8
+ export interface IParsedMessageClass {
9
+ name: string;
10
+ description?: string;
11
+ language?: string;
12
+ masterLanguage?: string;
13
+ masterSystem?: string;
14
+ responsible?: string;
15
+ packageName?: string;
16
+ messages: IParsedMessage[];
17
+ rawAttrs?: Record<string, string>;
18
+ }
19
+ export declare function parseMessageClass(xml: string): IParsedMessageClass;
20
+ export declare function buildMessageClassXml(cls: IParsedMessageClass, opts?: {
21
+ messageLockHandles?: Record<string, string>;
22
+ deletedMsgnos?: string[];
23
+ }): string;
24
+ //# sourceMappingURL=xml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../../../src/core/messageClass/xml.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAsBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CA8BlE;AAsBD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,mBAAmB,EACxB,IAAI,CAAC,EAAE;IACL,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,GACA,MAAM,CAqCR"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseMessageClass = parseMessageClass;
4
+ exports.buildMessageClassXml = buildMessageClassXml;
5
+ const fast_xml_parser_1 = require("fast-xml-parser");
6
+ const parser = new fast_xml_parser_1.XMLParser({
7
+ ignoreAttributes: false,
8
+ attributeNamePrefix: '@_',
9
+ parseAttributeValue: false,
10
+ parseTagValue: false,
11
+ });
12
+ // Collect attributes, dropping ONLY the namespace declarations the builder
13
+ // re-emits from its own template (xmlns:mc, xmlns:adtcore) — keeping those would
14
+ // duplicate them and produce invalid XML. Any OTHER xmlns:* (an unknown/future
15
+ // prefix SAP may add, e.g. xmlns:foo) MUST be preserved so its prefixed
16
+ // attributes (foo:bar) stay bound on round-trip.
17
+ const TEMPLATE_NS = new Set(['@_xmlns:mc', '@_xmlns:adtcore']);
18
+ const A = (o) => {
19
+ const out = {};
20
+ for (const [k, v] of Object.entries(o))
21
+ if (k.startsWith('@_') && !TEMPLATE_NS.has(k))
22
+ out[k.slice(2)] = String(v);
23
+ return out;
24
+ };
25
+ function parseMessageClass(xml) {
26
+ const root = parser.parse(xml);
27
+ const mc = root['mc:messageClass'] ?? root.messageClass ?? {};
28
+ const attrs = A(mc);
29
+ const pkgRef = mc['adtcore:packageRef'] ?? mc.packageRef ?? {};
30
+ const rawMsgs = mc['mc:messages'] ?? mc.messages;
31
+ const list = Array.isArray(rawMsgs) ? rawMsgs : rawMsgs ? [rawMsgs] : [];
32
+ const messages = list.map((m) => {
33
+ const ma = A(m);
34
+ return {
35
+ msgno: ma['mc:msgno'] ?? '',
36
+ msgtext: ma['mc:msgtext'] ?? '',
37
+ selfExplanatory: ma['mc:selfexplainatory']
38
+ ? ma['mc:selfexplainatory'] === 'true'
39
+ : undefined,
40
+ description: ma['adtcore:description'] || undefined,
41
+ rawAttrs: ma,
42
+ };
43
+ });
44
+ return {
45
+ name: attrs['adtcore:name'] ?? '',
46
+ description: attrs['adtcore:description'] || undefined,
47
+ language: attrs['adtcore:language'] || undefined,
48
+ masterLanguage: attrs['adtcore:masterLanguage'] || undefined,
49
+ masterSystem: attrs['adtcore:masterSystem'] || undefined,
50
+ responsible: attrs['adtcore:responsible'] || undefined,
51
+ packageName: A(pkgRef)['adtcore:name'] || undefined,
52
+ messages,
53
+ rawAttrs: attrs,
54
+ };
55
+ }
56
+ const esc = (s) => s
57
+ .replace(/&/g, '&amp;')
58
+ .replace(/</g, '&lt;')
59
+ .replace(/>/g, '&gt;')
60
+ .replace(/"/g, '&quot;');
61
+ /** Merge rawAttrs with named-field overrides into an attribute string. */
62
+ function attrString(raw, overrides) {
63
+ const merged = { ...(raw ?? {}) };
64
+ for (const [k, v] of Object.entries(overrides))
65
+ if (v !== undefined)
66
+ merged[k] = v;
67
+ return Object.entries(merged)
68
+ .map(([k, v]) => `${k}="${esc(v)}"`)
69
+ .join(' ');
70
+ }
71
+ function buildMessageClassXml(cls, opts) {
72
+ const locks = opts?.messageLockHandles ?? {};
73
+ const deleted = new Set(opts?.deletedMsgnos ?? []);
74
+ const rootAttrs = attrString(cls.rawAttrs, {
75
+ 'adtcore:name': cls.name,
76
+ 'adtcore:description': cls.description,
77
+ 'adtcore:language': cls.language,
78
+ 'adtcore:masterLanguage': cls.masterLanguage,
79
+ 'adtcore:masterSystem': cls.masterSystem,
80
+ 'adtcore:responsible': cls.responsible,
81
+ 'adtcore:type': 'MSAG/N',
82
+ });
83
+ const pkg = cls.packageName
84
+ ? `<adtcore:packageRef adtcore:name="${esc(cls.packageName)}"/>`
85
+ : '';
86
+ const msgs = cls.messages
87
+ .map((m) => {
88
+ const attrs = attrString(m.rawAttrs, {
89
+ 'mc:msgno': m.msgno,
90
+ 'mc:msgtext': m.msgtext,
91
+ 'mc:selfexplainatory': m.selfExplanatory === undefined
92
+ ? undefined
93
+ : String(m.selfExplanatory),
94
+ 'adtcore:description': m.description,
95
+ 'mc:lockhandle': locks[m.msgno],
96
+ });
97
+ // Messages flagged for deletion are emitted as <mc:deletedmessages> carrying
98
+ // their lock handle; SAP uses this element to identify and remove them on PUT.
99
+ // All other messages stay as <mc:messages> so they are preserved (upserted).
100
+ if (deleted.has(m.msgno)) {
101
+ return `<mc:deletedmessages ${attrs}/>`;
102
+ }
103
+ return `<mc:messages ${attrs}/>`;
104
+ })
105
+ .join('');
106
+ return `<?xml version="1.0" encoding="UTF-8"?><mc:messageClass xmlns:mc="http://www.sap.com/adt/MessageClass" xmlns:adtcore="http://www.sap.com/adt/core" ${rootAttrs}>${pkg}${msgs}</mc:messageClass>`;
107
+ }
@@ -0,0 +1,3 @@
1
+ /** Throw a typed "operation not supported for this object type" error. */
2
+ export declare function throwUnsupportedOperation(operation: string, detail?: string): never;
3
+ //# sourceMappingURL=unsupported.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported.d.ts","sourceRoot":"","sources":["../../../src/core/shared/unsupported.ts"],"names":[],"mappings":"AAKA,0EAA0E;AAC1E,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,KAAK,CAMP"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.throwUnsupportedOperation = throwUnsupportedOperation;
4
+ const interfaces_1 = require("@mcp-abap-adt/interfaces");
5
+ /** Throw a typed "operation not supported for this object type" error. */
6
+ function throwUnsupportedOperation(operation, detail) {
7
+ const e = new interfaces_1.AdtOperationError(`Operation "${operation}" is not supported${detail ? ` for ${detail}` : ''}`);
8
+ e.code = interfaces_1.AdtObjectErrorCodes.UNSUPPORTED_OPERATION;
9
+ throw e;
10
+ }
@@ -25,6 +25,8 @@ export type { AdtFunctionGroupType, IFunctionGroupConfig, IFunctionGroupState, }
25
25
  export type { IFunctionIncludeConfig, IFunctionIncludeState, } from './core/functionInclude';
26
26
  export type { AdtFunctionModuleType, IFunctionModuleConfig, IFunctionModuleState, } from './core/functionModule';
27
27
  export type { AdtInterfaceType, IInterfaceConfig, IInterfaceState, } from './core/interface';
28
+ export type { AdtMessageClassMessageType, AdtMessageClassType, IMessageClassConfig, IMessageClassMessageConfig, IMessageClassMessageState, IMessageClassState, } from './core/messageClass';
29
+ export { AdtMessageClass, AdtMessageClassMessage } from './core/messageClass';
28
30
  export type { AdtMetadataExtensionType, IMetadataExtensionConfig, IMetadataExtensionCreateParams, IMetadataExtensionState, IMetadataExtensionValidationParams, } from './core/metadataExtension';
29
31
  export type { AdtPackageType, ICreatePackageParams, IPackageConfig, IPackageState, } from './core/package';
30
32
  export type { AdtProgramType, IProgramConfig, IProgramState, } from './core/program';
@@ -1 +1 @@
1
- {"version":3,"file":"index.core.d.ts","sourceRoot":"","sources":["../src/index.core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.core.d.ts","sourceRoot":"","sources":["../src/index.core.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * Ambiguous utils (discoveryEndpoints, systemInfo) are placed here per the "ambiguous → core" rule.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.resolveContentTypes = exports.isModernAdtSystem = exports.getSystemInformation = exports.isEndpointInDiscovery = exports.fetchDiscoveryEndpoints = exports.AdtContentTypesModern = exports.AdtContentTypesBase = exports.SERVICE_BINDING_VARIANT_MAP = exports.resolveBindingVariant = exports.AdtServiceBinding = exports.AdtService = exports.AdtScalarFunctionImplementation = exports.AdtScalarFunction = exports.AdtAppendStructure = exports.createAdtClient = exports.AdtClientLegacy = exports.AdtClient = void 0;
9
+ exports.resolveContentTypes = exports.isModernAdtSystem = exports.getSystemInformation = exports.isEndpointInDiscovery = exports.fetchDiscoveryEndpoints = exports.AdtContentTypesModern = exports.AdtContentTypesBase = exports.SERVICE_BINDING_VARIANT_MAP = exports.resolveBindingVariant = exports.AdtServiceBinding = exports.AdtService = exports.AdtScalarFunctionImplementation = exports.AdtScalarFunction = exports.AdtMessageClassMessage = exports.AdtMessageClass = exports.AdtAppendStructure = exports.createAdtClient = exports.AdtClientLegacy = exports.AdtClient = void 0;
10
10
  var AdtClient_1 = require("./clients/AdtClient");
11
11
  Object.defineProperty(exports, "AdtClient", { enumerable: true, get: function () { return AdtClient_1.AdtClient; } });
12
12
  var AdtClientLegacy_1 = require("./clients/AdtClientLegacy");
@@ -15,6 +15,9 @@ var createAdtClient_1 = require("./clients/createAdtClient");
15
15
  Object.defineProperty(exports, "createAdtClient", { enumerable: true, get: function () { return createAdtClient_1.createAdtClient; } });
16
16
  var appendStructure_1 = require("./core/appendStructure");
17
17
  Object.defineProperty(exports, "AdtAppendStructure", { enumerable: true, get: function () { return appendStructure_1.AdtAppendStructure; } });
18
+ var messageClass_1 = require("./core/messageClass");
19
+ Object.defineProperty(exports, "AdtMessageClass", { enumerable: true, get: function () { return messageClass_1.AdtMessageClass; } });
20
+ Object.defineProperty(exports, "AdtMessageClassMessage", { enumerable: true, get: function () { return messageClass_1.AdtMessageClassMessage; } });
18
21
  var scalarFunction_1 = require("./core/scalarFunction");
19
22
  Object.defineProperty(exports, "AdtScalarFunction", { enumerable: true, get: function () { return scalarFunction_1.AdtScalarFunction; } });
20
23
  var scalarFunctionImplementation_1 = require("./core/scalarFunctionImplementation");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/adt-clients",
3
- "version": "7.2.0",
3
+ "version": "7.3.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",
@@ -113,10 +113,10 @@
113
113
  "node": ">=18.0.0"
114
114
  },
115
115
  "dependencies": {
116
- "@mcp-abap-adt/interfaces": "^9.1.0",
116
+ "@mcp-abap-adt/interfaces": "^9.2.0",
117
117
  "@mcp-abap-adt/logger": "^0.1.3",
118
- "axios": "^1.13.6",
119
- "fast-xml-parser": "^5.4.1"
118
+ "axios": "^1.18.1",
119
+ "fast-xml-parser": "^5.9.3"
120
120
  },
121
121
  "devDependencies": {
122
122
  "@biomejs/biome": "^2.4.4",