@mcp-abap-adt/adt-backup 1.2.0 → 1.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 (39) hide show
  1. package/README.md +6 -0
  2. package/dist/lib/backup/readBasicMetadata.d.ts.map +1 -1
  3. package/dist/lib/backup/readBasicMetadata.js +7 -0
  4. package/dist/lib/backup/readSourceText.d.ts.map +1 -1
  5. package/dist/lib/backup/readSourceText.js +6 -0
  6. package/dist/lib/constants/typeOrder.d.ts.map +1 -1
  7. package/dist/lib/constants/typeOrder.js +1 -0
  8. package/dist/lib/dependencies/collectTreeDependencies.d.ts.map +1 -1
  9. package/dist/lib/dependencies/collectTreeDependencies.js +1 -0
  10. package/dist/lib/restore/analyzeDependencies.d.ts.map +1 -1
  11. package/dist/lib/restore/analyzeDependencies.js +1 -0
  12. package/dist/lib/restore/restoreObject.d.ts.map +1 -1
  13. package/dist/lib/restore/restoreObject.js +20 -0
  14. package/dist/lib/restore/restoreObjects.d.ts.map +1 -1
  15. package/dist/lib/restore/restoreObjects.js +1 -0
  16. package/dist/lib/restore/restoreTreeBackup.d.ts.map +1 -1
  17. package/dist/lib/restore/restoreTreeBackup.js +5 -0
  18. package/dist/lib/restore/restoreTreeNode.d.ts.map +1 -1
  19. package/dist/lib/restore/restoreTreeNode.js +17 -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 +4 -0
  24. package/dist/lib/tree/readPayloadForType.d.ts.map +1 -1
  25. package/dist/lib/tree/readPayloadForType.js +1 -0
  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/detectTransformationType.d.ts +3 -0
  31. package/dist/lib/utils/detectTransformationType.d.ts.map +1 -0
  32. package/dist/lib/utils/detectTransformationType.js +9 -0
  33. package/dist/lib/utils/normalizeType.d.ts.map +1 -1
  34. package/dist/lib/utils/normalizeType.js +4 -0
  35. package/dist/lib/verify/findOtherType.d.ts.map +1 -1
  36. package/dist/lib/verify/findOtherType.js +1 -0
  37. package/dist/lib/xml/parseServiceBindingConfig.d.ts.map +1 -1
  38. package/dist/lib/xml/parseServiceBindingConfig.js +24 -5
  39. package/package.json +10 -10
package/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # @mcp-abap-adt/adt-backup
2
+ [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)
2
3
 
3
4
  CLI for recursive ADT backups and restores using `@mcp-abap-adt/adt-clients`.
4
5
 
@@ -78,6 +79,7 @@ See `docs/roadmap.yaml` for per-object backup/restore status and the plan for re
78
79
  | `interface` | implemented | implemented | source |
79
80
  | `class` | implemented | implemented | source |
80
81
  | `program` | implemented | implemented | source |
82
+ | `transformation` | implemented | implemented | source |
81
83
  | `serviceDefinition` | implemented | implemented | source |
82
84
  | `serviceBinding` | implemented | implemented | metadata-xml |
83
85
  | `metadataExtension` | implemented | implemented | source |
@@ -89,6 +91,10 @@ See `docs/roadmap.yaml` for per-object backup/restore status and the plan for re
89
91
 
90
92
  > **Note**: Unit tests are stored as classes in backups. When restoring, they are created as test classes in the system.
91
93
 
94
+ > **Note**: For `transformation`, the subtype (`SimpleTransformation` for `XSLT/VT` vs `XSLTProgram` for `XSLT/ST`) is detected from the source header (`<?sap.transform simple?>`).
95
+
96
+ > **Note**: For `serviceBinding`, the publication state (`srvb:published`) is preserved in the backup and re-applied during restore — published bindings are re-published, unpublished bindings are unpublished.
97
+
92
98
  ## Smoke Checklist
93
99
 
94
100
  When your landscape is ready, use `docs/SMOKE_CHECKLIST.md` for a focused backup/restore/verify checklist.
