@mcp-abap-adt/adt-backup 0.1.0 → 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 (71) 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 +2 -1
  14. package/dist/lib/restore/deleteBackupObjects.d.ts.map +1 -1
  15. package/dist/lib/restore/deleteBackupObjects.js +2 -4
  16. package/dist/lib/restore/restoreObject.d.ts.map +1 -1
  17. package/dist/lib/restore/restoreObject.js +13 -0
  18. package/dist/lib/restore/restoreTreeNode.d.ts.map +1 -1
  19. package/dist/lib/restore/restoreTreeNode.js +18 -4
  20. package/dist/lib/tree/buildConfigForNode.d.ts.map +1 -1
  21. package/dist/lib/tree/buildConfigForNode.js +8 -0
  22. package/dist/lib/tree/isRestoreImplemented.d.ts.map +1 -1
  23. package/dist/lib/tree/isRestoreImplemented.js +1 -0
  24. package/dist/lib/tree/mapAdtTypeToSupported.d.ts.map +1 -1
  25. package/dist/lib/tree/mapAdtTypeToSupported.js +3 -0
  26. package/dist/lib/tree/readPayloadForType.d.ts.map +1 -1
  27. package/dist/lib/tree/readPayloadForType.js +2 -1
  28. package/dist/lib/types.d.ts +1 -1
  29. package/dist/lib/types.d.ts.map +1 -1
  30. package/dist/lib/utils/applyConfigName.d.ts.map +1 -1
  31. package/dist/lib/utils/applyConfigName.js +3 -0
  32. package/dist/lib/utils/diffUnified.js +1 -1
  33. package/dist/lib/utils/index.d.ts +0 -1
  34. package/dist/lib/utils/index.d.ts.map +1 -1
  35. package/dist/lib/utils/index.js +0 -1
  36. package/dist/lib/utils/normalizeType.d.ts.map +1 -1
  37. package/dist/lib/utils/normalizeType.js +2 -0
  38. package/dist/lib/verify/findOtherType.d.ts.map +1 -1
  39. package/dist/lib/verify/findOtherType.js +1 -0
  40. package/dist/lib/verify/verifyObjectInSystem.d.ts.map +1 -1
  41. package/dist/lib/xml/index.d.ts +1 -6
  42. package/dist/lib/xml/index.d.ts.map +1 -1
  43. package/dist/lib/xml/index.js +1 -6
  44. package/dist/lib/xml/parseServiceBindingConfig.d.ts +3 -0
  45. package/dist/lib/xml/parseServiceBindingConfig.d.ts.map +1 -0
  46. package/dist/lib/xml/parseServiceBindingConfig.js +70 -0
  47. package/package.json +10 -10
  48. package/dist/lib/utils/asArray.d.ts +0 -2
  49. package/dist/lib/utils/asArray.d.ts.map +0 -1
  50. package/dist/lib/utils/asArray.js +0 -9
  51. package/dist/lib/utils/diffAttributes.d.ts +0 -17
  52. package/dist/lib/utils/diffAttributes.d.ts.map +0 -1
  53. package/dist/lib/utils/diffAttributes.js +0 -27
  54. package/dist/lib/xml/flattenXmlAttributes.d.ts +0 -2
  55. package/dist/lib/xml/flattenXmlAttributes.d.ts.map +0 -1
  56. package/dist/lib/xml/flattenXmlAttributes.js +0 -82
  57. package/dist/lib/xml/getNodeDescription.d.ts +0 -3
  58. package/dist/lib/xml/getNodeDescription.d.ts.map +0 -1
  59. package/dist/lib/xml/getNodeDescription.js +0 -12
  60. package/dist/lib/xml/getNodeName.d.ts +0 -3
  61. package/dist/lib/xml/getNodeName.d.ts.map +0 -1
  62. package/dist/lib/xml/getNodeName.js +0 -12
  63. package/dist/lib/xml/getNodeType.d.ts +0 -3
  64. package/dist/lib/xml/getNodeType.d.ts.map +0 -1
  65. package/dist/lib/xml/getNodeType.js +0 -12
  66. package/dist/lib/xml/isNodeObject.d.ts +0 -3
  67. package/dist/lib/xml/isNodeObject.d.ts.map +0 -1
  68. package/dist/lib/xml/isNodeObject.js +0 -12
  69. package/dist/lib/xml/readAttr.d.ts +0 -3
  70. package/dist/lib/xml/readAttr.d.ts.map +0 -1
  71. package/dist/lib/xml/readAttr.js +0 -16
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,CA6Ff"}
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',
@@ -93,7 +94,7 @@ async function collectTreeDependencies(client, root) {
93
94
  }
94
95
  }
