@mcp-abap-adt/adt-backup 0.1.1 → 0.1.2

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 (40) hide show
  1. package/README.md +32 -0
  2. package/dist/lib/backup/backupObject.d.ts.map +1 -1
  3. package/dist/lib/backup/backupObject.js +14 -0
  4. package/dist/lib/backup/readMetadataXmlForType.d.ts.map +1 -1
  5. package/dist/lib/backup/readMetadataXmlForType.js +6 -0
  6. package/dist/lib/backup/readSourceText.d.ts.map +1 -1
  7. package/dist/lib/backup/readSourceText.js +6 -0
  8. package/dist/lib/cli/usage.d.ts.map +1 -1
  9. package/dist/lib/cli/usage.js +1 -0
  10. package/dist/lib/constants/typeOrder.d.ts.map +1 -1
  11. package/dist/lib/constants/typeOrder.js +1 -0
  12. package/dist/lib/dependencies/collectTreeDependencies.d.ts.map +1 -1
  13. package/dist/lib/dependencies/collectTreeDependencies.js +1 -0
  14. package/dist/lib/restore/restoreObject.d.ts.map +1 -1
  15. package/dist/lib/restore/restoreObject.js +13 -0
  16. package/dist/lib/restore/restoreTreeNode.d.ts.map +1 -1
  17. package/dist/lib/restore/restoreTreeNode.js +13 -0
  18. package/dist/lib/tree/buildConfigForNode.d.ts.map +1 -1
  19. package/dist/lib/tree/buildConfigForNode.js +8 -0
  20. package/dist/lib/tree/isRestoreImplemented.d.ts.map +1 -1
  21. package/dist/lib/tree/isRestoreImplemented.js +1 -0
  22. package/dist/lib/tree/mapAdtTypeToSupported.d.ts.map +1 -1
  23. package/dist/lib/tree/mapAdtTypeToSupported.js +3 -0
  24. package/dist/lib/tree/readPayloadForType.d.ts.map +1 -1
  25. package/dist/lib/tree/readPayloadForType.js +2 -1
  26. package/dist/lib/types.d.ts +1 -1
  27. package/dist/lib/types.d.ts.map +1 -1
  28. package/dist/lib/utils/applyConfigName.d.ts.map +1 -1
  29. package/dist/lib/utils/applyConfigName.js +3 -0
  30. package/dist/lib/utils/normalizeType.d.ts.map +1 -1
  31. package/dist/lib/utils/normalizeType.js +2 -0
  32. package/dist/lib/verify/findOtherType.d.ts.map +1 -1
  33. package/dist/lib/verify/findOtherType.js +1 -0
  34. package/dist/lib/xml/index.d.ts +1 -0
  35. package/dist/lib/xml/index.d.ts.map +1 -1
  36. package/dist/lib/xml/index.js +1 -0
  37. package/dist/lib/xml/parseServiceBindingConfig.d.ts +3 -0
  38. package/dist/lib/xml/parseServiceBindingConfig.d.ts.map +1 -0
  39. package/dist/lib/xml/parseServiceBindingConfig.js +70 -0
  40. package/package.json +10 -10
package/README.md CHANGED
@@ -36,6 +36,9 @@ Use `--no-activate-on-create` or `--no-activate-on-update` to skip activation fo
36
36
  # Extract / patch a single object payload
37
37
  adt-backup extract --input backup.yaml --object class:ZCL_TEST --out ZCL_TEST.abap
38
38
  adt-backup patch --input backup.yaml --object class:ZCL_TEST --file ZCL_TEST.abap
