@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.
- package/README.md +32 -0
- package/dist/lib/backup/backupObject.d.ts.map +1 -1
- package/dist/lib/backup/backupObject.js +14 -0
- package/dist/lib/backup/readMetadataXmlForType.d.ts.map +1 -1
- package/dist/lib/backup/readMetadataXmlForType.js +6 -0
- package/dist/lib/backup/readSourceText.d.ts.map +1 -1
- package/dist/lib/backup/readSourceText.js +6 -0
- package/dist/lib/cli/usage.d.ts.map +1 -1
- package/dist/lib/cli/usage.js +1 -0
- package/dist/lib/constants/typeOrder.d.ts.map +1 -1
- package/dist/lib/constants/typeOrder.js +1 -0
- package/dist/lib/dependencies/collectTreeDependencies.d.ts.map +1 -1
- package/dist/lib/dependencies/collectTreeDependencies.js +2 -1
- package/dist/lib/restore/deleteBackupObjects.d.ts.map +1 -1
- package/dist/lib/restore/deleteBackupObjects.js +2 -4
- package/dist/lib/restore/restoreObject.d.ts.map +1 -1
- package/dist/lib/restore/restoreObject.js +13 -0
- package/dist/lib/restore/restoreTreeNode.d.ts.map +1 -1
- package/dist/lib/restore/restoreTreeNode.js +18 -4
- package/dist/lib/tree/buildConfigForNode.d.ts.map +1 -1
- package/dist/lib/tree/buildConfigForNode.js +8 -0
- package/dist/lib/tree/isRestoreImplemented.d.ts.map +1 -1
- package/dist/lib/tree/isRestoreImplemented.js +1 -0
- package/dist/lib/tree/mapAdtTypeToSupported.d.ts.map +1 -1
- package/dist/lib/tree/mapAdtTypeToSupported.js +3 -0
- package/dist/lib/tree/readPayloadForType.d.ts.map +1 -1
- package/dist/lib/tree/readPayloadForType.js +2 -1
- package/dist/lib/types.d.ts +1 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/utils/applyConfigName.d.ts.map +1 -1
- package/dist/lib/utils/applyConfigName.js +3 -0
- package/dist/lib/utils/diffUnified.js +1 -1
- package/dist/lib/utils/index.d.ts +0 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +0 -1
- package/dist/lib/utils/normalizeType.d.ts.map +1 -1
- package/dist/lib/utils/normalizeType.js +2 -0
- package/dist/lib/verify/findOtherType.d.ts.map +1 -1
- package/dist/lib/verify/findOtherType.js +1 -0
- package/dist/lib/verify/verifyObjectInSystem.d.ts.map +1 -1
- package/dist/lib/xml/index.d.ts +1 -6
- package/dist/lib/xml/index.d.ts.map +1 -1
- package/dist/lib/xml/index.js +1 -6
- package/dist/lib/xml/parseServiceBindingConfig.d.ts +3 -0
- package/dist/lib/xml/parseServiceBindingConfig.d.ts.map +1 -0
- package/dist/lib/xml/parseServiceBindingConfig.js +70 -0
- package/package.json +10 -10
- package/dist/lib/utils/asArray.d.ts +0 -2
- package/dist/lib/utils/asArray.d.ts.map +0 -1
- package/dist/lib/utils/asArray.js +0 -9
- package/dist/lib/utils/diffAttributes.d.ts +0 -17
- package/dist/lib/utils/diffAttributes.d.ts.map +0 -1
- package/dist/lib/utils/diffAttributes.js +0 -27
- package/dist/lib/xml/flattenXmlAttributes.d.ts +0 -2
- package/dist/lib/xml/flattenXmlAttributes.d.ts.map +0 -1
- package/dist/lib/xml/flattenXmlAttributes.js +0 -82
- package/dist/lib/xml/getNodeDescription.d.ts +0 -3
- package/dist/lib/xml/getNodeDescription.d.ts.map +0 -1
- package/dist/lib/xml/getNodeDescription.js +0 -12
- package/dist/lib/xml/getNodeName.d.ts +0 -3
- package/dist/lib/xml/getNodeName.d.ts.map +0 -1
- package/dist/lib/xml/getNodeName.js +0 -12
- package/dist/lib/xml/getNodeType.d.ts +0 -3
- package/dist/lib/xml/getNodeType.d.ts.map +0 -1
- package/dist/lib/xml/getNodeType.js +0 -12
- package/dist/lib/xml/isNodeObject.d.ts +0 -3
- package/dist/lib/xml/isNodeObject.d.ts.map +0 -1
- package/dist/lib/xml/isNodeObject.js +0 -12
- package/dist/lib/xml/readAttr.d.ts +0 -3
- package/dist/lib/xml/readAttr.d.ts.map +0 -1
- 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;
|
|
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,
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/lib/cli/usage.js
CHANGED
|
@@ -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,
|
|
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 +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;
|
|
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, `
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
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;
|
|
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,
|
|
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"}
|
|
@@ -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,
|
|
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,
|
|
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
|
}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -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 {
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -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,
|
|
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(
|
|
64
|
+
function buildUnifiedHunks(_oldLines, _newLines, edits, context) {
|
|
65
65
|
const hunks = [];
|
|
66
66
|
let oldLine = 1;
|
|
67
67
|
let newLine = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,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"}
|
package/dist/lib/utils/index.js
CHANGED
|
@@ -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,
|
|
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;
|
|
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 +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;
|
|
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"}
|
package/dist/lib/xml/index.d.ts
CHANGED
|
@@ -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 './
|
|
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,
|
|
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"}
|
package/dist/lib/xml/index.js
CHANGED
|
@@ -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("./
|
|
27
|
+
__exportStar(require("./parseServiceBindingConfig"), exports);
|
|
33
28
|
__exportStar(require("./toBoolean"), exports);
|
|
34
29
|
__exportStar(require("./toNumber"), exports);
|
|
@@ -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.
|
|
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.
|
|
52
|
-
"@mcp-abap-adt/auth-broker": "^0.
|
|
53
|
-
"@mcp-abap-adt/auth-providers": "^0.
|
|
54
|
-
"@mcp-abap-adt/auth-stores": "^0.2
|
|
55
|
-
"@mcp-abap-adt/connection": "^
|
|
56
|
-
"fast-xml-parser": "^5.3.
|
|
57
|
-
"yaml": "^2.
|
|
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.
|
|
61
|
-
"@types/node": "^
|
|
60
|
+
"@biomejs/biome": "^2.4.4",
|
|
61
|
+
"@types/node": "^25.3.0",
|
|
62
62
|
"typescript": "^5.9.2"
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -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,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 +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 +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 +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 +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 +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 +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"}
|
package/dist/lib/xml/readAttr.js
DELETED
|
@@ -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
|
-
}
|