{"_id":"@abapify/adt-client","_rev":"5-baf0645555810549918af39cf463f463","name":"@abapify/adt-client","dist-tags":{"latest":"0.4.1"},"versions":{"0.0.0":{"name":"@abapify/adt-client","version":"0.0.0","_id":"@abapify/adt-client@0.0.0","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"dist":{"shasum":"dffb71ce673919e9494d4a30bc0ec4b0c4b6e9a0","tarball":"https://registry.npmjs.org/@abapify/adt-client/-/adt-client-0.0.0.tgz","fileCount":2,"integrity":"sha512-oVwEhzN8XkmSmpnFI+92uxf5xWCDGEdebnpPtsJds6qSZtqJErXGfrq00lvQaF8hBQ5ZUeo+M4F0q/XpuYBy6g==","signatures":[{"sig":"MEUCIG24TNAOeA6ecSmvJ/hQLCu9ysPuG+pDa3ztT4CJm5TQAiEA+g+EdzC7WepYMs4x4W0qIN8IG9epSiyyLHyb3hkUIYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228},"_npmUser":{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"},"_npmVersion":"11.12.1","description":"Placeholder — real package is published via CI/CD (trusted publishing).","directories":{},"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-client_0.0.0_1776719465300_0.9765711896807596","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@abapify/adt-client","version":"0.3.5","license":"MIT","_id":"@abapify/adt-client@0.3.5","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-client#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"dist":{"shasum":"e6b7052f8e6daeff47b000e7dd4a49848b260312","tarball":"https://registry.npmjs.org/@abapify/adt-client/-/adt-client-0.3.5.tgz","fileCount":2,"integrity":"sha512-hr9GNsBJMstYTHP+tSAazUSu5NF+4F2i+1lhtOrw2brhwTqwIR2tog6DC+pRaz3vPLxQrYApkOn14Cnf231m1w==","signatures":[{"sig":"MEUCIQC7IWpW23YXmiEdYw0H37fCp9Czu2FVL/m5/jUK021YWQIgPcKZCfhsj+Qy4LakCWPLT1ttU/LHiN13wvLlsjfbWa0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-client@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8877},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"185666fe6ccb304e7b08529eb376ec2493131a7a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae8a50ea-3177-431a-b6f8-a8b823101e21"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-client"},"_npmVersion":"11.12.1","description":"Minimalistic speci-based ADT client for SAP ABAP Development Tools","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@abapify/logger":"0.3.5","@abapify/adt-schemas":"0.3.5","@abapify/adt-contracts":"0.3.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-client_0.3.5_1776723655415_0.5477279017652092","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@abapify/adt-client","version":"0.3.6","license":"MIT","_id":"@abapify/adt-client@0.3.6","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-client#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"dist":{"shasum":"51a738782bcc65cb2647c7297dfdf5f333e03994","tarball":"https://registry.npmjs.org/@abapify/adt-client/-/adt-client-0.3.6.tgz","fileCount":2,"integrity":"sha512-tPHF6dPX4SrdJgPOMnIUFyDO6cYWJbFWnDcRCEuKHOEtG6akr+ENPj/0aYm/JXGwtnoQwH6gRVTIF4b5e68n4A==","signatures":[{"sig":"MEUCIB5IGO2UnNaXL5RpCKcTnPCJmuxqs83gkenb06XIWSWgAiEAoHxjFoGp59DMEWmwoqY6mNq1ATDM/IC3spKmx4ip4tc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-client@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8877},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"489b2b4ad7c2ea972f323d4c356997ac5962ba9e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae8a50ea-3177-431a-b6f8-a8b823101e21"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-client"},"_npmVersion":"11.11.0","description":"Minimalistic speci-based ADT client for SAP ABAP Development Tools","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@abapify/logger":"0.3.6","@abapify/adt-schemas":"0.3.6","@abapify/adt-contracts":"0.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-client_0.3.6_1776744801420_0.8039238945207687","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@abapify/adt-client","version":"0.4.0","license":"MIT","_id":"@abapify/adt-client@0.4.0","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-client#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"dist":{"shasum":"656805dca707417a68502cf3539e7121506cc014","tarball":"https://registry.npmjs.org/@abapify/adt-client/-/adt-client-0.4.0.tgz","fileCount":2,"integrity":"sha512-7d9yo/FnVZ5uGcd/xOdylSi4GPruz1kJ3/qQXeb+znSS6eNQEFR7jT5wyo5Ogz8c4ekgEs6gpEuZuFjClHcMUw==","signatures":[{"sig":"MEUCICmNuN0FNj4GHsWGZ5A508gbX6K0HA/+vMSHrxML8OWNAiEAx92dtNx4bswVr5CUEYGqY6F8ZTrI7dFblqiiKENQNKw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-client@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8877},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"81dc9eea47fe419e41d246f0ec212fa78570a489","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae8a50ea-3177-431a-b6f8-a8b823101e21"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-client"},"_npmVersion":"11.13.0","description":"Minimalistic speci-based ADT client for SAP ABAP Development Tools","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@abapify/logger":"0.4.0","@abapify/adt-schemas":"0.4.0","@abapify/adt-contracts":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-client_0.4.0_1780072642605_0.6027511398663379","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@abapify/adt-client","version":"0.4.1","description":"Minimalistic speci-based ADT client for SAP ABAP Development Tools","license":"MIT","publishConfig":{"access":"public"},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"dependencies":{"@abapify/logger":"0.4.1","@abapify/adt-contracts":"0.4.1","@abapify/adt-schemas":"0.4.1"},"repository":{"type":"git","url":"git+https://github.com/abapify/adt-cli.git","directory":"packages/adt-client"},"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-client#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"gitHead":"9d3b996a5c760a8db67e28c4df3c30098bd29e4a","_id":"@abapify/adt-client@0.4.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-XkmUT2McSAkVt1BCs3Ot5pcQ0zW/ei6Auht2/QfmS3wUDNnl932rEjgUknRJK4hZtIYiD0tsUshEEUy718EaFw==","shasum":"f23f8381b0c41550bcabc96c4118b5e084540cb8","tarball":"https://registry.npmjs.org/@abapify/adt-client/-/adt-client-0.4.1.tgz","fileCount":6,"unpackedSize":131238,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-client@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE4ZOA/I1xoEpCNiS6OgEB+CCD7p4aiW6zdHQYK1au64AiEAhSM9c0Yvz04+VD9vxNv9Tt+LRS2MgStlkq2h6wnHFBg="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ae8a50ea-3177-431a-b6f8-a8b823101e21"}},"directories":{},"maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adt-client_0.4.1_1780074925627_0.773011111832469"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T21:11:05.154Z","modified":"2026-05-29T17:15:26.166Z","0.0.0":"2026-04-20T21:11:05.441Z","0.3.5":"2026-04-20T22:20:55.546Z","0.3.6":"2026-04-21T04:13:21.566Z","0.4.0":"2026-05-29T16:37:22.733Z","0.4.1":"2026-05-29T17:15:25.846Z"},"bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"license":"MIT","homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-client#readme","repository":{"type":"git","url":"git+https://github.com/abapify/adt-cli.git","directory":"packages/adt-client"},"description":"Minimalistic speci-based ADT client for SAP ABAP Development Tools","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"readme":"# @abapify/adt-client\n\n[![version](https://img.shields.io/github/package-json/v/abapify/adt-cli?filename=packages/adt-client/package.json)](https://github.com/abapify/adt-cli/pkgs/npm/%40abapify%2Fadt-client)\n\n**Contract-driven SAP ADT REST client** — uses `speci` + `ts-xsd` for full type safety.\n\n## Why v2?\n\nThis package replaces the legacy `adt-client` with a **contract-first design**:\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                      adt-client                               │\n│              (HTTP Client + Request Execution)                   │\n└─────────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                      adt-contracts                               │\n│         (REST API Contracts using speci + ts-xsd)                │\n└─────────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                     adt-schemas                              │\n│        (TypeScript schemas from SAP XSD definitions)             │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n**Benefits over v1:**\n\n- ✅ **Type-safe from XSD** - Types generated from official SAP schemas\n- ✅ **Contract-first** - API contracts define the interface\n- ✅ **Zero manual types** - No hand-written type definitions\n- ✅ **Easy to extend** - Add endpoints by defining contracts\n- ✅ **Testable** - Contracts are pure data, easy to mock\n\n## Features\n\n- ✅ **Contract-driven** - Uses `speci` + `ts-xsd` contracts\n- ✅ **Full type inference** - Types flow from XSD to response\n- ✅ **Zero dependencies** - Only uses native fetch API\n- ✅ **Clean API** - Arrow-function contracts\n- ✅ **Promise-based** - Modern async/await API\n\n## Installation\n\n```bash\nbun add @abapify/adt-client\n```\n\n## Quick Start\n\n```typescript\nimport { createAdtClient } from '@abapify/adt-client';\n\n// Create client\nconst client = createAdtClient({\n  baseUrl: 'https://sap-system.com:8000',\n  username: 'YOUR_USER',\n  password: 'YOUR_PASS',\n  client: '100',\n  language: 'EN',\n});\n\n// Get complete class with all includes\nconst classObj = await client.getClass('ZCL_MY_CLASS');\nconsole.log(classObj.metadata.description);\nconsole.log(classObj.includes.main);\nconsole.log(classObj.includes.definitions);\nconsole.log(classObj.includes.implementations);\n\n// Update main source\nawait client.updateMainSource('ZCL_MY_CLASS', newSource);\n```\n\n## API Reference\n\n### Client Creation\n\n```typescript\ncreateAdtClient(config: AdtConnectionConfig): AdtClient\n```\n\n**Config:**\n\n- `baseUrl` - SAP system URL (e.g., `https://sap-system.com:8000`)\n- `username` - SAP username\n- `password` - SAP password\n- `client` - SAP client (optional, e.g., `'100'`)\n- `language` - SAP language (optional, e.g., `'EN'`)\n\n### Class Operations\n\n#### Get Complete Class\n\n```typescript\ngetClass(className: string): Promise<ClassObject>\n```\n\nReturns class metadata and all includes (main, definitions, implementations, macros, testclasses).\n\n#### Get Metadata Only\n\n```typescript\ngetMetadata(className: string): Promise<ClassMetadata>\n```\n\nReturns class metadata (name, description, package, etc.).\n\n#### Get All Includes\n\n```typescript\ngetIncludes(className: string): Promise<ClassIncludes>\n```\n\nReturns all class source includes.\n\n#### Get Specific Include\n\n```typescript\ngetInclude(className: string, includeType: 'main' | 'definitions' | 'implementations' | 'macros' | 'testclasses'): Promise<string>\n```\n\nReturns specific include source code.\n\n#### Update Main Source\n\n```typescript\nupdateMainSource(className: string, source: string): Promise<OperationResult>\n```\n\nUpdates the main class source code.\n\n#### Create Class\n\n```typescript\ncreateClass(className: string, metadata: Partial<ClassMetadata>): Promise<OperationResult>\n```\n\nCreates a new class with specified metadata.\n\n#### Delete Class\n\n```typescript\ndeleteClass(className: string): Promise<OperationResult>\n```\n\nDeletes a class.\n\n#### Lock/Unlock\n\n```typescript\nlockClass(className: string): Promise<string>\nunlockClass(className: string, lockHandle: string): Promise<OperationResult>\n```\n\nLock and unlock class for editing.\n\n## Types\n\n### ClassMetadata\n\n```typescript\ninterface ClassMetadata {\n  name: string;\n  description?: string;\n  packageName?: string;\n  responsible?: string;\n  createdBy?: string;\n  createdAt?: string;\n  changedBy?: string;\n  changedAt?: string;\n  final?: boolean;\n  abstract?: boolean;\n  visibility?: 'public' | 'protected' | 'private';\n}\n```\n\n### ClassIncludes\n\n```typescript\ninterface ClassIncludes {\n  main?: string;\n  definitions?: string;\n  implementations?: string;\n  macros?: string;\n  testclasses?: string;\n}\n```\n\n### ClassObject\n\n```typescript\ninterface ClassObject {\n  metadata: ClassMetadata;\n  includes: ClassIncludes;\n}\n```\n\n## Examples\n\n### Read and Modify Class\n\n```typescript\n// Get class\nconst classObj = await client.getClass('ZCL_MY_CLASS');\n\n// Modify source\nconst newSource = classObj.includes.main?.replace('OLD_TEXT', 'NEW_TEXT');\n\n// Update\nif (newSource) {\n  await client.updateMainSource('ZCL_MY_CLASS', newSource);\n}\n```\n\n### Create New Class\n\n```typescript\nawait client.createClass('ZCL_NEW_CLASS', {\n  description: 'My new class',\n  packageName: 'ZPACKAGE',\n  visibility: 'public',\n  final: false,\n  abstract: false,\n});\n```\n\n### Lock, Edit, Unlock Pattern\n\n```typescript\n// Lock class\nconst lockHandle = await client.lockClass('ZCL_MY_CLASS');\n\ntry {\n  // Edit class\n  await client.updateMainSource('ZCL_MY_CLASS', newSource);\n} finally {\n  // Always unlock\n  await client.unlockClass('ZCL_MY_CLASS', lockHandle);\n}\n```\n\n## Architecture\n\n### Two-Layer Design\n\n```typescript\nconst client = createAdtClient({...});\n\n// Layer 1: Low-level contracts (direct ADT REST access)\nclient.adt.core.http.sessions.getSession()\nclient.adt.cts.transportrequests.getTransport(id)\n\n// Layer 2: High-level services (business logic)\nclient.services.transports.importAndActivate(transportId)  // Future\n\n// Utility: Raw HTTP for debugging\nclient.fetch('/arbitrary/endpoint', { method: 'GET' })\n```\n\n**Contracts** - Thin, declarative HTTP definitions with 1:1 mapping to SAP ADT endpoints\n**Services** - Business logic orchestration combining multiple contract calls\n\n## Comparison with adt-client v1\n\n| Feature           | v1 (Legacy)   | v2 (New)           |\n| ----------------- | ------------- | ------------------ |\n| **Type Safety**   | Manual types  | Generated from XSD |\n| **Architecture**  | Service-based | Contract-first     |\n| **Dependencies**  | Many          | Zero               |\n| **Extensibility** | Complex       | Add contracts      |\n| **Testing**       | Difficult     | Easy (pure data)   |\n\n## Related Packages\n\n- **[adt-contracts](../adt-contracts)** - REST API contracts (speci + ts-xsd)\n- **[adt-schemas](../adt-schemas)** - TypeScript schemas from SAP XSD\n- **[speci](../speci)** - Contract specification system\n- **[ts-xsd](../ts-xsd)** - XSD → TypeScript generation\n\n## License\n\nMIT\n","readmeFilename":"README.md"}