39
+
40
+ # Single object backup (Service Binding)
41
+ adt-backup backup --objects serviceBinding:Z_UI_SERVICE --output srvb_backup.yaml --destination TRIAL
39
42
  ```
40
43
 
41
44
  ## Help
@@ -59,6 +62,35 @@ Use `-v` for main stages, `-vv` for per-object details, and `-vvv` for ADT/conne
59
62
 
60
63
  See `docs/roadmap.yaml` for per-object backup/restore status and the plan for remaining types.
61
64
 
65
+ ## Supported Object Types
66
+
67
+ | Object Type | Backup | Restore | Payload |
68
+ |---|---|---|---|
69
+ | `package` | implemented | implemented | metadata-xml |
70
+ | `domain` | implemented | implemented | metadata-xml |
71
+ | `dataElement` | implemented | implemented | metadata-xml |
72
+ | `structure` | implemented | implemented | source |
73
+ | `table` | implemented | implemented | source |
74
+ | `tableType` | implemented | implemented | metadata-xml |
75
+ | `view` | implemented | implemented | source |
76
+ | `functionGroup` | implemented | implemented | metadata-xml |
77
+ | `functionModule` | implemented | implemented | source |
78
+ | `interface` | implemented | implemented | source |
79
+ | `class` | implemented | implemented | source |
80
+ | `program` | implemented | implemented | source |
81
+ | `serviceDefinition` | implemented | implemented | source |
82
+ | `serviceBinding` | implemented | implemented | metadata-xml |
83
+ | `metadataExtension` | implemented | implemented | source |
84
+ | `behaviorDefinition` | implemented | implemented | source |
85
+ | `behaviorImplementation` | implemented | implemented | source |
86
+ | `enhancement` | implemented | implemented | source |
87
+ | `unitTest` | not-implemented | not-implemented | n/a |
88
+ | `cdsUnitTest` | not-implemented | not-implemented | n/a |
89
+
90
+ ## Smoke Checklist
91
+
92
+ When your landscape is ready, use `docs/SMOKE_CHECKLIST.md` for a focused backup/restore/verify checklist.
93
+
62
94
  ## Changelog
63
95
 
64
96
  See [CHANGELOG.md](./CHANGELOG.md) for a history of changes.
@@ -1 +1 @@
1
- {"version":3,"file":"backupObject.d.ts","sourceRoot":"","sources":["../../../src/lib/backup/backupObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAGV,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAgB,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAavE,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,YAAY,CAAC,CAuNvB"}
1
+ {"version":3,"file":"backupObject.d.ts","sourceRoot":"","sources":["../../../src/lib/backup/backupObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAGV,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAgB,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAcvE,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,YAAY,CAAC,CA6OvB"}
@@ -9,6 +9,7 @@ const extractMetadata_1 = require("../xml/extractMetadata");
9
9
  const parseDataElementConfig_1 = require("../xml/parseDataElementConfig");
10
10
  const parseDomainConfig_1 = require("../xml/parseDomainConfig");
11
11
  const parsePackageConfig_1 = require("../xml/parsePackageConfig");
12
+ const parseServiceBindingConfig_1 = require("../xml/parseServiceBindingConfig");
12
13
  const readBasicMetadata_1 = require("./readBasicMetadata");
13
14
  const readMetadataXmlForType_1 = require("./readMetadataXmlForType");
14
15
  const readSourceText_1 = require("./readSourceText");
@@ -92,6 +93,19 @@ async function backupObject(client, spec) {
92
93
  source,
93
94
  };
94
95
  }
96
+ case 'serviceBinding': {
97
+ const metadataXml = await (0, readMetadataXmlForType_1.readMetadataXmlForType)(client, spec.type, spec.name);
98
+ if (!metadataXml) {
99
+ throw new Error(`Service binding not found: ${spec.name}`);
100
+ }
101
+ const config = (0, parseServiceBindingConfig_1.parseServiceBindingConfig)(metadataXml);
102
+ return {
103
+ id,
104
+ type: spec.type,
105
+ name: spec.name,
106
+ config: (0, applyConfigName_1.applyConfigName)(spec.type, spec.name, undefined, (0, toBackupConfig_1.toBackupConfig)(config)),
107
+ };
108
+ }
95
109
  case 'metadataExtension':
96
110
  case 'behaviorDefinition': {
97
111
  const metadataXml = await (0, readMetadataXmlForType_1.readMetadataXmlForType)(client, spec.type, spec.name);
@@ -1 +1 @@
1
- {"version":3,"file":"readMetadataXmlForType.d.ts","sourceRoot":"","sources":["../../../src/lib/backup/readMetadataXmlForType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA+F7B"}
1
+ {"version":3,"file":"readMetadataXmlForType.d.ts","sourceRoot":"","sources":["../../../src/lib/backup/readMetadataXmlForType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqG7B"}
@@ -78,6 +78,12 @@ async function readMetadataXmlForType(client, type, name, functionGroupName) {
78
78
  .readMetadata({ serviceDefinitionName: name });
79
79
  return (0, responseToText_1.responseToText)(state.metadataResult);
80
80
  }
81
+ case 'serviceBinding': {
82
+ const state = await client
83
+ .getServiceBinding()
84
+ .readMetadata({ bindingName: name });
85
+ return (0, responseToText_1.responseToText)(state.metadataResult);
86
+ }
81
87
  case 'metadataExtension': {
82
88
  const state = await client.getMetadataExtension().readMetadata({ name });
83
89
  return (0, responseToText_1.responseToText)(state.metadataResult);
@@ -1 +1 @@
1
- {"version":3,"file":"readSourceText.d.ts","sourceRoot":"","sources":["../../../src/lib/backup/readSourceText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiG7B"}
1
+ {"version":3,"file":"readSourceText.d.ts","sourceRoot":"","sources":["../../../src/lib/backup/readSourceText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuG7B"}
@@ -62,6 +62,12 @@ async function readSourceText(client, spec) {
62
62
  .read({ serviceDefinitionName: spec.name }, 'active');
63
63
  return (0, responseToText_1.responseToText)(state?.readResult);
64
64
  }
65
+ case 'serviceBinding': {
66
+ const state = await client
67
+ .getServiceBinding()
68
+ .read({ bindingName: spec.name }, 'active');
69
+ return (0, responseToText_1.responseToText)(state?.readResult);
70
+ }
65
71
  case 'metadataExtension': {
66
72
  const state = await client
67
73
  .getMetadataExtension()
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/lib/cli/usage.ts"],"names":[],"mappings":"AAyJA,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAwC9C"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/lib/cli/usage.ts"],"names":[],"mappings":"AAyJA,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAyC9C"}
@@ -181,6 +181,7 @@ function usage(command) {
181
181
  ' functionGroup:ZFG_TEST',
182
182
  ' functionModule:ZFG_TEST|ZFM_TEST',
183
183
  ' serviceDefinition:Z_I_SRV_DEF',
184
+ ' serviceBinding:Z_UI_SERVICE',
184
185
  ' metadataExtension:Z_I_SRV_EXT',
185
186
  ' behaviorDefinition:Z_I_BDEF',
186
187
  ].join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"typeOrder.d.ts","sourceRoot":"","sources":["../../../src/lib/constants/typeOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,eAAO,MAAM,SAAS,EAAE,aAAa,EAkBpC,CAAC"}
1
+ {"version":3,"file":"typeOrder.d.ts","sourceRoot":"","sources":["../../../src/lib/constants/typeOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,eAAO,MAAM,SAAS,EAAE,aAAa,EAmBpC,CAAC"}
@@ -15,6 +15,7 @@ exports.typeOrder = [
15
15
  'class',
16
16
  'program',
17
17
  'serviceDefinition',
18
+ 'serviceBinding',
18
19
  'metadataExtension',
19
20
  'behaviorDefinition',
20
21
  'behaviorImplementation',
@@ -1 +1 @@
1
- {"version":3,"file":"collectTreeDependencies.d.ts","sourceRoot":"","sources":["../../../src/lib/dependencies/collectTreeDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,KAAK,EAAE,cAAc,EAA6B,MAAM,UAAU,CAAC;AAkC1E,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Ff"}
1
+ {"version":3,"file":"collectTreeDependencies.d.ts","sourceRoot":"","sources":["../../../src/lib/dependencies/collectTreeDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,KAAK,EAAE,cAAc,EAA6B,MAAM,UAAU,CAAC;AAmC1E,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Ff"}
@@ -20,6 +20,7 @@ const WHERE_USED_TYPE_MAP = {
20
20
  functionGroup: 'FUGR/F',
21
21
  functionModule: 'FUGR/FF',
22
22
  serviceDefinition: 'SRVD/SRV',
23
+ serviceBinding: 'SRVB/SVB',
23
24
  metadataExtension: 'DDLX/EX',
24
25
  behaviorDefinition: 'BDEF/BDO',
25
26
  behaviorImplementation: 'BIMP/BIM',
@@ -1 +1 @@
1
- {"version":3,"file":"restoreObject.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAkBV,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM1D,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAwRf"}
1
+ {"version":3,"file":"restoreObject.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAmBV,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM1D,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAqSf"}
@@ -169,6 +169,19 @@ async function restoreObject(client, obj, mode, activate, transportRequest) {
169
169
  }
170
170
  return;
171
171
  }
172
+ case 'serviceBinding': {
173
+ if (mode !== 'update') {
174
+ await client
175
+ .getServiceBinding()
176
+ .create((0, asConfig_1.asConfig)(config), options);
177
+ }
178
+ if (mode !== 'create') {
179
+ await client
180
+ .getServiceBinding()
181
+ .update((0, asConfig_1.asConfig)(config));
182
+ }
183
+ return;
184
+ }
172
185
  case 'metadataExtension': {
173
186
  if (mode !== 'update') {
174
187
  await client
@@ -1 +1 @@
1
- {"version":3,"file":"restoreTreeNode.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreTreeNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAkBV,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5D,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,gBAAgB,CAAC,EAAE,MAAM,EACzB,yBAAyB,CAAC,EAAE,MAAM,EAClC,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAqUf"}
1
+ {"version":3,"file":"restoreTreeNode.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreTreeNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAmBV,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5D,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,gBAAgB,CAAC,EAAE,MAAM,EACzB,yBAAyB,CAAC,EAAE,MAAM,EAClC,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAkVf"}
@@ -194,6 +194,19 @@ async function restoreTreeNode(client, node, mode, activate, transportRequest, s
194
194
  }
195
195
  return;
196
196
  }
197
+ case 'serviceBinding': {
198
+ if (mode !== 'update') {
199
+ await client
200
+ .getServiceBinding()
201
+ .create((0, asConfig_1.asConfig)(config), options);
202
+ }
203
+ if (mode !== 'create') {
204
+ await client
205
+ .getServiceBinding()
206
+ .update((0, asConfig_1.asConfig)(config));
207
+ }
208
+ return;
209
+ }
197
210
  case 'metadataExtension': {
198
211
  if (mode !== 'update') {
199
212
  await client
@@ -1 +1 @@
1
- {"version":3,"file":"buildConfigForNode.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/buildConfigForNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY5D,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAyInC"}
1
+ {"version":3,"file":"buildConfigForNode.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/buildConfigForNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAa5D,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAqJnC"}
@@ -10,6 +10,7 @@ const parseDataElementConfig_1 = require("../xml/parseDataElementConfig");
10
10
  const parseDomainConfig_1 = require("../xml/parseDomainConfig");
11
11
  const parseEnhancementConfig_1 = require("../xml/parseEnhancementConfig");
12
12
  const parsePackageConfig_1 = require("../xml/parsePackageConfig");
13
+ const parseServiceBindingConfig_1 = require("../xml/parseServiceBindingConfig");
13
14
  const parseTableTypeConfig_1 = require("../xml/parseTableTypeConfig");
14
15
  async function buildConfigForNode(type, name, functionGroupName, metadataXml) {
15
16
  switch (type) {
@@ -74,6 +75,13 @@ async function buildConfigForNode(type, name, functionGroupName, metadataXml) {
74
75
  description,
75
76
  });
76
77
  }
78
+ case 'serviceBinding': {
79
+ if (!metadataXml) {
80
+ return undefined;
81
+ }
82
+ const config = (0, parseServiceBindingConfig_1.parseServiceBindingConfig)(metadataXml);
83
+ return (0, applyConfigName_1.applyConfigName)(type, name, functionGroupName, (0, toBackupConfig_1.toBackupConfig)(config));
84
+ }
77
85
  case 'class': {
78
86
  if (!metadataXml) {
79
87
  return (0, applyConfigName_1.applyConfigName)(type, name, functionGroupName, {});
@@ -1 +1 @@
1
- {"version":3,"file":"isRestoreImplemented.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/isRestoreImplemented.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAuBlE"}
1
+ {"version":3,"file":"isRestoreImplemented.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/isRestoreImplemented.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAwBlE"}
@@ -16,6 +16,7 @@ function isRestoreImplemented(type) {
16
16
  case 'class':
17
17
  case 'program':
18
18
  case 'serviceDefinition':
19
+ case 'serviceBinding':
19
20
  case 'metadataExtension':
20
21
  case 'behaviorDefinition':
21
22
  case 'behaviorImplementation':
@@ -1 +1 @@
1
- {"version":3,"file":"mapAdtTypeToSupported.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/mapAdtTypeToSupported.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,GAAG,SAAS,CA4D3B"}
1
+ {"version":3,"file":"mapAdtTypeToSupported.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/mapAdtTypeToSupported.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,GAAG,SAAS,CA8D3B"}
@@ -27,6 +27,7 @@ function mapAdtTypeToSupported(adtType) {
27
27
  'FUGR/F': 'functionGroup',
28
28
  FUGR: 'functionGroup',
29
29
  'SRVD/SRV': 'serviceDefinition',
30
+ 'SRVB/SVB': 'serviceBinding',
30
31
  'BDEF/BDO': 'behaviorDefinition',
31
32
  'BIMP/BIM': 'behaviorImplementation',
32
33
  'BIMP/BI': 'behaviorImplementation',
@@ -49,6 +50,8 @@ function mapAdtTypeToSupported(adtType) {
49
50
  return 'metadataExtension';
50
51
  if (normalized.startsWith('SRVD/'))
51
52
  return 'serviceDefinition';
53
+ if (normalized.startsWith('SRVB/'))
54
+ return 'serviceBinding';
52
55
  if (normalized.startsWith('DOMA/'))
53
56
  return 'domain';
54
57
  if (normalized.startsWith('DTEL/'))
@@ -1 +1 @@
1
- {"version":3,"file":"readPayloadForType.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/readPayloadForType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,CAAA;CAAE,CAAC,CAqCtE"}
1
+ {"version":3,"file":"readPayloadForType.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/readPayloadForType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,CAAA;CAAE,CAAC,CAsCtE"}
@@ -28,7 +28,8 @@ async function readPayloadForType(client, type, name, functionGroupName) {
28
28
  case 'domain':
29
29
  case 'dataElement':
30
30
  case 'package':
31
- case 'functionGroup': {
31
+ case 'functionGroup':
32
+ case 'serviceBinding': {
32
33
  const xml = await (0, readMetadataXmlForType_1.readMetadataXmlForType)(client, type, name, functionGroupName);
33
34
  return { payload: xml, format: 'xml' };
34
35
  }
@@ -1,4 +1,4 @@
1
- export type SupportedType = 'package' | 'domain' | 'dataElement' | 'structure' | 'table' | 'tableType' | 'view' | 'class' | 'interface' | 'program' | 'functionGroup' | 'functionModule' | 'serviceDefinition' | 'metadataExtension' | 'behaviorDefinition' | 'behaviorImplementation' | 'enhancement' | 'unitTest' | 'cdsUnitTest';
1
+ export type SupportedType = 'package' | 'domain' | 'dataElement' | 'structure' | 'table' | 'tableType' | 'view' | 'class' | 'interface' | 'program' | 'functionGroup' | 'functionModule' | 'serviceDefinition' | 'serviceBinding' | 'metadataExtension' | 'behaviorDefinition' | 'behaviorImplementation' | 'enhancement' | 'unitTest' | 'cdsUnitTest';
2
2
  export type RestoreMode = 'create' | 'update' | 'upsert';
3
3
  export type BackupConfig = Record<string, unknown>;
4
4
  export interface ObjectSpec {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,QAAQ,GACR,aAAa,GACb,WAAW,GACX,OAAO,GACP,WAAW,GACX,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,aAAa,GACb,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,IAAI,GAAG,iBAAiB,CAAC;IACzC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,OAAO,EAAE,GACT,MAAM,GACN,MAAM,GACN,IAAI,CAAC;AACT,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,QAAQ,GACR,aAAa,GACb,WAAW,GACX,OAAO,GACP,WAAW,GACX,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,aAAa,GACb,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,IAAI,GAAG,iBAAiB,CAAC;IACzC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,OAAO,EAAE,GACT,MAAM,GACN,MAAM,GACN,IAAI,CAAC;AACT,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"applyConfigName.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/applyConfigName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,EAC1B,MAAM,CAAC,EAAE,YAAY,GACpB,YAAY,CA+Dd"}
1
+ {"version":3,"file":"applyConfigName.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/applyConfigName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,EAC1B,MAAM,CAAC,EAAE,YAAY,GACpB,YAAY,CAkEd"}
@@ -44,6 +44,9 @@ function applyConfigName(type, name, functionGroupName, config) {
44
44
  case 'serviceDefinition':
45
45
  finalConfig.serviceDefinitionName = name;
46
46
  break;
47
+ case 'serviceBinding':
48
+ finalConfig.bindingName = name;
49
+ break;
47
50
  case 'metadataExtension':
48
51
  finalConfig.name = name;
49
52
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeType.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/normalizeType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAuC5D"}
1
+ {"version":3,"file":"normalizeType.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/normalizeType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAyC5D"}
@@ -23,6 +23,8 @@ function normalizeType(rawType) {
23
23
  function_module: 'functionModule',
24
24
  servicedefinition: 'serviceDefinition',
25
25
  service_definition: 'serviceDefinition',
26
+ servicebinding: 'serviceBinding',
27
+ service_binding: 'serviceBinding',
26
28
  metadataextension: 'metadataExtension',
27
29
  metadata_extension: 'metadataExtension',
28
30
  behaviordefinition: 'behaviorDefinition',
@@ -1 +1 @@
1
- {"version":3,"file":"findOtherType.d.ts","sourceRoot":"","sources":["../../../src/lib/verify/findOtherType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAuB9C,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,aAAa,EAC3B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAepC"}
1
+ {"version":3,"file":"findOtherType.d.ts","sourceRoot":"","sources":["../../../src/lib/verify/findOtherType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAwB9C,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,aAAa,EAC3B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAepC"}
@@ -15,6 +15,7 @@ const supportedTypes = [
15
15
  'program',
16
16
  'functionGroup',
17
17
  'serviceDefinition',
18
+ 'serviceBinding',
18
19
  'metadataExtension',
19
20
  'behaviorDefinition',
20
21
  'behaviorImplementation',
@@ -8,6 +8,7 @@ export * from './getNodeAttribute';
8
8
  export * from './parseDataElementConfig';
9
9
  export * from './parseDomainConfig';
10
10
  export * from './parsePackageConfig';
11
+ export * from './parseServiceBindingConfig';
11
12
  export * from './toBoolean';
12
13
  export * from './toNumber';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -24,5 +24,6 @@ __exportStar(require("./getNodeAttribute"), exports);
24
24
  __exportStar(require("./parseDataElementConfig"), exports);
25
25
  __exportStar(require("./parseDomainConfig"), exports);
26
26
  __exportStar(require("./parsePackageConfig"), exports);
27
+ __exportStar(require("./parseServiceBindingConfig"), exports);
27
28
  __exportStar(require("./toBoolean"), exports);
28
29
  __exportStar(require("./toNumber"), exports);
@@ -0,0 +1,3 @@
1
+ import type { IServiceBindingConfig } from '@mcp-abap-adt/adt-clients';
2
+ export declare function parseServiceBindingConfig(xml: string): Partial<IServiceBindingConfig>;
3
+ //# sourceMappingURL=parseServiceBindingConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseServiceBindingConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/parseServiceBindingConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAOvE,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,qBAAqB,CAAC,CAsFhC"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseServiceBindingConfig = parseServiceBindingConfig;
4
+ const xmlParser_1 = require("../constants/xmlParser");
5
+ const findAttribute_1 = require("./findAttribute");
6
+ const findNode_1 = require("./findNode");
7
+ const getNodeAttribute_1 = require("./getNodeAttribute");
8
+ function parseServiceBindingConfig(xml) {
9
+ const parsed = xmlParser_1.xmlParser.parse(xml);
10
+ const root = (0, findNode_1.findNode)(parsed, ['srvb:serviceBinding', 'serviceBinding']) ?? parsed;
11
+ const bindingName = (0, getNodeAttribute_1.getNodeAttribute)(root, 'adtcore:name') ||
12
+ (0, findAttribute_1.findAttribute)(root, 'adtcore:name');
13
+ const description = (0, getNodeAttribute_1.getNodeAttribute)(root, 'adtcore:description') ||
14
+ (0, findAttribute_1.findAttribute)(root, 'adtcore:description');
15
+ const responsible = (0, getNodeAttribute_1.getNodeAttribute)(root, 'adtcore:responsible') ||
16
+ (0, findAttribute_1.findAttribute)(root, 'adtcore:responsible');
17
+ const masterSystem = (0, getNodeAttribute_1.getNodeAttribute)(root, 'adtcore:masterSystem') ||
18
+ (0, findAttribute_1.findAttribute)(root, 'adtcore:masterSystem');
19
+ const masterLanguage = (0, getNodeAttribute_1.getNodeAttribute)(root, 'adtcore:masterLanguage') ||
20
+ (0, findAttribute_1.findAttribute)(root, 'adtcore:masterLanguage') ||
21
+ (0, getNodeAttribute_1.getNodeAttribute)(root, 'adtcore:language') ||
22
+ (0, findAttribute_1.findAttribute)(root, 'adtcore:language');
23
+ const packageRef = (0, findNode_1.findNode)(root, ['adtcore:packageRef', 'packageRef']);
24
+ const packageName = (0, getNodeAttribute_1.getNodeAttribute)(packageRef, 'adtcore:name') ||
25
+ (0, findAttribute_1.findAttribute)(packageRef, 'adtcore:name');
26
+ const services = (0, findNode_1.findNode)(root, ['srvb:services', 'services']);
27
+ const serviceName = (0, getNodeAttribute_1.getNodeAttribute)(services, 'srvb:name') ||
28
+ (0, findAttribute_1.findAttribute)(services, 'srvb:name');
29
+ const content = (0, findNode_1.findNode)(services, ['srvb:content', 'content']);
30
+ const serviceVersion = (0, getNodeAttribute_1.getNodeAttribute)(content, 'srvb:version') ||
31
+ (0, findAttribute_1.findAttribute)(content, 'srvb:version');
32
+ const serviceDefinition = (0, findNode_1.findNode)(content, [
33
+ 'srvb:serviceDefinition',
34
+ 'serviceDefinition',
35
+ ]);
36
+ const serviceDefinitionName = (0, getNodeAttribute_1.getNodeAttribute)(serviceDefinition, 'adtcore:name') ||
37
+ (0, findAttribute_1.findAttribute)(serviceDefinition, 'adtcore:name');
38
+ const binding = (0, findNode_1.findNode)(root, ['srvb:binding', 'binding']);
39
+ const bindingType = (0, getNodeAttribute_1.getNodeAttribute)(binding, 'srvb:type') ||
40
+ (0, findAttribute_1.findAttribute)(binding, 'srvb:type');
41
+ const bindingVersion = (0, getNodeAttribute_1.getNodeAttribute)(binding, 'srvb:version') ||
42
+ (0, findAttribute_1.findAttribute)(binding, 'srvb:version');
43
+ const bindingCategory = (0, getNodeAttribute_1.getNodeAttribute)(binding, 'srvb:category') ||
44
+ (0, findAttribute_1.findAttribute)(binding, 'srvb:category');
45
+ // Keep publication state unchanged by default during restore updates.
46
+ const desiredPublicationState = 'unchanged';
47
+ const normalizedBindingType = bindingType?.toUpperCase();
48
+ const normalizedBindingVersion = bindingVersion?.toUpperCase();
49
+ const serviceType = normalizedBindingType === 'ODATA'
50
+ ? normalizedBindingVersion === 'V2'
51
+ ? 'odatav2'
52
+ : 'odatav4'
53
+ : undefined;
54
+ return {
55
+ bindingName,
56
+ packageName,
57
+ description,
58
+ serviceDefinitionName,
59
+ serviceName,
60
+ serviceVersion,
61
+ bindingType: normalizedBindingType,
62
+ bindingVersion,
63
+ bindingCategory,
64
+ masterLanguage,
65
+ masterSystem,
66
+ responsible,
67
+ desiredPublicationState,
68
+ serviceType,
69
+ };
70
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/adt-backup",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "ADT backup CLI for SAP ABAP objects (recursive package backups and restores)",
5
5
  "main": "dist/bin/adt-backup.js",
6
6
  "types": "dist/bin/adt-backup.d.ts",
@@ -48,17 +48,17 @@
48
48
  "node": ">=18.0.0"
49
49
  },
50
50
  "dependencies": {
51
- "@mcp-abap-adt/adt-clients": "0.3.14",
52
- "@mcp-abap-adt/auth-broker": "^0.2.17",
53
- "@mcp-abap-adt/auth-providers": "^0.2.10",
54
- "@mcp-abap-adt/auth-stores": "^0.2.10",
55
- "@mcp-abap-adt/connection": "^0.2.8",
56
- "fast-xml-parser": "^5.3.3",
57
- "yaml": "^2.3.4"
51
+ "@mcp-abap-adt/adt-clients": "0.3.22",
52
+ "@mcp-abap-adt/auth-broker": "^1.0.5",
53
+ "@mcp-abap-adt/auth-providers": "^1.0.5",
54
+ "@mcp-abap-adt/auth-stores": "^1.0.2",
55
+ "@mcp-abap-adt/connection": "^1.1.0",
56
+ "fast-xml-parser": "^5.3.7",
57
+ "yaml": "^2.8.2"
58
58
  },
59
59
  "devDependencies": {
60
- "@biomejs/biome": "^2.3.10",
61
- "@types/node": "^24.2.1",
60
+ "@biomejs/biome": "^2.4.4",
61
+ "@types/node": "^25.3.0",
62
62
  "typescript": "^5.9.2"
63
63
  }
64
64
  }