@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,335 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ViewBuilder - Fluent API for view operations with Promise chaining
|
|
4
|
+
*
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Method chaining: builder.create().then(b => b.lock()).then(b => b.update())...
|
|
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
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const builder = new ViewBuilder(connection, logger, {
|
|
15
|
+
* viewName: 'Z_TEST_VIEW',
|
|
16
|
+
* packageName: 'ZOK_TEST_PKG_01'
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* await builder
|
|
20
|
+
* .setDdlSource('@AbapCatalog.viewType: #BASIC\n...')
|
|
21
|
+
* .create()
|
|
22
|
+
* .then(b => b.lock())
|
|
23
|
+
* .then(b => b.update())
|
|
24
|
+
* .then(b => b.check())
|
|
25
|
+
* .then(b => b.unlock())
|
|
26
|
+
* .then(b => b.activate())
|
|
27
|
+
* .catch(error => {
|
|
28
|
+
* logger.error('Operation failed:', error);
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.ViewBuilder = void 0;
|
|
34
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
35
|
+
const create_1 = require("./create");
|
|
36
|
+
const lock_1 = require("./lock");
|
|
37
|
+
const update_1 = require("./update");
|
|
38
|
+
const check_1 = require("./check");
|
|
39
|
+
const unlock_1 = require("./unlock");
|
|
40
|
+
const activation_1 = require("./activation");
|
|
41
|
+
const validation_1 = require("./validation");
|
|
42
|
+
const read_1 = require("./read");
|
|
43
|
+
class ViewBuilder {
|
|
44
|
+
connection;
|
|
45
|
+
logger;
|
|
46
|
+
config;
|
|
47
|
+
lockHandle;
|
|
48
|
+
sessionId;
|
|
49
|
+
state;
|
|
50
|
+
constructor(connection, logger, config) {
|
|
51
|
+
this.connection = connection;
|
|
52
|
+
this.logger = logger;
|
|
53
|
+
this.config = { ...config };
|
|
54
|
+
this.sessionId = config.sessionId || (0, sessionUtils_1.generateSessionId)();
|
|
55
|
+
this.state = {
|
|
56
|
+
errors: []
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// Builder methods - return this for chaining
|
|
60
|
+
setPackage(packageName) {
|
|
61
|
+
this.config.packageName = packageName;
|
|
62
|
+
this.logger.debug?.('Package set:', packageName);
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
setRequest(transportRequest) {
|
|
66
|
+
this.config.transportRequest = transportRequest;
|
|
67
|
+
this.logger.debug?.('Transport request set:', transportRequest);
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
setName(viewName) {
|
|
71
|
+
this.config.viewName = viewName;
|
|
72
|
+
this.logger.debug?.('View name set:', viewName);
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
setDescription(description) {
|
|
76
|
+
this.config.description = description;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
setDdlSource(ddlSource) {
|
|
80
|
+
this.config.ddlSource = ddlSource;
|
|
81
|
+
this.logger.debug?.('DDL source set, length:', ddlSource.length);
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
// Operation methods - return Promise<this> for Promise chaining
|
|
85
|
+
async validate() {
|
|
86
|
+
try {
|
|
87
|
+
this.logger.info?.('Validating view name:', this.config.viewName);
|
|
88
|
+
const result = await (0, validation_1.validateViewName)(this.connection, this.config.viewName, this.config.description);
|
|
89
|
+
this.state.validationResult = result;
|
|
90
|
+
if (!result.valid) {
|
|
91
|
+
throw new Error(`View name validation failed: ${result.message}`);
|
|
92
|
+
}
|
|
93
|
+
this.logger.info?.('View name validation successful');
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
this.state.errors.push({
|
|
98
|
+
method: 'validate',
|
|
99
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
100
|
+
timestamp: new Date()
|
|
101
|
+
});
|
|
102
|
+
this.logger.error?.('Validation failed:', error);
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async create() {
|
|
107
|
+
try {
|
|
108
|
+
if (!this.config.packageName) {
|
|
109
|
+
throw new Error('Package name is required');
|
|
110
|
+
}
|
|
111
|
+
if (!this.config.ddlSource) {
|
|
112
|
+
throw new Error('DDL source is required');
|
|
113
|
+
}
|
|
114
|
+
this.logger.info?.('Creating view:', this.config.viewName);
|
|
115
|
+
const params = {
|
|
116
|
+
view_name: this.config.viewName,
|
|
117
|
+
ddl_source: this.config.ddlSource,
|
|
118
|
+
package_name: this.config.packageName,
|
|
119
|
+
transport_request: this.config.transportRequest,
|
|
120
|
+
description: this.config.description
|
|
121
|
+
};
|
|
122
|
+
const result = await (0, create_1.createView)(this.connection, params);
|
|
123
|
+
this.state.createResult = result;
|
|
124
|
+
this.logger.info?.('View created successfully:', result.status);
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
this.state.errors.push({
|
|
129
|
+
method: 'create',
|
|
130
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
131
|
+
timestamp: new Date()
|
|
132
|
+
});
|
|
133
|
+
this.logger.error?.('Create failed:', error);
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async lock() {
|
|
138
|
+
try {
|
|
139
|
+
this.logger.info?.('Locking view:', this.config.viewName);
|
|
140
|
+
const lockHandle = await (0, lock_1.lockDDLS)(this.connection, this.config.viewName, this.sessionId);
|
|
141
|
+
this.lockHandle = lockHandle;
|
|
142
|
+
this.state.lockHandle = lockHandle;
|
|
143
|
+
// Register lock in persistent storage if callback provided
|
|
144
|
+
if (this.config.onLock) {
|
|
145
|
+
this.config.onLock(lockHandle, this.sessionId);
|
|
146
|
+
}
|
|
147
|
+
this.logger.info?.('View locked, handle:', lockHandle.substring(0, 10) + '...');
|
|
148
|
+
return this;
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
this.state.errors.push({
|
|
152
|
+
method: 'lock',
|
|
153
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
154
|
+
timestamp: new Date()
|
|
155
|
+
});
|
|
156
|
+
this.logger.error?.('Lock failed:', error);
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async update() {
|
|
161
|
+
try {
|
|
162
|
+
if (!this.lockHandle) {
|
|
163
|
+
throw new Error('View must be locked before update. Call lock() first.');
|
|
164
|
+
}
|
|
165
|
+
if (!this.config.ddlSource) {
|
|
166
|
+
throw new Error('DDL source is required');
|
|
167
|
+
}
|
|
168
|
+
this.logger.info?.('Updating view:', this.config.viewName);
|
|
169
|
+
const params = {
|
|
170
|
+
view_name: this.config.viewName,
|
|
171
|
+
ddl_source: this.config.ddlSource,
|
|
172
|
+
activate: false,
|
|
173
|
+
lock_handle: this.lockHandle,
|
|
174
|
+
session_id: this.sessionId,
|
|
175
|
+
transport_request: this.config.transportRequest
|
|
176
|
+
};
|
|
177
|
+
const result = await (0, update_1.updateViewSource)(this.connection, params);
|
|
178
|
+
this.state.updateResult = result;
|
|
179
|
+
this.logger.info?.('View updated successfully:', result.status);
|
|
180
|
+
return this;
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
this.state.errors.push({
|
|
184
|
+
method: 'update',
|
|
185
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
186
|
+
timestamp: new Date()
|
|
187
|
+
});
|
|
188
|
+
this.logger.error?.('Update failed:', error);
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
async check(version = 'inactive') {
|
|
193
|
+
try {
|
|
194
|
+
this.logger.info?.('Checking view:', this.config.viewName, 'version:', version);
|
|
195
|
+
const result = await (0, check_1.checkView)(this.connection, this.config.viewName, version, this.sessionId);
|
|
196
|
+
this.state.checkResult = result;
|
|
197
|
+
this.logger.info?.('View check successful:', result.status);
|
|
198
|
+
return this;
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
this.state.errors.push({
|
|
202
|
+
method: 'check',
|
|
203
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
204
|
+
timestamp: new Date()
|
|
205
|
+
});
|
|
206
|
+
this.logger.error?.('Check failed:', error);
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async unlock() {
|
|
211
|
+
try {
|
|
212
|
+
if (!this.lockHandle) {
|
|
213
|
+
throw new Error('View is not locked. Call lock() first.');
|
|
214
|
+
}
|
|
215
|
+
this.logger.info?.('Unlocking view:', this.config.viewName);
|
|
216
|
+
const result = await (0, unlock_1.unlockDDLS)(this.connection, this.config.viewName, this.lockHandle, this.sessionId);
|
|
217
|
+
this.state.unlockResult = result;
|
|
218
|
+
this.lockHandle = undefined;
|
|
219
|
+
this.state.lockHandle = undefined;
|
|
220
|
+
this.logger.info?.('View unlocked successfully');
|
|
221
|
+
return this;
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
this.state.errors.push({
|
|
225
|
+
method: 'unlock',
|
|
226
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
227
|
+
timestamp: new Date()
|
|
228
|
+
});
|
|
229
|
+
this.logger.error?.('Unlock failed:', error);
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async activate() {
|
|
234
|
+
try {
|
|
235
|
+
this.logger.info?.('Activating view:', this.config.viewName);
|
|
236
|
+
const result = await (0, activation_1.activateDDLS)(this.connection, this.config.viewName, this.sessionId);
|
|
237
|
+
this.state.activateResult = result;
|
|
238
|
+
this.logger.info?.('View activated successfully:', result.status);
|
|
239
|
+
return this;
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
this.state.errors.push({
|
|
243
|
+
method: 'activate',
|
|
244
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
245
|
+
timestamp: new Date()
|
|
246
|
+
});
|
|
247
|
+
this.logger.error?.('Activate failed:', error);
|
|
248
|
+
throw error;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async read(version = 'active') {
|
|
252
|
+
try {
|
|
253
|
+
this.logger.info?.('Reading view:', this.config.viewName);
|
|
254
|
+
const result = await (0, read_1.getViewSource)(this.connection, this.config.viewName);
|
|
255
|
+
this.state.readResult = result;
|
|
256
|
+
this.logger.info?.('View read successfully:', result.status);
|
|
257
|
+
return this;
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
this.state.errors.push({
|
|
261
|
+
method: 'read',
|
|
262
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
263
|
+
timestamp: new Date()
|
|
264
|
+
});
|
|
265
|
+
this.logger.error?.('Read failed:', error);
|
|
266
|
+
throw error;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
async forceUnlock() {
|
|
270
|
+
if (!this.lockHandle) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
try {
|
|
274
|
+
await (0, unlock_1.unlockDDLS)(this.connection, this.config.viewName, this.lockHandle, this.sessionId);
|
|
275
|
+
this.logger.info?.('Force unlock successful for', this.config.viewName);
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
this.logger.warn?.('Force unlock failed:', error);
|
|
279
|
+
}
|
|
280
|
+
finally {
|
|
281
|
+
this.lockHandle = undefined;
|
|
282
|
+
this.state.lockHandle = undefined;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// Getters for accessing results
|
|
286
|
+
getState() {
|
|
287
|
+
return { ...this.state };
|
|
288
|
+
}
|
|
289
|
+
getViewName() {
|
|
290
|
+
return this.config.viewName;
|
|
291
|
+
}
|
|
292
|
+
getLockHandle() {
|
|
293
|
+
return this.lockHandle;
|
|
294
|
+
}
|
|
295
|
+
getSessionId() {
|
|
296
|
+
return this.sessionId;
|
|
297
|
+
}
|
|
298
|
+
getValidationResult() {
|
|
299
|
+
return this.state.validationResult;
|
|
300
|
+
}
|
|
301
|
+
getCreateResult() {
|
|
302
|
+
return this.state.createResult;
|
|
303
|
+
}
|
|
304
|
+
getUpdateResult() {
|
|
305
|
+
return this.state.updateResult;
|
|
306
|
+
}
|
|
307
|
+
getCheckResult() {
|
|
308
|
+
return this.state.checkResult;
|
|
309
|
+
}
|
|
310
|
+
getUnlockResult() {
|
|
311
|
+
return this.state.unlockResult;
|
|
312
|
+
}
|
|
313
|
+
getActivateResult() {
|
|
314
|
+
return this.state.activateResult;
|
|
315
|
+
}
|
|
316
|
+
getReadResult() {
|
|
317
|
+
return this.state.readResult;
|
|
318
|
+
}
|
|
319
|
+
getErrors() {
|
|
320
|
+
return [...this.state.errors];
|
|
321
|
+
}
|
|
322
|
+
getResults() {
|
|
323
|
+
return {
|
|
324
|
+
validate: this.state.validationResult,
|
|
325
|
+
create: this.state.createResult,
|
|
326
|
+
update: this.state.updateResult,
|
|
327
|
+
check: this.state.checkResult,
|
|
328
|
+
unlock: this.state.unlockResult,
|
|
329
|
+
activate: this.state.activateResult,
|
|
330
|
+
lockHandle: this.lockHandle,
|
|
331
|
+
errors: [...this.state.errors]
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
exports.ViewBuilder = ViewBuilder;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View activation operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Activate DDLS
|
|
8
|
+
*/
|
|
9
|
+
export declare function activateDDLS(connection: AbapConnection, viewName: string, sessionId: string): Promise<AxiosResponse>;
|
|
10
|
+
//# sourceMappingURL=activation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../../../src/core/view/activation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAGxB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* View activation operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.activateDDLS = activateDDLS;
|
|
7
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
8
|
+
const activationUtils_1 = require("../../utils/activationUtils");
|
|
9
|
+
/**
|
|
10
|
+
* Activate DDLS
|
|
11
|
+
*/
|
|
12
|
+
async function activateDDLS(connection, viewName, sessionId) {
|
|
13
|
+
const objectUri = `/sap/bc/adt/ddic/ddl/sources/${(0, internalUtils_1.encodeSapObjectName)(viewName).toLowerCase()}`;
|
|
14
|
+
return await (0, activationUtils_1.activateObjectInSession)(connection, objectUri, viewName, sessionId, true);
|
|
15
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View check operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
export declare function checkView(connection: AbapConnection, viewName: string, version?: string, sessionId?: string): Promise<AxiosResponse>;
|
|
7
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/core/view/check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAkBtC,wBAAsB,SAAS,CAC7B,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAiB,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CA2CxB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* View check operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.checkView = checkView;
|
|
7
|
+
const checkRun_1 = require("../shared/checkRun");
|
|
8
|
+
/**
|
|
9
|
+
* Check view (DDLS) syntax
|
|
10
|
+
*/
|
|
11
|
+
function shouldRetryMissingVersion(checkResult) {
|
|
12
|
+
if (checkResult.status !== 'notProcessed') {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const message = (checkResult.message || '').toLowerCase();
|
|
16
|
+
return message.includes('does not exist') || message.includes('missing data definition');
|
|
17
|
+
}
|
|
18
|
+
function delay(ms) {
|
|
19
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
20
|
+
}
|
|
21
|
+
async function checkView(connection, viewName, version = 'active', sessionId) {
|
|
22
|
+
let attempt = 0;
|
|
23
|
+
// Allow one retry when system did not materialize inactive version yet
|
|
24
|
+
while (attempt < 2) {
|
|
25
|
+
const response = await (0, checkRun_1.runCheckRun)(connection, 'view', viewName, version, 'abapCheckRun', sessionId);
|
|
26
|
+
const checkResult = (0, checkRun_1.parseCheckRunResponse)(response);
|
|
27
|
+
if (!checkResult.success && checkResult.has_errors) {
|
|
28
|
+
const errorMessage = checkResult.message || '';
|
|
29
|
+
const hasCheckedMessage = errorMessage.toLowerCase().includes('has been checked') ||
|
|
30
|
+
checkResult.errors.some((err) => (err.text || '').toLowerCase().includes('has been checked'));
|
|
31
|
+
if (hasCheckedMessage) {
|
|
32
|
+
if (process.env.DEBUG_TESTS === 'true') {
|
|
33
|
+
console.warn(`Check warning for view ${viewName}: ${errorMessage} (view was already checked)`);
|
|
34
|
+
}
|
|
35
|
+
return response;
|
|
36
|
+
}
|
|
37
|
+
if (attempt === 0 && shouldRetryMissingVersion(checkResult)) {
|
|
38
|
+
if (process.env.DEBUG_TESTS === 'true') {
|
|
39
|
+
console.warn(`Check retry for view ${viewName}: ${errorMessage} (waiting for inactive version)`);
|
|
40
|
+
}
|
|
41
|
+
attempt += 1;
|
|
42
|
+
await delay(2000);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (shouldRetryMissingVersion(checkResult)) {
|
|
46
|
+
if (process.env.DEBUG_TESTS === 'true') {
|
|
47
|
+
console.warn(`Check warning for view ${viewName}: ${errorMessage} (version not available, continue)`);
|
|
48
|
+
}
|
|
49
|
+
return response;
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`View check failed: ${checkResult.message}`);
|
|
52
|
+
}
|
|
53
|
+
return response;
|
|
54
|
+
}
|
|
55
|
+
// Should not reach here because loop returns on success
|
|
56
|
+
throw new Error(`View check failed: Version ${version} not available for ${viewName}`);
|
|
57
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View create operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
import { CreateViewParams } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Create ABAP view (CDS or Classic)
|
|
9
|
+
* Full workflow: create object -> lock -> upload source -> unlock -> activate
|
|
10
|
+
*/
|
|
11
|
+
export declare function createView(connection: AbapConnection, params: CreateViewParams): Promise<AxiosResponse>;
|
|
12
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/core/view/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAwD3C;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,aAAa,CAAC,CA6CxB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* View create operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createView = createView;
|
|
7
|
+
const internalUtils_1 = require("../../utils/internalUtils");
|
|
8
|
+
const sessionUtils_1 = require("../../utils/sessionUtils");
|
|
9
|
+
const systemInfo_1 = require("../shared/systemInfo");
|
|
10
|
+
const lock_1 = require("./lock");
|
|
11
|
+
const unlock_1 = require("./unlock");
|
|
12
|
+
const activation_1 = require("./activation");
|
|
13
|
+
/**
|
|
14
|
+
* Create DDLS object with metadata
|
|
15
|
+
*/
|
|
16
|
+
async function createDDLSObject(connection, args, sessionId) {
|
|
17
|
+
const description = args.description || args.view_name;
|
|
18
|
+
const url = `/sap/bc/adt/ddic/ddl/sources${args.transport_request ? `?corrNr=${args.transport_request}` : ''}`;
|
|
19
|
+
// Get masterSystem and responsible (only for cloud systems)
|
|
20
|
+
// On cloud, getSystemInformation returns systemID and userName
|
|
21
|
+
// On on-premise, it returns null, so we don't add these attributes
|
|
22
|
+
const systemInfo = await (0, systemInfo_1.getSystemInformation)(connection);
|
|
23
|
+
const masterSystem = systemInfo?.systemID;
|
|
24
|
+
const username = systemInfo?.userName || process.env.SAP_USER || process.env.SAP_USERNAME || 'MPCUSER';
|
|
25
|
+
const masterSystemAttr = masterSystem ? ` adtcore:masterSystem="${masterSystem}"` : '';
|
|
26
|
+
const responsibleAttr = username ? ` adtcore:responsible="${username}"` : '';
|
|
27
|
+
const metadataXml = `<?xml version="1.0" encoding="UTF-8"?><ddl:ddlSource xmlns:ddl="http://www.sap.com/adt/ddic/ddlsources" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:description="${description}" adtcore:language="EN" adtcore:name="${args.view_name}" adtcore:type="DDLS/DF" adtcore:masterLanguage="EN"${masterSystemAttr}${responsibleAttr}>
|
|
28
|
+
<adtcore:packageRef adtcore:name="${args.package_name}"/>
|
|
29
|
+
</ddl:ddlSource>`;
|
|
30
|
+
const headers = {
|
|
31
|
+
'Accept': 'application/vnd.sap.adt.ddlSource.v2+xml, application/vnd.sap.adt.ddlSource+xml',
|
|
32
|
+
'Content-Type': 'application/vnd.sap.adt.ddlSource+xml'
|
|
33
|
+
};
|
|
34
|
+
return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'POST', sessionId, metadataXml, headers);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Upload DDL source code
|
|
38
|
+
*/
|
|
39
|
+
async function uploadDDLSource(connection, viewName, ddlSource, lockHandle, sessionId, transportRequest) {
|
|
40
|
+
const queryParams = `lockHandle=${lockHandle}${transportRequest ? `&corrNr=${transportRequest}` : ''}`;
|
|
41
|
+
const url = `/sap/bc/adt/ddic/ddl/sources/${(0, internalUtils_1.encodeSapObjectName)(viewName).toLowerCase()}/source/main?${queryParams}`;
|
|
42
|
+
const headers = {
|
|
43
|
+
'Content-Type': 'text/plain; charset=utf-8'
|
|
44
|
+
};
|
|
45
|
+
return (0, sessionUtils_1.makeAdtRequestWithSession)(connection, url, 'PUT', sessionId, ddlSource, headers);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create ABAP view (CDS or Classic)
|
|
49
|
+
* Full workflow: create object -> lock -> upload source -> unlock -> activate
|
|
50
|
+
*/
|
|
51
|
+
async function createView(connection, params) {
|
|
52
|
+
if (!params.view_name || !params.ddl_source || !params.package_name) {
|
|
53
|
+
throw new Error('Missing required parameters: view_name, ddl_source, and package_name');
|
|
54
|
+
}
|
|
55
|
+
const viewName = params.view_name.toUpperCase();
|
|
56
|
+
const sessionId = (0, sessionUtils_1.generateSessionId)();
|
|
57
|
+
let lockHandle = null;
|
|
58
|
+
try {
|
|
59
|
+
const createResponse = await createDDLSObject(connection, params, sessionId);
|
|
60
|
+
if (createResponse.status < 200 || createResponse.status >= 300) {
|
|
61
|
+
throw new Error(`Failed to create DDLS: ${createResponse.status} ${createResponse.statusText}`);
|
|
62
|
+
}
|
|
63
|
+
lockHandle = await (0, lock_1.lockDDLS)(connection, viewName, sessionId);
|
|
64
|
+
const uploadResponse = await uploadDDLSource(connection, viewName, params.ddl_source, lockHandle, sessionId, params.transport_request);
|
|
65
|
+
if (uploadResponse.status < 200 || uploadResponse.status >= 300) {
|
|
66
|
+
throw new Error(`Failed to upload DDL: ${uploadResponse.status} ${uploadResponse.statusText}`);
|
|
67
|
+
}
|
|
68
|
+
await (0, unlock_1.unlockDDLS)(connection, viewName, lockHandle, sessionId);
|
|
69
|
+
lockHandle = null;
|
|
70
|
+
await (0, activation_1.activateDDLS)(connection, viewName, sessionId);
|
|
71
|
+
// Return the real response from SAP (from initial POST)
|
|
72
|
+
return createResponse;
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (lockHandle) {
|
|
76
|
+
try {
|
|
77
|
+
await (0, unlock_1.unlockDDLS)(connection, viewName, lockHandle, sessionId);
|
|
78
|
+
}
|
|
79
|
+
catch (unlockError) {
|
|
80
|
+
// Ignore unlock errors
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const errorMessage = error.response?.data
|
|
84
|
+
? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
|
|
85
|
+
: error.message;
|
|
86
|
+
throw new Error(`Failed to create view ${viewName}: ${errorMessage}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View delete operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
export interface DeleteViewParams {
|
|
7
|
+
view_name: string;
|
|
8
|
+
transport_request?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Delete ABAP view (DDLS)
|
|
12
|
+
*/
|
|
13
|
+
export declare function deleteView(connection: AbapConnection, params: DeleteViewParams): Promise<AxiosResponse>;
|
|
14
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/core/view/delete.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,aAAa,CAAC,CAYxB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* View delete operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deleteView = deleteView;
|
|
7
|
+
const delete_1 = require("../delete");
|
|
8
|
+
/**
|
|
9
|
+
* Delete ABAP view (DDLS)
|
|
10
|
+
*/
|
|
11
|
+
async function deleteView(connection, params) {
|
|
12
|
+
if (!params.view_name) {
|
|
13
|
+
throw new Error('view_name is required');
|
|
14
|
+
}
|
|
15
|
+
const deleteParams = {
|
|
16
|
+
object_name: params.view_name,
|
|
17
|
+
object_type: 'DDLS/DF',
|
|
18
|
+
transport_request: params.transport_request
|
|
19
|
+
};
|
|
20
|
+
return await (0, delete_1.deleteObject)(connection, deleteParams);
|
|
21
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View operations - exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './create';
|
|
6
|
+
export * from './read';
|
|
7
|
+
export * from './update';
|
|
8
|
+
export * from './delete';
|
|
9
|
+
export * from './lock';
|
|
10
|
+
export * from './unlock';
|
|
11
|
+
export * from './activation';
|
|
12
|
+
export * from './check';
|
|
13
|
+
export * from './validation';
|
|
14
|
+
export { ViewBuilder, type ViewBuilderConfig, type ViewBuilderLogger, type ViewBuilderState } from './ViewBuilder';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/view/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* View operations - exports
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.ViewBuilder = void 0;
|
|
21
|
+
__exportStar(require("./types"), exports);
|
|
22
|
+
__exportStar(require("./create"), exports);
|
|
23
|
+
__exportStar(require("./read"), exports);
|
|
24
|
+
__exportStar(require("./update"), exports);
|
|
25
|
+
__exportStar(require("./delete"), exports);
|
|
26
|
+
__exportStar(require("./lock"), exports);
|
|
27
|
+
__exportStar(require("./unlock"), exports);
|
|
28
|
+
__exportStar(require("./activation"), exports);
|
|
29
|
+
__exportStar(require("./check"), exports);
|
|
30
|
+
__exportStar(require("./validation"), exports);
|
|
31
|
+
var ViewBuilder_1 = require("./ViewBuilder");
|
|
32
|
+
Object.defineProperty(exports, "ViewBuilder", { enumerable: true, get: function () { return ViewBuilder_1.ViewBuilder; } });
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View lock operations
|
|
3
|
+
*/
|
|
4
|
+
import { AbapConnection } from '@mcp-abap-adt/connection';
|
|
5
|
+
import { AxiosResponse } from 'axios';
|
|
6
|
+
/**
|
|
7
|
+
* Lock DDLS for modification
|
|
8
|
+
*/
|
|
9
|
+
export declare function lockDDLS(connection: AbapConnection, viewName: string, sessionId: string): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Lock DDLS for editing (for update)
|
|
12
|
+
*/
|
|
13
|
+
export declare function lockDDLSForUpdate(connection: AbapConnection, viewName: string, sessionId: string): Promise<{
|
|
14
|
+
response: AxiosResponse;
|
|
15
|
+
lockHandle: string;
|
|
16
|
+
corrNr?: string;
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/core/view/lock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB3E"}
|