@@ -1 +1 @@
1
- {"version":3,"file":"readBasicMetadata.d.ts","sourceRoot":"","sources":["../../../src/lib/backup/readBasicMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0DzD"}
1
+ {"version":3,"file":"readBasicMetadata.d.ts","sourceRoot":"","sources":["../../../src/lib/backup/readBasicMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiEzD"}
@@ -26,6 +26,13 @@ async function readBasicMetadata(client, spec) {
26
26
  const xml = (0, responseToText_1.responseToText)(state.metadataResult);
27
27
  return xml ? (0, extractMetadata_1.extractMetadata)(xml) : {};
28
28
  }
29
+ case 'transformation': {
30
+ const state = await client
31
+ .getTransformation()
32
+ .readMetadata({ transformationName: spec.name });
33
+ const xml = (0, responseToText_1.responseToText)(state.metadataResult);
34
+ return xml ? (0, extractMetadata_1.extractMetadata)(xml) : {};
35
+ }
29
36
  case 'structure': {
30
37
  const state = await client
31
38
  .getStructure()
@@ -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,EAChB,OAAO,GAAE,QAAQ,GAAG,UAAqB,GACxC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAwGpC"}
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,EAChB,OAAO,GAAE,QAAQ,GAAG,UAAqB,GACxC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CA8GpC"}
@@ -23,6 +23,12 @@ async function readSourceText(client, spec, version = 'active') {
23
23
  .read({ programName: spec.name }, version);
24
24
  return (0, responseToText_1.responseToText)(state?.readResult);
25
25
  }
26
+ case 'transformation': {
27
+ const state = await client
28
+ .getTransformation()
29
+ .read({ transformationName: spec.name }, version);
30
+ return (0, responseToText_1.responseToText)(state?.readResult);
31
+ }
26
32
  case 'view': {
27
33
  const state = await client
28
34
  .getView()
@@ -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,EAmBpC,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,EAoBpC,CAAC"}
@@ -14,6 +14,7 @@ exports.typeOrder = [
14
14
  'interface',
15
15
  'class',
16
16
  'program',
17
+ 'transformation',
17
18
  'serviceDefinition',
18
19
  'serviceBinding',
19
20
  'metadataExtension',
@@ -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;AAmC1E,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;AAoC1E,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Ff"}
@@ -17,6 +17,7 @@ const WHERE_USED_TYPE_MAP = {
17
17
  class: 'CLAS/OC',
18
18
  interface: 'INTF/IF',
19
19
  program: 'PROG/P',
20
+ transformation: 'XSLT/VT',
20
21
  functionGroup: 'FUGR/F',
21
22
  functionModule: 'FUGR/FF',
22
23
  serviceDefinition: 'SRVD/SRV',
@@ -1 +1 @@
1
- {"version":3,"file":"analyzeDependencies.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/analyzeDependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AA+MD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CA2B3E;AA2BD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,GACtB,YAAY,EAAE,CA8DhB"}
1
+ {"version":3,"file":"analyzeDependencies.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/analyzeDependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AA+MD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CA2B3E;AA4BD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,GACtB,YAAY,EAAE,CA8DhB"}
@@ -218,6 +218,7 @@ const TYPE_CREATION_ORDER = {
218
218
  accessControl: 6,
219
219
  metadataExtension: 6,
220
220
  program: 7,
221
+ transformation: 7,
221
222
  functionGroup: 7,
222
223
  functionModule: 8,
223
224
  serviceDefinition: 9,
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"restoreObject.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAoBV,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO1D,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,CA2Tf"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.restoreObject = restoreObject;
4
4
  const applyConfigName_1 = require("../utils/applyConfigName");
5
5
  const asConfig_1 = require("../utils/asConfig");
6
+ const detectTransformationType_1 = require("../utils/detectTransformationType");
6
7
  const ensureDescription_1 = require("../utils/ensureDescription");
7
8
  const applyTransportRequest_1 = require("./applyTransportRequest");
8
9
  async function restoreObject(client, obj, mode, activate, transportRequest) {
@@ -128,6 +129,25 @@ async function restoreObject(client, obj, mode, activate, transportRequest) {
128
129
  }
129
130
  return;
130
131
  }
132
+ case 'transformation': {
133
+ const transformationType = (0, detectTransformationType_1.detectTransformationType)(obj.source);
134
+ const baseTxConfig = {
135
+ ...config,
136
+ transformationType,
137
+ };
138
+ if (mode !== 'update') {
139
+ await client
140
+ .getTransformation()
141
+ .create((0, asConfig_1.asConfig)(baseTxConfig), options);
142
+ }
143
+ if (obj.source) {
144
+ await client.getTransformation().update((0, asConfig_1.asConfig)({
145
+ ...baseTxConfig,
146
+ sourceCode: obj.source,
147
+ }), options);
148
+ }
149
+ return;
150
+ }
131
151
  case 'functionGroup': {
132
152
  if (mode !== 'update') {
133
153
  await client
@@ -1 +1 @@
1
- {"version":3,"file":"restoreObjects.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreObjects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,2BAA2B,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AA2B1D,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,YAAY,EAAE,EACvB,IAAI,EAAE,WAAW,EACjB,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,CAAC,EAAE,MAAM,EACzB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,gBAAgB,UAAO,GACtB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
1
+ {"version":3,"file":"restoreObjects.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreObjects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,2BAA2B,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AA4B1D,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,YAAY,EAAE,EACvB,IAAI,EAAE,WAAW,EACjB,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,CAAC,EAAE,MAAM,EACzB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,gBAAgB,UAAO,GACtB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
@@ -16,6 +16,7 @@ const ADT_TYPE_MAP = {
16
16
  class: 'CLAS/OC',
17
17
  interface: 'INTF/OI',
18
18
  program: 'PROG/P',
19
+ transformation: 'XSLT/VT',
19
20
  functionGroup: 'FUGR/FF',
20
21
  functionModule: 'FUGR/I',
21
22
  serviceDefinition: 'SRVD/SRV',
@@ -1 +1 @@
1
- {"version":3,"file":"restoreTreeBackup.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreTreeBackup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,2BAA2B,CAAC;AAK5E,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AA8DlB,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,gBAAgB,CAAC,EAAE,MAAM,EACzB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAC/B,gBAAgB,UAAO,EACvB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,oBAAoB,CAAC,EAAE,MAAM,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAiZf"}
1
+ {"version":3,"file":"restoreTreeBackup.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreTreeBackup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,2BAA2B,CAAC;AAK5E,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AAmElB,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,gBAAgB,CAAC,EAAE,MAAM,EACzB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAC/B,gBAAgB,UAAO,EACvB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,oBAAoB,CAAC,EAAE,MAAM,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAiZf"}
@@ -27,6 +27,11 @@ const RESTORE_PHASES = [
27
27
  { name: 'Classes', types: ['class'], activation: 'individual' },
28
28
  { name: 'Interfaces', types: ['interface'], activation: 'individual' },
29
29
  { name: 'Programs', types: ['program'], activation: 'individual' },
30
+ {
31
+ name: 'Transformations',
32
+ types: ['transformation'],
33
+ activation: 'individual',
34
+ },
30
35
  {
31
36
  name: 'Function Groups',
32
37
  types: ['functionGroup'],
@@ -1 +1 @@
1
- {"version":3,"file":"restoreTreeNode.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreTreeNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAoBV,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO5D,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,EAChC,oBAAoB,CAAC,EAAE,MAAM,EAC7B,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Zf"}
1
+ {"version":3,"file":"restoreTreeNode.d.ts","sourceRoot":"","sources":["../../../src/lib/restore/restoreTreeNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAqBV,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQ5D,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,EAChC,oBAAoB,CAAC,EAAE,MAAM,EAC7B,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,IAAI,CAAC,CAibf"}
@@ -4,6 +4,7 @@ exports.restoreTreeNode = restoreTreeNode;
4
4
  const logVerbose_1 = require("../cli/logVerbose");
5
5
  const decodeBase64_1 = require("../crypto/decodeBase64");
6
6
  const asConfig_1 = require("../utils/asConfig");
7
+ const detectTransformationType_1 = require("../utils/detectTransformationType");
7
8
  const ensureDescription_1 = require("../utils/ensureDescription");
8
9
  const parseBdefSource_1 = require("../utils/parseBdefSource");
9
10
  const parsePackageConfig_1 = require("../xml/parsePackageConfig");
@@ -190,6 +191,22 @@ async function restoreTreeNode(client, node, mode, activate, transportRequest, s
190
191
  }
191
192
  return;
192
193
  }
194
+ case 'transformation': {
195
+ const transformationType = (0, detectTransformationType_1.detectTransformationType)(payload);
196
+ const baseTxConfig = { ...config, transformationType };
197
+ if (mode !== 'update') {
198
+ await client
199
+ .getTransformation()
200
+ .create((0, asConfig_1.asConfig)(baseTxConfig), options);
201
+ }
202
+ if (payload) {
203
+ await client.getTransformation().update((0, asConfig_1.asConfig)({
204
+ ...baseTxConfig,
205
+ sourceCode: payload,
206
+ }), options);
207
+ }
208
+ return;
209
+ }
193
210
  case 'functionGroup': {
194
211
  if (mode !== 'update') {
195
212
  await client
@@ -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,CAyBlE"}
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,CA0BlE"}
@@ -15,6 +15,7 @@ function isRestoreImplemented(type) {
15
15
  case 'interface':
16
16
  case 'class':
17
17
  case 'program':
18
+ case 'transformation':
18
19
  case 'serviceDefinition':
19
20
  case 'serviceBinding':
20
21
  case 'metadataExtension':
@@ -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,CAgE3B"}
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,CAmE3B"}
@@ -23,6 +23,8 @@ function mapAdtTypeToSupported(adtType) {
23
23
  'INTF/IF': 'interface',
24
24
  'INTF/OI': 'interface',
25
25
  'PROG/P': 'program',
26
+ 'XSLT/VT': 'transformation',
27
+ 'XSLT/ST': 'transformation',
26
28
  'FUGR/FF': 'functionModule',
27
29
  'FUGR/F': 'functionGroup',
28
30
  FUGR: 'functionGroup',
@@ -45,6 +47,8 @@ function mapAdtTypeToSupported(adtType) {
45
47
  return 'interface';
46
48
  if (normalized.startsWith('PROG/'))
47
49
  return 'program';
50
+ if (normalized.startsWith('XSLT/'))
51
+ return 'transformation';
48
52
  if (normalized.startsWith('DDLS/'))
49
53
  return 'view';
50
54
  if (normalized.startsWith('DDLX/'))
@@ -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,CAuCtE"}
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,CAwCtE"}
@@ -8,6 +8,7 @@ async function readPayloadForType(client, type, name, functionGroupName) {
8
8
  case 'class':
9
9
  case 'interface':
10
10
  case 'program':
11
+ case 'transformation':
11
12
  case 'view':
12
13
  case 'structure':
13
14
  case 'table':
@@ -1,4 +1,4 @@
1
- export type SupportedType = 'package' | 'domain' | 'dataElement' | 'structure' | 'table' | 'tableType' | 'view' | 'class' | 'interface' | 'program' | 'functionGroup' | 'functionModule' | 'serviceDefinition' | 'serviceBinding' | 'metadataExtension' | 'behaviorDefinition' | 'behaviorImplementation' | 'enhancement' | 'accessControl' | 'unitTest' | 'cdsUnitTest';
1
+ export type SupportedType = 'package' | 'domain' | 'dataElement' | 'structure' | 'table' | 'tableType' | 'view' | 'class' | 'interface' | 'program' | 'transformation' | 'functionGroup' | 'functionModule' | 'serviceDefinition' | 'serviceBinding' | 'metadataExtension' | 'behaviorDefinition' | 'behaviorImplementation' | 'enhancement' | 'accessControl' | 'unitTest' | 'cdsUnitTest';
2
2
  export type RestoreMode = 'create' | 'update' | 'upsert' | 'skip';
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":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
@@ -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,CAqEd"}
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,CAwEd"}
@@ -34,6 +34,9 @@ function applyConfigName(type, name, functionGroupName, config) {
34
34
  case 'program':
35
35
  finalConfig.programName = name;
36
36
  break;
37
+ case 'transformation':
38
+ finalConfig.transformationName = name;
39
+ break;
37
40
  case 'functionGroup':
38
41
  finalConfig.functionGroupName = name;
39
42
  break;
@@ -0,0 +1,3 @@
1
+ import type { ITransformationConfig } from '@mcp-abap-adt/adt-clients';
2
+ export declare function detectTransformationType(source?: string): ITransformationConfig['transformationType'];
3
+ //# sourceMappingURL=detectTransformationType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectTransformationType.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/detectTransformationType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,wBAAgB,wBAAwB,CACtC,MAAM,CAAC,EAAE,MAAM,GACd,qBAAqB,CAAC,oBAAoB,CAAC,CAK7C"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectTransformationType = detectTransformationType;
4
+ function detectTransformationType(source) {
5
+ if (source && /<\?sap\.transform\s+simple\s*\?>/i.test(source)) {
6
+ return 'SimpleTransformation';
7
+ }
8
+ return 'XSLTProgram';
9
+ }
@@ -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,CAyC5D"}
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,CA6C5D"}
@@ -17,6 +17,10 @@ function normalizeType(rawType) {
17
17
  class: 'class',
18
18
  interface: 'interface',
19
19
  program: 'program',
20
+ transformation: 'transformation',
21
+ xslt: 'transformation',
22
+ simpletransformation: 'transformation',
23
+ simple_transformation: 'transformation',
20
24
  functiongroup: 'functionGroup',
21
25
  function_group: 'functionGroup',
22
26
  functionmodule: 'functionModule',
@@ -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;AAwB9C,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;AAyB9C,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,aAAa,EAC3B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAepC"}
@@ -13,6 +13,7 @@ const supportedTypes = [
13
13
  'class',
14
14
  'interface',
15
15
  'program',
16
+ 'transformation',
16
17
  'functionGroup',
17
18
  'serviceDefinition',
18
19
  'serviceBinding',
@@ -1 +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"}
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,CA2GhC"}
@@ -42,8 +42,20 @@ function parseServiceBindingConfig(xml) {
42
42
  (0, findAttribute_1.findAttribute)(binding, 'srvb:version');
43
43
  const bindingCategory = (0, getNodeAttribute_1.getNodeAttribute)(binding, 'srvb:category') ||
44
44
  (0, findAttribute_1.findAttribute)(binding, 'srvb:category');
45
- // Keep publication state unchanged by default during restore updates.
46
- const desiredPublicationState = 'unchanged';
45
+ // Reflect the published state from ADT so restore re-publishes/unpublishes
46
+ // the binding to match the source system. Attribute: srvb:published="true|false".
47
+ const publishedAttr = (0, getNodeAttribute_1.getNodeAttribute)(root, 'srvb:published') ||
48
+ (0, findAttribute_1.findAttribute)(root, 'srvb:published');
49
+ let desiredPublicationState = 'unchanged';
50
+ if (publishedAttr !== undefined && publishedAttr !== null) {
51
+ const normalized = String(publishedAttr).toLowerCase();
52
+ if (normalized === 'true') {
53
+ desiredPublicationState = 'published';
54
+ }
55
+ else if (normalized === 'false') {
56
+ desiredPublicationState = 'unpublished';
57
+ }
58
+ }
47
59
  const normalizedBindingType = bindingType?.toUpperCase();
48
60
  const normalizedBindingVersion = bindingVersion?.toUpperCase();
49
61
  const serviceType = normalizedBindingType === 'ODATA'
@@ -51,6 +63,15 @@ function parseServiceBindingConfig(xml) {
51
63
  ? 'odatav2'
52
64
  : 'odatav4'
53
65
  : undefined;
66
+ const bindingVariant = normalizedBindingType === 'ODATA'
67
+ ? normalizedBindingVersion === 'V2'
68
+ ? bindingCategory === '1'
69
+ ? 'ODATA_V2_WEB_API'
70
+ : 'ODATA_V2_UI'
71
+ : bindingCategory === '1'
72
+ ? 'ODATA_V4_WEB_API'
73
+ : 'ODATA_V4_UI'
74
+ : undefined;
54
75
  return {
55
76
  bindingName,
56
77
  packageName,
@@ -58,9 +79,7 @@ function parseServiceBindingConfig(xml) {
58
79
  serviceDefinitionName,
59
80
  serviceName,
60
81
  serviceVersion,
61
- bindingType: normalizedBindingType,
62
- bindingVersion,
63
- bindingCategory,
82
+ bindingVariant,
64
83
  masterLanguage,
65
84
  masterSystem,
66
85
  responsible,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/adt-backup",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
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",
@@ -45,20 +45,20 @@
45
45
  "debug:deps": "npx ts-node scripts/debug-where-used-list.ts"
46
46
  },
47
47
  "engines": {
48
- "node": ">=18.0.0"
48
+ "node": ">=20.0.0"
49
49
  },
50
50
  "dependencies": {
51
- "@mcp-abap-adt/adt-clients": "^2.2.0",
51
+ "@mcp-abap-adt/adt-clients": "^5.4.1",
52
52
  "@mcp-abap-adt/auth-broker": "^1.0.5",
53
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.4.1",
57
- "yaml": "^2.8.2"
54
+ "@mcp-abap-adt/auth-stores": "^1.0.4",
55
+ "@mcp-abap-adt/connection": "^1.8.0",
56
+ "fast-xml-parser": "^5.7.1",
57
+ "yaml": "^2.8.3"
58
58
  },
59
59
  "devDependencies": {
60
- "@biomejs/biome": "^2.4.4",
61
- "@types/node": "^25.3.1",
62
- "typescript": "^5.9.2"
60
+ "@biomejs/biome": "^2.4.12",
61
+ "@types/node": "^25.6.0",
62
+ "typescript": "^6.0.3"
63
63
  }
64
64
  }