@mcp-abap-adt/adt-clients 0.1.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/LICENSE +22 -0
- package/README.md +184 -0
- package/bin/README.md +368 -0
- package/bin/lock-object.js +274 -0
- package/bin/manage-locks.js +331 -0
- package/bin/manage-sessions.js +235 -0
- package/bin/unlock-object.js +291 -0
- package/bin/unlock-test-objects.js +248 -0
- package/dist/clients/CrudClient.d.ts +48 -0
- package/dist/clients/CrudClient.d.ts.map +1 -0
- package/dist/clients/CrudClient.js +135 -0
- package/dist/clients/LockClient.d.ts +28 -0
- package/dist/clients/LockClient.d.ts.map +1 -0
- package/dist/clients/LockClient.js +141 -0
- package/dist/clients/ManagementClient.d.ts +34 -0
- package/dist/clients/ManagementClient.d.ts.map +1 -0
- package/dist/clients/ManagementClient.js +80 -0
- package/dist/clients/ReadOnlyClient.d.ts +70 -0
- package/dist/clients/ReadOnlyClient.d.ts.map +1 -0
- package/dist/clients/ReadOnlyClient.js +141 -0
- package/dist/clients/ValidationClient.d.ts +8 -0
- package/dist/clients/ValidationClient.d.ts.map +1 -0
- package/dist/clients/ValidationClient.js +14 -0
- package/dist/core/class/ClassBuilder.d.ts +140 -0
- package/dist/core/class/ClassBuilder.d.ts.map +1 -0
- package/dist/core/class/ClassBuilder.js +400 -0
- package/dist/core/class/activation.d.ts +11 -0
- package/dist/core/class/activation.d.ts.map +1 -0
- package/dist/core/class/activation.js +16 -0
- package/dist/core/class/check.d.ts +24 -0
- package/dist/core/class/check.d.ts.map +1 -0
- package/dist/core/class/check.js +73 -0
- package/dist/core/class/create.d.ts +30 -0
- package/dist/core/class/create.d.ts.map +1 -0
- package/dist/core/class/create.js +118 -0
- package/dist/core/class/index.d.ts +14 -0
- package/dist/core/class/index.d.ts.map +1 -0
- package/dist/core/class/index.js +31 -0
- package/dist/core/class/lock.d.ts +20 -0
- package/dist/core/class/lock.d.ts.map +1 -0
- package/dist/core/class/lock.js +49 -0
- package/dist/core/class/read.d.ts +34 -0
- package/dist/core/class/read.d.ts.map +1 -0
- package/dist/core/class/read.js +59 -0
- package/dist/core/class/run.d.ts +51 -0
- package/dist/core/class/run.d.ts.map +1 -0
- package/dist/core/class/run.js +105 -0
- package/dist/core/class/unlock.d.ts +11 -0
- package/dist/core/class/unlock.d.ts.map +1 -0
- package/dist/core/class/unlock.js +16 -0
- package/dist/core/class/update.d.ts +11 -0
- package/dist/core/class/update.d.ts.map +1 -0
- package/dist/core/class/update.js +30 -0
- package/dist/core/class/validation.d.ts +28 -0
- package/dist/core/class/validation.d.ts.map +1 -0
- package/dist/core/class/validation.js +269 -0
- package/dist/core/dataElement/DataElementBuilder.d.ts +113 -0
- package/dist/core/dataElement/DataElementBuilder.d.ts.map +1 -0
- package/dist/core/dataElement/DataElementBuilder.js +449 -0
- package/dist/core/dataElement/activation.d.ts +11 -0
- package/dist/core/dataElement/activation.d.ts.map +1 -0
- package/dist/core/dataElement/activation.js +123 -0
- package/dist/core/dataElement/check.d.ts +12 -0
- package/dist/core/dataElement/check.d.ts.map +1 -0
- package/dist/core/dataElement/check.js +32 -0
- package/dist/core/dataElement/create.d.ts +12 -0
- package/dist/core/dataElement/create.d.ts.map +1 -0
- package/dist/core/dataElement/create.js +259 -0
- package/dist/core/dataElement/delete.d.ts +14 -0
- package/dist/core/dataElement/delete.d.ts.map +1 -0
- package/dist/core/dataElement/delete.js +21 -0
- package/dist/core/dataElement/index.d.ts +14 -0
- package/dist/core/dataElement/index.d.ts.map +1 -0
- package/dist/core/dataElement/index.js +31 -0
- package/dist/core/dataElement/lock.d.ts +10 -0
- package/dist/core/dataElement/lock.d.ts.map +1 -0
- package/dist/core/dataElement/lock.js +31 -0
- package/dist/core/dataElement/read.d.ts +17 -0
- package/dist/core/dataElement/read.d.ts.map +1 -0
- package/dist/core/dataElement/read.js +42 -0
- package/dist/core/dataElement/types.d.ts +64 -0
- package/dist/core/dataElement/types.d.ts.map +1 -0
- package/dist/core/dataElement/types.js +5 -0
- package/dist/core/dataElement/unlock.d.ts +11 -0
- package/dist/core/dataElement/unlock.d.ts.map +1 -0
- package/dist/core/dataElement/unlock.js +17 -0
- package/dist/core/dataElement/update.d.ts +29 -0
- package/dist/core/dataElement/update.d.ts.map +1 -0
- package/dist/core/dataElement/update.js +269 -0
- package/dist/core/delete.d.ts +22 -0
- package/dist/core/delete.d.ts.map +1 -0
- package/dist/core/delete.js +148 -0
- package/dist/core/domain/DomainBuilder.d.ts +135 -0
- package/dist/core/domain/DomainBuilder.d.ts.map +1 -0
- package/dist/core/domain/DomainBuilder.js +430 -0
- package/dist/core/domain/activation.d.ts +11 -0
- package/dist/core/domain/activation.d.ts.map +1 -0
- package/dist/core/domain/activation.js +16 -0
- package/dist/core/domain/check.d.ts +16 -0
- package/dist/core/domain/check.d.ts.map +1 -0
- package/dist/core/domain/check.js +36 -0
- package/dist/core/domain/create.d.ts +21 -0
- package/dist/core/domain/create.d.ts.map +1 -0
- package/dist/core/domain/create.js +172 -0
- package/dist/core/domain/delete.d.ts +14 -0
- package/dist/core/domain/delete.d.ts.map +1 -0
- package/dist/core/domain/delete.js +21 -0
- package/dist/core/domain/index.d.ts +14 -0
- package/dist/core/domain/index.d.ts.map +1 -0
- package/dist/core/domain/index.js +31 -0
- package/dist/core/domain/lock.d.ts +15 -0
- package/dist/core/domain/lock.d.ts.map +1 -0
- package/dist/core/domain/lock.js +61 -0
- package/dist/core/domain/read.d.ts +17 -0
- package/dist/core/domain/read.d.ts.map +1 -0
- package/dist/core/domain/read.js +42 -0
- package/dist/core/domain/types.d.ts +38 -0
- package/dist/core/domain/types.d.ts.map +1 -0
- package/dist/core/domain/types.js +5 -0
- package/dist/core/domain/unlock.d.ts +11 -0
- package/dist/core/domain/unlock.d.ts.map +1 -0
- package/dist/core/domain/unlock.js +17 -0
- package/dist/core/domain/update.d.ts +12 -0
- package/dist/core/domain/update.d.ts.map +1 -0
- package/dist/core/domain/update.js +144 -0
- package/dist/core/functionGroup/FunctionGroupBuilder.d.ts +91 -0
- package/dist/core/functionGroup/FunctionGroupBuilder.d.ts.map +1 -0
- package/dist/core/functionGroup/FunctionGroupBuilder.js +268 -0
- package/dist/core/functionGroup/activation.d.ts +10 -0
- package/dist/core/functionGroup/activation.d.ts.map +1 -0
- package/dist/core/functionGroup/activation.js +30 -0
- package/dist/core/functionGroup/check.d.ts +24 -0
- package/dist/core/functionGroup/check.d.ts.map +1 -0
- package/dist/core/functionGroup/check.js +91 -0
- package/dist/core/functionGroup/create.d.ts +12 -0
- package/dist/core/functionGroup/create.d.ts.map +1 -0
- package/dist/core/functionGroup/create.js +90 -0
- package/dist/core/functionGroup/delete.d.ts +14 -0
- package/dist/core/functionGroup/delete.d.ts.map +1 -0
- package/dist/core/functionGroup/delete.js +21 -0
- package/dist/core/functionGroup/index.d.ts +15 -0
- package/dist/core/functionGroup/index.d.ts.map +1 -0
- package/dist/core/functionGroup/index.js +32 -0
- package/dist/core/functionGroup/lock.d.ts +25 -0
- package/dist/core/functionGroup/lock.d.ts.map +1 -0
- package/dist/core/functionGroup/lock.js +50 -0
- package/dist/core/functionGroup/read.d.ts +17 -0
- package/dist/core/functionGroup/read.d.ts.map +1 -0
- package/dist/core/functionGroup/read.js +42 -0
- package/dist/core/functionGroup/types.d.ts +11 -0
- package/dist/core/functionGroup/types.d.ts.map +1 -0
- package/dist/core/functionGroup/types.js +5 -0
- package/dist/core/functionGroup/unlock.d.ts +5 -0
- package/dist/core/functionGroup/unlock.d.ts.map +1 -0
- package/dist/core/functionGroup/unlock.js +8 -0
- package/dist/core/functionGroup/update.d.ts +20 -0
- package/dist/core/functionGroup/update.d.ts.map +1 -0
- package/dist/core/functionGroup/update.js +119 -0
- package/dist/core/functionGroup/validation.d.ts +10 -0
- package/dist/core/functionGroup/validation.d.ts.map +1 -0
- package/dist/core/functionGroup/validation.js +17 -0
- package/dist/core/functionModule/FunctionModuleBuilder.d.ts +101 -0
- package/dist/core/functionModule/FunctionModuleBuilder.d.ts.map +1 -0
- package/dist/core/functionModule/FunctionModuleBuilder.js +314 -0
- package/dist/core/functionModule/activation.d.ts +10 -0
- package/dist/core/functionModule/activation.d.ts.map +1 -0
- package/dist/core/functionModule/activation.js +17 -0
- package/dist/core/functionModule/check.d.ts +23 -0
- package/dist/core/functionModule/check.d.ts.map +1 -0
- package/dist/core/functionModule/check.js +116 -0
- package/dist/core/functionModule/create.d.ts +12 -0
- package/dist/core/functionModule/create.d.ts.map +1 -0
- package/dist/core/functionModule/create.js +158 -0
- package/dist/core/functionModule/delete.d.ts +15 -0
- package/dist/core/functionModule/delete.d.ts.map +1 -0
- package/dist/core/functionModule/delete.js +25 -0
- package/dist/core/functionModule/index.d.ts +15 -0
- package/dist/core/functionModule/index.d.ts.map +1 -0
- package/dist/core/functionModule/index.js +32 -0
- package/dist/core/functionModule/lock.d.ts +18 -0
- package/dist/core/functionModule/lock.d.ts.map +1 -0
- package/dist/core/functionModule/lock.js +52 -0
- package/dist/core/functionModule/read.d.ts +31 -0
- package/dist/core/functionModule/read.d.ts.map +1 -0
- package/dist/core/functionModule/read.js +57 -0
- package/dist/core/functionModule/types.d.ts +19 -0
- package/dist/core/functionModule/types.d.ts.map +1 -0
- package/dist/core/functionModule/types.js +5 -0
- package/dist/core/functionModule/unlock.d.ts +10 -0
- package/dist/core/functionModule/unlock.d.ts.map +1 -0
- package/dist/core/functionModule/unlock.js +20 -0
- package/dist/core/functionModule/update.d.ts +17 -0
- package/dist/core/functionModule/update.d.ts.map +1 -0
- package/dist/core/functionModule/update.js +103 -0
- package/dist/core/functionModule/validation.d.ts +27 -0
- package/dist/core/functionModule/validation.d.ts.map +1 -0
- package/dist/core/functionModule/validation.js +107 -0
- package/dist/core/interface/InterfaceBuilder.d.ts +98 -0
- package/dist/core/interface/InterfaceBuilder.d.ts.map +1 -0
- package/dist/core/interface/InterfaceBuilder.js +311 -0
- package/dist/core/interface/activation.d.ts +11 -0
- package/dist/core/interface/activation.d.ts.map +1 -0
- package/dist/core/interface/activation.js +16 -0
- package/dist/core/interface/check.d.ts +10 -0
- package/dist/core/interface/check.d.ts.map +1 -0
- package/dist/core/interface/check.js +18 -0
- package/dist/core/interface/create.d.ts +12 -0
- package/dist/core/interface/create.d.ts.map +1 -0
- package/dist/core/interface/create.js +119 -0
- package/dist/core/interface/delete.d.ts +20 -0
- package/dist/core/interface/delete.d.ts.map +1 -0
- package/dist/core/interface/delete.js +47 -0
- package/dist/core/interface/index.d.ts +15 -0
- package/dist/core/interface/index.d.ts.map +1 -0
- package/dist/core/interface/index.js +32 -0
- package/dist/core/interface/lock.d.ts +23 -0
- package/dist/core/interface/lock.d.ts.map +1 -0
- package/dist/core/interface/lock.js +51 -0
- package/dist/core/interface/read.d.ts +26 -0
- package/dist/core/interface/read.d.ts.map +1 -0
- package/dist/core/interface/read.js +51 -0
- package/dist/core/interface/types.d.ts +19 -0
- package/dist/core/interface/types.d.ts.map +1 -0
- package/dist/core/interface/types.js +5 -0
- package/dist/core/interface/unlock.d.ts +11 -0
- package/dist/core/interface/unlock.d.ts.map +1 -0
- package/dist/core/interface/unlock.js +35 -0
- package/dist/core/interface/update.d.ts +12 -0
- package/dist/core/interface/update.d.ts.map +1 -0
- package/dist/core/interface/update.js +82 -0
- package/dist/core/interface/validation.d.ts +10 -0
- package/dist/core/interface/validation.d.ts.map +1 -0
- package/dist/core/interface/validation.js +17 -0
- package/dist/core/managementOperations.d.ts +34 -0
- package/dist/core/managementOperations.d.ts.map +1 -0
- package/dist/core/managementOperations.js +136 -0
- package/dist/core/package/PackageBuilder.d.ts +129 -0
- package/dist/core/package/PackageBuilder.d.ts.map +1 -0
- package/dist/core/package/PackageBuilder.js +386 -0
- package/dist/core/package/check.d.ts +9 -0
- package/dist/core/package/check.d.ts.map +1 -0
- package/dist/core/package/check.js +29 -0
- package/dist/core/package/create.d.ts +12 -0
- package/dist/core/package/create.d.ts.map +1 -0
- package/dist/core/package/create.js +145 -0
- package/dist/core/package/delete.d.ts +27 -0
- package/dist/core/package/delete.d.ts.map +1 -0
- package/dist/core/package/delete.js +138 -0
- package/dist/core/package/index.d.ts +15 -0
- package/dist/core/package/index.d.ts.map +1 -0
- package/dist/core/package/index.js +32 -0
- package/dist/core/package/lock.d.ts +10 -0
- package/dist/core/package/lock.d.ts.map +1 -0
- package/dist/core/package/lock.js +28 -0
- package/dist/core/package/read.d.ts +17 -0
- package/dist/core/package/read.d.ts.map +1 -0
- package/dist/core/package/read.js +42 -0
- package/dist/core/package/transportCheck.d.ts +10 -0
- package/dist/core/package/transportCheck.d.ts.map +1 -0
- package/dist/core/package/transportCheck.js +52 -0
- package/dist/core/package/types.d.ts +15 -0
- package/dist/core/package/types.d.ts.map +1 -0
- package/dist/core/package/types.js +5 -0
- package/dist/core/package/unlock.d.ts +11 -0
- package/dist/core/package/unlock.d.ts.map +1 -0
- package/dist/core/package/unlock.js +16 -0
- package/dist/core/package/update.d.ts +19 -0
- package/dist/core/package/update.d.ts.map +1 -0
- package/dist/core/package/update.js +125 -0
- package/dist/core/package/validation.d.ts +14 -0
- package/dist/core/package/validation.d.ts.map +1 -0
- package/dist/core/package/validation.js +72 -0
- package/dist/core/program/ProgramBuilder.d.ts +102 -0
- package/dist/core/program/ProgramBuilder.d.ts.map +1 -0
- package/dist/core/program/ProgramBuilder.js +321 -0
- package/dist/core/program/activation.d.ts +11 -0
- package/dist/core/program/activation.d.ts.map +1 -0
- package/dist/core/program/activation.js +16 -0
- package/dist/core/program/check.d.ts +10 -0
- package/dist/core/program/check.d.ts.map +1 -0
- package/dist/core/program/check.js +18 -0
- package/dist/core/program/create.d.ts +23 -0
- package/dist/core/program/create.d.ts.map +1 -0
- package/dist/core/program/create.js +159 -0
- package/dist/core/program/delete.d.ts +14 -0
- package/dist/core/program/delete.d.ts.map +1 -0
- package/dist/core/program/delete.js +21 -0
- package/dist/core/program/index.d.ts +14 -0
- package/dist/core/program/index.d.ts.map +1 -0
- package/dist/core/program/index.js +31 -0
- package/dist/core/program/lock.d.ts +20 -0
- package/dist/core/program/lock.d.ts.map +1 -0
- package/dist/core/program/lock.js +49 -0
- package/dist/core/program/read.d.ts +26 -0
- package/dist/core/program/read.d.ts.map +1 -0
- package/dist/core/program/read.js +51 -0
- package/dist/core/program/unlock.d.ts +11 -0
- package/dist/core/program/unlock.d.ts.map +1 -0
- package/dist/core/program/unlock.js +16 -0
- package/dist/core/program/update.d.ts +16 -0
- package/dist/core/program/update.d.ts.map +1 -0
- package/dist/core/program/update.js +82 -0
- package/dist/core/program/validation.d.ts +10 -0
- package/dist/core/program/validation.d.ts.map +1 -0
- package/dist/core/program/validation.js +17 -0
- package/dist/core/readOperations.d.ts +63 -0
- package/dist/core/readOperations.d.ts.map +1 -0
- package/dist/core/readOperations.js +204 -0
- package/dist/core/shared/checkRun.d.ts +68 -0
- package/dist/core/shared/checkRun.d.ts.map +1 -0
- package/dist/core/shared/checkRun.js +292 -0
- package/dist/core/shared/readMetadata.d.ts +16 -0
- package/dist/core/shared/readMetadata.d.ts.map +1 -0
- package/dist/core/shared/readMetadata.js +74 -0
- package/dist/core/shared/readSource.d.ts +21 -0
- package/dist/core/shared/readSource.d.ts.map +1 -0
- package/dist/core/shared/readSource.js +83 -0
- package/dist/core/shared/search.d.ts +26 -0
- package/dist/core/shared/search.d.ts.map +1 -0
- package/dist/core/shared/search.js +32 -0
- package/dist/core/shared/sqlQuery.d.ts +22 -0
- package/dist/core/shared/sqlQuery.d.ts.map +1 -0
- package/dist/core/shared/sqlQuery.js +36 -0
- package/dist/core/shared/systemInfo.d.ts +22 -0
- package/dist/core/shared/systemInfo.d.ts.map +1 -0
- package/dist/core/shared/systemInfo.js +67 -0
- package/dist/core/shared/tableContents.d.ts +22 -0
- package/dist/core/shared/tableContents.d.ts.map +1 -0
- package/dist/core/shared/tableContents.js +89 -0
- package/dist/core/shared/validation.d.ts +26 -0
- package/dist/core/shared/validation.d.ts.map +1 -0
- package/dist/core/shared/validation.js +134 -0
- package/dist/core/shared/whereUsed.d.ts +19 -0
- package/dist/core/shared/whereUsed.d.ts.map +1 -0
- package/dist/core/shared/whereUsed.js +88 -0
- package/dist/core/structure/StructureBuilder.d.ts +124 -0
- package/dist/core/structure/StructureBuilder.d.ts.map +1 -0
- package/dist/core/structure/StructureBuilder.js +357 -0
- package/dist/core/structure/activation.d.ts +10 -0
- package/dist/core/structure/activation.d.ts.map +1 -0
- package/dist/core/structure/activation.js +15 -0
- package/dist/core/structure/check.d.ts +12 -0
- package/dist/core/structure/check.d.ts.map +1 -0
- package/dist/core/structure/check.js +44 -0
- package/dist/core/structure/create.d.ts +12 -0
- package/dist/core/structure/create.d.ts.map +1 -0
- package/dist/core/structure/create.js +136 -0
- package/dist/core/structure/delete.d.ts +14 -0
- package/dist/core/structure/delete.d.ts.map +1 -0
- package/dist/core/structure/delete.js +21 -0
- package/dist/core/structure/index.d.ts +15 -0
- package/dist/core/structure/index.d.ts.map +1 -0
- package/dist/core/structure/index.js +32 -0
- package/dist/core/structure/lock.d.ts +10 -0
- package/dist/core/structure/lock.d.ts.map +1 -0
- package/dist/core/structure/lock.js +28 -0
- package/dist/core/structure/read.d.ts +26 -0
- package/dist/core/structure/read.d.ts.map +1 -0
- package/dist/core/structure/read.js +51 -0
- package/dist/core/structure/types.d.ts +33 -0
- package/dist/core/structure/types.d.ts.map +1 -0
- package/dist/core/structure/types.js +5 -0
- package/dist/core/structure/unlock.d.ts +11 -0
- package/dist/core/structure/unlock.d.ts.map +1 -0
- package/dist/core/structure/unlock.js +16 -0
- package/dist/core/structure/update.d.ts +11 -0
- package/dist/core/structure/update.d.ts.map +1 -0
- package/dist/core/structure/update.js +26 -0
- package/dist/core/structure/validation.d.ts +10 -0
- package/dist/core/structure/validation.d.ts.map +1 -0
- package/dist/core/structure/validation.js +17 -0
- package/dist/core/table/TableBuilder.d.ts +115 -0
- package/dist/core/table/TableBuilder.d.ts.map +1 -0
- package/dist/core/table/TableBuilder.js +328 -0
- package/dist/core/table/activation.d.ts +10 -0
- package/dist/core/table/activation.d.ts.map +1 -0
- package/dist/core/table/activation.js +15 -0
- package/dist/core/table/check.d.ts +11 -0
- package/dist/core/table/check.d.ts.map +1 -0
- package/dist/core/table/check.js +30 -0
- package/dist/core/table/create.d.ts +12 -0
- package/dist/core/table/create.d.ts.map +1 -0
- package/dist/core/table/create.js +182 -0
- package/dist/core/table/delete.d.ts +14 -0
- package/dist/core/table/delete.d.ts.map +1 -0
- package/dist/core/table/delete.js +21 -0
- package/dist/core/table/index.d.ts +15 -0
- package/dist/core/table/index.d.ts.map +1 -0
- package/dist/core/table/index.js +32 -0
- package/dist/core/table/lock.d.ts +9 -0
- package/dist/core/table/lock.d.ts.map +1 -0
- package/dist/core/table/lock.js +29 -0
- package/dist/core/table/read.d.ts +26 -0
- package/dist/core/table/read.d.ts.map +1 -0
- package/dist/core/table/read.js +51 -0
- package/dist/core/table/types.d.ts +10 -0
- package/dist/core/table/types.d.ts.map +1 -0
- package/dist/core/table/types.js +5 -0
- package/dist/core/table/unlock.d.ts +15 -0
- package/dist/core/table/unlock.d.ts.map +1 -0
- package/dist/core/table/unlock.js +32 -0
- package/dist/core/table/update.d.ts +16 -0
- package/dist/core/table/update.d.ts.map +1 -0
- package/dist/core/table/update.js +32 -0
- package/dist/core/table/validation.d.ts +10 -0
- package/dist/core/table/validation.d.ts.map +1 -0
- package/dist/core/table/validation.js +17 -0
- package/dist/core/transport/TransportBuilder.d.ts +85 -0
- package/dist/core/transport/TransportBuilder.d.ts.map +1 -0
- package/dist/core/transport/TransportBuilder.js +154 -0
- package/dist/core/transport/create.d.ts +11 -0
- package/dist/core/transport/create.d.ts.map +1 -0
- package/dist/core/transport/create.js +157 -0
- package/dist/core/transport/index.d.ts +8 -0
- package/dist/core/transport/index.d.ts.map +1 -0
- package/dist/core/transport/index.js +25 -0
- package/dist/core/transport/read.d.ts +10 -0
- package/dist/core/transport/read.d.ts.map +1 -0
- package/dist/core/transport/read.js +22 -0
- package/dist/core/transport/types.d.ts +10 -0
- package/dist/core/transport/types.d.ts.map +1 -0
- package/dist/core/transport/types.js +5 -0
- package/dist/core/view/ViewBuilder.d.ts +117 -0
- package/dist/core/view/ViewBuilder.d.ts.map +1 -0
- package/dist/core/view/ViewBuilder.js +335 -0
- package/dist/core/view/activation.d.ts +10 -0
- package/dist/core/view/activation.d.ts.map +1 -0
- package/dist/core/view/activation.js +15 -0
- package/dist/core/view/check.d.ts +7 -0
- package/dist/core/view/check.d.ts.map +1 -0
- package/dist/core/view/check.js +57 -0
- package/dist/core/view/create.d.ts +12 -0
- package/dist/core/view/create.d.ts.map +1 -0
- package/dist/core/view/create.js +88 -0
- package/dist/core/view/delete.d.ts +14 -0
- package/dist/core/view/delete.d.ts.map +1 -0
- package/dist/core/view/delete.js +21 -0
- package/dist/core/view/index.d.ts +15 -0
- package/dist/core/view/index.d.ts.map +1 -0
- package/dist/core/view/index.js +32 -0
- package/dist/core/view/lock.d.ts +18 -0
- package/dist/core/view/lock.d.ts.map +1 -0
- package/dist/core/view/lock.js +45 -0
- package/dist/core/view/read.d.ts +26 -0
- package/dist/core/view/read.d.ts.map +1 -0
- package/dist/core/view/read.js +51 -0
- package/dist/core/view/types.d.ts +19 -0
- package/dist/core/view/types.d.ts.map +1 -0
- package/dist/core/view/types.js +5 -0
- package/dist/core/view/unlock.d.ts +10 -0
- package/dist/core/view/unlock.d.ts.map +1 -0
- package/dist/core/view/unlock.js +15 -0
- package/dist/core/view/update.d.ts +12 -0
- package/dist/core/view/update.d.ts.map +1 -0
- package/dist/core/view/update.js +89 -0
- package/dist/core/view/validation.d.ts +10 -0
- package/dist/core/view/validation.d.ts.map +1 -0
- package/dist/core/view/validation.js +17 -0
- package/dist/core.d.ts +133 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +175 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/utils/activationUtils.d.ts +44 -0
- package/dist/utils/activationUtils.d.ts.map +1 -0
- package/dist/utils/activationUtils.js +127 -0
- package/dist/utils/internalUtils.d.ts +12 -0
- package/dist/utils/internalUtils.d.ts.map +1 -0
- package/dist/utils/internalUtils.js +16 -0
- package/dist/utils/lockStateManager.d.ts +64 -0
- package/dist/utils/lockStateManager.d.ts.map +1 -0
- package/dist/utils/lockStateManager.js +172 -0
- package/dist/utils/sessionUtils.d.ts +69 -0
- package/dist/utils/sessionUtils.d.ts.map +1 -0
- package/dist/utils/sessionUtils.js +134 -0
- package/package.json +75 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interface create operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createInterface = createInterface;
|
|
7
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
8
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
9
|
+
const lock_1 = require("./lock");
|
|
10
|
+
const unlock_1 = require("./unlock");
|
|
11
|
+
const activation_1 = require("./activation");
|
|
12
|
+
const systemInfo_1 = require("../shared/systemInfo");
|
|
13
|
+
/**
|
|
14
|
+
* Generate minimal interface source code if not provided
|
|
15
|
+
*/
|
|
16
|
+
function generateInterfaceTemplate(interfaceName, description) {
|
|
17
|
+
return `INTERFACE ${interfaceName}
|
|
18
|
+
PUBLIC.
|
|
19
|
+
|
|
20
|
+
" ${description}
|
|
21
|
+
|
|
22
|
+
METHODS: get_value
|
|
23
|
+
RETURNING VALUE(rv_result) TYPE string.
|
|
24
|
+
|
|
25
|
+
ENDINTERFACE.`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create interface object with metadata
|
|
29
|
+
*/
|
|
30
|
+
async function createInterfaceObject(connection, interfaceName, description, packageName, transportRequest, sessionId, masterSystem, responsible) {
|
|
31
|
+
// Get masterSystem and responsible (only for cloud systems)
|
|
32
|
+
// On cloud, getSystemInformation returns systemID and userName
|
|
33
|
+
// On on-premise, it returns null, so we don't add these attributes
|
|
34
|
+
let finalMasterSystem = masterSystem;
|
|
35
|
+
let finalResponsible = responsible;
|
|
36
|
+
const systemInfo = await (0, systemInfo_1.getSystemInformation)(connection);
|
|
37
|
+
if (systemInfo) {
|
|
38
|
+
finalMasterSystem = finalMasterSystem || systemInfo.systemID;
|
|
39
|
+
finalResponsible = finalResponsible || systemInfo.userName;
|
|
40
|
+
}
|
|
41
|
+
// Only use masterSystem from getSystemInformation (cloud), not from env
|
|
42
|
+
// username can fallback to env if not provided
|
|
43
|
+
finalResponsible = finalResponsible || process.env.SAP_USERNAME || process.env.SAP_USER || '';
|
|
44
|
+
const masterSystemAttr = finalMasterSystem ? ` adtcore:masterSystem="${finalMasterSystem}"` : '';
|
|
45
|
+
const responsibleAttr = finalResponsible ? ` adtcore:responsible="${finalResponsible}"` : '';
|
|
46
|
+
const payload = `<?xml version="1.0" encoding="UTF-8"?><intf:abapInterface xmlns:intf="http://www.sap.com/adt/oo/interfaces" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:description="${description}" adtcore:language="EN" adtcore:name="${interfaceName}" adtcore:type="INTF/OI" adtcore:masterLanguage="EN"${masterSystemAttr}${responsibleAttr}>
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
<adtcore:packageRef adtcore:name="${packageName}"/>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
</intf:abapInterface>`;
|
|
55
|
+
const url = `/sap/bc/adt/oo/interfaces`;
|
|
56
|
+
const params = transportRequest ? `?corrNr=${transportRequest}` : '';
|
|
57
|
+
return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url + params, 'POST', sessionId, payload, {
|
|
58
|
+
'Content-Type': 'application/vnd.sap.adt.oo.interfaces.v5+xml',
|
|
59
|
+
'Accept': 'application/vnd.sap.adt.oo.interfaces.v5+xml'
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Upload interface source code
|
|
64
|
+
*/
|
|
65
|
+
async function uploadInterfaceSource(connection, interfaceName, sourceCode, lockHandle, corrNr, sessionId) {
|
|
66
|
+
let url = `/sap/bc/adt/oo/interfaces/${(0, internalUtils_1.encodeSapObjectName)(interfaceName)}/source/main?lockHandle=${lockHandle}`;
|
|
67
|
+
if (corrNr) {
|
|
68
|
+
url += `&corrNr=${corrNr}`;
|
|
69
|
+
}
|
|
70
|
+
await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'PUT', sessionId, sourceCode, { 'Content-Type': 'text/plain; charset=utf-8' });
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create ABAP interface
|
|
74
|
+
* Full workflow: create object -> lock -> upload source -> unlock -> activate
|
|
75
|
+
*/
|
|
76
|
+
async function createInterface(connection, params) {
|
|
77
|
+
if (!params.interface_name || !params.package_name) {
|
|
78
|
+
throw new Error('interface_name and package_name are required');
|
|
79
|
+
}
|
|
80
|
+
const finalDescription = params.description || params.interface_name;
|
|
81
|
+
const finalSourceCode = params.source_code || generateInterfaceTemplate(params.interface_name, finalDescription);
|
|
82
|
+
const sessionId = (0, sessionUtils_1.generateSessionId)();
|
|
83
|
+
let lockHandle;
|
|
84
|
+
try {
|
|
85
|
+
// Step 1: Create interface object with metadata
|
|
86
|
+
const createResponse = await createInterfaceObject(connection, params.interface_name, finalDescription, params.package_name, params.transport_request, sessionId, params.master_system, params.responsible);
|
|
87
|
+
// Step 2: Lock interface
|
|
88
|
+
const lockData = await (0, lock_1.lockInterface)(connection, params.interface_name, sessionId);
|
|
89
|
+
lockHandle = lockData.lockHandle;
|
|
90
|
+
const corrNr = lockData.corrNr;
|
|
91
|
+
// Step 3: Upload source code
|
|
92
|
+
await uploadInterfaceSource(connection, params.interface_name, finalSourceCode, lockHandle, corrNr, sessionId);
|
|
93
|
+
// Step 4: Unlock interface
|
|
94
|
+
await (0, unlock_1.unlockInterface)(connection, params.interface_name, lockHandle, sessionId);
|
|
95
|
+
lockHandle = undefined;
|
|
96
|
+
// Step 5: Activate interface (optional)
|
|
97
|
+
const shouldActivate = params.activate !== false;
|
|
98
|
+
if (shouldActivate) {
|
|
99
|
+
await (0, activation_1.activateInterface)(connection, params.interface_name, sessionId);
|
|
100
|
+
}
|
|
101
|
+
// Return the real response from SAP (from initial POST)
|
|
102
|
+
return createResponse;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
// Attempt to unlock if we have a lock handle
|
|
106
|
+
if (lockHandle) {
|
|
107
|
+
try {
|
|
108
|
+
await (0, unlock_1.unlockInterface)(connection, params.interface_name, lockHandle, sessionId);
|
|
109
|
+
}
|
|
110
|
+
catch (unlockError) {
|
|
111
|
+
// Ignore unlock errors
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const errorMessage = error.response?.data
|
|
115
|
+
? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
|
|
116
|
+
: error.message;
|
|
117
|
+
throw new Error(`Failed to create interface ${params.interface_name}: ${errorMessage}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface delete operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
export interface DeleteInterfaceParams {
|
|
7
|
+
interface_name: string;
|
|
8
|
+
transport_request?: string;
|
|
9
|
+
check_before_delete?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Check if interface can be deleted
|
|
13
|
+
*/
|
|
14
|
+
export declare function checkInterfaceDeletion(connection: AbapConnection, interfaceName: string): Promise<AxiosResponse>;
|
|
15
|
+
/**
|
|
16
|
+
* Delete ABAP interface
|
|
17
|
+
* Optionally checks deletion before deleting (like Eclipse ADT)
|
|
18
|
+
*/
|
|
19
|
+
export declare function deleteInterface(connection: AbapConnection, params: DeleteInterfaceParams): Promise<AxiosResponse>;
|
|
20
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/core/interface/delete.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAuBxB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interface delete operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.checkInterfaceDeletion = checkInterfaceDeletion;
|
|
7
|
+
exports.deleteInterface = deleteInterface;
|
|
8
|
+
const delete_1 = require("../delete");
|
|
9
|
+
/**
|
|
10
|
+
* Check if interface can be deleted
|
|
11
|
+
*/
|
|
12
|
+
async function checkInterfaceDeletion(connection, interfaceName) {
|
|
13
|
+
if (!interfaceName) {
|
|
14
|
+
throw new Error('interface_name is required');
|
|
15
|
+
}
|
|
16
|
+
const checkParams = {
|
|
17
|
+
object_name: interfaceName,
|
|
18
|
+
object_type: 'INTF/OI'
|
|
19
|
+
};
|
|
20
|
+
return await (0, delete_1.checkDeletion)(connection, checkParams);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Delete ABAP interface
|
|
24
|
+
* Optionally checks deletion before deleting (like Eclipse ADT)
|
|
25
|
+
*/
|
|
26
|
+
async function deleteInterface(connection, params) {
|
|
27
|
+
if (!params.interface_name) {
|
|
28
|
+
throw new Error('interface_name is required');
|
|
29
|
+
}
|
|
30
|
+
// Optional: Check deletion before deleting (like Eclipse ADT)
|
|
31
|
+
// This can be useful to verify object is deletable and get dependencies
|
|
32
|
+
if (params.check_before_delete !== false) {
|
|
33
|
+
try {
|
|
34
|
+
await checkInterfaceDeletion(connection, params.interface_name);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
// If check fails, still attempt deletion (check is optional)
|
|
38
|
+
// Log warning but continue
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const deleteParams = {
|
|
42
|
+
object_name: params.interface_name,
|
|
43
|
+
object_type: 'INTF/OI',
|
|
44
|
+
transport_request: params.transport_request
|
|
45
|
+
};
|
|
46
|
+
return await (0, delete_1.deleteObject)(connection, deleteParams);
|
|
47
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface operations - exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './create';
|
|
6
|
+
export * from './update';
|
|
7
|
+
export * from './read';
|
|
8
|
+
export * from './lock';
|
|
9
|
+
export * from './unlock';
|
|
10
|
+
export * from './activation';
|
|
11
|
+
export * from './check';
|
|
12
|
+
export * from './validation';
|
|
13
|
+
export * from './delete';
|
|
14
|
+
export { InterfaceBuilder, type InterfaceBuilderConfig, type InterfaceBuilderLogger, type InterfaceBuilderState } from './InterfaceBuilder';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/interface/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interface operations - exports
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.InterfaceBuilder = void 0;
|
|
21
|
+
__exportStar(require("./types"), exports);
|
|
22
|
+
__exportStar(require("./create"), exports);
|
|
23
|
+
__exportStar(require("./update"), exports);
|
|
24
|
+
__exportStar(require("./read"), exports);
|
|
25
|
+
__exportStar(require("./lock"), exports);
|
|
26
|
+
__exportStar(require("./unlock"), exports);
|
|
27
|
+
__exportStar(require("./activation"), exports);
|
|
28
|
+
__exportStar(require("./check"), exports);
|
|
29
|
+
__exportStar(require("./validation"), exports);
|
|
30
|
+
__exportStar(require("./delete"), exports);
|
|
31
|
+
var InterfaceBuilder_1 = require("./InterfaceBuilder");
|
|
32
|
+
Object.defineProperty(exports, "InterfaceBuilder", { enumerable: true, get: function () { return InterfaceBuilder_1.InterfaceBuilder; } });
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface lock operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Lock interface for modification
|
|
8
|
+
* Returns lock handle and transport number
|
|
9
|
+
*/
|
|
10
|
+
export declare function lockInterface(connection: AbapConnection, interfaceName: string, sessionId: string): Promise<{
|
|
11
|
+
lockHandle: string;
|
|
12
|
+
corrNr?: string;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Lock interface for editing (for update)
|
|
16
|
+
* Returns lock handle and transport number
|
|
17
|
+
*/
|
|
18
|
+
export declare function lockInterfaceForUpdate(connection: AbapConnection, interfaceName: string, sessionId: string): Promise<{
|
|
19
|
+
response: AxiosResponse;
|
|
20
|
+
lockHandle: string;
|
|
21
|
+
corrNr?: string;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/core/interface/lock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC;;;GAGG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBlD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB3E"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interface lock operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.lockInterface = lockInterface;
|
|
7
|
+
exports.lockInterfaceForUpdate = lockInterfaceForUpdate;
|
|
8
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
9
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
10
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
11
|
+
/**
|
|
12
|
+
* Lock interface for modification
|
|
13
|
+
* Returns lock handle and transport number
|
|
14
|
+
*/
|
|
15
|
+
async function lockInterface(connection, interfaceName, sessionId) {
|
|
16
|
+
const url = `/sap/bc/adt/oo/interfaces/${(0, internalUtils_1.encodeSapObjectName)(interfaceName).toLowerCase()}?_action=LOCK&accessMode=MODIFY`;
|
|
17
|
+
const headers = {
|
|
18
|
+
'Accept': 'application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result;q=0.8, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result2;q=0.9'
|
|
19
|
+
};
|
|
20
|
+
const response = await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, null, headers);
|
|
21
|
+
const parser = new fast_xml_parser_1.XMLParser({
|
|
22
|
+
ignoreAttributes: false,
|
|
23
|
+
attributeNamePrefix: ''
|
|
24
|
+
});
|
|
25
|
+
const lockData = parser.parse(response.data);
|
|
26
|
+
const lockHandle = lockData['asx:abap']?.['asx:values']?.['DATA']?.['LOCK_HANDLE'];
|
|
27
|
+
const corrNr = lockData['asx:abap']?.['asx:values']?.['DATA']?.['CORRNR'];
|
|
28
|
+
if (!lockHandle) {
|
|
29
|
+
throw new Error('Failed to acquire lock handle from response');
|
|
30
|
+
}
|
|
31
|
+
return { lockHandle, corrNr };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Lock interface for editing (for update)
|
|
35
|
+
* Returns lock handle and transport number
|
|
36
|
+
*/
|
|
37
|
+
async function lockInterfaceForUpdate(connection, interfaceName, sessionId) {
|
|
38
|
+
const url = `/sap/bc/adt/oo/interfaces/${(0, internalUtils_1.encodeSapObjectName)(interfaceName).toLowerCase()}?_action=LOCK&accessMode=MODIFY`;
|
|
39
|
+
const headers = {
|
|
40
|
+
'Accept': 'application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result;q=0.8, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result2;q=0.9'
|
|
41
|
+
};
|
|
42
|
+
const response = await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, null, headers);
|
|
43
|
+
const parser = new fast_xml_parser_1.XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_' });
|
|
44
|
+
const result = parser.parse(response.data);
|
|
45
|
+
const lockHandle = result?.['asx:abap']?.['asx:values']?.['DATA']?.['LOCK_HANDLE'];
|
|
46
|
+
const corrNr = result?.['asx:abap']?.['asx:values']?.['DATA']?.['CORRNR'];
|
|
47
|
+
if (!lockHandle) {
|
|
48
|
+
throw new Error('Failed to obtain lock handle from SAP. Interface may be locked by another user.');
|
|
49
|
+
}
|
|
50
|
+
return { response, lockHandle, corrNr };
|
|
51
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface read operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Get ABAP interface metadata (without source code)
|
|
8
|
+
*/
|
|
9
|
+
export declare function getInterfaceMetadata(connection: AbapConnection, interfaceName: string): Promise<AxiosResponse>;
|
|
10
|
+
/**
|
|
11
|
+
* Get ABAP interface source code
|
|
12
|
+
*/
|
|
13
|
+
export declare function getInterfaceSource(connection: AbapConnection, interfaceName: string): Promise<AxiosResponse>;
|
|
14
|
+
/**
|
|
15
|
+
* Get ABAP interface (source code by default for backward compatibility)
|
|
16
|
+
* @deprecated Use getInterfaceSource() or getInterfaceMetadata() instead
|
|
17
|
+
*/
|
|
18
|
+
export declare function getInterface(connection: AbapConnection, interfaceName: string): Promise<AxiosResponse>;
|
|
19
|
+
/**
|
|
20
|
+
* Get transport request for ABAP interface
|
|
21
|
+
* @param connection - SAP connection
|
|
22
|
+
* @param interfaceName - Interface name
|
|
23
|
+
* @returns Transport request information
|
|
24
|
+
*/
|
|
25
|
+
export declare function getInterfaceTransport(connection: AbapConnection, interfaceName: string): Promise<AxiosResponse>;
|
|
26
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/core/interface/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAc,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAaxB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interface read operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getInterfaceMetadata = getInterfaceMetadata;
|
|
7
|
+
exports.getInterfaceSource = getInterfaceSource;
|
|
8
|
+
exports.getInterface = getInterface;
|
|
9
|
+
exports.getInterfaceTransport = getInterfaceTransport;
|
|
10
|
+
const connection_1 = require("@mcp-abap-adt/connection");
|
|
11
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
12
|
+
const readMetadata_1 = require("../shared/readMetadata");
|
|
13
|
+
const readSource_1 = require("../shared/readSource");
|
|
14
|
+
/**
|
|
15
|
+
* Get ABAP interface metadata (without source code)
|
|
16
|
+
*/
|
|
17
|
+
async function getInterfaceMetadata(connection, interfaceName) {
|
|
18
|
+
return (0, readMetadata_1.readObjectMetadata)(connection, 'interface', interfaceName);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get ABAP interface source code
|
|
22
|
+
*/
|
|
23
|
+
async function getInterfaceSource(connection, interfaceName) {
|
|
24
|
+
return (0, readSource_1.readObjectSource)(connection, 'interface', interfaceName);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get ABAP interface (source code by default for backward compatibility)
|
|
28
|
+
* @deprecated Use getInterfaceSource() or getInterfaceMetadata() instead
|
|
29
|
+
*/
|
|
30
|
+
async function getInterface(connection, interfaceName) {
|
|
31
|
+
return getInterfaceSource(connection, interfaceName);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get transport request for ABAP interface
|
|
35
|
+
* @param connection - SAP connection
|
|
36
|
+
* @param interfaceName - Interface name
|
|
37
|
+
* @returns Transport request information
|
|
38
|
+
*/
|
|
39
|
+
async function getInterfaceTransport(connection, interfaceName) {
|
|
40
|
+
const baseUrl = await connection.getBaseUrl();
|
|
41
|
+
const encodedName = (0, internalUtils_1.encodeSapObjectName)(interfaceName);
|
|
42
|
+
const url = `${baseUrl}/sap/bc/adt/oo/interfaces/${encodedName}/transport`;
|
|
43
|
+
return connection.makeAdtRequest({
|
|
44
|
+
url,
|
|
45
|
+
method: 'GET',
|
|
46
|
+
timeout: (0, connection_1.getTimeout)('default'),
|
|
47
|
+
headers: {
|
|
48
|
+
'Accept': 'application/vnd.sap.adt.transportorganizer.v1+xml'
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface types
|
|
3
|
+
*/
|
|
4
|
+
export interface CreateInterfaceParams {
|
|
5
|
+
interface_name: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
package_name: string;
|
|
8
|
+
transport_request?: string;
|
|
9
|
+
master_system?: string;
|
|
10
|
+
responsible?: string;
|
|
11
|
+
source_code?: string;
|
|
12
|
+
activate?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface UpdateInterfaceSourceParams {
|
|
15
|
+
interface_name: string;
|
|
16
|
+
source_code: string;
|
|
17
|
+
activate?: boolean;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/interface/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface unlock operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Unlock interface
|
|
8
|
+
* Must use same session and lock handle from lock operation
|
|
9
|
+
*/
|
|
10
|
+
export declare function unlockInterface(connection: AbapConnection, interfaceName: string, lockHandle: string, sessionId: string): Promise<AxiosResponse>;
|
|
11
|
+
//# sourceMappingURL=unlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../src/core/interface/unlock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAkCxB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interface unlock operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.unlockInterface = unlockInterface;
|
|
7
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
8
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
9
|
+
/**
|
|
10
|
+
* Unlock interface
|
|
11
|
+
* Must use same session and lock handle from lock operation
|
|
12
|
+
*/
|
|
13
|
+
async function unlockInterface(connection, interfaceName, lockHandle, sessionId) {
|
|
14
|
+
const url = `/sap/bc/adt/oo/interfaces/${(0, internalUtils_1.encodeSapObjectName)(interfaceName)}?_action=UNLOCK&lockHandle=${lockHandle}`;
|
|
15
|
+
try {
|
|
16
|
+
const response = await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, '', { 'Content-Type': 'application/x-www-form-urlencoded' });
|
|
17
|
+
return response;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
// If response is not returned (e.g., object locked by another user, network error),
|
|
21
|
+
// provide more context in the error message
|
|
22
|
+
if (!error.response) {
|
|
23
|
+
throw new Error(`Failed to unlock interface ${interfaceName}: No response from server. ` +
|
|
24
|
+
`Lock handle: ${lockHandle.substring(0, 10)}..., Session: ${sessionId.substring(0, 10)}... ` +
|
|
25
|
+
`The interface may be locked by another user or session may be invalid.`);
|
|
26
|
+
}
|
|
27
|
+
// If we have a response, include its status and data in the error
|
|
28
|
+
const status = error.response?.status;
|
|
29
|
+
const statusText = status ? `HTTP ${status}` : 'HTTP ?';
|
|
30
|
+
const errorData = error.response?.data
|
|
31
|
+
? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
|
|
32
|
+
: error.message;
|
|
33
|
+
throw new Error(`Failed to unlock interface ${interfaceName} (${statusText}): ${errorData}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface update operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
import { UpdateInterfaceSourceParams } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Update interface source code
|
|
9
|
+
* Full workflow: lock -> upload source -> unlock -> activate (optional)
|
|
10
|
+
*/
|
|
11
|
+
export declare function updateInterfaceSource(connection: AbapConnection, params: UpdateInterfaceSourceParams): Promise<AxiosResponse>;
|
|
12
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/core/interface/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAOtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AA0BtD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,aAAa,CAAC,CA2DxB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interface update operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updateInterfaceSource = updateInterfaceSource;
|
|
7
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
8
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
9
|
+
const lock_1 = require("./lock");
|
|
10
|
+
const unlock_1 = require("./unlock");
|
|
11
|
+
const activation_1 = require("./activation");
|
|
12
|
+
/**
|
|
13
|
+
* Upload interface source code (for update)
|
|
14
|
+
*/
|
|
15
|
+
async function uploadInterfaceSourceForUpdate(connection, interfaceName, sourceCode, lockHandle, sessionId, corrNr) {
|
|
16
|
+
let url = `/sap/bc/adt/oo/interfaces/${(0, internalUtils_1.encodeSapObjectName)(interfaceName).toLowerCase()}/source/main?lockHandle=${lockHandle}`;
|
|
17
|
+
if (corrNr) {
|
|
18
|
+
url += `&corrNr=${corrNr}`;
|
|
19
|
+
}
|
|
20
|
+
const headers = {
|
|
21
|
+
'Content-Type': 'text/plain; charset=utf-8',
|
|
22
|
+
'Accept': 'text/plain'
|
|
23
|
+
};
|
|
24
|
+
return await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'PUT', sessionId, sourceCode, headers);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Update interface source code
|
|
28
|
+
* Full workflow: lock -> upload source -> unlock -> activate (optional)
|
|
29
|
+
*/
|
|
30
|
+
async function updateInterfaceSource(connection, params) {
|
|
31
|
+
const interfaceName = params.interface_name.toUpperCase();
|
|
32
|
+
const sessionId = (0, sessionUtils_1.generateSessionId)();
|
|
33
|
+
let lockHandle = null;
|
|
34
|
+
try {
|
|
35
|
+
// Step 1: Lock the interface
|
|
36
|
+
const lockResult = await (0, lock_1.lockInterfaceForUpdate)(connection, interfaceName, sessionId);
|
|
37
|
+
lockHandle = lockResult.lockHandle;
|
|
38
|
+
const corrNr = lockResult.corrNr;
|
|
39
|
+
// Step 2: Upload new source code
|
|
40
|
+
await uploadInterfaceSourceForUpdate(connection, interfaceName, params.source_code, lockHandle, sessionId, corrNr);
|
|
41
|
+
// Step 3: Unlock the interface
|
|
42
|
+
await (0, unlock_1.unlockInterface)(connection, interfaceName, lockHandle, sessionId);
|
|
43
|
+
lockHandle = null;
|
|
44
|
+
// Step 4: Activate the interface (optional)
|
|
45
|
+
const shouldActivate = params.activate === true;
|
|
46
|
+
if (shouldActivate) {
|
|
47
|
+
await (0, activation_1.activateInterface)(connection, interfaceName, sessionId);
|
|
48
|
+
}
|
|
49
|
+
// Return success response
|
|
50
|
+
return {
|
|
51
|
+
data: {
|
|
52
|
+
success: true,
|
|
53
|
+
interface_name: interfaceName,
|
|
54
|
+
type: 'INTF/OI',
|
|
55
|
+
message: shouldActivate
|
|
56
|
+
? `Interface ${interfaceName} source updated and activated successfully`
|
|
57
|
+
: `Interface ${interfaceName} source updated successfully (not activated)`,
|
|
58
|
+
uri: `/sap/bc/adt/oo/interfaces/${(0, internalUtils_1.encodeSapObjectName)(interfaceName).toLowerCase()}`,
|
|
59
|
+
source_size_bytes: params.source_code.length
|
|
60
|
+
},
|
|
61
|
+
status: 200,
|
|
62
|
+
statusText: 'OK',
|
|
63
|
+
headers: {},
|
|
64
|
+
config: {}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
// CRITICAL: Always try to unlock on error to prevent locked objects
|
|
69
|
+
if (lockHandle) {
|
|
70
|
+
try {
|
|
71
|
+
await (0, unlock_1.unlockInterface)(connection, interfaceName, lockHandle, sessionId);
|
|
72
|
+
}
|
|
73
|
+
catch (unlockError) {
|
|
74
|
+
// Ignore unlock errors
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const errorMessage = error.response?.data
|
|
78
|
+
? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
|
|
79
|
+
: error.message;
|
|
80
|
+
throw new Error(`Failed to update interface ${interfaceName}: ${errorMessage}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface validation
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { ValidationResult } from '../shared/validation';
|
|
6
|
+
/**
|
|
7
|
+
* Validate interface name
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateInterfaceName(connection: AbapConnection, interfaceName: string, description?: string): Promise<ValidationResult>;
|
|
10
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/core/interface/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAsB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE5E;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interface validation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateInterfaceName = validateInterfaceName;
|
|
7
|
+
const validation_1 = require("../shared/validation");
|
|
8
|
+
/**
|
|
9
|
+
* Validate interface name
|
|
10
|
+
*/
|
|
11
|
+
async function validateInterfaceName(connection, interfaceName, description) {
|
|
12
|
+
const params = {};
|
|
13
|
+
if (description) {
|
|
14
|
+
params.description = description;
|
|
15
|
+
}
|
|
16
|
+
return (0, validation_1.validateObjectName)(connection, 'INTF/OI', interfaceName, params);
|
|
17
|
+
}
|