@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,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Domain update operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updateDomain = updateDomain;
|
|
7
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
8
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
9
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
10
|
+
const systemInfo_1 = require("../shared/systemInfo");
|
|
11
|
+
const lock_1 = require("./lock");
|
|
12
|
+
const unlock_1 = require("./unlock");
|
|
13
|
+
const activation_1 = require("./activation");
|
|
14
|
+
const check_1 = require("./check");
|
|
15
|
+
/**
|
|
16
|
+
* Update domain with new data
|
|
17
|
+
*/
|
|
18
|
+
async function updateDomainInternal(connection, args, lockHandle, sessionId, username, masterSystem) {
|
|
19
|
+
const domainNameEncoded = (0, internalUtils_1.encodeSapObjectName)(args.domain_name.toLowerCase());
|
|
20
|
+
const corrNrParam = args.transport_request ? `&corrNr=${args.transport_request}` : '';
|
|
21
|
+
const url = `/sap/bc/adt/ddic/domains/${domainNameEncoded}?lockHandle=${lockHandle}${corrNrParam}`;
|
|
22
|
+
const datatype = args.datatype || 'CHAR';
|
|
23
|
+
const length = args.length || 100;
|
|
24
|
+
const decimals = args.decimals || 0;
|
|
25
|
+
let fixValuesXml = '';
|
|
26
|
+
if (args.fixed_values && args.fixed_values.length > 0) {
|
|
27
|
+
const fixValueItems = args.fixed_values.map(fv => ` <doma:fixValue>\n <doma:low>${fv.low}</doma:low>\n <doma:text>${fv.text}</doma:text>\n </doma:fixValue>`).join('\n');
|
|
28
|
+
fixValuesXml = ` <doma:fixValues>\n${fixValueItems}\n </doma:fixValues>`;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
fixValuesXml = ' <doma:fixValues/>';
|
|
32
|
+
}
|
|
33
|
+
const masterSystemAttr = masterSystem ? ` adtcore:masterSystem="${masterSystem}"` : '';
|
|
34
|
+
const xmlBody = `<?xml version="1.0" encoding="UTF-8"?>
|
|
35
|
+
<doma:domain xmlns:doma="http://www.sap.com/dictionary/domain"
|
|
36
|
+
xmlns:adtcore="http://www.sap.com/adt/core"
|
|
37
|
+
adtcore:description="${args.description || args.domain_name}"
|
|
38
|
+
adtcore:language="EN"
|
|
39
|
+
adtcore:name="${args.domain_name.toUpperCase()}"
|
|
40
|
+
adtcore:type="DOMA/DD"
|
|
41
|
+
adtcore:masterLanguage="EN"${masterSystemAttr}
|
|
42
|
+
adtcore:responsible="${username}">
|
|
43
|
+
<adtcore:packageRef adtcore:name="${args.package_name.toUpperCase()}"/>
|
|
44
|
+
<doma:content>
|
|
45
|
+
<doma:typeInformation>
|
|
46
|
+
<doma:datatype>${datatype}</doma:datatype>
|
|
47
|
+
<doma:length>${length}</doma:length>
|
|
48
|
+
<doma:decimals>${decimals}</doma:decimals>
|
|
49
|
+
</doma:typeInformation>
|
|
50
|
+
<doma:outputInformation>
|
|
51
|
+
<doma:length>${length}</doma:length>
|
|
52
|
+
<doma:conversionExit>${args.conversion_exit || ''}</doma:conversionExit>
|
|
53
|
+
<doma:signExists>${args.sign_exists || false}</doma:signExists>
|
|
54
|
+
<doma:lowercase>${args.lowercase || false}</doma:lowercase>
|
|
55
|
+
</doma:outputInformation>
|
|
56
|
+
<doma:valueInformation>
|
|
57
|
+
<doma:valueTableRef adtcore:name="${args.value_table || ''}"/>
|
|
58
|
+
<doma:appendExists>false</doma:appendExists>
|
|
59
|
+
${fixValuesXml}
|
|
60
|
+
</doma:valueInformation>
|
|
61
|
+
</doma:content>
|
|
62
|
+
</doma:domain>`;
|
|
63
|
+
const headers = {
|
|
64
|
+
'Accept': 'application/vnd.sap.adt.domains.v1+xml, application/vnd.sap.adt.domains.v2+xml',
|
|
65
|
+
'Content-Type': 'application/vnd.sap.adt.domains.v2+xml; charset=utf-8'
|
|
66
|
+
};
|
|
67
|
+
return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'PUT', sessionId, xmlBody, headers);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get domain to verify update
|
|
71
|
+
*/
|
|
72
|
+
async function getDomainForVerification(connection, domainName, sessionId) {
|
|
73
|
+
const domainNameEncoded = (0, internalUtils_1.encodeSapObjectName)(domainName.toLowerCase());
|
|
74
|
+
const url = `/sap/bc/adt/ddic/domains/${domainNameEncoded}?version=workingArea`;
|
|
75
|
+
const headers = {
|
|
76
|
+
'Accept': 'application/vnd.sap.adt.domains.v1+xml, application/vnd.sap.adt.domains.v2+xml'
|
|
77
|
+
};
|
|
78
|
+
const response = await (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'GET', sessionId, undefined, headers);
|
|
79
|
+
const parser = new fast_xml_parser_1.XMLParser({
|
|
80
|
+
ignoreAttributes: false,
|
|
81
|
+
attributeNamePrefix: '',
|
|
82
|
+
});
|
|
83
|
+
const result = parser.parse(response.data);
|
|
84
|
+
return result['doma:domain'];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Update ABAP domain
|
|
88
|
+
* Full workflow: lock -> update -> check -> unlock -> activate
|
|
89
|
+
*/
|
|
90
|
+
async function updateDomain(connection, params) {
|
|
91
|
+
if (!params.domain_name) {
|
|
92
|
+
throw new Error('Domain name is required');
|
|
93
|
+
}
|
|
94
|
+
if (!params.package_name) {
|
|
95
|
+
throw new Error('Package name is required');
|
|
96
|
+
}
|
|
97
|
+
const sessionId = (0, sessionUtils_1.generateSessionId)();
|
|
98
|
+
// Get masterSystem and responsible (only for cloud systems)
|
|
99
|
+
// On cloud, getSystemInformation returns systemID and userName
|
|
100
|
+
// On on-premise, it returns null, so we don't add these attributes
|
|
101
|
+
const systemInfo = await (0, systemInfo_1.getSystemInformation)(connection);
|
|
102
|
+
const masterSystem = systemInfo?.systemID;
|
|
103
|
+
const username = systemInfo?.userName || process.env.SAP_USER || process.env.SAP_USERNAME || 'MPCUSER';
|
|
104
|
+
let lockHandle = '';
|
|
105
|
+
try {
|
|
106
|
+
lockHandle = await (0, lock_1.lockDomain)(connection, params.domain_name, sessionId);
|
|
107
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
108
|
+
await updateDomainInternal(connection, params, lockHandle, sessionId, username, masterSystem);
|
|
109
|
+
await (0, check_1.checkDomainSyntax)(connection, params.domain_name, 'inactive', sessionId);
|
|
110
|
+
await (0, unlock_1.unlockDomain)(connection, params.domain_name, lockHandle, sessionId);
|
|
111
|
+
const shouldActivate = params.activate !== false;
|
|
112
|
+
if (shouldActivate) {
|
|
113
|
+
await (0, activation_1.activateDomain)(connection, params.domain_name, sessionId);
|
|
114
|
+
}
|
|
115
|
+
const updatedDomain = await getDomainForVerification(connection, params.domain_name, sessionId);
|
|
116
|
+
return {
|
|
117
|
+
data: {
|
|
118
|
+
success: true,
|
|
119
|
+
domain_name: params.domain_name,
|
|
120
|
+
package: params.package_name,
|
|
121
|
+
transport_request: params.transport_request,
|
|
122
|
+
status: shouldActivate ? 'active' : 'inactive',
|
|
123
|
+
session_id: sessionId,
|
|
124
|
+
message: `Domain ${params.domain_name} updated${shouldActivate ? ' and activated' : ''} successfully`,
|
|
125
|
+
domain_details: updatedDomain
|
|
126
|
+
},
|
|
127
|
+
status: 200,
|
|
128
|
+
statusText: 'OK',
|
|
129
|
+
headers: {},
|
|
130
|
+
config: {}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
if (lockHandle) {
|
|
135
|
+
try {
|
|
136
|
+
await (0, unlock_1.unlockDomain)(connection, params.domain_name, lockHandle, sessionId);
|
|
137
|
+
}
|
|
138
|
+
catch (unlockError) {
|
|
139
|
+
// Ignore unlock errors
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionGroupBuilder - Fluent API for function group operations with Promise chaining
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Method chaining: builder.validate().then(b => b.create()).then(b => b.lock())...
|
|
6
|
+
* - Error handling: .catch() for error callbacks
|
|
7
|
+
* - Cleanup: .finally() for guaranteed execution
|
|
8
|
+
* - Result storage: all results stored in logger/state
|
|
9
|
+
* - Chain interruption: chain stops on first error (standard Promise behavior)
|
|
10
|
+
*/
|
|
11
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
12
|
+
import { AxiosResponse } from 'axios';
|
|
13
|
+
import { ValidationResult } from '../shared/validation';
|
|
14
|
+
export interface FunctionGroupBuilderLogger {
|
|
15
|
+
debug?: (message: string, ...args: any[]) => void;
|
|
16
|
+
info?: (message: string, ...args: any[]) => void;
|
|
17
|
+
warn?: (message: string, ...args: any[]) => void;
|
|
18
|
+
error?: (message: string, ...args: any[]) => void;
|
|
19
|
+
}
|
|
20
|
+
export interface FunctionGroupBuilderConfig {
|
|
21
|
+
functionGroupName: string;
|
|
22
|
+
packageName?: string;
|
|
23
|
+
transportRequest?: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
sessionId?: string;
|
|
26
|
+
onLock?: (lockHandle: string, sessionId: string) => void;
|
|
27
|
+
}
|
|
28
|
+
export interface FunctionGroupBuilderState {
|
|
29
|
+
validationResult?: ValidationResult;
|
|
30
|
+
createResult?: AxiosResponse;
|
|
31
|
+
lockHandle?: string;
|
|
32
|
+
checkResult?: AxiosResponse;
|
|
33
|
+
unlockResult?: AxiosResponse;
|
|
34
|
+
activateResult?: AxiosResponse;
|
|
35
|
+
readResult?: AxiosResponse;
|
|
36
|
+
errors: Array<{
|
|
37
|
+
method: string;
|
|
38
|
+
error: Error;
|
|
39
|
+
timestamp: Date;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
export declare class FunctionGroupBuilder {
|
|
43
|
+
private connection;
|
|
44
|
+
private logger;
|
|
45
|
+
private config;
|
|
46
|
+
private lockHandle?;
|
|
47
|
+
private sessionId;
|
|
48
|
+
private state;
|
|
49
|
+
constructor(connection: AbapConnection, logger: FunctionGroupBuilderLogger, config: FunctionGroupBuilderConfig);
|
|
50
|
+
setPackage(packageName: string): this;
|
|
51
|
+
setRequest(transportRequest: string): this;
|
|
52
|
+
setName(functionGroupName: string): this;
|
|
53
|
+
setDescription(description: string): this;
|
|
54
|
+
validate(): Promise<this>;
|
|
55
|
+
create(): Promise<this>;
|
|
56
|
+
lock(): Promise<this>;
|
|
57
|
+
check(version?: 'active' | 'inactive', sourceCode?: string): Promise<this>;
|
|
58
|
+
unlock(): Promise<this>;
|
|
59
|
+
activate(): Promise<this>;
|
|
60
|
+
read(): Promise<this>;
|
|
61
|
+
forceUnlock(): Promise<void>;
|
|
62
|
+
getState(): Readonly<FunctionGroupBuilderState>;
|
|
63
|
+
getFunctionGroupName(): string;
|
|
64
|
+
getLockHandle(): string | undefined;
|
|
65
|
+
getSessionId(): string;
|
|
66
|
+
getValidationResult(): ValidationResult | undefined;
|
|
67
|
+
getCreateResult(): AxiosResponse | undefined;
|
|
68
|
+
getCheckResult(): AxiosResponse | undefined;
|
|
69
|
+
getUnlockResult(): AxiosResponse | undefined;
|
|
70
|
+
getActivateResult(): AxiosResponse | undefined;
|
|
71
|
+
getReadResult(): AxiosResponse | undefined;
|
|
72
|
+
getErrors(): ReadonlyArray<{
|
|
73
|
+
method: string;
|
|
74
|
+
error: Error;
|
|
75
|
+
timestamp: Date;
|
|
76
|
+
}>;
|
|
77
|
+
getResults(): {
|
|
78
|
+
validation?: ValidationResult;
|
|
79
|
+
create?: AxiosResponse;
|
|
80
|
+
check?: AxiosResponse;
|
|
81
|
+
unlock?: AxiosResponse;
|
|
82
|
+
activate?: AxiosResponse;
|
|
83
|
+
lockHandle?: string;
|
|
84
|
+
errors: Array<{
|
|
85
|
+
method: string;
|
|
86
|
+
error: Error;
|
|
87
|
+
timestamp: Date;
|
|
88
|
+
}>;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=FunctionGroupBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionGroupBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/functionGroup/FunctionGroupBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionGroupBuilder - Fluent API for function group operations with Promise chaining
|
|
4
|
+
*
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Method chaining: builder.validate().then(b => b.create()).then(b => b.lock())...
|
|
7
|
+
* - Error handling: .catch() for error callbacks
|
|
8
|
+
* - Cleanup: .finally() for guaranteed execution
|
|
9
|
+
* - Result storage: all results stored in logger/state
|
|
10
|
+
* - Chain interruption: chain stops on first error (standard Promise behavior)
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.FunctionGroupBuilder = void 0;
|
|
14
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
15
|
+
const validation_1 = require("./validation");
|
|
16
|
+
const create_1 = require("./create");
|
|
17
|
+
const lock_1 = require("./lock");
|
|
18
|
+
const unlock_1 = require("./unlock");
|
|
19
|
+
const activation_1 = require("./activation");
|
|
20
|
+
const check_1 = require("./check");
|
|
21
|
+
const read_1 = require("./read");
|
|
22
|
+
class FunctionGroupBuilder {
|
|
23
|
+
connection;
|
|
24
|
+
logger;
|
|
25
|
+
config;
|
|
26
|
+
lockHandle;
|
|
27
|
+
sessionId;
|
|
28
|
+
state;
|
|
29
|
+
constructor(connection, logger, config) {
|
|
30
|
+
this.connection = connection;
|
|
31
|
+
this.logger = logger;
|
|
32
|
+
this.config = { ...config };
|
|
33
|
+
this.sessionId = config.sessionId || (0, sessionUtils_1.generateSessionId)();
|
|
34
|
+
this.state = {
|
|
35
|
+
errors: []
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// Builder methods - return this for chaining
|
|
39
|
+
setPackage(packageName) {
|
|
40
|
+
this.config.packageName = packageName;
|
|
41
|
+
this.logger.debug?.('Package set:', packageName);
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
setRequest(transportRequest) {
|
|
45
|
+
this.config.transportRequest = transportRequest;
|
|
46
|
+
this.logger.debug?.('Transport request set:', transportRequest);
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
setName(functionGroupName) {
|
|
50
|
+
this.config.functionGroupName = functionGroupName;
|
|
51
|
+
this.logger.debug?.('Function group name set:', functionGroupName);
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
setDescription(description) {
|
|
55
|
+
this.config.description = description;
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
// Operation methods - return Promise<this> for Promise chaining
|
|
59
|
+
async validate() {
|
|
60
|
+
try {
|
|
61
|
+
this.logger.info?.('Validating function group:', this.config.functionGroupName);
|
|
62
|
+
const result = await (0, validation_1.validateFunctionGroupName)(this.connection, this.config.functionGroupName, this.config.description);
|
|
63
|
+
this.state.validationResult = result;
|
|
64
|
+
this.logger.info?.('Validation successful:', result.valid);
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
this.state.errors.push({
|
|
69
|
+
method: 'validate',
|
|
70
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
71
|
+
timestamp: new Date()
|
|
72
|
+
});
|
|
73
|
+
this.logger.error?.('Validation failed:', error);
|
|
74
|
+
throw error; // Interrupts chain
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async create() {
|
|
78
|
+
try {
|
|
79
|
+
if (!this.config.packageName) {
|
|
80
|
+
throw new Error('Package name is required');
|
|
81
|
+
}
|
|
82
|
+
this.logger.info?.('Creating function group:', this.config.functionGroupName);
|
|
83
|
+
const params = {
|
|
84
|
+
function_group_name: this.config.functionGroupName,
|
|
85
|
+
package_name: this.config.packageName,
|
|
86
|
+
transport_request: this.config.transportRequest,
|
|
87
|
+
description: this.config.description,
|
|
88
|
+
activate: false // Don't activate in low-level function
|
|
89
|
+
};
|
|
90
|
+
const result = await (0, create_1.createFunctionGroup)(this.connection, params);
|
|
91
|
+
this.state.createResult = result;
|
|
92
|
+
this.logger.info?.('Function group created successfully:', result.status);
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
this.state.errors.push({
|
|
97
|
+
method: 'create',
|
|
98
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
99
|
+
timestamp: new Date()
|
|
100
|
+
});
|
|
101
|
+
this.logger.error?.('Create failed:', error);
|
|
102
|
+
throw error; // Interrupts chain
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async lock() {
|
|
106
|
+
try {
|
|
107
|
+
this.logger.info?.('Locking function group:', this.config.functionGroupName);
|
|
108
|
+
const lockHandle = await (0, lock_1.lockFunctionGroup)(this.connection, this.config.functionGroupName, this.sessionId);
|
|
109
|
+
this.lockHandle = lockHandle;
|
|
110
|
+
this.state.lockHandle = lockHandle;
|
|
111
|
+
// Register lock in persistent storage if callback provided
|
|
112
|
+
if (this.config.onLock) {
|
|
113
|
+
this.config.onLock(lockHandle, this.sessionId);
|
|
114
|
+
}
|
|
115
|
+
this.logger.info?.('Function group locked, handle:', lockHandle.substring(0, 10) + '...');
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
this.state.errors.push({
|
|
120
|
+
method: 'lock',
|
|
121
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
122
|
+
timestamp: new Date()
|
|
123
|
+
});
|
|
124
|
+
this.logger.error?.('Lock failed:', error);
|
|
125
|
+
throw error; // Interrupts chain
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async check(version = 'inactive', sourceCode) {
|
|
129
|
+
try {
|
|
130
|
+
this.logger.info?.('Checking function group:', this.config.functionGroupName, 'version:', version);
|
|
131
|
+
const result = await (0, check_1.checkFunctionGroup)(this.connection, this.config.functionGroupName, version, sourceCode, this.sessionId);
|
|
132
|
+
this.state.checkResult = result;
|
|
133
|
+
this.logger.info?.('Function group check successful:', result.status);
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
this.state.errors.push({
|
|
138
|
+
method: 'check',
|
|
139
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
140
|
+
timestamp: new Date()
|
|
141
|
+
});
|
|
142
|
+
this.logger.error?.('Check failed:', error);
|
|
143
|
+
throw error; // Interrupts chain
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async unlock() {
|
|
147
|
+
try {
|
|
148
|
+
if (!this.lockHandle) {
|
|
149
|
+
throw new Error('Function group is not locked. Call lock() first.');
|
|
150
|
+
}
|
|
151
|
+
this.logger.info?.('Unlocking function group:', this.config.functionGroupName);
|
|
152
|
+
const result = await (0, unlock_1.unlockFunctionGroup)(this.connection, this.config.functionGroupName, this.lockHandle, this.sessionId);
|
|
153
|
+
this.state.unlockResult = result;
|
|
154
|
+
this.lockHandle = undefined;
|
|
155
|
+
this.state.lockHandle = undefined;
|
|
156
|
+
this.logger.info?.('Function group unlocked successfully:', result.status);
|
|
157
|
+
return this;
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
this.state.errors.push({
|
|
161
|
+
method: 'unlock',
|
|
162
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
163
|
+
timestamp: new Date()
|
|
164
|
+
});
|
|
165
|
+
this.logger.error?.('Unlock failed:', error);
|
|
166
|
+
throw error; // Interrupts chain
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async activate() {
|
|
170
|
+
try {
|
|
171
|
+
this.logger.info?.('Activating function group:', this.config.functionGroupName);
|
|
172
|
+
const result = await (0, activation_1.activateFunctionGroup)(this.connection, this.config.functionGroupName);
|
|
173
|
+
this.state.activateResult = result;
|
|
174
|
+
this.logger.info?.('Function group activated successfully:', result.status);
|
|
175
|
+
return this;
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
this.state.errors.push({
|
|
179
|
+
method: 'activate',
|
|
180
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
181
|
+
timestamp: new Date()
|
|
182
|
+
});
|
|
183
|
+
this.logger.error?.('Activate failed:', error);
|
|
184
|
+
throw error; // Interrupts chain
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
async read() {
|
|
188
|
+
try {
|
|
189
|
+
this.logger.info?.('Reading function group:', this.config.functionGroupName);
|
|
190
|
+
const result = await (0, read_1.getFunctionGroup)(this.connection, this.config.functionGroupName);
|
|
191
|
+
this.state.readResult = result;
|
|
192
|
+
this.logger.info?.('Function group read successfully:', result.status);
|
|
193
|
+
return this;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
this.state.errors.push({
|
|
197
|
+
method: 'read',
|
|
198
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
199
|
+
timestamp: new Date()
|
|
200
|
+
});
|
|
201
|
+
this.logger.error?.('Read failed:', error);
|
|
202
|
+
throw error; // Interrupts chain
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
async forceUnlock() {
|
|
206
|
+
if (!this.lockHandle) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
await (0, unlock_1.unlockFunctionGroup)(this.connection, this.config.functionGroupName, this.lockHandle, this.sessionId);
|
|
211
|
+
this.logger.info?.('Force unlock successful for', this.config.functionGroupName);
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
this.logger.warn?.('Force unlock failed:', error);
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
this.lockHandle = undefined;
|
|
218
|
+
this.state.lockHandle = undefined;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Getters for accessing results
|
|
222
|
+
getState() {
|
|
223
|
+
return { ...this.state };
|
|
224
|
+
}
|
|
225
|
+
getFunctionGroupName() {
|
|
226
|
+
return this.config.functionGroupName;
|
|
227
|
+
}
|
|
228
|
+
getLockHandle() {
|
|
229
|
+
return this.lockHandle;
|
|
230
|
+
}
|
|
231
|
+
getSessionId() {
|
|
232
|
+
return this.sessionId;
|
|
233
|
+
}
|
|
234
|
+
getValidationResult() {
|
|
235
|
+
return this.state.validationResult;
|
|
236
|
+
}
|
|
237
|
+
getCreateResult() {
|
|
238
|
+
return this.state.createResult;
|
|
239
|
+
}
|
|
240
|
+
getCheckResult() {
|
|
241
|
+
return this.state.checkResult;
|
|
242
|
+
}
|
|
243
|
+
getUnlockResult() {
|
|
244
|
+
return this.state.unlockResult;
|
|
245
|
+
}
|
|
246
|
+
getActivateResult() {
|
|
247
|
+
return this.state.activateResult;
|
|
248
|
+
}
|
|
249
|
+
getReadResult() {
|
|
250
|
+
return this.state.readResult;
|
|
251
|
+
}
|
|
252
|
+
getErrors() {
|
|
253
|
+
return [...this.state.errors];
|
|
254
|
+
}
|
|
255
|
+
// Helper method to get all results
|
|
256
|
+
getResults() {
|
|
257
|
+
return {
|
|
258
|
+
validation: this.state.validationResult,
|
|
259
|
+
create: this.state.createResult,
|
|
260
|
+
check: this.state.checkResult,
|
|
261
|
+
unlock: this.state.unlockResult,
|
|
262
|
+
activate: this.state.activateResult,
|
|
263
|
+
lockHandle: this.lockHandle,
|
|
264
|
+
errors: [...this.state.errors]
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
exports.FunctionGroupBuilder = FunctionGroupBuilder;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionGroup activation operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Activate function group
|
|
8
|
+
*/
|
|
9
|
+
export declare function activateFunctionGroup(connection: AbapConnection, functionGroupName: string): Promise<AxiosResponse>;
|
|
10
|
+
//# sourceMappingURL=activation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../../../src/core/functionGroup/activation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,aAAa,CAAC,CAsBxB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionGroup activation operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.activateFunctionGroup = activateFunctionGroup;
|
|
7
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
8
|
+
/**
|
|
9
|
+
* Activate function group
|
|
10
|
+
*/
|
|
11
|
+
async function activateFunctionGroup(connection, functionGroupName) {
|
|
12
|
+
const encodedName = (0, internalUtils_1.encodeSapObjectName)(functionGroupName).toLowerCase();
|
|
13
|
+
const objectUri = `/sap/bc/adt/functions/groups/${encodedName}`;
|
|
14
|
+
const xmlPayload = `<?xml version="1.0" encoding="UTF-8"?>
|
|
15
|
+
<adtcore:objectReferences xmlns:adtcore="http://www.sap.com/adt/core">
|
|
16
|
+
<adtcore:objectReference adtcore:uri="${objectUri}" adtcore:name="${functionGroupName}"/>
|
|
17
|
+
</adtcore:objectReferences>`;
|
|
18
|
+
const baseUrl = await connection.getBaseUrl();
|
|
19
|
+
const url = `${baseUrl}/sap/bc/adt/activation?method=activate&preauditRequested=true`;
|
|
20
|
+
return connection.makeAdtRequest({
|
|
21
|
+
url,
|
|
22
|
+
method: 'POST',
|
|
23
|
+
timeout: 30000, // 30 seconds for activation
|
|
24
|
+
data: xmlPayload,
|
|
25
|
+
headers: {
|
|
26
|
+
'Content-Type': 'application/xml',
|
|
27
|
+
'Accept': 'application/xml'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FunctionGroup check operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Check function group code (syntax, compilation, rules)
|
|
8
|
+
*
|
|
9
|
+
* CheckRun validates everything: syntax, compilation errors, warnings, code quality rules.
|
|
10
|
+
*
|
|
11
|
+
* Can check:
|
|
12
|
+
* - Existing active function group: provide functionGroupName, version='active', omit sourceCode
|
|
13
|
+
* - Existing inactive function group: provide functionGroupName, version='inactive', omit sourceCode
|
|
14
|
+
* - Hypothetical code: provide functionGroupName, sourceCode, version (object doesn't need to exist)
|
|
15
|
+
*
|
|
16
|
+
* @param connection - SAP connection
|
|
17
|
+
* @param functionGroupName - Function group name
|
|
18
|
+
* @param version - 'active' (activated version) or 'inactive' (saved but not activated)
|
|
19
|
+
* @param sourceCode - Optional: source code to validate. If provided, validates hypothetical code without creating object
|
|
20
|
+
* @param sessionId - Optional session ID
|
|
21
|
+
* @returns Check result with errors/warnings
|
|
22
|
+
*/
|
|
23
|
+
export declare function checkFunctionGroup(connection: AbapConnection, functionGroupName: string, version: 'active' | 'inactive', sourceCode?: string, sessionId?: string): Promise<AxiosResponse>;
|
|
24
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/core/functionGroup/check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,QAAQ,GAAG,UAAU,EAC9B,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CA2CxB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FunctionGroup check operations
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.checkFunctionGroup = checkFunctionGroup;
|
|
40
|
+
/**
|
|
41
|
+
* Check function group code (syntax, compilation, rules)
|
|
42
|
+
*
|
|
43
|
+
* CheckRun validates everything: syntax, compilation errors, warnings, code quality rules.
|
|
44
|
+
*
|
|
45
|
+
* Can check:
|
|
46
|
+
* - Existing active function group: provide functionGroupName, version='active', omit sourceCode
|
|
47
|
+
* - Existing inactive function group: provide functionGroupName, version='inactive', omit sourceCode
|
|
48
|
+
* - Hypothetical code: provide functionGroupName, sourceCode, version (object doesn't need to exist)
|
|
49
|
+
*
|
|
50
|
+
* @param connection - SAP connection
|
|
51
|
+
* @param functionGroupName - Function group name
|
|
52
|
+
* @param version - 'active' (activated version) or 'inactive' (saved but not activated)
|
|
53
|
+
* @param sourceCode - Optional: source code to validate. If provided, validates hypothetical code without creating object
|
|
54
|
+
* @param sessionId - Optional session ID
|
|
55
|
+
* @returns Check result with errors/warnings
|
|
56
|
+
*/
|
|
57
|
+
async function checkFunctionGroup(connection, functionGroupName, version, sourceCode, sessionId) {
|
|
58
|
+
const { runCheckRun, runCheckRunWithSource, parseCheckRunResponse } = await Promise.resolve().then(() => __importStar(require('../shared/checkRun')));
|
|
59
|
+
let response;
|
|
60
|
+
if (sourceCode) {
|
|
61
|
+
// Validate hypothetical code (object doesn't need to exist)
|
|
62
|
+
response = await runCheckRunWithSource(connection, 'function_group', functionGroupName, sourceCode, version, 'abapCheckRun', sessionId);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// Validate existing object in SAP (reads from system)
|
|
66
|
+
response = await runCheckRun(connection, 'function_group', functionGroupName, version, 'abapCheckRun', sessionId);
|
|
67
|
+
}
|
|
68
|
+
const checkResult = parseCheckRunResponse(response);
|
|
69
|
+
// Check result is OK if:
|
|
70
|
+
// 1. Message says "has been checked" or "was checked" - object was already checked, this is OK
|
|
71
|
+
// Problems are: ERROR and WARNING
|
|
72
|
+
// Only throw error if there are actual ERROR or WARNING messages
|
|
73
|
+
// If message indicates object was already checked, it's OK (even if has errors/warnings)
|
|
74
|
+
const isAlreadyChecked = checkResult.message?.toLowerCase().includes('has been checked') ||
|
|
75
|
+
checkResult.message?.toLowerCase().includes('was checked');
|
|
76
|
+
if (isAlreadyChecked) {
|
|
77
|
+
return response; // Object was already checked - this is OK
|
|
78
|
+
}
|
|
79
|
+
// Problems: ERROR (errors) and WARNING (warnings)
|
|
80
|
+
if (checkResult.errors.length > 0) {
|
|
81
|
+
throw new Error(`Function group check failed: ${checkResult.message || 'Unknown error'}`);
|
|
82
|
+
}
|
|
83
|
+
if (checkResult.warnings.length > 0) {
|
|
84
|
+
throw new Error(`Function group check failed: ${checkResult.message || 'Warnings found'}`);
|
|
85
|
+
}
|
|
86
|
+
// If status is 'notProcessed', it's an error
|
|
87
|
+
if (checkResult.status === 'notProcessed') {
|
|
88
|
+
throw new Error(`Function group check failed: ${checkResult.message || 'Object could not be processed'}`);
|
|
89
|
+
}
|
|
90
|
+
return response;
|
|
91
|
+
}
|