@mcp-abap-adt/adt-clients 37.4.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 +266 -46
- 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 +123 -211
- package/dist/clients/AdtClient.d.ts.map +1 -1
- package/dist/clients/AdtClient.js +226 -43
- 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 -8
- package/dist/clients/createAdtClient.d.ts.map +1 -1
- package/dist/clients/createAdtClient.js +12 -9
- 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/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/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/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 +27 -8
- 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 +14 -9
- 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 +14 -88
- 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 +25 -19
- package/dist/core/transport/AdtRequest.d.ts.map +1 -1
- package/dist/core/transport/AdtRequest.js +6 -8
- 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/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/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/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/index.d.ts +1 -0
- package/dist/executors/index.d.ts.map +1 -1
- package/dist/executors/index.js +4 -1
- 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/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 +9 -5
- package/dist/index.core.d.ts.map +1 -1
- package/dist/index.core.js +13 -2
- package/dist/index.executors.d.ts +1 -0
- package/dist/index.executors.d.ts.map +1 -1
- package/dist/index.executors.js +4 -1
- 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/requestTrace.d.ts.map +1 -1
- package/dist/utils/requestTrace.js +5 -6
- package/docs/README.md +5 -4
- package/docs/usage/ADT_OBJECT_ENTITIES.md +79 -10
- package/docs/usage/ANSWER_SHAPES.md +3 -2
- package/docs/usage/CLIENT_API_REFERENCE.md +72 -40
- package/docs/usage/ERRATA.md +2 -2
- package/docs/usage/MIGRATION-38.md +507 -0
- package/docs/usage/OBJECT_LIFECYCLE.md +23 -10
- package/docs/usage/RFC_CONNECTION.md +3 -2
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -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`
|
|
@@ -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
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
|
```
|
|
@@ -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();
|
|
@@ -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
|
|
@@ -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)
|
|
@@ -1073,7 +1205,9 @@ 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
|
|
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
|
|
1077
1211
|
nothing and sends no request (since 37.4.0): the consumer declares the system
|
|
1078
1212
|
type, and a legacy system is served by `AdtClientLegacy` of
|
|
1079
1213
|
`@mcp-abap-adt/adt-clients-legacy`, an RFC client constructed by the consumer.
|
|
@@ -1119,7 +1253,7 @@ everything else is not.
|
|
|
1119
1253
|
|
|
1120
1254
|
### Single Definition Site: the contract packages
|
|
1121
1255
|
|
|
1122
|
-
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.
|
|
1123
1257
|
|
|
1124
1258
|
**Import them from the package that owns them:**
|
|
1125
1259
|
|
|
@@ -1146,7 +1280,7 @@ the contract naming one would be describing an implementation.
|
|
|
1146
1280
|
|
|
1147
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.
|
|
1148
1282
|
|
|
1149
|
-
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.
|
|
1150
1284
|
|
|
1151
1285
|
### Honest capability types (since 8.0.0)
|
|
1152
1286
|
|
|
@@ -1171,7 +1305,7 @@ Since **25.0.0** ATC takes programs and every kind of include, `interfaces-adt`
|
|
|
1171
1305
|
|
|
1172
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.
|
|
1173
1307
|
|
|
1174
|
-
**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`.
|
|
1175
1309
|
|
|
1176
1310
|
One category deliberately remains local, because it is code, not contract:
|
|
1177
1311
|
|
|
@@ -1201,6 +1335,91 @@ sourced from the contract packages.
|
|
|
1201
1335
|
|
|
1202
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.
|
|
1203
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
|
+
|
|
1204
1423
|
### Naming Conventions
|
|
1205
1424
|
|
|
1206
1425
|
The package uses **dual naming conventions** to distinguish API layers:
|
|
@@ -1236,6 +1455,7 @@ See [Architecture Documentation](docs/architecture/ARCHITECTURE.md#type-system-a
|
|
|
1236
1455
|
One document per breaking release, each written for a consumer on the contract
|
|
1237
1456
|
before it:
|
|
1238
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.
|
|
1239
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.
|
|
1240
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.
|
|
1241
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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdtAbapGitClient.d.ts","sourceRoot":"","sources":["../../src/clients/AdtAbapGitClient.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AdtAbapGitClient.d.ts","sourceRoot":"","sources":["../../src/clients/AdtAbapGitClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,+BAA+B,EAC/B,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,YAAY,EAGb,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGzE;;;;;;;;;GASG;AACH,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,eAAe,GAAG,OAAO,gBAAgB,CACnD,YACE,iBAAiB,CACf,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EACtB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EACzB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EACvB,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAC9B;IAEH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAI;IAE5B;;;;OAIG;IACH,MAAM,CAAC,MAAM,CACX,UAAU,EAAE,eAAe,EAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GACpC,gBAAgB,CAAC,OAAO,gBAAgB,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,eAAe,EACrC,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,GACtC,gBAAgB,CAAC,CAAC,CAAC;gBAYpB,UAAU,EAAE,eAAe,EAG3B,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC;IAQzC,sCAAsC;IAChC,IAAI,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACxC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,GACxD,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAWjC;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACxC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,GACxD,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IASpD,iEAAiE;IAC3D,MAAM,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC1C,IAAI,EAAE,kBAAkB,EACxB,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAWjC,+CAA+C;IACzC,SAAS,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC7C,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAQnD,iEAAiE;IAC3D,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAQtD,yEAAyE;IACnE,iBAAiB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACrD,IAAI,EAAE,+BAA+B,EACrC,OAAO,EAAE;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,GACxD,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAS3D"}
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Standalone top-level class — NOT a factory on AdtClient (which is
|
|
6
6
|
* reserved for IAdtObject<Config, State> implementations only).
|
|
7
|
-
* Consumers
|
|
7
|
+
* Consumers build it themselves: `AdtAbapGitClient.create(connection, { logger })`
|
|
8
|
+
* answers the shipped documents, `create(connection, { logger, results })` the
|
|
9
|
+
* caller's; `new AdtAbapGitClient(connection, { logger, results })` takes its
|
|
10
|
+
* results always.
|
|
8
11
|
*
|
|
9
12
|
* Implements IAdtAbapGitClient. HTTP operations are delegated to
|
|
10
13
|
* low-level functions in ./abapGit/*; this class owns the options,
|
|
@@ -35,11 +38,17 @@ class AdtAbapGitClient {
|
|
|
35
38
|
connection;
|
|
36
39
|
logger;
|
|
37
40
|
results;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
static create(connection, options = {}) {
|
|
42
|
+
return new AdtAbapGitClient(connection, {
|
|
43
|
+
...options,
|
|
44
|
+
results: options.results ?? types_1.abapGitDocuments,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
constructor(connection,
|
|
48
|
+
// `contentTypeVersion`, which chose what `link` and `pull` sent, is gone
|
|
49
|
+
// since 36.0.0: those members send the caller's `headers`.
|
|
50
|
+
options) {
|
|
51
|
+
const { logger, results } = options;
|
|
43
52
|
this.connection = connection;
|
|
44
53
|
this.logger = logger;
|
|
45
54
|
this.results = results;
|