95
96
  catch (error) {
96
- (0, logVerbose_1.logVerbose)(2, ` Error getting dependencies for ${objectName}: ${error.message}`);
97
+ (0, logVerbose_1.logVerbose)(2, `Warning: failed to collect dependencies for ${node.adtType}:${node.name}: ${error instanceof Error ? error.message : String(error)}`);
97
98
  }
98
99
  }
99
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deleteBackupObjects.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/deleteBackupObjects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAsBf"}
1
+ {"version":3,"file":"deleteBackupObjects.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/deleteBackupObjects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -8,12 +8,10 @@ async function deleteBackupObjects(client, backup, transportRequest) {
8
8
  return;
9
9
  }
10
10
  const checkResponse = await client.getUtils().checkDeletionGroup(targets);
11
- const messages = checkResponse.data?.messages || [];
11
+ const messages = (checkResponse.data?.messages || []);
12
12
  const errors = messages.filter((m) => m.severity === 'error' || m.severity === 'E');
13
13
  if (errors.length > 0) {
14
- const errorList = errors
15
- .map((e) => `${e.objName}: ${e.text}`)
16
- .join('\n');
14
+ const errorList = errors.map((e) => `${e.objName}: ${e.text}`).join('\n');
17
15
  throw new Error(`Deletion check failed before cleanup:\n${errorList}`);
18
16
  }
19
17
  await client
@@ -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,CAiUf"}
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
@@ -266,10 +279,11 @@ async function restoreTreeNode(client, node, mode, activate, transportRequest, s
266
279
  }
267
280
  }
268
281
  catch (error) {
269
- if (error.response?.data) {
270
- console.error(`Error restoring ${node.type}:${node.name}:`, typeof error.response.data === 'string'
271
- ? error.response.data
272
- : JSON.stringify(error.response.data, null, 2));
282
+ const err = error;
283
+ if (err.response?.data) {
284
+ console.error(`Error restoring ${node.type}:${node.name}:`, typeof err.response.data === 'string'
285
+ ? err.response.data
286
+ : JSON.stringify(err.response.data, null, 2));
273
287
  }
274
288
  throw error;
275
289
  }
@@ -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;
@@ -61,7 +61,7 @@ function backtrackEdits(oldLines, newLines, trace, offset) {
61
61
  }
62
62
  return edits.reverse();
63
63
  }
