@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,235 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI utility to manage session state files
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* adt-manage-sessions [options] <command>
|
|
7
|
+
*
|
|
8
|
+
* Commands:
|
|
9
|
+
* list Show all active sessions
|
|
10
|
+
* info <sessionId> Show session details
|
|
11
|
+
* cleanup Remove stale sessions
|
|
12
|
+
* clear Clear all sessions
|
|
13
|
+
* help Show this help message
|
|
14
|
+
*
|
|
15
|
+
* Options:
|
|
16
|
+
* --sessions-dir <path> Directory with session files (default: .sessions)
|
|
17
|
+
* --help, -h Show help
|
|
18
|
+
*
|
|
19
|
+
* Examples:
|
|
20
|
+
* adt-manage-sessions list
|
|
21
|
+
* adt-manage-sessions --sessions-dir /custom/path list
|
|
22
|
+
* adt-manage-sessions info my-session-id
|
|
23
|
+
* adt-manage-sessions cleanup
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
const path = require('path');
|
|
27
|
+
const { FileSessionStorage } = require('@mcp-abap-adt/connection');
|
|
28
|
+
|
|
29
|
+
// Parse command line arguments
|
|
30
|
+
function parseArgs() {
|
|
31
|
+
const args = process.argv.slice(2);
|
|
32
|
+
const options = {
|
|
33
|
+
sessionsDir: '.sessions',
|
|
34
|
+
command: null,
|
|
35
|
+
commandArgs: []
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
for (let i = 0; i < args.length; i++) {
|
|
39
|
+
const arg = args[i];
|
|
40
|
+
|
|
41
|
+
if (arg === '--sessions-dir' && i + 1 < args.length) {
|
|
42
|
+
options.sessionsDir = args[++i];
|
|
43
|
+
} else if (arg === '--help' || arg === '-h' || arg === 'help') {
|
|
44
|
+
return { ...options, command: 'help' };
|
|
45
|
+
} else if (!options.command) {
|
|
46
|
+
options.command = arg;
|
|
47
|
+
} else {
|
|
48
|
+
options.commandArgs.push(arg);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return options;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function showHelp() {
|
|
56
|
+
console.log(`
|
|
57
|
+
adt-manage-sessions - Manage HTTP session state (cookies, CSRF tokens)
|
|
58
|
+
|
|
59
|
+
USAGE:
|
|
60
|
+
adt-manage-sessions [options] <command>
|
|
61
|
+
|
|
62
|
+
COMMANDS:
|
|
63
|
+
list Show all active sessions with metadata
|
|
64
|
+
info <sessionId> Show detailed session information
|
|
65
|
+
cleanup Remove stale sessions (>30 min or from dead processes)
|
|
66
|
+
clear Clear all sessions from storage
|
|
67
|
+
help Show this help message
|
|
68
|
+
|
|
69
|
+
OPTIONS:
|
|
70
|
+
--sessions-dir <path> Directory with session files (default: .sessions)
|
|
71
|
+
--help, -h Show this help
|
|
72
|
+
|
|
73
|
+
EXAMPLES:
|
|
74
|
+
# List all sessions
|
|
75
|
+
adt-manage-sessions list
|
|
76
|
+
|
|
77
|
+
# Use custom sessions directory
|
|
78
|
+
adt-manage-sessions --sessions-dir /custom/.sessions list
|
|
79
|
+
|
|
80
|
+
# Show session details
|
|
81
|
+
adt-manage-sessions info test-session-123
|
|
82
|
+
|
|
83
|
+
# Clean up stale sessions
|
|
84
|
+
adt-manage-sessions cleanup
|
|
85
|
+
|
|
86
|
+
# Clear all sessions
|
|
87
|
+
adt-manage-sessions clear
|
|
88
|
+
|
|
89
|
+
FILES:
|
|
90
|
+
.sessions/<sessionId>.json Session state files (cookies, CSRF tokens)
|
|
91
|
+
|
|
92
|
+
For more info: https://github.com/fr0ster/mcp-abap-adt-clients
|
|
93
|
+
`);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const options = parseArgs();
|
|
97
|
+
|
|
98
|
+
// Show help
|
|
99
|
+
if (!options.command || options.command === 'help') {
|
|
100
|
+
showHelp();
|
|
101
|
+
process.exit(0);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const sessionStorage = new FileSessionStorage({
|
|
105
|
+
sessionDir: options.sessionsDir,
|
|
106
|
+
prettyPrint: true
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
function formatAge(ms) {
|
|
110
|
+
const seconds = Math.floor(ms / 1000);
|
|
111
|
+
const minutes = Math.floor(seconds / 60);
|
|
112
|
+
const hours = Math.floor(minutes / 60);
|
|
113
|
+
|
|
114
|
+
if (hours > 0) {
|
|
115
|
+
return `${hours}h ${minutes % 60}m`;
|
|
116
|
+
} else if (minutes > 0) {
|
|
117
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
118
|
+
} else {
|
|
119
|
+
return `${seconds}s`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function formatSessionInfo(sessionId, metadata) {
|
|
124
|
+
const processStatus = (() => {
|
|
125
|
+
try {
|
|
126
|
+
process.kill(metadata.pid, 0);
|
|
127
|
+
return '🟢 Running';
|
|
128
|
+
} catch {
|
|
129
|
+
return '🔴 Dead';
|
|
130
|
+
}
|
|
131
|
+
})();
|
|
132
|
+
|
|
133
|
+
return `
|
|
134
|
+
Session ID: ${sessionId}
|
|
135
|
+
Created: ${new Date(metadata.timestamp).toISOString()}
|
|
136
|
+
Age: ${formatAge(metadata.age)}
|
|
137
|
+
Process: ${metadata.pid} ${processStatus}`;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
async function main() {
|
|
141
|
+
const command = process.argv[2];
|
|
142
|
+
const arg = process.argv[3];
|
|
143
|
+
|
|
144
|
+
if (!command || command === 'list') {
|
|
145
|
+
// List all sessions
|
|
146
|
+
const sessions = await sessionStorage.listSessions();
|
|
147
|
+
|
|
148
|
+
if (sessions.length === 0) {
|
|
149
|
+
console.log('✅ No active sessions found');
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
console.log(`\n📋 Active Sessions (${sessions.length}):\n`);
|
|
154
|
+
|
|
155
|
+
for (const sessionId of sessions) {
|
|
156
|
+
const metadata = await sessionStorage.getSessionMetadata(sessionId);
|
|
157
|
+
if (metadata) {
|
|
158
|
+
console.log(formatSessionInfo(sessionId, metadata));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
console.log();
|
|
162
|
+
|
|
163
|
+
} else if (command === 'info') {
|
|
164
|
+
// Show session details
|
|
165
|
+
if (!arg) {
|
|
166
|
+
console.error('❌ Usage: manage-sessions info <sessionId>');
|
|
167
|
+
process.exit(1);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const state = await sessionStorage.load(arg);
|
|
171
|
+
const metadata = await sessionStorage.getSessionMetadata(arg);
|
|
172
|
+
|
|
173
|
+
if (!state || !metadata) {
|
|
174
|
+
console.error(`❌ Session not found: ${arg}`);
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
console.log(formatSessionInfo(arg, metadata));
|
|
179
|
+
console.log('\nSession State:');
|
|
180
|
+
console.log(` Has Cookies: ${!!state.cookies}`);
|
|
181
|
+
console.log(` Has CSRF Token: ${!!state.csrfToken}`);
|
|
182
|
+
console.log(` Cookie Store: ${Object.keys(state.cookieStore).length} entries`);
|
|
183
|
+
|
|
184
|
+
if (state.cookies) {
|
|
185
|
+
console.log(`\nCookies:\n ${state.cookies}`);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (state.csrfToken) {
|
|
189
|
+
console.log(`\nCSRF Token:\n ${state.csrfToken}`);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if (Object.keys(state.cookieStore).length > 0) {
|
|
193
|
+
console.log('\nCookie Store:');
|
|
194
|
+
for (const [key, value] of Object.entries(state.cookieStore)) {
|
|
195
|
+
console.log(` ${key}: ${value}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
} else if (command === 'cleanup') {
|
|
200
|
+
// Clean up stale sessions
|
|
201
|
+
console.log('🧹 Cleaning up stale sessions...\n');
|
|
202
|
+
|
|
203
|
+
const stale = await sessionStorage.cleanupStaleSessions();
|
|
204
|
+
const dead = await sessionStorage.cleanupDeadProcessSessions();
|
|
205
|
+
|
|
206
|
+
const allCleaned = [...new Set([...stale, ...dead])];
|
|
207
|
+
|
|
208
|
+
if (allCleaned.length === 0) {
|
|
209
|
+
console.log('✅ No stale sessions to cleanup');
|
|
210
|
+
} else {
|
|
211
|
+
console.log(`🧹 Cleaned up ${allCleaned.length} session(s):`);
|
|
212
|
+
allCleaned.forEach(id => console.log(` - ${id}`));
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
} else if (command === 'clear') {
|
|
216
|
+
// Clear all sessions
|
|
217
|
+
const sessions = await sessionStorage.listSessions();
|
|
218
|
+
await sessionStorage.clearAll();
|
|
219
|
+
console.log(`🧹 Cleared ${sessions.length} session(s)`);
|
|
220
|
+
|
|
221
|
+
} else {
|
|
222
|
+
console.error(`❌ Unknown command: ${command}`);
|
|
223
|
+
console.error('Usage:');
|
|
224
|
+
console.error(' manage-sessions list - Show all active sessions');
|
|
225
|
+
console.error(' manage-sessions info <sessionId> - Show session details');
|
|
226
|
+
console.error(' manage-sessions cleanup - Remove stale sessions');
|
|
227
|
+
console.error(' manage-sessions clear - Clear all sessions');
|
|
228
|
+
process.exit(1);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
main().catch(error => {
|
|
233
|
+
console.error('❌ Error:', error.message);
|
|
234
|
+
process.exit(1);
|
|
235
|
+
});
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Unlock Object CLI - Unlock an SAP object using saved session/lock handle
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* adt-unlock-object <type> <name> [options]
|
|
7
|
+
*
|
|
8
|
+
* Examples:
|
|
9
|
+
* adt-unlock-object class ZCL_MY_CLASS --session-id my_session
|
|
10
|
+
* adt-unlock-object program Z_MY_PROGRAM --session-id auto_123456
|
|
11
|
+
* adt-unlock-object fm MY_FUNCTION_MODULE --function-group Z_MY_FUGR --session-id my_session
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const path = require('path');
|
|
15
|
+
const fs = require('fs');
|
|
16
|
+
|
|
17
|
+
// Color codes for terminal output
|
|
18
|
+
const colors = {
|
|
19
|
+
reset: '\x1b[0m',
|
|
20
|
+
bright: '\x1b[1m',
|
|
21
|
+
green: '\x1b[32m',
|
|
22
|
+
red: '\x1b[31m',
|
|
23
|
+
yellow: '\x1b[33m',
|
|
24
|
+
blue: '\x1b[34m',
|
|
25
|
+
cyan: '\x1b[36m',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
function showHelp() {
|
|
29
|
+
console.log(`
|
|
30
|
+
${colors.bright}Unlock Object CLI${colors.reset} - Unlock an SAP object using saved session/lock handle
|
|
31
|
+
|
|
32
|
+
${colors.bright}USAGE:${colors.reset}
|
|
33
|
+
adt-unlock-object <type> <name> --session-id <id> [options]
|
|
34
|
+
|
|
35
|
+
${colors.bright}ARGUMENTS:${colors.reset}
|
|
36
|
+
type Object type: class, program, interface, fm, domain, dataelement
|
|
37
|
+
name Object name (e.g., ZCL_MY_CLASS, Z_MY_PROGRAM)
|
|
38
|
+
|
|
39
|
+
${colors.bright}REQUIRED OPTIONS:${colors.reset}
|
|
40
|
+
--session-id <id> Session ID used when locking
|
|
41
|
+
|
|
42
|
+
${colors.bright}OPTIONS:${colors.reset}
|
|
43
|
+
--function-group <name> Function group name (required for fm type)
|
|
44
|
+
--sessions-dir <path> Sessions directory (default: .sessions)
|
|
45
|
+
--locks-dir <path> Locks directory (default: .locks)
|
|
46
|
+
--env <path> Path to .env file (default: .env)
|
|
47
|
+
--help, -h Show this help message
|
|
48
|
+
|
|
49
|
+
${colors.bright}EXAMPLES:${colors.reset}
|
|
50
|
+
# Unlock a class
|
|
51
|
+
adt-unlock-object class ZCL_MY_CLASS --session-id my_session
|
|
52
|
+
|
|
53
|
+
# Unlock a program
|
|
54
|
+
adt-unlock-object program Z_MY_PROGRAM --session-id auto_1234567890
|
|
55
|
+
|
|
56
|
+
# Unlock a function module
|
|
57
|
+
adt-unlock-object fm MY_FUNCTION_MODULE --function-group Z_MY_FUGR --session-id my_session
|
|
58
|
+
|
|
59
|
+
# Unlock with custom directories
|
|
60
|
+
adt-unlock-object class ZCL_TEST --session-id test --sessions-dir /tmp/sessions --locks-dir /tmp/locks
|
|
61
|
+
|
|
62
|
+
${colors.bright}NOTES:${colors.reset}
|
|
63
|
+
- Restores session from <sessions-dir>/<session-id>.json
|
|
64
|
+
- Retrieves lock handle from <locks-dir>/active-locks.json
|
|
65
|
+
- Removes lock from registry after successful unlock
|
|
66
|
+
- Use same session-id that was used with 'adt-lock-object'
|
|
67
|
+
`);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async function main() {
|
|
71
|
+
const args = process.argv.slice(2);
|
|
72
|
+
|
|
73
|
+
// Show help
|
|
74
|
+
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
75
|
+
showHelp();
|
|
76
|
+
process.exit(0);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Parse arguments
|
|
80
|
+
const objectType = args[0];
|
|
81
|
+
const objectName = args[1];
|
|
82
|
+
|
|
83
|
+
if (!objectType || !objectName) {
|
|
84
|
+
console.error(`${colors.red}Error: Object type and name are required${colors.reset}`);
|
|
85
|
+
console.log(`Run with --help for usage information`);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Parse options
|
|
90
|
+
let functionGroup;
|
|
91
|
+
let sessionId;
|
|
92
|
+
let sessionsDir = '.sessions';
|
|
93
|
+
let locksDir = '.locks';
|
|
94
|
+
let envPath = '.env';
|
|
95
|
+
|
|
96
|
+
for (let i = 2; i < args.length; i++) {
|
|
97
|
+
if (args[i] === '--function-group' && args[i + 1]) {
|
|
98
|
+
functionGroup = args[++i];
|
|
99
|
+
} else if (args[i] === '--session-id' && args[i + 1]) {
|
|
100
|
+
sessionId = args[++i];
|
|
101
|
+
} else if (args[i] === '--sessions-dir' && args[i + 1]) {
|
|
102
|
+
sessionsDir = args[++i];
|
|
103
|
+
} else if (args[i] === '--locks-dir' && args[i + 1]) {
|
|
104
|
+
locksDir = args[++i];
|
|
105
|
+
} else if (args[i] === '--env' && args[i + 1]) {
|
|
106
|
+
envPath = args[++i];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Validate required options
|
|
111
|
+
if (!sessionId) {
|
|
112
|
+
console.error(`${colors.red}Error: --session-id is required${colors.reset}`);
|
|
113
|
+
console.log(`Run with --help for usage information`);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Validate function group for FM
|
|
118
|
+
if (objectType === 'fm' && !functionGroup) {
|
|
119
|
+
console.error(`${colors.red}Error: --function-group is required for function modules${colors.reset}`);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Load environment
|
|
124
|
+
require('dotenv').config({ path: envPath });
|
|
125
|
+
|
|
126
|
+
const sapUrl = process.env.SAP_URL;
|
|
127
|
+
const sapUsername = process.env.SAP_USERNAME;
|
|
128
|
+
const sapPassword = process.env.SAP_PASSWORD;
|
|
129
|
+
const sapJwtToken = process.env.SAP_JWT_TOKEN;
|
|
130
|
+
|
|
131
|
+
if (!sapUrl) {
|
|
132
|
+
console.error(`${colors.red}Error: SAP_URL must be set in ${envPath}${colors.reset}`);
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Auto-detect auth type based on what's available
|
|
137
|
+
let sapAuthType;
|
|
138
|
+
if (sapJwtToken) {
|
|
139
|
+
sapAuthType = 'jwt';
|
|
140
|
+
} else if (sapUsername && sapPassword) {
|
|
141
|
+
sapAuthType = 'basic';
|
|
142
|
+
} else {
|
|
143
|
+
console.error(`${colors.red}Error: Either SAP_JWT_TOKEN or (SAP_USERNAME and SAP_PASSWORD) must be set in ${envPath}${colors.reset}`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
console.log(`${colors.cyan}🔓 Unlocking ${objectType}: ${objectName}${colors.reset}`);
|
|
148
|
+
if (functionGroup) {
|
|
149
|
+
console.log(`${colors.cyan} Function Group: ${functionGroup}${colors.reset}`);
|
|
150
|
+
}
|
|
151
|
+
console.log(`${colors.cyan} Session ID: ${sessionId}${colors.reset}`);
|
|
152
|
+
|
|
153
|
+
try {
|
|
154
|
+
// Dynamic imports
|
|
155
|
+
const { createAbapConnection, FileSessionStorage } = require('@mcp-abap-adt/connection');
|
|
156
|
+
const { LockStateManager } = require('../dist/utils/lockStateManager.js');
|
|
157
|
+
|
|
158
|
+
// Map object type to unlock function
|
|
159
|
+
let unlockFunction;
|
|
160
|
+
let adtObjectType;
|
|
161
|
+
|
|
162
|
+
switch (objectType.toLowerCase()) {
|
|
163
|
+
case 'class':
|
|
164
|
+
unlockFunction = require('../dist/core/class/unlock.js').unlockClass;
|
|
165
|
+
adtObjectType = 'class';
|
|
166
|
+
break;
|
|
167
|
+
case 'program':
|
|
168
|
+
unlockFunction = require('../dist/core/program/unlock.js').unlockProgram;
|
|
169
|
+
adtObjectType = 'program';
|
|
170
|
+
break;
|
|
171
|
+
case 'interface':
|
|
172
|
+
unlockFunction = require('../dist/core/interface/unlock.js').unlockInterface;
|
|
173
|
+
adtObjectType = 'interface';
|
|
174
|
+
break;
|
|
175
|
+
case 'fugr':
|
|
176
|
+
unlockFunction = require('../dist/core/functionGroup/lock.js').unlockFunctionGroup;
|
|
177
|
+
adtObjectType = 'fugr';
|
|
178
|
+
break;
|
|
179
|
+
case 'fm':
|
|
180
|
+
unlockFunction = require('../dist/core/functionModule/unlock.js').unlockFunctionModule;
|
|
181
|
+
adtObjectType = 'fm';
|
|
182
|
+
break;
|
|
183
|
+
case 'domain':
|
|
184
|
+
unlockFunction = require('../dist/core/domain/unlock.js').unlockDomain;
|
|
185
|
+
adtObjectType = 'domain';
|
|
186
|
+
break;
|
|
187
|
+
case 'dataelement':
|
|
188
|
+
unlockFunction = require('../dist/core/dataElement/unlock.js').unlockDataElement;
|
|
189
|
+
adtObjectType = 'dataElement';
|
|
190
|
+
break;
|
|
191
|
+
default:
|
|
192
|
+
console.error(`${colors.red}Error: Unsupported object type: ${objectType}${colors.reset}`);
|
|
193
|
+
console.log('Supported types: class, program, interface, fugr, fm, domain, dataelement');
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Load session from file
|
|
198
|
+
const sessionStorage = new FileSessionStorage({
|
|
199
|
+
sessionDir: sessionsDir,
|
|
200
|
+
prettyPrint: true,
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
console.log(`${colors.yellow}📂 Loading session...${colors.reset}`);
|
|
204
|
+
const sessionState = await sessionStorage.load(sessionId);
|
|
205
|
+
|
|
206
|
+
if (!sessionState) {
|
|
207
|
+
console.error(`${colors.red}Error: Session not found: ${sessionId}${colors.reset}`);
|
|
208
|
+
console.error(` Expected file: ${path.join(sessionsDir, sessionId + '.json')}`);
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
console.log(`${colors.green}✓ Session loaded${colors.reset}`);
|
|
213
|
+
|
|
214
|
+
// Get lock handle from lock manager
|
|
215
|
+
const lockManager = new LockStateManager(locksDir);
|
|
216
|
+
const lockState = lockManager.getLock(adtObjectType, objectName, functionGroup);
|
|
217
|
+
|
|
218
|
+
if (!lockState) {
|
|
219
|
+
console.error(`${colors.red}Error: Lock not found for ${objectType} ${objectName}${colors.reset}`);
|
|
220
|
+
console.error(` Check ${path.join(locksDir, 'active-locks.json')}`);
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (lockState.sessionId !== sessionId) {
|
|
225
|
+
console.warn(`${colors.yellow}Warning: Lock was created with different session ID${colors.reset}`);
|
|
226
|
+
console.warn(` Expected: ${sessionId}`);
|
|
227
|
+
console.warn(` Found: ${lockState.sessionId}`);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const lockHandle = lockState.lockHandle;
|
|
231
|
+
console.log(`${colors.green}✓ Lock handle retrieved${colors.reset}`);
|
|
232
|
+
console.log(` Lock Handle: ${colors.bright}${lockHandle}${colors.reset}`);
|
|
233
|
+
|
|
234
|
+
// Create connection config based on auth type
|
|
235
|
+
const config = {
|
|
236
|
+
url: sapUrl,
|
|
237
|
+
authType: sapAuthType,
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
if (sapAuthType === 'jwt') {
|
|
241
|
+
config.jwtToken = sapJwtToken;
|
|
242
|
+
} else {
|
|
243
|
+
config.username = sapUsername;
|
|
244
|
+
config.password = sapPassword;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const logger = {
|
|
248
|
+
debug: () => {},
|
|
249
|
+
info: console.log,
|
|
250
|
+
warn: console.warn,
|
|
251
|
+
error: console.error,
|
|
252
|
+
csrfToken: () => {},
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
const connection = createAbapConnection(config, logger);
|
|
256
|
+
|
|
257
|
+
// Enable stateful session - this will automatically load session state
|
|
258
|
+
await connection.enableStatefulSession(sessionId, sessionStorage);
|
|
259
|
+
console.log(`${colors.green}✓ Session restored to connection${colors.reset}`);
|
|
260
|
+
|
|
261
|
+
// Unlock the object
|
|
262
|
+
console.log(`${colors.yellow}🔓 Unlocking object...${colors.reset}`);
|
|
263
|
+
|
|
264
|
+
if (objectType.toLowerCase() === 'fm') {
|
|
265
|
+
await unlockFunction(connection, functionGroup, objectName, lockHandle, sessionId);
|
|
266
|
+
} else {
|
|
267
|
+
await unlockFunction(connection, objectName, lockHandle, sessionId);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
console.log(`${colors.green}✓ Object unlocked successfully${colors.reset}`);
|
|
271
|
+
|
|
272
|
+
// Remove lock from registry
|
|
273
|
+
lockManager.removeLock(adtObjectType, objectName, functionGroup);
|
|
274
|
+
console.log(`${colors.green}✓ Lock removed from registry${colors.reset}`);
|
|
275
|
+
|
|
276
|
+
// Optionally cleanup session
|
|
277
|
+
console.log(`\n${colors.yellow}Session file preserved: ${path.join(sessionsDir, sessionId + '.json')}${colors.reset}`);
|
|
278
|
+
console.log(`To clean up session, run: rm ${path.join(sessionsDir, sessionId + '.json')}`);
|
|
279
|
+
|
|
280
|
+
console.log(`\n${colors.bright}${colors.green}SUCCESS!${colors.reset} Object unlocked.`);
|
|
281
|
+
|
|
282
|
+
} catch (error) {
|
|
283
|
+
console.error(`\n${colors.red}Error: ${error.message}${colors.reset}`);
|
|
284
|
+
if (error.response) {
|
|
285
|
+
console.error(`HTTP ${error.response.status}: ${error.response.statusText}`);
|
|
286
|
+
}
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
main();
|