@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,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionModule create operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createFunctionModule = createFunctionModule;
|
|
7
|
+
const connection_1 = require("@mcp-abap-adt/connection");
|
|
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
|
+
const systemInfo_1 = require("../shared/systemInfo");
|
|
12
|
+
const lock_1 = require("./lock");
|
|
13
|
+
const unlock_1 = require("./unlock");
|
|
14
|
+
const activation_1 = require("./activation");
|
|
15
|
+
const read_1 = require("../functionGroup/read");
|
|
16
|
+
const create_1 = require("../functionGroup/create");
|
|
17
|
+
const validation_1 = require("./validation");
|
|
18
|
+
const validation_2 = require("../shared/validation");
|
|
19
|
+
/**
|
|
20
|
+
* Create function module metadata
|
|
21
|
+
*/
|
|
22
|
+
async function createFunctionModuleMetadata(connection, functionGroupName, functionModuleName, description, corrNr) {
|
|
23
|
+
const baseUrl = await connection.getBaseUrl();
|
|
24
|
+
const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
|
|
25
|
+
let url = `${baseUrl}/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules${corrNr ? `?corrNr=${corrNr}` : ''}`;
|
|
26
|
+
// Get masterSystem and responsible (only for cloud systems)
|
|
27
|
+
// On cloud, getSystemInformation returns systemID and userName
|
|
28
|
+
// On on-premise, it returns null, so we don't add these attributes
|
|
29
|
+
const systemInfo = await (0, systemInfo_1.getSystemInformation)(connection);
|
|
30
|
+
const masterSystem = systemInfo?.systemID;
|
|
31
|
+
const username = systemInfo?.userName || process.env.SAP_USER || process.env.SAP_USERNAME || 'MPCUSER';
|
|
32
|
+
const masterSystemAttr = masterSystem ? ` adtcore:masterSystem="${masterSystem}"` : '';
|
|
33
|
+
const responsibleAttr = username ? ` adtcore:responsible="${username}"` : '';
|
|
34
|
+
const xmlPayload = `<?xml version="1.0" encoding="UTF-8"?>
|
|
35
|
+
<fmodule:abapFunctionModule xmlns:fmodule="http://www.sap.com/adt/functions/fmodules" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:description="${description}" adtcore:name="${functionModuleName}" adtcore:type="FUGR/FF"${masterSystemAttr}${responsibleAttr}>
|
|
36
|
+
<adtcore:containerRef adtcore:name="${functionGroupName}" adtcore:type="FUGR/F" adtcore:uri="/sap/bc/adt/functions/groups/${encodedGroupName}"/>
|
|
37
|
+
</fmodule:abapFunctionModule>`;
|
|
38
|
+
return connection.makeAdtRequest({
|
|
39
|
+
url,
|
|
40
|
+
method: 'POST',
|
|
41
|
+
timeout: (0, connection_1.getTimeout)('default'),
|
|
42
|
+
data: xmlPayload,
|
|
43
|
+
headers: {
|
|
44
|
+
'Content-Type': 'application/vnd.sap.adt.functions.fmodules+xml',
|
|
45
|
+
'Accept': 'application/vnd.sap.adt.functions.fmodules+xml'
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Upload function module source code
|
|
51
|
+
*/
|
|
52
|
+
async function uploadFunctionModuleSource(connection, functionGroupName, functionModuleName, lockHandle, corrNr, sourceCode, sessionId) {
|
|
53
|
+
const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
|
|
54
|
+
const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
|
|
55
|
+
let url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}/source/main?lockHandle=${lockHandle}`;
|
|
56
|
+
if (corrNr) {
|
|
57
|
+
url += `&corrNr=${corrNr}`;
|
|
58
|
+
}
|
|
59
|
+
const headers = {
|
|
60
|
+
'Content-Type': 'text/plain; charset=utf-8',
|
|
61
|
+
'Accept': 'text/plain'
|
|
62
|
+
};
|
|
63
|
+
return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'PUT', sessionId, sourceCode, headers);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create ABAP function module
|
|
67
|
+
* Full workflow: create metadata -> lock -> upload source -> unlock -> activate
|
|
68
|
+
*/
|
|
69
|
+
async function createFunctionModule(connection, params) {
|
|
70
|
+
if (!params.function_group_name || !params.function_module_name || !params.source_code) {
|
|
71
|
+
throw new Error('function_group_name, function_module_name, and source_code are required');
|
|
72
|
+
}
|
|
73
|
+
if (params.function_module_name.length > 30) {
|
|
74
|
+
throw new Error('Function module name must not exceed 30 characters');
|
|
75
|
+
}
|
|
76
|
+
if (!/^[ZY]/i.test(params.function_module_name)) {
|
|
77
|
+
throw new Error('Function module name must start with Z or Y (customer namespace)');
|
|
78
|
+
}
|
|
79
|
+
// Validate function module name with SAP validation endpoint
|
|
80
|
+
const validationResult = await (0, validation_1.validateFunctionModuleName)(connection, params.function_group_name, params.function_module_name, params.description || params.function_module_name);
|
|
81
|
+
await (0, validation_2.validateAndThrow)(validationResult, 'Function module');
|
|
82
|
+
const sessionId = (0, sessionUtils_1.generateSessionId)();
|
|
83
|
+
let lockHandle;
|
|
84
|
+
try {
|
|
85
|
+
// Ensure function group exists. If not found and package_name is provided, try to create it.
|
|
86
|
+
try {
|
|
87
|
+
await (0, read_1.getFunctionGroup)(connection, params.function_group_name);
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
// If not found (404) and package_name provided, create function group automatically
|
|
91
|
+
if (err.response?.status === 404) {
|
|
92
|
+
if (params.package_name) {
|
|
93
|
+
await (0, create_1.createFunctionGroup)(connection, {
|
|
94
|
+
function_group_name: params.function_group_name,
|
|
95
|
+
package_name: params.package_name,
|
|
96
|
+
description: params.description || params.function_group_name,
|
|
97
|
+
transport_request: params.transport_request,
|
|
98
|
+
activate: false
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
throw new Error(`Function group ${params.function_group_name} not found. Create the function group first or provide package_name to auto-create it.`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
await createFunctionModuleMetadata(connection, params.function_group_name, params.function_module_name, params.description || params.function_module_name, params.transport_request);
|
|
110
|
+
lockHandle = await (0, lock_1.lockFunctionModule)(connection, params.function_group_name, params.function_module_name, sessionId);
|
|
111
|
+
const uploadResponse = await uploadFunctionModuleSource(connection, params.function_group_name, params.function_module_name, lockHandle, params.transport_request, params.source_code, sessionId);
|
|
112
|
+
await (0, unlock_1.unlockFunctionModule)(connection, params.function_group_name, params.function_module_name, lockHandle, sessionId);
|
|
113
|
+
lockHandle = undefined;
|
|
114
|
+
const shouldActivate = params.activate !== false;
|
|
115
|
+
if (shouldActivate) {
|
|
116
|
+
await (0, activation_1.activateFunctionModule)(connection, params.function_group_name, params.function_module_name, sessionId);
|
|
117
|
+
}
|
|
118
|
+
// Return the real response from upload (last significant operation)
|
|
119
|
+
return uploadResponse;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
if (lockHandle) {
|
|
123
|
+
try {
|
|
124
|
+
await (0, unlock_1.unlockFunctionModule)(connection, params.function_group_name, params.function_module_name, lockHandle, sessionId);
|
|
125
|
+
}
|
|
126
|
+
catch (unlockError) {
|
|
127
|
+
// Ignore unlock errors
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
let errorMessage = `Failed to create function module: ${error}`;
|
|
131
|
+
if (error.response?.status === 400) {
|
|
132
|
+
errorMessage = `Bad request. Check if function module name is valid and function group exists.`;
|
|
133
|
+
}
|
|
134
|
+
else if (error.response?.status === 404) {
|
|
135
|
+
errorMessage = `Function group ${params.function_group_name} not found. Create the function group first.`;
|
|
136
|
+
}
|
|
137
|
+
else if (error.response?.status === 409) {
|
|
138
|
+
errorMessage = `Function module ${params.function_module_name} already exists in group ${params.function_group_name}.`;
|
|
139
|
+
}
|
|
140
|
+
else if (error.response?.data && typeof error.response.data === 'string') {
|
|
141
|
+
try {
|
|
142
|
+
const parser = new fast_xml_parser_1.XMLParser({
|
|
143
|
+
ignoreAttributes: false,
|
|
144
|
+
attributeNamePrefix: '@_'
|
|
145
|
+
});
|
|
146
|
+
const errorData = parser.parse(error.response.data);
|
|
147
|
+
const errorMsg = errorData['exc:exception']?.message?.['#text'] || errorData['exc:exception']?.message;
|
|
148
|
+
if (errorMsg) {
|
|
149
|
+
errorMessage = `SAP Error: ${errorMsg}`;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (parseError) {
|
|
153
|
+
// Ignore parse errors, use default message
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
throw new Error(errorMessage);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionModule delete operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
export interface DeleteFunctionModuleParams {
|
|
7
|
+
function_module_name: string;
|
|
8
|
+
function_group_name: string;
|
|
9
|
+
transport_request?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Delete ABAP function module
|
|
13
|
+
*/
|
|
14
|
+
export declare function deleteFunctionModule(connection: AbapConnection, params: DeleteFunctionModuleParams): Promise<AxiosResponse>;
|
|
15
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/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,0BAA0B;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,aAAa,CAAC,CAgBxB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionModule delete operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deleteFunctionModule = deleteFunctionModule;
|
|
7
|
+
const delete_1 = require("../delete");
|
|
8
|
+
/**
|
|
9
|
+
* Delete ABAP function module
|
|
10
|
+
*/
|
|
11
|
+
async function deleteFunctionModule(connection, params) {
|
|
12
|
+
if (!params.function_module_name) {
|
|
13
|
+
throw new Error('function_module_name is required');
|
|
14
|
+
}
|
|
15
|
+
if (!params.function_group_name) {
|
|
16
|
+
throw new Error('function_group_name is required');
|
|
17
|
+
}
|
|
18
|
+
const deleteParams = {
|
|
19
|
+
object_name: params.function_module_name,
|
|
20
|
+
object_type: 'FUGR/FF',
|
|
21
|
+
function_group_name: params.function_group_name,
|
|
22
|
+
transport_request: params.transport_request
|
|
23
|
+
};
|
|
24
|
+
return await (0, delete_1.deleteObject)(connection, deleteParams);
|
|
25
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionModule 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 { FunctionModuleBuilder, type FunctionModuleBuilderConfig, type FunctionModuleBuilderLogger, type FunctionModuleBuilderState } from './FunctionModuleBuilder';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/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,qBAAqB,EAAE,KAAK,2BAA2B,EAAE,KAAK,2BAA2B,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionModule 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.FunctionModuleBuilder = 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 FunctionModuleBuilder_1 = require("./FunctionModuleBuilder");
|
|
32
|
+
Object.defineProperty(exports, "FunctionModuleBuilder", { enumerable: true, get: function () { return FunctionModuleBuilder_1.FunctionModuleBuilder; } });
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionModule lock operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Lock function module for editing
|
|
8
|
+
*/
|
|
9
|
+
export declare function lockFunctionModule(connection: AbapConnection, functionGroupName: string, functionModuleName: string, sessionId: string): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Lock function module for editing (for update)
|
|
12
|
+
*/
|
|
13
|
+
export declare function lockFunctionModuleForUpdate(connection: AbapConnection, functionGroupName: string, functionModuleName: string, sessionId: string): Promise<{
|
|
14
|
+
response: AxiosResponse;
|
|
15
|
+
lockHandle: string;
|
|
16
|
+
corrNr?: string;
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/lock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB3E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionModule lock operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.lockFunctionModule = lockFunctionModule;
|
|
7
|
+
exports.lockFunctionModuleForUpdate = lockFunctionModuleForUpdate;
|
|
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 function module for editing
|
|
13
|
+
*/
|
|
14
|
+
async function lockFunctionModule(connection, functionGroupName, functionModuleName, sessionId) {
|
|
15
|
+
const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
|
|
16
|
+
const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
|
|
17
|
+
const url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}?_action=LOCK&accessMode=MODIFY`;
|
|
18
|
+
const headers = {
|
|
19
|
+
'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'
|
|
20
|
+
};
|
|
21
|
+
const response = await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, null, headers);
|
|
22
|
+
const parser = new fast_xml_parser_1.XMLParser({
|
|
23
|
+
ignoreAttributes: false,
|
|
24
|
+
attributeNamePrefix: '@_'
|
|
25
|
+
});
|
|
26
|
+
const lockData = parser.parse(response.data);
|
|
27
|
+
const lockHandle = lockData['asx:abap']?.['asx:values']?.DATA?.LOCK_HANDLE;
|
|
28
|
+
if (!lockHandle) {
|
|
29
|
+
throw new Error('Failed to acquire lock handle from response');
|
|
30
|
+
}
|
|
31
|
+
return lockHandle;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Lock function module for editing (for update)
|
|
35
|
+
*/
|
|
36
|
+
async function lockFunctionModuleForUpdate(connection, functionGroupName, functionModuleName, sessionId) {
|
|
37
|
+
const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
|
|
38
|
+
const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
|
|
39
|
+
const url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}?_action=LOCK&accessMode=MODIFY`;
|
|
40
|
+
const headers = {
|
|
41
|
+
'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'
|
|
42
|
+
};
|
|
43
|
+
const response = await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, null, headers);
|
|
44
|
+
const parser = new fast_xml_parser_1.XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_' });
|
|
45
|
+
const result = parser.parse(response.data);
|
|
46
|
+
const lockHandle = result?.['asx:abap']?.['asx:values']?.['DATA']?.['LOCK_HANDLE'];
|
|
47
|
+
const corrNr = result?.['asx:abap']?.['asx:values']?.['DATA']?.['CORRNR'];
|
|
48
|
+
if (!lockHandle) {
|
|
49
|
+
throw new Error('Failed to obtain lock handle from SAP. Function module may be locked by another user.');
|
|
50
|
+
}
|
|
51
|
+
return { response, lockHandle, corrNr };
|
|
52
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionModule read operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Get ABAP function module metadata (without source code)
|
|
8
|
+
*/
|
|
9
|
+
export declare function getFunctionMetadata(connection: AbapConnection, functionName: string, functionGroup: string): Promise<AxiosResponse>;
|
|
10
|
+
/**
|
|
11
|
+
* Get ABAP function module source code
|
|
12
|
+
* @param connection - SAP connection
|
|
13
|
+
* @param functionName - Function module name
|
|
14
|
+
* @param functionGroup - Function group name
|
|
15
|
+
* @param version - 'active' (default) or 'inactive' to read modified but not activated version
|
|
16
|
+
*/
|
|
17
|
+
export declare function getFunctionSource(connection: AbapConnection, functionName: string, functionGroup: string, version?: 'active' | 'inactive'): Promise<AxiosResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* Get ABAP function module (source code by default for backward compatibility)
|
|
20
|
+
* @deprecated Use getFunctionSource() or getFunctionMetadata() instead
|
|
21
|
+
*/
|
|
22
|
+
export declare function getFunction(connection: AbapConnection, functionName: string, functionGroup: string, version?: 'active' | 'inactive'): Promise<AxiosResponse>;
|
|
23
|
+
/**
|
|
24
|
+
* Get transport request for ABAP function module
|
|
25
|
+
* @param connection - SAP connection
|
|
26
|
+
* @param functionName - Function module name
|
|
27
|
+
* @param functionGroup - Function group name
|
|
28
|
+
* @returns Transport request information
|
|
29
|
+
*/
|
|
30
|
+
export declare function getFunctionModuleTransport(connection: AbapConnection, functionName: string, functionGroup: string): Promise<AxiosResponse>;
|
|
31
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/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,mBAAmB,CACvC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,QAAQ,GAAG,UAAqB,GACxC,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,QAAQ,GAAG,UAAqB,GACxC,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAcxB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionModule read operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getFunctionMetadata = getFunctionMetadata;
|
|
7
|
+
exports.getFunctionSource = getFunctionSource;
|
|
8
|
+
exports.getFunction = getFunction;
|
|
9
|
+
exports.getFunctionModuleTransport = getFunctionModuleTransport;
|
|
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 function module metadata (without source code)
|
|
16
|
+
*/
|
|
17
|
+
async function getFunctionMetadata(connection, functionName, functionGroup) {
|
|
18
|
+
return (0, readMetadata_1.readObjectMetadata)(connection, 'functionmodule', functionName, functionGroup);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get ABAP function module source code
|
|
22
|
+
* @param connection - SAP connection
|
|
23
|
+
* @param functionName - Function module name
|
|
24
|
+
* @param functionGroup - Function group name
|
|
25
|
+
* @param version - 'active' (default) or 'inactive' to read modified but not activated version
|
|
26
|
+
*/
|
|
27
|
+
async function getFunctionSource(connection, functionName, functionGroup, version = 'active') {
|
|
28
|
+
return (0, readSource_1.readObjectSource)(connection, 'functionmodule', functionName, functionGroup, version);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get ABAP function module (source code by default for backward compatibility)
|
|
32
|
+
* @deprecated Use getFunctionSource() or getFunctionMetadata() instead
|
|
33
|
+
*/
|
|
34
|
+
async function getFunction(connection, functionName, functionGroup, version = 'active') {
|
|
35
|
+
return getFunctionSource(connection, functionName, functionGroup, version);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get transport request for ABAP function module
|
|
39
|
+
* @param connection - SAP connection
|
|
40
|
+
* @param functionName - Function module name
|
|
41
|
+
* @param functionGroup - Function group name
|
|
42
|
+
* @returns Transport request information
|
|
43
|
+
*/
|
|
44
|
+
async function getFunctionModuleTransport(connection, functionName, functionGroup) {
|
|
45
|
+
const baseUrl = await connection.getBaseUrl();
|
|
46
|
+
const encodedGroup = (0, internalUtils_1.encodeSapObjectName)(functionGroup);
|
|
47
|
+
const encodedName = (0, internalUtils_1.encodeSapObjectName)(functionName);
|
|
48
|
+
const url = `${baseUrl}/sap/bc/adt/functions/groups/${encodedGroup}/fmodules/${encodedName}/transport`;
|
|
49
|
+
return connection.makeAdtRequest({
|
|
50
|
+
url,
|
|
51
|
+
method: 'GET',
|
|
52
|
+
timeout: (0, connection_1.getTimeout)('default'),
|
|
53
|
+
headers: {
|
|
54
|
+
'Accept': 'application/vnd.sap.adt.transportorganizer.v1+xml'
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionModule types
|
|
3
|
+
*/
|
|
4
|
+
export interface CreateFunctionModuleParams {
|
|
5
|
+
function_group_name: string;
|
|
6
|
+
function_module_name: string;
|
|
7
|
+
source_code: string;
|
|
8
|
+
package_name?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
transport_request?: string;
|
|
11
|
+
activate?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface UpdateFunctionModuleSourceParams {
|
|
14
|
+
function_group_name: string;
|
|
15
|
+
function_module_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/functionModule/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,0BAA0B;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gCAAgC;IAC/C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionModule unlock operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Unlock function module
|
|
8
|
+
*/
|
|
9
|
+
export declare function unlockFunctionModule(connection: AbapConnection, functionGroupName: string, functionModuleName: string, lockHandle: string, sessionId: string): Promise<AxiosResponse>;
|
|
10
|
+
//# sourceMappingURL=unlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/unlock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAUxB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionModule unlock operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.unlockFunctionModule = unlockFunctionModule;
|
|
7
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
8
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
9
|
+
/**
|
|
10
|
+
* Unlock function module
|
|
11
|
+
*/
|
|
12
|
+
async function unlockFunctionModule(connection, functionGroupName, functionModuleName, lockHandle, sessionId) {
|
|
13
|
+
const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
|
|
14
|
+
const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
|
|
15
|
+
const url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}?_action=UNLOCK&lockHandle=${lockHandle}`;
|
|
16
|
+
const headers = {
|
|
17
|
+
'Accept': 'application/xml'
|
|
18
|
+
};
|
|
19
|
+
return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, null, headers);
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionModule update operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
import { UpdateFunctionModuleSourceParams } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Update function module source code (internal - uses existing lockHandle)
|
|
9
|
+
* This function does NOT lock/unlock - it assumes the object is already locked
|
|
10
|
+
*/
|
|
11
|
+
export declare function updateFunctionModuleSourceInternal(connection: AbapConnection, functionGroupName: string, functionModuleName: string, lockHandle: string, sourceCode: string, sessionId: string, corrNr?: string): Promise<AxiosResponse>;
|
|
12
|
+
/**
|
|
13
|
+
* Update function module source code
|
|
14
|
+
* Full workflow: lock -> upload source -> unlock -> activate (optional)
|
|
15
|
+
*/
|
|
16
|
+
export declare function updateFunctionModuleSource(connection: AbapConnection, params: UpdateFunctionModuleSourceParams): Promise<AxiosResponse>;
|
|
17
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/core/functionModule/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAMtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AA8B3D;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,aAAa,CAAC,CAsDxB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionModule update operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updateFunctionModuleSourceInternal = updateFunctionModuleSourceInternal;
|
|
7
|
+
exports.updateFunctionModuleSource = updateFunctionModuleSource;
|
|
8
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
9
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
10
|
+
const lock_1 = require("./lock");
|
|
11
|
+
const unlock_1 = require("./unlock");
|
|
12
|
+
const activation_1 = require("./activation");
|
|
13
|
+
/**
|
|
14
|
+
* Upload function module source code (for update)
|
|
15
|
+
*/
|
|
16
|
+
async function uploadFunctionModuleSourceForUpdate(connection, functionGroupName, functionModuleName, lockHandle, corrNr, sourceCode, sessionId) {
|
|
17
|
+
const encodedGroupName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
|
|
18
|
+
const encodedModuleName = (0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase();
|
|
19
|
+
let url = `/sap/bc/adt/functions/groups/${encodedGroupName}/fmodules/${encodedModuleName}/source/main?lockHandle=${lockHandle}`;
|
|
20
|
+
if (corrNr) {
|
|
21
|
+
url += `&corrNr=${corrNr}`;
|
|
22
|
+
}
|
|
23
|
+
const headers = {
|
|
24
|
+
'Content-Type': 'text/plain; charset=utf-8',
|
|
25
|
+
'Accept': 'text/plain'
|
|
26
|
+
};
|
|
27
|
+
return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'PUT', sessionId, sourceCode, headers);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Update function module source code (internal - uses existing lockHandle)
|
|
31
|
+
* This function does NOT lock/unlock - it assumes the object is already locked
|
|
32
|
+
*/
|
|
33
|
+
async function updateFunctionModuleSourceInternal(connection, functionGroupName, functionModuleName, lockHandle, sourceCode, sessionId, corrNr) {
|
|
34
|
+
const encodedModuleName = functionModuleName.toUpperCase();
|
|
35
|
+
await uploadFunctionModuleSourceForUpdate(connection, functionGroupName, encodedModuleName, lockHandle, corrNr, sourceCode, sessionId);
|
|
36
|
+
return {
|
|
37
|
+
data: {
|
|
38
|
+
success: true,
|
|
39
|
+
function_module_name: encodedModuleName,
|
|
40
|
+
function_group_name: functionGroupName,
|
|
41
|
+
type: 'FUGR/FF',
|
|
42
|
+
message: `Function module ${encodedModuleName} source updated successfully`,
|
|
43
|
+
uri: `/sap/bc/adt/functions/groups/${(0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase()}/fmodules/${(0, internalUtils_1.encodeSapObjectName)(encodedModuleName).toLowerCase()}`,
|
|
44
|
+
source_size_bytes: sourceCode.length
|
|
45
|
+
},
|
|
46
|
+
status: 200,
|
|
47
|
+
statusText: 'OK',
|
|
48
|
+
headers: {},
|
|
49
|
+
config: {}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Update function module source code
|
|
54
|
+
* Full workflow: lock -> upload source -> unlock -> activate (optional)
|
|
55
|
+
*/
|
|
56
|
+
async function updateFunctionModuleSource(connection, params) {
|
|
57
|
+
const functionModuleName = params.function_module_name.toUpperCase();
|
|
58
|
+
const sessionId = (0, sessionUtils_1.generateSessionId)();
|
|
59
|
+
let lockHandle = null;
|
|
60
|
+
try {
|
|
61
|
+
const lockResult = await (0, lock_1.lockFunctionModuleForUpdate)(connection, params.function_group_name, functionModuleName, sessionId);
|
|
62
|
+
lockHandle = lockResult.lockHandle;
|
|
63
|
+
const corrNr = lockResult.corrNr;
|
|
64
|
+
await uploadFunctionModuleSourceForUpdate(connection, params.function_group_name, functionModuleName, lockHandle, corrNr, params.source_code, sessionId);
|
|
65
|
+
await (0, unlock_1.unlockFunctionModule)(connection, params.function_group_name, functionModuleName, lockHandle, sessionId);
|
|
66
|
+
lockHandle = null;
|
|
67
|
+
const shouldActivate = params.activate === true;
|
|
68
|
+
if (shouldActivate) {
|
|
69
|
+
await (0, activation_1.activateFunctionModule)(connection, params.function_group_name, functionModuleName, sessionId);
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
data: {
|
|
73
|
+
success: true,
|
|
74
|
+
function_module_name: functionModuleName,
|
|
75
|
+
function_group_name: params.function_group_name,
|
|
76
|
+
type: 'FUGR/FF',
|
|
77
|
+
message: shouldActivate
|
|
78
|
+
? `Function module ${functionModuleName} source updated and activated successfully`
|
|
79
|
+
: `Function module ${functionModuleName} source updated successfully (not activated)`,
|
|
80
|
+
uri: `/sap/bc/adt/functions/groups/${(0, internalUtils_1.encodeSapObjectName)(params.function_group_name).toLowerCase()}/fmodules/${(0, internalUtils_1.encodeSapObjectName)(functionModuleName).toLowerCase()}`,
|
|
81
|
+
source_size_bytes: params.source_code.length
|
|
82
|
+
},
|
|
83
|
+
status: 200,
|
|
84
|
+
statusText: 'OK',
|
|
85
|
+
headers: {},
|
|
86
|
+
config: {}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
if (lockHandle) {
|
|
91
|
+
try {
|
|
92
|
+
await (0, unlock_1.unlockFunctionModule)(connection, params.function_group_name, functionModuleName, lockHandle, sessionId);
|
|
93
|
+
}
|
|
94
|
+
catch (unlockError) {
|
|
95
|
+
// Ignore unlock errors
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const errorMessage = error.response?.data
|
|
99
|
+
? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
|
|
100
|
+
: error.message;
|
|
101
|
+
throw new Error(`Failed to update function module ${functionModuleName}: ${errorMessage}`);
|
|
102
|
+
}
|
|
103
|
+
}
|