64
- function buildUnifiedHunks(oldLines, newLines, edits, context) {
64
+ function buildUnifiedHunks(_oldLines, _newLines, edits, context) {
65
65
  const hunks = [];
66
66
  let oldLine = 1;
67
67
  let newLine = 1;
@@ -1,5 +1,4 @@
1
1
  export * from './applyConfigName';
2
- export * from './asArray';
3
2
  export * from './asConfig';
4
3
  export * from './ensureDescription';
5
4
  export * from './formatObjectSpec';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -15,7 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./applyConfigName"), exports);
18
- __exportStar(require("./asArray"), exports);
19
18
  __exportStar(require("./asConfig"), exports);
20
19
  __exportStar(require("./ensureDescription"), exports);
21
20
  __exportStar(require("./formatObjectSpec"), exports);
@@ -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',
@@ -1 +1 @@
1
- {"version":3,"file":"verifyObjectInSystem.d.ts","sourceRoot":"","sources":["../../../src/lib/verify/verifyObjectInSystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAwB3C,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,UAAU,EAChB,eAAe,CAAC,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,EACvB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,cAAc,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GACzC,OAAO,CAAC,WAAW,CAAC,CA+HtB"}
1
+ {"version":3,"file":"verifyObjectInSystem.d.ts","sourceRoot":"","sources":["../../../src/lib/verify/verifyObjectInSystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAyB3C,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,UAAU,EAChB,eAAe,CAAC,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,EACvB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,cAAc,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GACzC,OAAO,CAAC,WAAW,CAAC,CA+HtB"}
@@ -3,17 +3,12 @@ export * from './findAttribute';
3
3
  export * from './findNode';
4
4
  export * from './findNodeValue';
5
5
  export * from './findPackageName';
6
- export * from './flattenXmlAttributes';
7
6
  export * from './getAttribute';
8
7
  export * from './getNodeAttribute';
9
- export * from './getNodeDescription';
10
- export * from './getNodeName';
11
- export * from './getNodeType';
12
- export * from './isNodeObject';
13
8
  export * from './parseDataElementConfig';
14
9
  export * from './parseDomainConfig';
15
10
  export * from './parsePackageConfig';
16
- export * from './readAttr';
11
+ export * from './parseServiceBindingConfig';
17
12
  export * from './toBoolean';
18
13
  export * from './toNumber';
19
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,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,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"}
@@ -19,16 +19,11 @@ __exportStar(require("./findAttribute"), exports);
19
19
  __exportStar(require("./findNode"), exports);
20
20
  __exportStar(require("./findNodeValue"), exports);
21
21
  __exportStar(require("./findPackageName"), exports);
22
- __exportStar(require("./flattenXmlAttributes"), exports);
23
22
  __exportStar(require("./getAttribute"), exports);
24
23
  __exportStar(require("./getNodeAttribute"), exports);
25
- __exportStar(require("./getNodeDescription"), exports);
26
- __exportStar(require("./getNodeName"), exports);
27
- __exportStar(require("./getNodeType"), exports);
28
- __exportStar(require("./isNodeObject"), exports);
29
24
  __exportStar(require("./parseDataElementConfig"), exports);
30
25
  __exportStar(require("./parseDomainConfig"), exports);
31
26
  __exportStar(require("./parsePackageConfig"), exports);
32
- __exportStar(require("./readAttr"), exports);
27
+ __exportStar(require("./parseServiceBindingConfig"), exports);
33
28
  __exportStar(require("./toBoolean"), exports);
34
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.0",
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
  }
@@ -1,2 +0,0 @@
1
- export declare function asArray<T>(value?: T | T[]): T[];
2
- //# sourceMappingURL=asArray.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asArray.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/asArray.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAK/C"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.asArray = asArray;
4
- function asArray(value) {
5
- if (value === undefined) {
6
- return [];
7
- }
8
- return Array.isArray(value) ? value : [value];
9
- }
@@ -1,17 +0,0 @@
1
- export type AttributeDiff = {
2
- added: Array<{
3
- key: string;
4
- value: string;
5
- }>;
6
- removed: Array<{
7
- key: string;
8
- value: string;
9
- }>;
10
- changed: Array<{
11
- key: string;
12
- before: string;
13
- after: string;
14
- }>;
15
- };
16
- export declare function diffAttributes(beforeMap: Map<string, string>, afterMap: Map<string, string>): AttributeDiff;
17
- //# sourceMappingURL=diffAttributes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diffAttributes.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/diffAttributes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE,CAAC;AAEF,wBAAgB,cAAc,CAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,aAAa,CA2Bf"}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.diffAttributes = diffAttributes;
4
- function diffAttributes(beforeMap, afterMap) {
5
- const added = [];
6
- const removed = [];
7
- const changed = [];
8
- for (const [key, value] of beforeMap.entries()) {
9
- if (!afterMap.has(key)) {
10
- removed.push({ key, value });
11
- continue;
12
- }
13
- const nextValue = afterMap.get(key);
14
- if (nextValue !== value && nextValue !== undefined) {
15
- changed.push({ key, before: value, after: nextValue });
16
- }
17
- }
18
- for (const [key, value] of afterMap.entries()) {
19
- if (!beforeMap.has(key)) {
20
- added.push({ key, value });
21
- }
22
- }
23
- added.sort((a, b) => a.key.localeCompare(b.key));
24
- removed.sort((a, b) => a.key.localeCompare(b.key));
25
- changed.sort((a, b) => a.key.localeCompare(b.key));
26
- return { added, removed, changed };
27
- }
@@ -1,2 +0,0 @@
1
- export declare function flattenXmlAttributes(xml: string): Map<string, string>;
2
- //# sourceMappingURL=flattenXmlAttributes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flattenXmlAttributes.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/flattenXmlAttributes.ts"],"names":[],"mappings":"AAoFA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAKrE"}
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flattenXmlAttributes = flattenXmlAttributes;
4
- const xmlParser_1 = require("../constants/xmlParser");
5
- const ARRAY_KEY_ATTRS = ['rel', 'name', 'id', 'type', 'href', 'title'];
6
- function getAttrValue(record, attr) {
7
- const value = record[`@_${attr}`];
8
- return typeof value === 'string' && value.trim() ? value : undefined;
9
- }
10
- function buildArrayItemKey(item) {
11
- const parts = [];
12
- for (const attr of ARRAY_KEY_ATTRS) {
13
- const value = getAttrValue(item, attr);
14
- if (value) {
15
- parts.push(`${attr}=${value}`);
16
- }
17
- }
18
- if (parts.length === 0) {
19
- return undefined;
20
- }
21
- return parts.join('|');
22
- }
23
- function normalizeKey(key) {
24
- return key.replace(/[[\]\s]/g, '_');
25
- }
26
- function visit(value, path, out) {
27
- if (Array.isArray(value)) {
28
- const entries = value.map((item) => {
29
- const record = item && typeof item === 'object' && !Array.isArray(item)
30
- ? item
31
- : undefined;
32
- const key = record ? buildArrayItemKey(record) : undefined;
33
- return { item, key };
34
- });
35
- const counts = new Map();
36
- entries.sort((a, b) => {
37
- if (!a.key && !b.key) {
38
- return 0;
39
- }
40
- if (!a.key) {
41
- return 1;
42
- }
43
- if (!b.key) {
44
- return -1;
45
- }
46
- return a.key.localeCompare(b.key);
47
- });
48
- entries.forEach(({ item, key }, index) => {
49
- if (!key) {
50
- visit(item, `${path}[${index}]`, out);
51
- return;
52
- }
53
- const normalized = normalizeKey(key);
54
- const nextCount = (counts.get(normalized) || 0) + 1;
55
- counts.set(normalized, nextCount);
56
- const suffix = nextCount > 1 ? `#${nextCount}` : '';
57
- visit(item, `${path}[${normalized}${suffix}]`, out);
58
- });
59
- return;
60
- }
61
- if (!value || typeof value !== 'object') {
62
- return;
63
- }
64
- const record = value;
65
- for (const [key, child] of Object.entries(record)) {
66
- if (key.startsWith('@_')) {
67
- const attrName = key.slice(2);
68
- const attrValue = typeof child === 'string' ? child : JSON.stringify(child);
69
- const attrPath = path ? `${path}@${attrName}` : `@${attrName}`;
70
- out.set(attrPath, attrValue);
71
- continue;
72
- }
73
- const nextPath = path ? `${path}.${key}` : key;
74
- visit(child, nextPath, out);
75
- }
76
- }
77
- function flattenXmlAttributes(xml) {
78
- const parsed = xmlParser_1.xmlParser.parse(xml);
79
- const out = new Map();
80
- visit(parsed, '', out);
81
- return out;
82
- }
@@ -1,3 +0,0 @@
1
- import type { NodeRecord } from '../types';
2
- export declare function getNodeDescription(node: NodeRecord): string | undefined;
3
- //# sourceMappingURL=getNodeDescription.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNodeDescription.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/getNodeDescription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAOvE"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getNodeDescription = getNodeDescription;
4
- const getAttribute_1 = require("./getAttribute");
5
- function getNodeDescription(node) {
6
- return (0, getAttribute_1.getAttribute)(node, [
7
- '@_adtcore:description',
8
- '@_description',
9
- 'adtcore:description',
10
- 'description',
11
- ]);
12
- }
@@ -1,3 +0,0 @@
1
- import type { NodeRecord } from '../types';
2
- export declare function getNodeName(node: NodeRecord): string | undefined;
3
- //# sourceMappingURL=getNodeName.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNodeName.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/getNodeName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAOhE"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getNodeName = getNodeName;
4
- const getAttribute_1 = require("./getAttribute");
5
- function getNodeName(node) {
6
- return (0, getAttribute_1.getAttribute)(node, [
7
- '@_adtcore:name',
8
- '@_name',
9
- 'adtcore:name',
10
- 'name',
11
- ]);
12
- }
@@ -1,3 +0,0 @@
1
- import type { NodeRecord } from '../types';
2
- export declare function getNodeType(node: NodeRecord): string | undefined;
3
- //# sourceMappingURL=getNodeType.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNodeType.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/getNodeType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAOhE"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getNodeType = getNodeType;
4
- const getAttribute_1 = require("./getAttribute");
5
- function getNodeType(node) {
6
- return (0, getAttribute_1.getAttribute)(node, [
7
- '@_adtcore:type',
8
- '@_type',
9
- 'adtcore:type',
10
- 'type',
11
- ]);
12
- }
@@ -1,3 +0,0 @@
1
- import type { NodeRecord, NodeValue } from '../types';
2
- export declare function isNodeObject(node: NodeValue): node is NodeRecord;
3
- //# sourceMappingURL=isNodeObject.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isNodeObject.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/isNodeObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,UAAU,CAQhE"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isNodeObject = isNodeObject;
4
- function isNodeObject(node) {
5
- if (!node || typeof node !== 'object') {
6
- return false;
7
- }
8
- if (Array.isArray(node)) {
9
- return false;
10
- }
11
- return true;
12
- }
@@ -1,3 +0,0 @@
1
- import type { NodeRecord } from '../types';
2
- export declare function readAttr(node: NodeRecord, name: string): string | undefined;
3
- //# sourceMappingURL=readAttr.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"readAttr.d.ts","sourceRoot":"","sources":["../../../src/lib/xml/readAttr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAY3E"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readAttr = readAttr;
4
- function readAttr(node, name) {
5
- const value = node[`@_${name}`];
6
- if (value === undefined || value === null) {
7
- return undefined;
8
- }
9
- if (typeof value === 'string') {
10
- return value;
11
- }
12
- if (typeof value === 'number' || typeof value === 'boolean') {
13
- return String(value);
14
- }
15
- return undefined;
16
- }