@mcp-abap-adt/adt-clients 37.3.0 → 38.0.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.
- package/README.md +283 -62
- package/dist/clients/AdtAbapGitClient.d.ts +13 -3
- package/dist/clients/AdtAbapGitClient.d.ts.map +1 -1
- package/dist/clients/AdtAbapGitClient.js +15 -6
- package/dist/clients/AdtClient.d.ts +126 -213
- package/dist/clients/AdtClient.d.ts.map +1 -1
- package/dist/clients/AdtClient.js +229 -45
- package/dist/clients/AdtClientVariants.d.ts +16 -0
- package/dist/clients/AdtClientVariants.d.ts.map +1 -0
- package/dist/clients/AdtClientVariants.js +20 -0
- package/dist/clients/AdtExecutor.d.ts +39 -7
- package/dist/clients/AdtExecutor.d.ts.map +1 -1
- package/dist/clients/AdtExecutor.js +26 -26
- package/dist/clients/AdtRuntimeClient.d.ts +22 -11
- package/dist/clients/AdtRuntimeClient.d.ts.map +1 -1
- package/dist/clients/AdtRuntimeClient.js +44 -23
- package/dist/clients/createAdtClient.d.ts +22 -12
- package/dist/clients/createAdtClient.d.ts.map +1 -1
- package/dist/clients/createAdtClient.js +12 -18
- package/dist/clients/createAdtExecutor.d.ts +4 -5
- package/dist/clients/createAdtExecutor.d.ts.map +1 -1
- package/dist/clients/createAdtExecutor.js +5 -11
- package/dist/clients/variant.d.ts +80 -0
- package/dist/clients/variant.d.ts.map +1 -0
- package/dist/clients/variant.js +22 -0
- package/dist/constants/contentTypes.d.ts +8 -1
- package/dist/constants/contentTypes.d.ts.map +1 -1
- package/dist/constants/contentTypes.js +11 -4
- package/dist/constants/typeCodes.d.ts +45 -0
- package/dist/constants/typeCodes.d.ts.map +1 -0
- package/dist/constants/typeCodes.js +44 -0
- package/dist/core/accessControl/AdtAccessControl.d.ts +25 -6
- package/dist/core/accessControl/AdtAccessControl.d.ts.map +1 -1
- package/dist/core/accessControl/AdtAccessControl.js +21 -9
- package/dist/core/accessControl/check.d.ts.map +1 -1
- package/dist/core/accessControl/check.js +1 -1
- package/dist/core/accessControl/create.d.ts.map +1 -1
- package/dist/core/accessControl/create.js +2 -1
- package/dist/core/accessControl/types.d.ts +13 -31
- package/dist/core/accessControl/types.d.ts.map +1 -1
- package/dist/core/accessControl/types.js +1 -0
- package/dist/core/appendStructure/AdtAppendStructure.d.ts +5 -6
- package/dist/core/appendStructure/AdtAppendStructure.d.ts.map +1 -1
- package/dist/core/appendStructure/AdtAppendStructure.js +4 -6
- package/dist/core/appendStructure/check.d.ts.map +1 -1
- package/dist/core/appendStructure/check.js +1 -1
- package/dist/core/appendStructure/create.d.ts.map +1 -1
- package/dist/core/appendStructure/create.js +2 -1
- package/dist/core/appendStructure/types.d.ts +12 -31
- package/dist/core/appendStructure/types.d.ts.map +1 -1
- package/dist/core/authorizationField/AdtAuthorizationField.d.ts +6 -6
- package/dist/core/authorizationField/AdtAuthorizationField.d.ts.map +1 -1
- package/dist/core/authorizationField/AdtAuthorizationField.js +4 -9
- package/dist/core/authorizationField/read.js +1 -1
- package/dist/core/authorizationField/types.d.ts +9 -23
- package/dist/core/authorizationField/types.d.ts.map +1 -1
- package/dist/core/behaviorDefinition/AdtBehaviorDefinition.d.ts +25 -6
- package/dist/core/behaviorDefinition/AdtBehaviorDefinition.d.ts.map +1 -1
- package/dist/core/behaviorDefinition/AdtBehaviorDefinition.js +21 -9
- package/dist/core/behaviorDefinition/create.d.ts.map +1 -1
- package/dist/core/behaviorDefinition/create.js +2 -1
- package/dist/core/behaviorDefinition/types.d.ts +14 -31
- package/dist/core/behaviorDefinition/types.d.ts.map +1 -1
- package/dist/core/behaviorDefinition/types.js +1 -0
- package/dist/core/behaviorImplementation/AdtBehaviorImplementation.d.ts +5 -6
- package/dist/core/behaviorImplementation/AdtBehaviorImplementation.d.ts.map +1 -1
- package/dist/core/behaviorImplementation/AdtBehaviorImplementation.js +9 -13
- package/dist/core/behaviorImplementation/read.js +2 -2
- package/dist/core/behaviorImplementation/types.d.ts +1 -1
- package/dist/core/behaviorImplementation/types.d.ts.map +1 -1
- package/dist/core/behaviorImplementation/validation.d.ts.map +1 -1
- package/dist/core/behaviorImplementation/validation.js +3 -2
- package/dist/core/class/AdtClass.d.ts +21 -8
- package/dist/core/class/AdtClass.d.ts.map +1 -1
- package/dist/core/class/AdtClass.js +21 -9
- package/dist/core/class/AdtClassMemberBase.d.ts +15 -4
- package/dist/core/class/AdtClassMemberBase.d.ts.map +1 -1
- package/dist/core/class/AdtClassMemberBase.js +4 -1
- package/dist/core/class/AdtLocalDefinitions.d.ts +7 -7
- package/dist/core/class/AdtLocalDefinitions.d.ts.map +1 -1
- package/dist/core/class/AdtLocalDefinitions.js +4 -6
- package/dist/core/class/AdtLocalMacros.d.ts +7 -7
- package/dist/core/class/AdtLocalMacros.d.ts.map +1 -1
- package/dist/core/class/AdtLocalMacros.js +4 -6
- package/dist/core/class/AdtLocalTestClass.d.ts +7 -7
- package/dist/core/class/AdtLocalTestClass.d.ts.map +1 -1
- package/dist/core/class/AdtLocalTestClass.js +4 -6
- package/dist/core/class/AdtLocalTypes.d.ts +7 -7
- package/dist/core/class/AdtLocalTypes.d.ts.map +1 -1
- package/dist/core/class/AdtLocalTypes.js +4 -6
- package/dist/core/class/check.d.ts.map +1 -1
- package/dist/core/class/check.js +2 -2
- package/dist/core/class/create.d.ts.map +1 -1
- package/dist/core/class/create.js +3 -2
- package/dist/core/class/read.d.ts.map +1 -1
- package/dist/core/class/read.js +2 -2
- package/dist/core/class/types.d.ts +15 -54
- package/dist/core/class/types.d.ts.map +1 -1
- package/dist/core/class/types.js +1 -0
- package/dist/core/class/validation.d.ts.map +1 -1
- package/dist/core/class/validation.js +4 -3
- package/dist/core/dataElement/AdtDataElement.d.ts +5 -5
- package/dist/core/dataElement/AdtDataElement.d.ts.map +1 -1
- package/dist/core/dataElement/AdtDataElement.js +4 -9
- package/dist/core/dataElement/check.d.ts.map +1 -1
- package/dist/core/dataElement/check.js +1 -1
- package/dist/core/dataElement/create.d.ts.map +1 -1
- package/dist/core/dataElement/create.js +2 -1
- package/dist/core/dataElement/types.d.ts +10 -25
- package/dist/core/dataElement/types.d.ts.map +1 -1
- package/dist/core/ddl/AdtDdl.d.ts +31 -11
- package/dist/core/ddl/AdtDdl.d.ts.map +1 -1
- package/dist/core/ddl/AdtDdl.js +22 -9
- package/dist/core/ddl/check.d.ts.map +1 -1
- package/dist/core/ddl/check.js +1 -1
- package/dist/core/ddl/create.d.ts.map +1 -1
- package/dist/core/ddl/create.js +2 -1
- package/dist/core/ddl/read.js +2 -2
- package/dist/core/ddl/types.d.ts +14 -37
- package/dist/core/ddl/types.d.ts.map +1 -1
- package/dist/core/ddl/types.js +1 -0
- package/dist/core/domain/AdtDomain.d.ts +5 -5
- package/dist/core/domain/AdtDomain.d.ts.map +1 -1
- package/dist/core/domain/AdtDomain.js +4 -9
- package/dist/core/domain/check.d.ts.map +1 -1
- package/dist/core/domain/check.js +1 -1
- package/dist/core/domain/create.d.ts.map +1 -1
- package/dist/core/domain/create.js +2 -1
- package/dist/core/domain/types.d.ts +10 -25
- package/dist/core/domain/types.d.ts.map +1 -1
- package/dist/core/enhancement/AdtEnhancement.d.ts +32 -8
- package/dist/core/enhancement/AdtEnhancement.d.ts.map +1 -1
- package/dist/core/enhancement/AdtEnhancement.js +4 -9
- package/dist/core/enhancement/index.d.ts +2 -2
- package/dist/core/enhancement/index.d.ts.map +1 -1
- package/dist/core/enhancement/read.d.ts +6 -0
- package/dist/core/enhancement/read.d.ts.map +1 -1
- package/dist/core/enhancement/read.js +10 -1
- package/dist/core/enhancement/types.d.ts +18 -35
- package/dist/core/enhancement/types.d.ts.map +1 -1
- package/dist/core/featureToggle/AdtFeatureToggle.d.ts +5 -5
- package/dist/core/featureToggle/AdtFeatureToggle.d.ts.map +1 -1
- package/dist/core/featureToggle/AdtFeatureToggle.js +4 -9
- package/dist/core/featureToggle/types.d.ts +14 -37
- package/dist/core/featureToggle/types.d.ts.map +1 -1
- package/dist/core/featureToggle/xmlBuilder.d.ts.map +1 -1
- package/dist/core/featureToggle/xmlBuilder.js +2 -1
- package/dist/core/functionGroup/AdtFunctionGroup.d.ts +35 -16
- package/dist/core/functionGroup/AdtFunctionGroup.d.ts.map +1 -1
- package/dist/core/functionGroup/AdtFunctionGroup.js +30 -13
- package/dist/core/functionGroup/activation.d.ts +8 -1
- package/dist/core/functionGroup/activation.d.ts.map +1 -1
- package/dist/core/functionGroup/activation.js +11 -2
- package/dist/core/functionGroup/check.d.ts.map +1 -1
- package/dist/core/functionGroup/check.js +2 -2
- package/dist/core/functionGroup/create.d.ts.map +1 -1
- package/dist/core/functionGroup/create.js +2 -1
- package/dist/core/functionGroup/read.d.ts +4 -0
- package/dist/core/functionGroup/read.d.ts.map +1 -1
- package/dist/core/functionGroup/read.js +17 -0
- package/dist/core/functionGroup/types.d.ts +13 -31
- package/dist/core/functionGroup/types.d.ts.map +1 -1
- package/dist/core/functionGroup/types.js +1 -0
- package/dist/core/functionGroup/update.d.ts +5 -0
- package/dist/core/functionGroup/update.d.ts.map +1 -1
- package/dist/core/functionGroup/update.js +18 -0
- package/dist/core/functionGroup/validation.d.ts.map +1 -1
- package/dist/core/functionGroup/validation.js +2 -1
- package/dist/core/functionInclude/AdtFunctionInclude.d.ts +24 -18
- package/dist/core/functionInclude/AdtFunctionInclude.d.ts.map +1 -1
- package/dist/core/functionInclude/AdtFunctionInclude.js +4 -6
- package/dist/core/functionInclude/read.d.ts +1 -1
- package/dist/core/functionInclude/read.d.ts.map +1 -1
- package/dist/core/functionInclude/read.js +3 -3
- package/dist/core/functionInclude/types.d.ts +12 -32
- package/dist/core/functionInclude/types.d.ts.map +1 -1
- package/dist/core/functionInclude/xmlBuilder.d.ts.map +1 -1
- package/dist/core/functionInclude/xmlBuilder.js +3 -2
- package/dist/core/functionModule/AdtFunctionModule.d.ts +38 -18
- package/dist/core/functionModule/AdtFunctionModule.d.ts.map +1 -1
- package/dist/core/functionModule/AdtFunctionModule.js +23 -6
- package/dist/core/functionModule/create.d.ts.map +1 -1
- package/dist/core/functionModule/create.js +3 -2
- package/dist/core/functionModule/read.js +2 -2
- package/dist/core/functionModule/types.d.ts +13 -31
- package/dist/core/functionModule/types.d.ts.map +1 -1
- package/dist/core/functionModule/types.js +1 -0
- package/dist/core/functionModule/validation.d.ts.map +1 -1
- package/dist/core/functionModule/validation.js +9 -6
- package/dist/core/include/AdtInclude.d.ts +29 -10
- package/dist/core/include/AdtInclude.d.ts.map +1 -1
- package/dist/core/include/AdtInclude.js +26 -19
- package/dist/core/include/create.d.ts.map +1 -1
- package/dist/core/include/create.js +2 -1
- package/dist/core/include/types.d.ts +11 -27
- package/dist/core/include/types.d.ts.map +1 -1
- package/dist/core/include/types.js +1 -0
- package/dist/core/interface/AdtInterface.d.ts +27 -8
- package/dist/core/interface/AdtInterface.d.ts.map +1 -1
- package/dist/core/interface/AdtInterface.js +21 -6
- package/dist/core/interface/check.d.ts.map +1 -1
- package/dist/core/interface/check.js +1 -1
- package/dist/core/interface/create.d.ts.map +1 -1
- package/dist/core/interface/create.js +2 -1
- package/dist/core/interface/read.js +2 -2
- package/dist/core/interface/types.d.ts +13 -31
- package/dist/core/interface/types.d.ts.map +1 -1
- package/dist/core/interface/types.js +1 -0
- package/dist/core/interface/validation.d.ts.map +1 -1
- package/dist/core/interface/validation.js +2 -1
- package/dist/core/messageClass/AdtMessageClass.d.ts +15 -10
- package/dist/core/messageClass/AdtMessageClass.d.ts.map +1 -1
- package/dist/core/messageClass/AdtMessageClass.js +4 -6
- package/dist/core/messageClass/AdtMessageClassMessage.d.ts +5 -5
- package/dist/core/messageClass/AdtMessageClassMessage.d.ts.map +1 -1
- package/dist/core/messageClass/AdtMessageClassMessage.js +4 -6
- package/dist/core/messageClass/types.d.ts +10 -35
- package/dist/core/messageClass/types.d.ts.map +1 -1
- package/dist/core/messageClass/xml.d.ts.map +1 -1
- package/dist/core/messageClass/xml.js +23 -5
- package/dist/core/metadataExtension/AdtMetadataExtension.d.ts +25 -6
- package/dist/core/metadataExtension/AdtMetadataExtension.d.ts.map +1 -1
- package/dist/core/metadataExtension/AdtMetadataExtension.js +20 -9
- package/dist/core/metadataExtension/check.d.ts.map +1 -1
- package/dist/core/metadataExtension/check.js +1 -4
- package/dist/core/metadataExtension/create.d.ts.map +1 -1
- package/dist/core/metadataExtension/create.js +2 -1
- package/dist/core/metadataExtension/types.d.ts +13 -31
- package/dist/core/metadataExtension/types.d.ts.map +1 -1
- package/dist/core/metadataExtension/types.js +1 -0
- package/dist/core/metadataExtension/validation.js +1 -1
- package/dist/core/package/AdtPackage.d.ts +5 -5
- package/dist/core/package/AdtPackage.d.ts.map +1 -1
- package/dist/core/package/AdtPackage.js +4 -6
- package/dist/core/package/create.d.ts.map +1 -1
- package/dist/core/package/create.js +2 -1
- package/dist/core/package/types.d.ts +9 -23
- package/dist/core/package/types.d.ts.map +1 -1
- package/dist/core/program/AdtProgram.d.ts +27 -8
- package/dist/core/program/AdtProgram.d.ts.map +1 -1
- package/dist/core/program/AdtProgram.js +22 -10
- package/dist/core/program/check.d.ts.map +1 -1
- package/dist/core/program/check.js +1 -1
- package/dist/core/program/create.d.ts.map +1 -1
- package/dist/core/program/create.js +2 -1
- package/dist/core/program/read.js +2 -2
- package/dist/core/program/types.d.ts +15 -37
- package/dist/core/program/types.d.ts.map +1 -1
- package/dist/core/program/types.js +1 -0
- package/dist/core/program/validation.d.ts.map +1 -1
- package/dist/core/program/validation.js +2 -1
- package/dist/core/scalarFunction/AdtScalarFunction.d.ts +26 -7
- package/dist/core/scalarFunction/AdtScalarFunction.d.ts.map +1 -1
- package/dist/core/scalarFunction/AdtScalarFunction.js +21 -9
- package/dist/core/scalarFunction/check.d.ts.map +1 -1
- package/dist/core/scalarFunction/check.js +1 -1
- package/dist/core/scalarFunction/create.d.ts.map +1 -1
- package/dist/core/scalarFunction/create.js +2 -1
- package/dist/core/scalarFunction/types.d.ts +13 -31
- package/dist/core/scalarFunction/types.d.ts.map +1 -1
- package/dist/core/scalarFunction/types.js +1 -0
- package/dist/core/scalarFunctionImplementation/AdtScalarFunctionImplementation.d.ts +6 -6
- package/dist/core/scalarFunctionImplementation/AdtScalarFunctionImplementation.d.ts.map +1 -1
- package/dist/core/scalarFunctionImplementation/AdtScalarFunctionImplementation.js +4 -9
- package/dist/core/scalarFunctionImplementation/check.d.ts.map +1 -1
- package/dist/core/scalarFunctionImplementation/check.js +1 -1
- package/dist/core/scalarFunctionImplementation/create.d.ts.map +1 -1
- package/dist/core/scalarFunctionImplementation/create.js +2 -1
- package/dist/core/scalarFunctionImplementation/types.d.ts +14 -34
- package/dist/core/scalarFunctionImplementation/types.d.ts.map +1 -1
- package/dist/core/service/AdtService.d.ts +29 -7
- package/dist/core/service/AdtService.d.ts.map +1 -1
- package/dist/core/service/AdtService.js +25 -4
- package/dist/core/service/index.d.ts +1 -1
- package/dist/core/service/index.d.ts.map +1 -1
- package/dist/core/service/types.d.ts +15 -89
- package/dist/core/service/types.d.ts.map +1 -1
- package/dist/core/service/types.js +1 -0
- package/dist/core/serviceDefinition/AdtServiceDefinition.d.ts +25 -6
- package/dist/core/serviceDefinition/AdtServiceDefinition.d.ts.map +1 -1
- package/dist/core/serviceDefinition/AdtServiceDefinition.js +21 -9
- package/dist/core/serviceDefinition/check.d.ts.map +1 -1
- package/dist/core/serviceDefinition/check.js +1 -1
- package/dist/core/serviceDefinition/create.d.ts.map +1 -1
- package/dist/core/serviceDefinition/create.js +2 -1
- package/dist/core/serviceDefinition/types.d.ts +13 -31
- package/dist/core/serviceDefinition/types.d.ts.map +1 -1
- package/dist/core/serviceDefinition/types.js +1 -0
- package/dist/core/shared/AdtUtils.d.ts +65 -29
- package/dist/core/shared/AdtUtils.d.ts.map +1 -1
- package/dist/core/shared/AdtUtils.js +78 -35
- package/dist/core/shared/abapUnit.d.ts +32 -6
- package/dist/core/shared/abapUnit.d.ts.map +1 -1
- package/dist/core/shared/abapUnit.js +79 -24
- package/dist/core/shared/capabilities/statefulSession.js +2 -2
- package/dist/core/shared/codeSets.d.ts +133 -0
- package/dist/core/shared/codeSets.d.ts.map +1 -0
- package/dist/core/shared/codeSets.js +73 -0
- package/dist/core/shared/documentWrite.d.ts +17 -0
- package/dist/core/shared/documentWrite.d.ts.map +1 -0
- package/dist/core/shared/documentWrite.js +27 -0
- package/dist/core/shared/groupActivation.d.ts +3 -2
- package/dist/core/shared/groupActivation.d.ts.map +1 -1
- package/dist/core/shared/groupActivation.js +1 -2
- package/dist/core/shared/groupDeletion.d.ts +4 -3
- package/dist/core/shared/groupDeletion.d.ts.map +1 -1
- package/dist/core/shared/handlerOptions.d.ts +45 -0
- package/dist/core/shared/handlerOptions.d.ts.map +1 -0
- package/dist/core/shared/handlerOptions.js +2 -0
- package/dist/core/shared/nodeStructure.d.ts +2 -2
- package/dist/core/shared/nodeStructure.d.ts.map +1 -1
- package/dist/core/shared/objectStructure.d.ts +2 -1
- package/dist/core/shared/objectStructure.d.ts.map +1 -1
- package/dist/core/shared/objectWire.d.ts +24 -7
- package/dist/core/shared/objectWire.d.ts.map +1 -1
- package/dist/core/shared/objectWire.js +36 -141
- package/dist/core/shared/typeStructure.d.ts +14 -0
- package/dist/core/shared/typeStructure.d.ts.map +1 -0
- package/dist/core/shared/typeStructure.js +22 -0
- package/dist/core/shared/types.d.ts +1 -1
- package/dist/core/shared/types.d.ts.map +1 -1
- package/dist/core/shared/utilResultSet.d.ts +21 -85
- package/dist/core/shared/utilResultSet.d.ts.map +1 -1
- package/dist/core/shared/whereUsed.d.ts +29 -14
- package/dist/core/shared/whereUsed.d.ts.map +1 -1
- package/dist/core/shared/whereUsed.js +15 -46
- package/dist/core/structure/AdtStructure.d.ts +25 -6
- package/dist/core/structure/AdtStructure.d.ts.map +1 -1
- package/dist/core/structure/AdtStructure.js +21 -9
- package/dist/core/structure/check.d.ts.map +1 -1
- package/dist/core/structure/check.js +1 -1
- package/dist/core/structure/create.d.ts.map +1 -1
- package/dist/core/structure/create.js +2 -1
- package/dist/core/structure/read.js +2 -2
- package/dist/core/structure/types.d.ts +13 -31
- package/dist/core/structure/types.d.ts.map +1 -1
- package/dist/core/structure/types.js +1 -0
- package/dist/core/table/AdtTable.d.ts +25 -6
- package/dist/core/table/AdtTable.d.ts.map +1 -1
- package/dist/core/table/AdtTable.js +21 -9
- package/dist/core/table/create.d.ts.map +1 -1
- package/dist/core/table/create.js +2 -1
- package/dist/core/table/read.d.ts.map +1 -1
- package/dist/core/table/read.js +2 -2
- package/dist/core/table/types.d.ts +13 -31
- package/dist/core/table/types.d.ts.map +1 -1
- package/dist/core/table/types.js +1 -0
- package/dist/core/tabletype/AdtDdicTableType.d.ts +5 -5
- package/dist/core/tabletype/AdtDdicTableType.d.ts.map +1 -1
- package/dist/core/tabletype/AdtDdicTableType.js +4 -9
- package/dist/core/tabletype/create.d.ts.map +1 -1
- package/dist/core/tabletype/create.js +2 -1
- package/dist/core/tabletype/types.d.ts +12 -31
- package/dist/core/tabletype/types.d.ts.map +1 -1
- package/dist/core/transformation/AdtTransformation.d.ts +25 -6
- package/dist/core/transformation/AdtTransformation.d.ts.map +1 -1
- package/dist/core/transformation/AdtTransformation.js +21 -9
- package/dist/core/transformation/check.d.ts.map +1 -1
- package/dist/core/transformation/check.js +1 -1
- package/dist/core/transformation/create.d.ts.map +1 -1
- package/dist/core/transformation/create.js +2 -1
- package/dist/core/transformation/types.d.ts +14 -31
- package/dist/core/transformation/types.d.ts.map +1 -1
- package/dist/core/transformation/types.js +1 -0
- package/dist/core/transport/AdtRequest.d.ts +26 -20
- package/dist/core/transport/AdtRequest.d.ts.map +1 -1
- package/dist/core/transport/AdtRequest.js +6 -8
- package/dist/core/transport/index.d.ts +0 -1
- package/dist/core/transport/index.d.ts.map +1 -1
- package/dist/core/transport/index.js +1 -3
- package/dist/core/transport/types.d.ts +15 -77
- package/dist/core/transport/types.d.ts.map +1 -1
- package/dist/endpoints/codes.d.ts +74 -0
- package/dist/endpoints/codes.d.ts.map +1 -0
- package/dist/endpoints/codes.js +95 -0
- package/dist/endpoints/objects.d.ts +0 -11
- package/dist/endpoints/objects.d.ts.map +1 -1
- package/dist/endpoints/objects.js +1 -10
- package/dist/executors/abapUnitRunner.d.ts +15 -6
- package/dist/executors/abapUnitRunner.d.ts.map +1 -1
- package/dist/executors/abapUnitRunner.js +2 -1
- package/dist/executors/abapUnitTestRunner.d.ts +107 -0
- package/dist/executors/abapUnitTestRunner.d.ts.map +1 -0
- package/dist/executors/abapUnitTestRunner.js +99 -0
- package/dist/executors/class/ClassExecutor.d.ts +12 -6
- package/dist/executors/class/ClassExecutor.d.ts.map +1 -1
- package/dist/executors/class/ClassExecutor.js +3 -4
- package/dist/executors/class/ClassTestRunner.d.ts +7 -6
- package/dist/executors/class/ClassTestRunner.d.ts.map +1 -1
- package/dist/executors/class/ClassTestRunner.js +2 -4
- package/dist/executors/class/index.d.ts +0 -2
- package/dist/executors/class/index.d.ts.map +1 -1
- package/dist/executors/class/index.js +1 -5
- package/dist/executors/functionGroup/FunctionGroupTestRunner.d.ts +7 -6
- package/dist/executors/functionGroup/FunctionGroupTestRunner.d.ts.map +1 -1
- package/dist/executors/functionGroup/FunctionGroupTestRunner.js +2 -4
- package/dist/executors/functionGroup/index.d.ts +0 -1
- package/dist/executors/functionGroup/index.d.ts.map +1 -1
- package/dist/executors/functionGroup/index.js +1 -3
- package/dist/executors/functionModule/FunctionModuleTestRunner.d.ts +7 -6
- package/dist/executors/functionModule/FunctionModuleTestRunner.d.ts.map +1 -1
- package/dist/executors/functionModule/FunctionModuleTestRunner.js +2 -4
- package/dist/executors/functionModule/index.d.ts +0 -1
- package/dist/executors/functionModule/index.d.ts.map +1 -1
- package/dist/executors/functionModule/index.js +1 -3
- package/dist/executors/index.d.ts +5 -4
- package/dist/executors/index.d.ts.map +1 -1
- package/dist/executors/index.js +4 -7
- package/dist/executors/program/ProgramExecutor.d.ts +12 -6
- package/dist/executors/program/ProgramExecutor.d.ts.map +1 -1
- package/dist/executors/program/ProgramExecutor.js +3 -4
- package/dist/executors/program/ProgramTestRunner.d.ts +7 -6
- package/dist/executors/program/ProgramTestRunner.d.ts.map +1 -1
- package/dist/executors/program/ProgramTestRunner.js +2 -4
- package/dist/executors/program/index.d.ts +0 -2
- package/dist/executors/program/index.d.ts.map +1 -1
- package/dist/executors/program/index.js +1 -5
- package/dist/executors/traceScheduling.d.ts +2 -1
- package/dist/executors/traceScheduling.d.ts.map +1 -1
- package/dist/executors/traceScheduling.js +2 -4
- package/dist/index.core.d.ts +45 -3
- package/dist/index.core.d.ts.map +1 -1
- package/dist/index.core.js +107 -4
- package/dist/index.executors.d.ts +13 -8
- package/dist/index.executors.d.ts.map +1 -1
- package/dist/index.executors.js +17 -4
- package/dist/index.readings.d.ts +7 -35
- package/dist/index.readings.d.ts.map +1 -1
- package/dist/index.readings.js +8 -6
- package/dist/index.runtime.d.ts +1 -1
- package/dist/index.runtime.d.ts.map +1 -1
- package/dist/runtime/applicationLog/ApplicationLog.d.ts +4 -4
- package/dist/runtime/applicationLog/ApplicationLog.d.ts.map +1 -1
- package/dist/runtime/applicationLog/ApplicationLog.js +5 -7
- package/dist/runtime/atc/AdtAtc.d.ts +3 -3
- package/dist/runtime/atc/AdtAtc.d.ts.map +1 -1
- package/dist/runtime/atc/AdtAtc.js +4 -6
- package/dist/runtime/atc/AtcLog.d.ts +4 -4
- package/dist/runtime/atc/AtcLog.d.ts.map +1 -1
- package/dist/runtime/atc/AtcLog.js +5 -7
- package/dist/runtime/ddic/DdicActivation.d.ts +4 -4
- package/dist/runtime/ddic/DdicActivation.d.ts.map +1 -1
- package/dist/runtime/ddic/DdicActivation.js +5 -7
- package/dist/runtime/debugger/AbapDebugger.d.ts +15 -3
- package/dist/runtime/debugger/AbapDebugger.d.ts.map +1 -1
- package/dist/runtime/debugger/AbapDebugger.js +10 -5
- package/dist/runtime/debugger/AmdpDebugger.d.ts +10 -3
- package/dist/runtime/debugger/AmdpDebugger.d.ts.map +1 -1
- package/dist/runtime/debugger/AmdpDebugger.js +9 -5
- package/dist/runtime/debugger/index.d.ts +1 -1
- package/dist/runtime/debugger/index.d.ts.map +1 -1
- package/dist/runtime/dumps/RuntimeDumps.d.ts +4 -4
- package/dist/runtime/dumps/RuntimeDumps.d.ts.map +1 -1
- package/dist/runtime/dumps/RuntimeDumps.js +5 -7
- package/dist/runtime/feeds/FeedRepository.d.ts +4 -4
- package/dist/runtime/feeds/FeedRepository.d.ts.map +1 -1
- package/dist/runtime/feeds/FeedRepository.js +5 -7
- package/dist/runtime/gatewayErrorLog/GatewayErrorLog.d.ts +4 -4
- package/dist/runtime/gatewayErrorLog/GatewayErrorLog.d.ts.map +1 -1
- package/dist/runtime/gatewayErrorLog/GatewayErrorLog.js +5 -7
- package/dist/runtime/memory/MemorySnapshots.d.ts +10 -3
- package/dist/runtime/memory/MemorySnapshots.d.ts.map +1 -1
- package/dist/runtime/memory/MemorySnapshots.js +9 -5
- package/dist/runtime/systemMessages/SystemMessages.d.ts +4 -4
- package/dist/runtime/systemMessages/SystemMessages.d.ts.map +1 -1
- package/dist/runtime/systemMessages/SystemMessages.js +5 -7
- package/dist/runtime/traces/CrossTraceDomain.d.ts +4 -4
- package/dist/runtime/traces/CrossTraceDomain.d.ts.map +1 -1
- package/dist/runtime/traces/CrossTraceDomain.js +5 -7
- package/dist/runtime/traces/ProfilerDomain.d.ts +4 -3
- package/dist/runtime/traces/ProfilerDomain.d.ts.map +1 -1
- package/dist/runtime/traces/ProfilerDomain.js +5 -7
- package/dist/runtime/traces/St05Trace.d.ts +4 -4
- package/dist/runtime/traces/St05Trace.d.ts.map +1 -1
- package/dist/runtime/traces/St05Trace.js +5 -7
- package/dist/utils/activationUtils.d.ts +19 -6
- package/dist/utils/activationUtils.d.ts.map +1 -1
- package/dist/utils/activationUtils.js +40 -132
- package/dist/utils/checkRun.d.ts +10 -6
- package/dist/utils/checkRun.d.ts.map +1 -1
- package/dist/utils/checkRun.js +12 -69
- package/dist/utils/criticalSection.d.ts +2 -1
- package/dist/utils/criticalSection.d.ts.map +1 -1
- package/dist/utils/criticalSection.js +31 -3
- package/dist/utils/discoveryEndpoints.d.ts +4 -4
- package/dist/utils/discoveryEndpoints.js +4 -4
- package/dist/utils/requestTrace.d.ts.map +1 -1
- package/dist/utils/requestTrace.js +5 -6
- package/docs/README.md +8 -8
- package/docs/usage/ADT_OBJECT_ENTITIES.md +89 -28
- package/docs/usage/ANSWER_SHAPES.md +3 -2
- package/docs/usage/CLIENT_API_REFERENCE.md +105 -81
- package/docs/usage/ERRATA.md +2 -2
- package/docs/usage/MIGRATION-23.md +1 -1
- package/docs/usage/MIGRATION-24.md +4 -2
- package/docs/usage/MIGRATION-37.md +27 -2
- package/docs/usage/MIGRATION-38.md +507 -0
- package/docs/usage/OBJECT_LIFECYCLE.md +37 -22
- package/docs/usage/RFC_CONNECTION.md +24 -13
- package/package.json +12 -24
- package/dist/clients/AdtClientLegacy.d.ts +0 -140
- package/dist/clients/AdtClientLegacy.d.ts.map +0 -1
- package/dist/clients/AdtClientLegacy.js +0 -241
- package/dist/clients/AdtExecutorLegacy.d.ts +0 -39
- package/dist/clients/AdtExecutorLegacy.d.ts.map +0 -1
- package/dist/clients/AdtExecutorLegacy.js +0 -48
- package/dist/clients/absentOnLegacy.d.ts +0 -30
- package/dist/clients/absentOnLegacy.d.ts.map +0 -1
- package/dist/clients/absentOnLegacy.js +0 -67
- package/dist/core/class/AdtClassLegacy.d.ts +0 -39
- package/dist/core/class/AdtClassLegacy.d.ts.map +0 -1
- package/dist/core/class/AdtClassLegacy.js +0 -47
- package/dist/core/ddl/AdtDdlLegacy.d.ts +0 -40
- package/dist/core/ddl/AdtDdlLegacy.d.ts.map +0 -1
- package/dist/core/ddl/AdtDdlLegacy.js +0 -55
- package/dist/core/functionGroup/AdtFunctionGroupLegacy.d.ts +0 -38
- package/dist/core/functionGroup/AdtFunctionGroupLegacy.d.ts.map +0 -1
- package/dist/core/functionGroup/AdtFunctionGroupLegacy.js +0 -46
- package/dist/core/functionInclude/AdtFunctionIncludeLegacy.d.ts +0 -24
- package/dist/core/functionInclude/AdtFunctionIncludeLegacy.d.ts.map +0 -1
- package/dist/core/functionInclude/AdtFunctionIncludeLegacy.js +0 -26
- package/dist/core/functionModule/AdtFunctionModuleLegacy.d.ts +0 -37
- package/dist/core/functionModule/AdtFunctionModuleLegacy.d.ts.map +0 -1
- package/dist/core/functionModule/AdtFunctionModuleLegacy.js +0 -46
- package/dist/core/include/AdtIncludeLegacy.d.ts +0 -23
- package/dist/core/include/AdtIncludeLegacy.d.ts.map +0 -1
- package/dist/core/include/AdtIncludeLegacy.js +0 -25
- package/dist/core/interface/AdtInterfaceLegacy.d.ts +0 -37
- package/dist/core/interface/AdtInterfaceLegacy.d.ts.map +0 -1
- package/dist/core/interface/AdtInterfaceLegacy.js +0 -45
- package/dist/core/messageClass/AdtMessageClassLegacy.d.ts +0 -23
- package/dist/core/messageClass/AdtMessageClassLegacy.d.ts.map +0 -1
- package/dist/core/messageClass/AdtMessageClassLegacy.js +0 -25
- package/dist/core/package/AdtPackageLegacy.d.ts +0 -52
- package/dist/core/package/AdtPackageLegacy.d.ts.map +0 -1
- package/dist/core/package/AdtPackageLegacy.js +0 -82
- package/dist/core/program/AdtProgramLegacy.d.ts +0 -37
- package/dist/core/program/AdtProgramLegacy.d.ts.map +0 -1
- package/dist/core/program/AdtProgramLegacy.js +0 -45
- package/dist/core/shared/AdtUtilsLegacy.d.ts +0 -159
- package/dist/core/shared/AdtUtilsLegacy.d.ts.map +0 -1
- package/dist/core/shared/AdtUtilsLegacy.js +0 -264
- package/dist/core/shared/deleteLegacy.d.ts +0 -28
- package/dist/core/shared/deleteLegacy.d.ts.map +0 -1
- package/dist/core/shared/deleteLegacy.js +0 -39
- package/dist/core/shared/refusalLegacy.d.ts +0 -37
- package/dist/core/shared/refusalLegacy.d.ts.map +0 -1
- package/dist/core/shared/refusalLegacy.js +0 -68
- package/dist/core/transport/AdtRequestLegacy.d.ts +0 -109
- package/dist/core/transport/AdtRequestLegacy.d.ts.map +0 -1
- package/dist/core/transport/AdtRequestLegacy.js +0 -140
- package/dist/core/transport/readLegacy.d.ts +0 -29
- package/dist/core/transport/readLegacy.d.ts.map +0 -1
- package/dist/core/transport/readLegacy.js +0 -46
- package/dist/executors/abapUnitRunLegacy.d.ts +0 -25
- package/dist/executors/abapUnitRunLegacy.d.ts.map +0 -1
- package/dist/executors/abapUnitRunLegacy.js +0 -45
- package/dist/executors/class/ClassExecutorLegacy.d.ts +0 -24
- package/dist/executors/class/ClassExecutorLegacy.d.ts.map +0 -1
- package/dist/executors/class/ClassExecutorLegacy.js +0 -38
- package/dist/executors/class/ClassTestRunnerLegacy.d.ts +0 -30
- package/dist/executors/class/ClassTestRunnerLegacy.d.ts.map +0 -1
- package/dist/executors/class/ClassTestRunnerLegacy.js +0 -42
- package/dist/executors/functionGroup/FunctionGroupTestRunnerLegacy.d.ts +0 -18
- package/dist/executors/functionGroup/FunctionGroupTestRunnerLegacy.d.ts.map +0 -1
- package/dist/executors/functionGroup/FunctionGroupTestRunnerLegacy.js +0 -28
- package/dist/executors/functionModule/FunctionModuleTestRunnerLegacy.d.ts +0 -19
- package/dist/executors/functionModule/FunctionModuleTestRunnerLegacy.d.ts.map +0 -1
- package/dist/executors/functionModule/FunctionModuleTestRunnerLegacy.js +0 -34
- package/dist/executors/program/ProgramExecutorLegacy.d.ts +0 -23
- package/dist/executors/program/ProgramExecutorLegacy.d.ts.map +0 -1
- package/dist/executors/program/ProgramExecutorLegacy.js +0 -37
- package/dist/executors/program/ProgramTestRunnerLegacy.d.ts +0 -18
- package/dist/executors/program/ProgramTestRunnerLegacy.d.ts.map +0 -1
- package/dist/executors/program/ProgramTestRunnerLegacy.js +0 -28
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ TypeScript clients for SAP ABAP Development Tools (ADT).
|
|
|
8
8
|
> member answers the document SAP sent unless you give it a reading when you
|
|
9
9
|
> build it, and judges nothing unless you pass `analyse` with the call. Every
|
|
10
10
|
> reading and verdict it used to apply is a strategy in
|
|
11
|
-
> [`@mcp-abap-adt/adt-strategies`](
|
|
11
|
+
> [`@mcp-abap-adt/adt-strategies`](../adt-strategies). The connection
|
|
12
12
|
> contract moved to `@mcp-abap-adt/interfaces-adt-connection`.
|
|
13
13
|
> [`docs/usage/MIGRATION-23.md`](docs/usage/MIGRATION-23.md) has the replacing
|
|
14
14
|
> code for every removed behaviour.
|
|
@@ -16,6 +16,19 @@ TypeScript clients for SAP ABAP Development Tools (ADT).
|
|
|
16
16
|
> **From 18.x?** Read [`docs/usage/MIGRATION-19.md`](docs/usage/MIGRATION-19.md)
|
|
17
17
|
> first: 19.0.0 is where members became one endpoint call each.
|
|
18
18
|
>
|
|
19
|
+
> **From 37.x?** 38.0.0 (on `interfaces-adt` ^23.1.1) is typed by the ADT type
|
|
20
|
+
> tables: a client is fixed to its release variant (`AdtClientOnPrem`,
|
|
21
|
+
> `AdtClientCloud`, `createAdtClient(connection, { variant })`), every type
|
|
22
|
+
> code is a code of the tables (the `AdtObjectType*` unions, friendly names,
|
|
23
|
+
> `FUNC` and the other codes no table holds are gone), an API with a parent
|
|
24
|
+
> takes it, and `updateMetadata` is there for fifteen more types. It also puts
|
|
25
|
+
> each contract where it is accepted: the result-set contracts (`IClassResults`,
|
|
26
|
+
> …) are imported from `@mcp-abap-adt/interfaces-adt`, and each factory answers
|
|
27
|
+
> its class — a consumer composes the contract it accepts from interfaces-adt.
|
|
28
|
+
> See [Release variants and type codes](#release-variants-and-type-codes),
|
|
29
|
+
> [The contract you accept is yours](#the-contract-you-accept-is-yours) and
|
|
30
|
+
> [`docs/usage/MIGRATION-38.md`](docs/usage/MIGRATION-38.md).
|
|
31
|
+
>
|
|
19
32
|
> **From 36.x?** 37.0.0 (on `interfaces-adt` ^20.1.0) makes
|
|
20
33
|
> `getSystemInformation` answer an `IAdtResponse` — present, absent (a `404`)
|
|
21
34
|
> or failed — and adds the required `objectProperties` slot to `IUtilResults`
|
|
@@ -85,7 +98,7 @@ Nothing. Which part of a document you want, and whether an answer is a failure,
|
|
|
85
98
|
are decisions about your system and your task; since 23.0.0 no member takes
|
|
86
99
|
either on your behalf. The shipped result sets answer documents as they arrived;
|
|
87
100
|
the readings and verdicts that used to be applied here are strategies in
|
|
88
|
-
[`@mcp-abap-adt/adt-strategies`](
|
|
101
|
+
[`@mcp-abap-adt/adt-strategies`](../adt-strategies), which you pass by
|
|
89
102
|
name. See [Strategies](#strategies-what-an-answer-becomes-and-whether-it-failed).
|
|
90
103
|
|
|
91
104
|
#### What This Package Does NOT Do
|
|
@@ -104,7 +117,7 @@ This package interacts with external packages **ONLY through interfaces**:
|
|
|
104
117
|
|
|
105
118
|
| package | what this package takes from it |
|
|
106
119
|
|---|---|
|
|
107
|
-
| [`@mcp-abap-adt/interfaces-adt`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-adt) `^
|
|
120
|
+
| [`@mcp-abap-adt/interfaces-adt`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-adt) `^23.1.1` | the ADT type tables (`ADT_TYPES_ONPREM`, `ADT_TYPES_CLOUD`, `ADT_TYPES_BASIS_740`) and their code types (`AdtTypeCode`, …), the ABAP Unit run registry (`ABAP_UNIT_RUN_TYPES`, `AbapUnitRunObjectType`, `AbapUnitRunTarget`), the capability atoms, every object's config, the result-set contracts, `IAdtAnsweredObject`, `IAdtResponse`, `IAnalyse`, `IAdtAnalyseOptions`, `IAdtHeaders`, `IResultStrategy`, `ADT_NO_FAILURE`, `ADT_TASK_TYPE` |
|
|
108
121
|
| [`@mcp-abap-adt/interfaces-adt-connection`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-adt-connection) `^3.0.0` | `IAbapConnection`, `IAdtWireResponse`, `IAbapRequestOptions`, the connection capability atoms, `ADT_SESSION_ERROR` |
|
|
109
122
|
| [`@mcp-abap-adt/interfaces-network`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-network) `^2.0.1` | `IWebSocketTransport` and its four companions, `HttpError` |
|
|
110
123
|
| [`@mcp-abap-adt/interfaces-utils`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-utils) `^1.1.1` | `ILogger`, `LogLevel`, `XmlNode` |
|
|
@@ -146,7 +159,8 @@ npm install @mcp-abap-adt/adt-clients
|
|
|
146
159
|
- Every answer is a contract — a result or a failure, never a throw
|
|
147
160
|
- Utility functions via `client.getUtils()`
|
|
148
161
|
- Example: `await client.getClass().create({...}, { headers })` — the POST, and nothing else
|
|
149
|
-
-
|
|
162
|
+
- **Fixed to a release variant** (since 38.0.0): `AdtClientOnPrem` (S/4HANA 2025, `ADT_TYPES_ONPREM`), `AdtClientCloud` (ABAP cloud, `ADT_TYPES_CLOUD`), or a plain `AdtClient` served what both serve. A factory or member the variant's table lacks does not compile — see [Release variants and type codes](#release-variants-and-type-codes)
|
|
163
|
+
- **Legacy systems (SAP_BASIS 7.40, measured on 7.40 SP04) are a separate package**, [`@mcp-abap-adt/adt-clients-legacy`](https://github.com/fr0ster/mcp-abap-adt-clients/blob/main/packages/adt-clients-legacy/README.md): its `AdtClientLegacy` and `AdtExecutorLegacy` extend this package's classes. The consumer declares the system type by constructing them over an RFC connection (`new AdtClientLegacy(connection, logger)`); nothing here detects a system, and `createAdtClient(connection, { variant })` answers the declared modern variant's client and sends no request. They are **RFC clients**, supported and measured on SAP_BASIS 7.40 SP04 over RFC only — HTTP to a legacy system is unsupported. What each member does on 7.40 is in that package's [README](https://github.com/fr0ster/mcp-abap-adt-clients/blob/main/packages/adt-clients-legacy/README.md) and [LEGACY.md](https://github.com/fr0ster/mcp-abap-adt-clients/blob/main/packages/adt-clients-legacy/docs/LEGACY.md)
|
|
150
164
|
|
|
151
165
|
2. **AdtRuntimeClient**
|
|
152
166
|
- Stable runtime operations for traces, dumps, logs, feeds, ATC check runs, and more
|
|
@@ -161,13 +175,14 @@ npm install @mcp-abap-adt/adt-clients
|
|
|
161
175
|
- `getClassTestRunner()` for a class's ABAP Unit tests: `run`, `getStatus`, `getResult` (asynchronous, the default), or `runSync` (synchronous)
|
|
162
176
|
- `getProgramTestRunner()` for a report's ABAP Unit tests, in its source or its includes — `run` (asynchronous, the default) or `runSync`
|
|
163
177
|
- `getFunctionGroupTestRunner()` / `getFunctionModuleTestRunner()` for a function group's tests, or a module's — `run` (asynchronous, the default) or `runSync`
|
|
178
|
+
- `getAbapUnitTestRunner()`, the generic runner: `run` of an object target of any type the run registry `ABAP_UNIT_RUN_TYPES` lists (a class include, a CDS view's assigned tests, …) or of a package target, `runSync` of ADT URIs, `getStatus`, `getResult`
|
|
164
179
|
- `getProgramExecutor()` for `programrun` (on-premise systems)
|
|
165
180
|
- Methods: `run`, `runWithProfiler`, and trace scheduling (`scheduleTrace`, `listRequests`, `getRequestsByUri`, `listObjectTypes`, `listProcessTypes`)
|
|
166
181
|
- Each executor factory takes an optional result set, like the runtime client's
|
|
167
|
-
- `createAdtExecutor(connection)`
|
|
182
|
+
- `createAdtExecutor(connection)` returns `AdtExecutor`, like `createAdtClient` detecting nothing. The legacy executor, `AdtExecutorLegacy` of `@mcp-abap-adt/adt-clients-legacy` (SAP_BASIS 7.40 SP04, over RFC), runs ABAP Unit through the synchronous `/abapunit/testruns` request for every runner, and refuses without a request what 7.40 does not serve — the class run (`/oo/classrun`, measured `404`), `getStatus`/`getResult` (no run id) and a function module's `run` (it names no group) — and, until a run measures them, what 7.40 SP04 does not advertise: the program run (`programrun`) and the trace type lists — see [LEGACY.md](https://github.com/fr0ster/mcp-abap-adt-clients/blob/main/packages/adt-clients-legacy/docs/LEGACY.md#abap-unit-runners-and-executors)
|
|
168
183
|
|
|
169
184
|
4. **AdtAbapGitClient**
|
|
170
|
-
- Standalone
|
|
185
|
+
- Standalone, not a factory on `AdtClient`: `AdtAbapGitClient.create(connection, { logger? })` answers the shipped documents (`abapGitDocuments`), `AdtAbapGitClient.create(connection, { logger?, results })` the caller's (since 38.0.0); `new AdtAbapGitClient(connection, { logger?, results })` takes its results always (the options argument, `contentTypeVersion`, was removed in 36.0.0)
|
|
171
186
|
- `link`, `pull`, `unlink({ repositoryId })`, `listRepos`, `getErrorLog(logLink)`, `checkExternalRepo` — one request each; `pull` does not wait
|
|
172
187
|
|
|
173
188
|
5. **AdtClientsWS**
|
|
@@ -175,7 +190,7 @@ npm install @mcp-abap-adt/adt-clients
|
|
|
175
190
|
- Example: `await wsClient.request('<operation>', { … })` against a backend that speaks its envelope
|
|
176
191
|
|
|
177
192
|
6. **AbapDebugger, AmdpDebugger, MemorySnapshots**
|
|
178
|
-
- Standalone, from `@mcp-abap-adt/adt-clients/runtime` or the root: `
|
|
193
|
+
- Standalone, from `@mcp-abap-adt/adt-clients/runtime` or the root: `AbapDebugger.create(connection, { logger?, onConflict? })` answers the shipped documents (`abapDebuggerDocuments`), `AbapDebugger.create(connection, { results, logger?, onConflict? })` the caller's; likewise `AmdpDebugger.create` and `MemorySnapshots.create` (`{ logger?, results? }`, since 38.0.0). `new AbapDebugger(connection, { results, logger?, onConflict? })` takes its results always
|
|
179
194
|
- One member per request, contracts `IAbapDebugger`, `IAmdpDebugger`, `IMemorySnapshots` from `@mcp-abap-adt/interfaces-adt` (contract 18 pairs with clients 32)
|
|
180
195
|
- **The identity states its mode.** `{ debuggingMode: 'user', requestUser, terminalId, ideId }`, or `{ debuggingMode: 'terminal', terminalId, ideId }`; `attach` takes the identity, not the user. A terminal-mode listener catches a run that carries its ids: `run(target, { debuggee: { terminalId, ideId } })` sends them in `SAP-PASSPORT` (since 29.1.0)
|
|
181
196
|
- **Breakpoints are replaced, not added to.** `setBreakpoints` and `syncBreakpoints` replace the identity's set, and `stopListener` deletes it: arm the whole set in one call
|
|
@@ -184,28 +199,51 @@ npm install @mcp-abap-adt/adt-clients
|
|
|
184
199
|
|
|
185
200
|
## Supported Object Types
|
|
186
201
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
|
195
|
-
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
-
|
|
|
201
|
-
|
|
|
202
|
-
|
|
|
203
|
-
|
|
|
204
|
-
|
|
|
205
|
-
|
|
|
206
|
-
|
|
|
207
|
-
|
|
|
208
|
-
|
|
|
202
|
+
What the library serves is declared by the ADT type tables of
|
|
203
|
+
`@mcp-abap-adt/interfaces-adt`, one per release variant; the factory is the
|
|
204
|
+
API, the codes are the tables'. ✅ the variant's table holds the API, — it does
|
|
205
|
+
not (the factory does not compile there). 7.40 is `AdtClientLegacy` of
|
|
206
|
+
`@mcp-abap-adt/adt-clients-legacy`, which serves less than its table lists
|
|
207
|
+
where 7.40 is not measured (its [LEGACY.md](https://github.com/fr0ster/mcp-abap-adt-clients/blob/main/packages/adt-clients-legacy/docs/LEGACY.md)).
|
|
208
|
+
|
|
209
|
+
| Object type | Factory | Codes | On premise | Cloud | 7.40 |
|
|
210
|
+
|---|---|---|---|---|---|
|
|
211
|
+
| Classes | `getClass()` | `CLAS/OC` | ✅ | ✅ | ✅ |
|
|
212
|
+
| Behavior implementations | `getBehaviorImplementation()` | `CLAS/OC` | ✅ | ✅ | — |
|
|
213
|
+
| Behavior definitions | `getBehaviorDefinition()` | `BDEF/BDO` | ✅ | ✅ | — |
|
|
214
|
+
| Interfaces | `getInterface()` | `INTF/OI` | ✅ | ✅ | ✅ |
|
|
215
|
+
| Programs | `getProgram()` | `PROG/P` | ✅ | ✅ | ✅ |
|
|
216
|
+
| Includes | `getInclude()` | `PROG/I` | ✅ | ✅ | ✅ |
|
|
217
|
+
| Enhancements | `getEnhancement()` | `ENHO/XHH`, `ENHO/XHB`, `ENHS/XSB` | ✅ | ✅ | — |
|
|
218
|
+
| Function groups | `getFunctionGroup()` | `FUGR/F` | ✅ | ✅ | ✅ |
|
|
219
|
+
| Function modules | `getFunctionModule()` | `FUGR/FF`, under its group | ✅ | ✅ | ✅ |
|
|
220
|
+
| Function includes | `getFunctionInclude()` | `FUGR/I`, under its group | ✅ | ✅ | ✅ |
|
|
221
|
+
| Domains | `getDomain()` | `DOMA/DD` | ✅ | ✅ | — |
|
|
222
|
+
| Data elements | `getDataElement()` | `DTEL/DE` | ✅ | ✅ | — |
|
|
223
|
+
| Structures | `getStructure()` | `TABL/DS` | ✅ | ✅ | — |
|
|
224
|
+
| Append structures | `getAppendStructure()` | `TABL/DS` | ✅ | ✅ | — |
|
|
225
|
+
| Tables | `getTable()` | `TABL/DT` | ✅ | ✅ | — |
|
|
226
|
+
| Table types | `getTableType()` | `TTYP/DA` | ✅ | ✅ | — |
|
|
227
|
+
| DDL sources (CDS views) | `getDdl()` | `DDLS/DF` | ✅ | ✅ | ✅ |
|
|
228
|
+
| Access controls | `getAccessControl()` | `DCLS/DL` | ✅ | ✅ | — |
|
|
229
|
+
| Metadata extensions | `getMetadataExtension()` | `DDLX/EX` | ✅ | ✅ | — |
|
|
230
|
+
| Service definitions | `getServiceDefinition()` | `SRVD/SRV` | ✅ | ✅ | — |
|
|
231
|
+
| Service bindings | `getServiceBinding()` | `SRVB/SVB` | ✅ | ✅ | — |
|
|
232
|
+
| Scalar functions | `getScalarFunction()` | `DSFD/SCF` | ✅ | ✅ | — |
|
|
233
|
+
| Scalar function implementations | `getScalarFunctionImplementation()` | `DSFI/SFI` | ✅ | ✅ | — |
|
|
234
|
+
| Transformations | `getTransformation()` | `XSLT/VT` | ✅ | ✅ | — |
|
|
235
|
+
| Message classes | `getMessageClass()` | `MSAG/N` | ✅ | ✅ | ✅ |
|
|
236
|
+
| Messages | `getMessageClassMessage()` | `MSAG/NN`, read from its class | ✅ | ✅ | ✅ |
|
|
237
|
+
| Packages | `getPackage()` | `DEVC/K` | ✅ | ✅ | — |
|
|
238
|
+
| Authorization fields | `getAuthorizationField()` | `AUTH` | ✅ | ✅ | — |
|
|
239
|
+
| Feature toggles | `getFeatureToggle()` | `FTG2/FT` | ✅ | ✅ | — |
|
|
240
|
+
| Local includes of a class | `getLocalTestClass()`, `getLocalTypes()`, `getLocalDefinitions()`, `getLocalMacros()` | — | ✅ | ✅ | ✅ |
|
|
241
|
+
| Transport requests | `getRequest()` | — | ✅ | ✅ | ✅ |
|
|
242
|
+
|
|
243
|
+
Which operations each code has — `source`, `updateMetadata`, `run`, … — is the
|
|
244
|
+
code's `operations` in the table; a member whose operation the variant's table
|
|
245
|
+
does not list for the code does not compile (`getProgram().updateMetadata()`
|
|
246
|
+
on a cloud client, say).
|
|
209
247
|
|
|
210
248
|
`getEnhancement().updateMetadata()` writes the whole object document from
|
|
211
249
|
`options.source` under the caller's lock, then the caller unlocks and activates.
|
|
@@ -229,7 +267,7 @@ import {
|
|
|
229
267
|
AdtOnPremConnector,
|
|
230
268
|
OnPremHttpTransport,
|
|
231
269
|
} from '@mcp-abap-adt/connection';
|
|
232
|
-
import {
|
|
270
|
+
import { AdtClientOnPrem, utilDocuments } from '@mcp-abap-adt/adt-clients';
|
|
233
271
|
import {
|
|
234
272
|
utilSearchHits,
|
|
235
273
|
utilWhereUsedReferences,
|
|
@@ -265,7 +303,9 @@ const connection = new AdtOnPremConnector(
|
|
|
265
303
|
// surfacing later as `400 Session not found` mid-edit.
|
|
266
304
|
await connection.connect();
|
|
267
305
|
|
|
268
|
-
|
|
306
|
+
// The release variant is yours to declare, like the system: an on-premise
|
|
307
|
+
// client is typed by ADT_TYPES_ONPREM (AdtClientCloud for ABAP cloud).
|
|
308
|
+
const client = new AdtClientOnPrem(connection, console);
|
|
269
309
|
|
|
270
310
|
// One member, one request: this is the POST that makes the class shell.
|
|
271
311
|
// Writing its source and activating it are calls of your own, below.
|
|
@@ -305,7 +345,7 @@ const utils = client.getUtils({
|
|
|
305
345
|
whereUsed: utilWhereUsedReferences,
|
|
306
346
|
});
|
|
307
347
|
|
|
308
|
-
const found = await utils.search({ query: 'Z*', objectType: 'CLAS' });
|
|
348
|
+
const found = await utils.search({ query: 'Z*', objectType: 'CLAS/OC' });
|
|
309
349
|
if (found.ok) {
|
|
310
350
|
found.getResult().value; // ISearchResult[] — the document, without utilSearchHits
|
|
311
351
|
} else {
|
|
@@ -318,7 +358,7 @@ if (found.ok) {
|
|
|
318
358
|
// /usageReferences/scope sub-resource (some S/4 releases 404 it) is a decision
|
|
319
359
|
// about your system, so it is yours rather than a fallback hidden in here.
|
|
320
360
|
const scope = await utils.getWhereUsedScope(
|
|
321
|
-
{ object_name: 'ZMY_TABLE', object_type: '
|
|
361
|
+
{ object_name: 'ZMY_TABLE', object_type: 'TABL/DT' },
|
|
322
362
|
{ headers: WHERE_USED_SCOPE },
|
|
323
363
|
);
|
|
324
364
|
if (!scope.ok) {
|
|
@@ -334,7 +374,7 @@ const narrowed = utils.modifyWhereUsedScope(scope.getResult().value, {
|
|
|
334
374
|
});
|
|
335
375
|
|
|
336
376
|
const answer = await utils.getWhereUsed(
|
|
337
|
-
{ object_name: 'ZMY_TABLE', object_type: '
|
|
377
|
+
{ object_name: 'ZMY_TABLE', object_type: 'TABL/DT', scopeXml: narrowed },
|
|
338
378
|
{ headers: WHERE_USED },
|
|
339
379
|
);
|
|
340
380
|
|
|
@@ -344,7 +384,8 @@ if (answer.ok) {
|
|
|
344
384
|
const references = answer.getResult().value;
|
|
345
385
|
console.log(`Found ${references.totalReferences} references`);
|
|
346
386
|
for (const ref of references.references) {
|
|
347
|
-
|
|
387
|
+
// `type` for a code of the tables, `unknownType` for any other text.
|
|
388
|
+
console.log(`${ref.name} (${ref.type ?? ref.unknownType}) in ${ref.packageName}`);
|
|
348
389
|
}
|
|
349
390
|
}
|
|
350
391
|
```
|
|
@@ -438,8 +479,8 @@ const result = await runner.getResult(runId, { analyse: analyseUnitTest });
|
|
|
438
479
|
```
|
|
439
480
|
|
|
440
481
|
`run` takes a class name (every test class in it) or a list of
|
|
441
|
-
`{ containerClass, testClass }`. On a legacy system (
|
|
442
|
-
RFC) the runner's `run` sends the synchronous `/abapunit/testruns` request,
|
|
482
|
+
`{ containerClass, testClass }`. On a legacy system (`@mcp-abap-adt/adt-clients-legacy`,
|
|
483
|
+
measured on 7.40 SP04, over RFC) the runner's `run` sends the synchronous `/abapunit/testruns` request,
|
|
443
484
|
`<options>` included, and answers the finished result; `getStatus`/`getResult`
|
|
444
485
|
refuse without a request.
|
|
445
486
|
|
|
@@ -462,7 +503,7 @@ answer the same document — `aunit:runResult` in `http://www.sap.com/adt/aunit`
|
|
|
462
503
|
— with the same methods and alerts. Two differences: the endpoint addresses
|
|
463
504
|
whole classes, so `{ containerClass, testClass }` targets run each distinct
|
|
464
505
|
container whole; and `title` and `context` are not sent. Scope, risk levels and
|
|
465
|
-
durations are, with `run`'s defaults. On a legacy system `run` and `runSync`
|
|
506
|
+
durations are, with `run`'s defaults. On a legacy system (`@mcp-abap-adt/adt-clients-legacy`) `run` and `runSync`
|
|
466
507
|
send this same request, `<options>` included — `run` read by the `run` strategy,
|
|
467
508
|
`runSync` by `result`.
|
|
468
509
|
|
|
@@ -472,7 +513,7 @@ through `executor.getProgramTestRunner().run(programName)`, with the same
|
|
|
472
513
|
`getStatus`/`getResult`. A function group's are written in an include of the
|
|
473
514
|
group (`getFunctionInclude()`) and run through `getFunctionGroupTestRunner()`
|
|
474
515
|
for the whole group or `getFunctionModuleTestRunner()` for one module. On a
|
|
475
|
-
legacy system (measured on 7.40 SP04, over RFC) the report and group runners'
|
|
516
|
+
legacy system (`@mcp-abap-adt/adt-clients-legacy`, measured on 7.40 SP04, over RFC) the report and group runners'
|
|
476
517
|
`run` and `runSync`, and the module runner's `runSync`, send the synchronous
|
|
477
518
|
request below, with `<options>`; the module runner's `run` refuses without a
|
|
478
519
|
request (it names no group, and the request needs the module's URI under its
|
|
@@ -508,14 +549,61 @@ Doc test relation (`"! @testing FUNC:<module>`) on a test class, the default
|
|
|
508
549
|
scope answered the group's tests as a preview (`isForeign="true"`, nothing
|
|
509
550
|
executed) and `scope: { foreignTests: true }` ran them.
|
|
510
551
|
|
|
511
|
-
**
|
|
512
|
-
|
|
552
|
+
**The generic runner, `getAbapUnitTestRunner()`.** The four runners above each
|
|
553
|
+
fix the `osl:object type` they send (`CLAS`, `PROG`, `FUGR`, `FUNC`). The
|
|
554
|
+
generic one takes it from the caller, typed `AbapUnitRunObjectType` — every key
|
|
555
|
+
of `ABAP_UNIT_RUN_TYPES` in `@mcp-abap-adt/interfaces-adt`, and nothing else —
|
|
556
|
+
or runs a package:
|
|
513
557
|
|
|
514
558
|
```typescript
|
|
515
|
-
import
|
|
559
|
+
import { abapUnitTestRunnerDocuments } from '@mcp-abap-adt/adt-clients';
|
|
560
|
+
|
|
561
|
+
const generic = executor.getAbapUnitTestRunner({
|
|
562
|
+
...abapUnitTestRunnerDocuments,
|
|
563
|
+
run: unitTestRunId,
|
|
564
|
+
});
|
|
565
|
+
// An object target: one osl:object in an osl:flatObjectSet.
|
|
566
|
+
await generic.run({ kind: 'object', name: 'ZCL_UNDER_TEST', type: 'CLAS/OC' });
|
|
567
|
+
// A CDS view's tests are assigned tests: they execute only with foreignTests.
|
|
568
|
+
await generic.run(
|
|
569
|
+
{ kind: 'object', name: 'ZI_VIEW', type: 'DDLS/DF' },
|
|
570
|
+
{ scope: { foreignTests: true }, analyse: analyseUnitTestStart },
|
|
571
|
+
);
|
|
572
|
+
// A package target: an osl:packageSet with one osl:package.
|
|
573
|
+
await generic.run({ kind: 'package', name: '$ZPKG', includeSubpackages: true });
|
|
574
|
+
// ADT URIs, on /abapunit/testruns, with the request's headers.
|
|
575
|
+
await generic.runSync(['/sap/bc/adt/oo/classes/zcl_under_test'], {
|
|
576
|
+
headers: { accept: 'application/xml', contentType: 'application/xml' },
|
|
577
|
+
analyse: analyseUnitTest,
|
|
578
|
+
});
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
Both targets go to `POST /sap/bc/adt/abapunit/runs` and are polled with
|
|
582
|
+
`getStatus` and `getResult`, as every runner's. **A CDS view holds no test
|
|
583
|
+
class**: its tests are local test classes elsewhere — a class's testclasses
|
|
584
|
+
include — marked `"! @testing <view>`, and they execute by `DDLS/DF` (or
|
|
585
|
+
`DDLS`) only when the scope sets `foreignTests: true`. Without it, the default
|
|
586
|
+
`addForeignTestsAsPreview: true` lists them in the result **without executing
|
|
587
|
+
them**: every method is there with no alert, so a failing test looks like a
|
|
588
|
+
pass; with the preview off too, the result is empty (measured 2026-10-29 on
|
|
589
|
+
S/4HANA 2025 and ABAP cloud). **A consumer reading a CDS run sets
|
|
590
|
+
`foreignTests: true`.** **A package** runs only as an `osl:packageSet` — `osl:object
|
|
591
|
+
type="DEVC/K"` answered empty (measured 2026-10-29, S/4HANA 2025 and ABAP
|
|
592
|
+
cloud). **A wrong type is not an error**: the endpoint answers the start `201`
|
|
593
|
+
and the result as an empty `<aunit:runResult/>`, which is why the type is the
|
|
594
|
+
compiler's to check. On a legacy system the generic runner keeps `runSync` and
|
|
595
|
+
refuses a target run, `getStatus` and `getResult` without a request (7.40 has
|
|
596
|
+
no `/abapunit/runs`).
|
|
597
|
+
|
|
598
|
+
**AdtUtils read type safety:**
|
|
599
|
+
`readObjectMetadata` and `readObjectSource` take the codes of the tables they
|
|
600
|
+
read (`AdtMetadataReadCode`, `AdtSourceReadCode`), so `'view'` or `'CLAS'` does
|
|
601
|
+
not compile, and a function module's group is required:
|
|
516
602
|
|
|
517
|
-
|
|
518
|
-
await utils.
|
|
603
|
+
```typescript
|
|
604
|
+
await utils.readObjectMetadata('DDLS/DF', 'ZOK_I_CDS_TEST');
|
|
605
|
+
await utils.readObjectSource('DDLS/DF', 'ZOK_I_CDS_TEST');
|
|
606
|
+
await utils.readObjectSource('FUGR/FF', 'Z_MY_FM', 'ZMY_GROUP');
|
|
519
607
|
```
|
|
520
608
|
|
|
521
609
|
**Benefits:**
|
|
@@ -578,10 +666,13 @@ change what you mean to change, pass the result. Anything you leave out is gone,
|
|
|
578
666
|
because nothing is read on your behalf to keep it.
|
|
579
667
|
|
|
580
668
|
For a class, a program or a DDL source the whole content is the **full source**.
|
|
581
|
-
For domain, package, dataElement, tableType, transport
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
the message class until 23.0.0, and none of them does now.
|
|
669
|
+
For domain, package, dataElement, tableType, transport and message class it is
|
|
670
|
+
the object's own **document**, passed as `options.source` to `updateMetadata` —
|
|
671
|
+
the first five and the function group fetched and patched it for you until
|
|
672
|
+
19.0.0, the message class until 23.0.0, and none of them does now. Every type
|
|
673
|
+
that has both — a class, a function group, a table, … (38.0.0 added
|
|
674
|
+
`updateMetadata` to fifteen of them) — writes its metadata document the same way:
|
|
675
|
+
read it, change it, pass the whole document back.
|
|
585
676
|
|
|
586
677
|
```typescript
|
|
587
678
|
const cls = client.getClass();
|
|
@@ -609,7 +700,7 @@ relying on being caught.
|
|
|
609
700
|
**No error strategy ships in this package**, and that is the design: whether an
|
|
610
701
|
answer is a failure depends on which object types you touch and what you were
|
|
611
702
|
doing. If you have no opinion yet,
|
|
612
|
-
[`@mcp-abap-adt/adt-strategies`](
|
|
703
|
+
[`@mcp-abap-adt/adt-strategies`](../adt-strategies) has one — defaults
|
|
613
704
|
derived from recorded ADT answers, each tested against the refusal it came from
|
|
614
705
|
and the success it must be told apart from.
|
|
615
706
|
|
|
@@ -694,6 +785,47 @@ The script uses the same environment variables as the main package:
|
|
|
694
785
|
|
|
695
786
|
See [Tools Documentation](tools/README.md) for complete details and options.
|
|
696
787
|
|
|
788
|
+
### The type tables' conformance check
|
|
789
|
+
|
|
790
|
+
The ADT type tables of `@mcp-abap-adt/interfaces-adt` (`ADT_TYPES_ONPREM`,
|
|
791
|
+
`ADT_TYPES_CLOUD`, `ADT_TYPES_BASIS_740`) are held to what each release
|
|
792
|
+
answers: its `typestructure`, its `discovery` and, per sample object, its
|
|
793
|
+
`urimapper` and metadata answers. The answers are recorded in `corpus/adt/`
|
|
794
|
+
(`typestructure/`, `discovery/`, `conformance/<release>/`; see
|
|
795
|
+
[`corpus/README.md`](corpus/README.md)).
|
|
796
|
+
|
|
797
|
+
- **In CI** — `src/__tests__/unit/conformance/typeTablesConformance.test.ts`
|
|
798
|
+
runs the check against the recorded answers. What it finds is committed
|
|
799
|
+
beside it: the known divergences with their reasons, the list of creates
|
|
800
|
+
without `CREATE` and the collections that advertise no `app:accept` for an
|
|
801
|
+
`updateMetadata` (`recorded.ts`), and the coverage (`coverage.json`). A
|
|
802
|
+
change that changes what the check finds is an edit of those lists.
|
|
803
|
+
- **On a live system** — `src/__tests__/integration/shared/typeTablesConformance.test.ts`
|
|
804
|
+
reads the same endpoints for the configured variant (`environment.system`)
|
|
805
|
+
and runs the same check. It prints the system's identity and writes it
|
|
806
|
+
nowhere:
|
|
807
|
+
|
|
808
|
+
```bash
|
|
809
|
+
MCP_ENV_PATH=<env> MCP_TEST_OVERLAY=<overlay> \
|
|
810
|
+
npm test -- src/__tests__/integration/shared/typeTablesConformance.test.ts
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
**Refreshing a release's answers.** Run the live check with
|
|
814
|
+
`CONFORMANCE_WRITE_DIR=<dir>` (refused when `CI` is set). It writes the
|
|
815
|
+
answers, scrubbed with the corpus placeholders, under `<dir>` in the corpus
|
|
816
|
+
layout: `typestructure/system-description-<release>--07-typestructure.*`,
|
|
817
|
+
`discovery/system-description-<release>--03-discovery.*` and
|
|
818
|
+
`conformance/<release>/` with its `_index.json`. Then:
|
|
819
|
+
|
|
820
|
+
1. Review the written files: no host, user, system id or token may be left
|
|
821
|
+
(`src/__tests__/unit/corpusCarriesNoIdentity.test.ts` checks the corpus).
|
|
822
|
+
2. Copy them over the release's files in `corpus/adt/`. A written
|
|
823
|
+
`_index.json` carries the sample, statuses, both addresses and the files;
|
|
824
|
+
keep the recorded index's notes and reasons where they still hold.
|
|
825
|
+
3. Run `npm run corpus:format`, then the unit tests; edit `recorded.ts` and
|
|
826
|
+
`coverage.json` for what the check now finds, with a reason for each
|
|
827
|
+
divergence.
|
|
828
|
+
|
|
697
829
|
## API Reference
|
|
698
830
|
|
|
699
831
|
### AdtClient Overview
|
|
@@ -793,7 +925,7 @@ The shipped result sets (`classDocuments`, `transportDocuments`,
|
|
|
793
925
|
document as it arrived (`rawDocument`), or nothing (`nothing`) where there is
|
|
794
926
|
nothing to read. No member supplies an `analyse` of its own. Every reading and
|
|
795
927
|
verdict this package used to apply is a named strategy in
|
|
796
|
-
[`@mcp-abap-adt/adt-strategies`](
|
|
928
|
+
[`@mcp-abap-adt/adt-strategies`](../adt-strategies):
|
|
797
929
|
|
|
798
930
|
```typescript
|
|
799
931
|
import { transportDocuments } from '@mcp-abap-adt/adt-clients';
|
|
@@ -868,7 +1000,7 @@ await client.getClass().read(
|
|
|
868
1000
|
```
|
|
869
1001
|
|
|
870
1002
|
- Factory accessors for ADT objects: `client.getClass()`, `client.getProgram()`, `client.getDdl()` (DDL sources — CDS views, AMDP table functions; formerly `getView()`), `client.getTable()`, `client.getScalarFunction()`, `client.getScalarFunctionImplementation()`, `client.getAppendStructure()`, `client.getRequest()`, `client.getUtils()`, etc.
|
|
871
|
-
- Each accessor returns
|
|
1003
|
+
- Each accessor returns its `Adt*` class, typed to its **honest capability set** (since 8.0.0, completed in 12.0.0): the class implements only the capability atoms that object actually supports, written positively — there is no composite at all, and none named for what an object lacks. Since 38.0.0 the accessor answers the class itself (`AdtClass<R>`, …), not a composition of its atoms. Calling a capability a handler lacks — e.g. `client.getDomain().getVersions(...)` — is a **compile error** rather than a runtime throw. See the [Type System](#type-system) section.
|
|
872
1004
|
- See `src/index.ts` for the full type exports and object configs.
|
|
873
1005
|
|
|
874
1006
|
### AdtObject Methods (with Long Polling Support)
|
|
@@ -943,7 +1075,7 @@ still takes an optional `accept` (`IReadOptions`).
|
|
|
943
1075
|
metadata extension and a transport request — send the whole pair now. So do
|
|
944
1076
|
the requests that sent neither: a transport request's `checkDeletion`, and
|
|
945
1077
|
the direct `DELETE` of the legacy client's class, interface, program, DDL
|
|
946
|
-
source, function group and function module.
|
|
1078
|
+
source, function group and function module (now in `@mcp-abap-adt/adt-clients-legacy`).
|
|
947
1079
|
- A message class message's `create`, `update` and `delete` are a chain (read,
|
|
948
1080
|
two locks, the `PUT`, two unlocks): the pair is the `PUT`'s; the chain's own
|
|
949
1081
|
requests keep their types.
|
|
@@ -1073,18 +1205,21 @@ hold yourself:
|
|
|
1073
1205
|
headers) or `AdtContentTypesBase` (v1, universal) from that answer.
|
|
1074
1206
|
- `fetchDiscoveryEndpoints(connection)` / `isEndpointInDiscovery(...)` — the
|
|
1075
1207
|
discovery document and a membership test over it.
|
|
1076
|
-
- `createAdtClient(connection, logger?, options
|
|
1077
|
-
`
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1208
|
+
- `createAdtClient(connection, { variant, logger?, …options })` —
|
|
1209
|
+
`AdtClientOnPrem` for `variant: 'onprem'`, `AdtClientCloud` for `'cloud'`
|
|
1210
|
+
(since 38.0.0; it took `(connection, logger?, options?)` before). It detects
|
|
1211
|
+
nothing and sends no request (since 37.4.0): the consumer declares the system
|
|
1212
|
+
type, and a legacy system is served by `AdtClientLegacy` of
|
|
1213
|
+
`@mcp-abap-adt/adt-clients-legacy`, an RFC client constructed by the consumer.
|
|
1214
|
+
What it serves and what it refuses is in
|
|
1215
|
+
[LEGACY.md](https://github.com/fr0ster/mcp-abap-adt-clients/blob/main/packages/adt-clients-legacy/docs/LEGACY.md).
|
|
1081
1216
|
|
|
1082
1217
|
**A probe answers only for an absent endpoint.** For `isModernAdtSystem` and
|
|
1083
1218
|
`fetchDiscoveryEndpoints` a `404`, `405` or `501` is the answer `false` or an
|
|
1084
1219
|
empty set stands for. Any other failure — no network, an expired session, a
|
|
1085
1220
|
`401`, a `500` — is raised, since 23.0.0: it says nothing about the system, and
|
|
1086
1221
|
swallowing it handed a legacy client to a modern system reached over a broken
|
|
1087
|
-
connection.
|
|
1222
|
+
connection (the factory no longer calls it).
|
|
1088
1223
|
|
|
1089
1224
|
`getSystemInformation` answers rather than raises, and only a `404` is the
|
|
1090
1225
|
endpoint absent. A malformed answer is not a system without the endpoint:
|
|
@@ -1118,7 +1253,7 @@ everything else is not.
|
|
|
1118
1253
|
|
|
1119
1254
|
### Single Definition Site: the contract packages
|
|
1120
1255
|
|
|
1121
|
-
Since **7.5.0**, every contract type is **defined once**, in the contract packages — today `@mcp-abap-adt/interfaces-adt` (`^
|
|
1256
|
+
Since **7.5.0**, every contract type is **defined once**, in the contract packages — today `@mcp-abap-adt/interfaces-adt` (`^23.1.1`) for the ADT contracts and `@mcp-abap-adt/interfaces-adt-connection` (`^3.0.0`) for the connection. This package declares no copies of its own — every `IXxxConfig`, the capability atoms, the result-set contracts a factory accepts (`IClassResults`, …, since 38.0.0), the option and response types and the cross-cutting shared types all live there.
|
|
1122
1257
|
|
|
1123
1258
|
**Import them from the package that owns them:**
|
|
1124
1259
|
|
|
@@ -1145,7 +1280,7 @@ the contract naming one would be describing an implementation.
|
|
|
1145
1280
|
|
|
1146
1281
|
Since **9.0.0** this is the only route: the package no longer re-exports types it does not own. It used to republish 145 of them, which was more than half its public surface — so a consumer could hold `IClassConfig` believing it came from this client, and a type would appear to change whenever this client released, for reasons that had nothing to do with it. Types now travel on the contract package's release cycle, which is where they are actually decided.
|
|
1147
1282
|
|
|
1148
|
-
What this package exports is what it owns: the clients, the handler classes, the batch and runtime facades, the result sets each implementation is built with (`<x>Documents
|
|
1283
|
+
What this package exports is what it owns: the clients, the handler classes, the batch and runtime facades, the default result sets each implementation is built with (`<x>Documents`; the client result-set contracts they satisfy are interfaces-adt's since 38.0.0, the executor, runtime and abapGit ones are still here), the building blocks `rawDocument`, `nothing`, `wireItself` and `nothingIsARefusal`, and a few helpers.
|
|
1149
1284
|
|
|
1150
1285
|
### Honest capability types (since 8.0.0)
|
|
1151
1286
|
|
|
@@ -1166,11 +1301,11 @@ Since **9.0.0** no accessor returns the wide type, and since **12.0.0** none ret
|
|
|
1166
1301
|
|
|
1167
1302
|
Since **24.0.0** there is no unit-test handler at all: every member `getUnitTest()` and `getCdsUnitTest()` had was another handler's request under a second name — the class's create, the local test class's read, update and delete. What was left, running, is `AdtExecutor.getClassTestRunner()` (`IAdtRunnable` plus `ITestRunInformation`), and the CDS test-doubles check is `getDdl().checkCdsTestDoubles()`. See [MIGRATION-24.md](docs/usage/MIGRATION-24.md).
|
|
1168
1303
|
|
|
1169
|
-
Since **25.0.0** ATC takes programs and every kind of include, `interfaces-adt` is `^12.0.0`, group operations refuse a reference they cannot address before any request, and a legacy client answers a refusal for an object type the system lacks instead of throwing. See [MIGRATION-25.md](docs/usage/MIGRATION-25.md).
|
|
1304
|
+
Since **25.0.0** ATC takes programs and every kind of include, `interfaces-adt` is `^12.0.0`, group operations refuse a reference they cannot address before any request, and a legacy client (since 37.4.0 in `@mcp-abap-adt/adt-clients-legacy`) answers a refusal for an object type the system lacks instead of throwing. See [MIGRATION-25.md](docs/usage/MIGRATION-25.md).
|
|
1170
1305
|
|
|
1171
1306
|
The runtime client narrows the same way. `AdtRuntimeClient.getAtc()` implements `IAtcRunStatusReadable & IAtcFindings`, plus `resolveCheckVariant`, `listCheckVariants`, `createWorklist` and `startRun` — a check run is three requests, started and then read, never created, locked, activated or versioned, and the type says so rather than offering the rest and throwing. It is not `IAdtRunnable` since 19.0.0: that atom's `run` is one call.
|
|
1172
1307
|
|
|
1173
|
-
**A guard keeps this true.** `src/__tests__/unit/capabilities/` compares
|
|
1308
|
+
**A guard keeps this true.** `src/__tests__/unit/capabilities/` compares what every factory answers (its class, since 38.0.0) against the atoms in both directions at compile time, refuses a public method of `AdtUtils`, `AdtFeatureToggle` or `AdtServiceBinding` that no interfaces-adt atom declares, calls every method of every declared capability against a recording connection to check it issues the request its capability names, and fails if a new factory appears without an entry. Adding a throwing method back to a narrowed handler stops compiling. The guard walks `AdtClient`; the legacy package runs the same guard over `AdtClientLegacy`; the runtime accessors are pinned by `src/__tests__/unit/clients/AdtRuntimeClient.factory.test.ts`.
|
|
1174
1309
|
|
|
1175
1310
|
One category deliberately remains local, because it is code, not contract:
|
|
1176
1311
|
|
|
@@ -1200,6 +1335,91 @@ sourced from the contract packages.
|
|
|
1200
1335
|
|
|
1201
1336
|
> **Version pairing.** `adt-clients` 32 pairs with `interfaces-adt` 18 and `interfaces-adt-connection` 3 (the enhancement subtype and host contracts), and `adt-strategies` 0.12.0 declares the same ranges. Because the types are sourced rather than copied, `@mcp-abap-adt/interfaces-adt` and `@mcp-abap-adt/interfaces-adt-connection` are hard peers of this package's public API. A major bump there implies a bump here; keep the two in step rather than letting a resolver pick a mismatched pair.
|
|
1202
1337
|
|
|
1338
|
+
### Release variants and type codes
|
|
1339
|
+
|
|
1340
|
+
Since **38.0.0** the library is typed by the ADT type tables of
|
|
1341
|
+
`@mcp-abap-adt/interfaces-adt`: `ADT_TYPES_ONPREM` (S/4HANA 2025),
|
|
1342
|
+
`ADT_TYPES_CLOUD` (ABAP cloud) and `ADT_TYPES_BASIS_740` (SAP_BASIS 7.40). Each
|
|
1343
|
+
names the APIs the library offers on that release — one per factory — with
|
|
1344
|
+
their codes, and for each code its parent API, its name length and the
|
|
1345
|
+
operations the library performs there. The tables are the library's
|
|
1346
|
+
declaration; the [conformance check](#the-type-tables-conformance-check) holds
|
|
1347
|
+
them to what each release answers.
|
|
1348
|
+
|
|
1349
|
+
- **The variant is declared, never detected.** `AdtClient<V>` is fixed to one:
|
|
1350
|
+
`AdtClientOnPrem`, `AdtClientCloud`, or the plain `AdtClient`, served what
|
|
1351
|
+
both modern tables serve. `createAdtClient(connection, { variant, logger })`
|
|
1352
|
+
answers the declared one. A SAP_BASIS 7.40 system is `AdtClientLegacy`
|
|
1353
|
+
(`AdtClient<'basis740'>`) of `@mcp-abap-adt/adt-clients-legacy`.
|
|
1354
|
+
- **The gates are types.** A factory takes `this: this & AdtServedBy<'<api>'>`
|
|
1355
|
+
and a member whose availability differs by variant `this: this &
|
|
1356
|
+
AdtPerformedBy<'<api>', '<operation>'>`: a factory or operation the variant's
|
|
1357
|
+
table lacks is a compile error naming it. The executors and ABAP Unit runners
|
|
1358
|
+
(`AdtExecutor<V>`) are gated the same way.
|
|
1359
|
+
- **A code is a code of the tables.** Every code taken or answered is an
|
|
1360
|
+
`AdtTypeCode` (`'CLAS/OC'`, `'FUGR/FF'`, `'TABL/DT'`, …) or a subset of it
|
|
1361
|
+
(`AdtSourceTypeCode`, `AdtCodeOf<V>`, the `getUtils()` code sets). No
|
|
1362
|
+
friendly name, bare R3TR type or lower-case spelling is taken. `VIEW/DV` is
|
|
1363
|
+
a group-only code: group activation, group deletion and where-used address
|
|
1364
|
+
it, and no factory serves it.
|
|
1365
|
+
- **An API with a parent takes it.** A function module and a function include
|
|
1366
|
+
are addressed under their function group: their members, a
|
|
1367
|
+
`readObjectSource('FUGR/FF', name, group)` and an
|
|
1368
|
+
`IObjectReference<'FUGR/FF'>` require the group.
|
|
1369
|
+
- **What an answer names is `type` or `unknownType`.** A reading of
|
|
1370
|
+
`@mcp-abap-adt/adt-strategies` that takes a code from an answer answers an
|
|
1371
|
+
`IAdtAnsweredObject`: `type` for a code a table holds, `unknownType` — the
|
|
1372
|
+
text as ADT sent it — for any other.
|
|
1373
|
+
|
|
1374
|
+
`src/__tests__/unit/typeCodeLiterals.test.ts` (one per package) holds the
|
|
1375
|
+
source to it: a code literal passes only where the compiler types it by the
|
|
1376
|
+
tables, and a code named in a comment or inside a longer string (a message,
|
|
1377
|
+
an XML template's span) is a code of the tables.
|
|
1378
|
+
|
|
1379
|
+
### The contract you accept is yours
|
|
1380
|
+
|
|
1381
|
+
Since **38.0.0** a contract lives in the package that accepts it. A factory
|
|
1382
|
+
accepts a result set, so the result-set contracts are
|
|
1383
|
+
`@mcp-abap-adt/interfaces-adt`'s; a consumer accepts the client, so the client
|
|
1384
|
+
contract is the consumer's. This package declares no composition: each factory
|
|
1385
|
+
answers its own class, and the class's members are what the factory offers.
|
|
1386
|
+
|
|
1387
|
+
A consumer composes the contract it accepts from interfaces-adt alone — the
|
|
1388
|
+
factories it calls, each answering the atoms whose members it calls, generic
|
|
1389
|
+
over the result-set contract it is given — and types its code against it. The
|
|
1390
|
+
compiler checks, where the client is taken, that `AdtClient`,
|
|
1391
|
+
`AdtClientLegacy` or the consumer's own implementation satisfies it:
|
|
1392
|
+
|
|
1393
|
+
```typescript
|
|
1394
|
+
import type {
|
|
1395
|
+
IAdtLockable,
|
|
1396
|
+
IAdtReadable,
|
|
1397
|
+
IAdtUpdatable,
|
|
1398
|
+
IClassConfig,
|
|
1399
|
+
IClassResults,
|
|
1400
|
+
} from '@mcp-abap-adt/interfaces-adt';
|
|
1401
|
+
import { classDocuments, createAdtClient } from '@mcp-abap-adt/adt-clients';
|
|
1402
|
+
|
|
1403
|
+
interface IMyClient {
|
|
1404
|
+
getClass<R extends IClassResults>(
|
|
1405
|
+
results: R,
|
|
1406
|
+
): IAdtReadable<IClassConfig, ReturnType<R['source']>> &
|
|
1407
|
+
IAdtLockable<IClassConfig> &
|
|
1408
|
+
IAdtUpdatable<Partial<IClassConfig>, ReturnType<R['updated']>>;
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
const client: IMyClient = await createAdtClient(connection, {
|
|
1412
|
+
variant: 'onprem',
|
|
1413
|
+
logger,
|
|
1414
|
+
});
|
|
1415
|
+
const classes = client.getClass(classDocuments); // read answers a string
|
|
1416
|
+
```
|
|
1417
|
+
|
|
1418
|
+
`src/__tests__/unit/clients/consumerContract.test.ts` holds this package to it:
|
|
1419
|
+
such a contract accepts `AdtClient` and an object written by hand, and refuses
|
|
1420
|
+
one missing a member it names; the legacy package proves the same of
|
|
1421
|
+
`AdtClientLegacy`.
|
|
1422
|
+
|
|
1203
1423
|
### Naming Conventions
|
|
1204
1424
|
|
|
1205
1425
|
The package uses **dual naming conventions** to distinguish API layers:
|
|
@@ -1235,6 +1455,7 @@ See [Architecture Documentation](docs/architecture/ARCHITECTURE.md#type-system-a
|
|
|
1235
1455
|
One document per breaking release, each written for a consumer on the contract
|
|
1236
1456
|
before it:
|
|
1237
1457
|
|
|
1458
|
+
- **[37.x → 38.0.0](docs/usage/MIGRATION-38.md)** — the ADT type tables decide: a client is fixed to its release variant, every type code is a code of the tables, an API with a parent takes it, answered objects are `type` / `unknownType`, and `updateMetadata` covers fifteen more types; the result-set contracts are imported from `@mcp-abap-adt/interfaces-adt`, and each factory answers its class, so a consumer composes the contract it accepts from interfaces-adt.
|
|
1238
1459
|
- **[36.x → 37.0.0](docs/usage/MIGRATION-37.md)** — `getSystemInformation` answers an `IAdtResponse` (present, absent for a `404`, or a failure, through `options.analyse`), and `IUtilResults` has the required `objectProperties` slot.
|
|
1239
1460
|
- **[35.x → 36.0.0](docs/usage/MIGRATION-36.md)** — a request's `Accept` and `Content-Type` are the caller's: 32 members take the required `options.headers` and send exactly that pair.
|
|
1240
1461
|
- **[34.x → 35.0.0](docs/usage/MIGRATION-35.md)** — accept negotiation is off by default: a `406`/`415` is the call's answer unless you switch it on.
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Standalone top-level class — NOT a factory on AdtClient (which is
|
|
5
5
|
* reserved for IAdtObject<Config, State> implementations only).
|
|
6
|
-
* Consumers
|
|
6
|
+
* Consumers build it themselves: `AdtAbapGitClient.create(connection, { logger })`
|
|
7
|
+
* answers the shipped documents, `create(connection, { logger, results })` the
|
|
8
|
+
* caller's; `new AdtAbapGitClient(connection, { logger, results })` takes its
|
|
9
|
+
* results always.
|
|
7
10
|
*
|
|
8
11
|
* Implements IAdtAbapGitClient. HTTP operations are delegated to
|
|
9
12
|
* low-level functions in ./abapGit/*; this class owns the options,
|
|
@@ -12,7 +15,7 @@
|
|
|
12
15
|
*/
|
|
13
16
|
import type { IAbapGitExternalRepoCredentials, IAbapGitLinkArgs, IAbapGitPullArgs, IAbapGitUnlinkArgs, IAdtAbapGitClient, IAdtAnalyseOptions, IAdtError, IAdtHeaders, IAdtResponse } from '@mcp-abap-adt/interfaces-adt';
|
|
14
17
|
import type { IAbapConnection } from '@mcp-abap-adt/interfaces-adt-connection';
|
|
15
|
-
import type {
|
|
18
|
+
import type { AdtHandlerOptions, AdtShippedOptions } from '../core/shared/handlerOptions';
|
|
16
19
|
import { abapGitDocuments, type IAbapGitResults } from './abapGit/types';
|
|
17
20
|
/**
|
|
18
21
|
* One request per member, each read by the strategy the client was built
|
|
@@ -28,7 +31,14 @@ export declare class AdtAbapGitClient<R extends IAbapGitResults = typeof abapGit
|
|
|
28
31
|
private readonly connection;
|
|
29
32
|
private readonly logger?;
|
|
30
33
|
private readonly results;
|
|
31
|
-
|
|
34
|
+
/**
|
|
35
|
+
* An abapGit client with the shipped documents, or with the caller's results.
|
|
36
|
+
* No client hands one out, so this is where the shipped documents are the
|
|
37
|
+
* default, as a getter's are.
|
|
38
|
+
*/
|
|
39
|
+
static create(connection: IAbapConnection, options?: AdtShippedOptions<'logger'>): AdtAbapGitClient<typeof abapGitDocuments>;
|
|
40
|
+
static create<R extends IAbapGitResults>(connection: IAbapConnection, options: AdtHandlerOptions<R, 'logger'>): AdtAbapGitClient<R>;
|
|
41
|
+
constructor(connection: IAbapConnection, options: AdtHandlerOptions<R, 'logger'>);
|
|
32
42
|
/** Link a package to a repository. */
|
|
33
43
|
link<E extends IAdtError = IAdtError>(args: IAbapGitLinkArgs, options: {
|
|
34
44
|
headers: IAdtHeaders;
|