{"_id":"@abapify/adt-plugin","_rev":"5-20d36cb92fa61abdff41e8a3622b94b6","name":"@abapify/adt-plugin","dist-tags":{"latest":"0.4.1"},"versions":{"0.0.0":{"name":"@abapify/adt-plugin","version":"0.0.0","_id":"@abapify/adt-plugin@0.0.0","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"dist":{"shasum":"cdb51f4b8ecb59eaf5eb922a77d1b5481661bc47","tarball":"https://registry.npmjs.org/@abapify/adt-plugin/-/adt-plugin-0.0.0.tgz","fileCount":2,"integrity":"sha512-JcHKX94ubSawSZ9vKk10vmRjadlQB8/piIySj0ohAVJ+nmojY5sxrbgyugFdMiZ+fbLY3ZgKiM9boZJnMuNzFA==","signatures":[{"sig":"MEYCIQD/KGCYiAhaDeWYnst4x8GHFhTVQdw3I/V0JBkrvlhSqwIhAMbUljFEkdMI66loO+AkZ327fi5F8v1LPK0XBHHdUPOJ","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-plugin_0.0.0_1776719481677_0.7438656670933834","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@abapify/adt-plugin","version":"0.3.5","license":"MIT","_id":"@abapify/adt-plugin@0.3.5","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-plugin#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"nx":{"name":"adt-plugin"},"dist":{"shasum":"1447d32ffbbe2206ff180dfde1d8b7752cce8d0e","tarball":"https://registry.npmjs.org/@abapify/adt-plugin/-/adt-plugin-0.3.5.tgz","fileCount":2,"integrity":"sha512-yFTy5yRK3k8jfgiwoQLpkQzxe90XBxuDX9Pj/cghz8J0DL5NVE6DH7FW7xrjeT3kpxk/R6F3sy+aUukpV19ehQ==","signatures":[{"sig":"MEQCIGl2CnRudrfWI+T7ujpvAyfBRT/hsUBniug1LGnR0NYMAiBTt5yXzcRphSG18qWFn50egPT35vzppUbqtPU+a3be8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-plugin@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3872},"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:2e9d63d2-60c9-4c3a-83a7-303c9a030c98"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-plugin"},"_npmVersion":"11.12.1","description":"ADT Plugin interface and factory for abapify","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@abapify/adk":"0.3.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-plugin_0.3.5_1776723669945_0.4128063467264824","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@abapify/adt-plugin","version":"0.3.6","license":"MIT","_id":"@abapify/adt-plugin@0.3.6","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-plugin#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"nx":{"name":"adt-plugin"},"dist":{"shasum":"4e60fe1445be71e2f12dc32f3d5209b99b7a71dc","tarball":"https://registry.npmjs.org/@abapify/adt-plugin/-/adt-plugin-0.3.6.tgz","fileCount":2,"integrity":"sha512-l4/4gr5WhlnHIgZBFiDev++R/NV2HNGw2H0XrUE1arL+NtmtGu7OWOSMhi+E5AWAsaAJPjwtWCInwP3JJwBwxA==","signatures":[{"sig":"MEYCIQDF7rpP9fd+4RfpGXbwdV54tahLF4R9Z8lqqURkzAxFBwIhAJOKLlGq6H9hn4C0Efz4sN9RZPuS8bXMTYqyLHE615CB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-plugin@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3872},"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:2e9d63d2-60c9-4c3a-83a7-303c9a030c98"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-plugin"},"_npmVersion":"11.11.0","description":"ADT Plugin interface and factory for abapify","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@abapify/adk":"0.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-plugin_0.3.6_1776744815436_0.5496446610336414","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@abapify/adt-plugin","version":"0.4.0","license":"MIT","_id":"@abapify/adt-plugin@0.4.0","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-plugin#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"nx":{"name":"adt-plugin"},"dist":{"shasum":"03d64efa1dd3df0ab63f07f2540ca129b3b2309c","tarball":"https://registry.npmjs.org/@abapify/adt-plugin/-/adt-plugin-0.4.0.tgz","fileCount":2,"integrity":"sha512-0sGpPZgnc4K79Pm7ZpQAxgOdsYMqaZsFCZnVYDzOA+vaEAnf0tO/FUr0LwsvqeFZhrA+3hh0brPk9YFMzPYSrQ==","signatures":[{"sig":"MEUCIBq8Meliax+0y3Nf2AVz1ktqTUxqxKVuLISYrgOPg7WsAiEA+CT7GydUV0eY2jR92/iU4jemCNTIgsgyAbbHvUFXsb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-plugin@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3872},"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:2e9d63d2-60c9-4c3a-83a7-303c9a030c98"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-plugin"},"_npmVersion":"11.13.0","description":"ADT Plugin interface and factory for abapify","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@abapify/adk":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-plugin_0.4.0_1780072656408_0.8765888446275558","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@abapify/adt-plugin","version":"0.4.1","description":"ADT Plugin interface and factory for abapify","license":"MIT","publishConfig":{"access":"public"},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"nx":{"name":"adt-plugin"},"dependencies":{"@abapify/adk":"0.4.1"},"repository":{"type":"git","url":"git+https://github.com/abapify/adt-cli.git","directory":"packages/adt-plugin"},"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-plugin#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"gitHead":"9d3b996a5c760a8db67e28c4df3c30098bd29e4a","_id":"@abapify/adt-plugin@0.4.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-TnNCKZl6V1jsfRxyzFsBjYLFJLgiq6QJf+zOOKVJWUnRXhRfapHuxoSaSdgMt15IpP/x5RIye2W62pCjKKSxtg==","shasum":"edfb9fa7ad9da595a40b3fe41f253633da7f56ea","tarball":"https://registry.npmjs.org/@abapify/adt-plugin/-/adt-plugin-0.4.1.tgz","fileCount":6,"unpackedSize":34525,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-plugin@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAQ82pD1esGczaZR9TYUWjd9WEoJBbOB+wEnFNCNyVP2AiA15X21SEilBykZy486sYmkjUsSrJ8VZcOIjSpv/wlXgA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2e9d63d2-60c9-4c3a-83a7-303c9a030c98"}},"directories":{},"maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adt-plugin_0.4.1_1780074940966_0.3827584659341583"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T21:11:21.487Z","modified":"2026-05-29T17:15:41.391Z","0.0.0":"2026-04-20T21:11:21.791Z","0.3.5":"2026-04-20T22:21:10.066Z","0.3.6":"2026-04-21T04:13:35.573Z","0.4.0":"2026-05-29T16:37:36.589Z","0.4.1":"2026-05-29T17:15:41.145Z"},"bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"license":"MIT","homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-plugin#readme","repository":{"type":"git","url":"git+https://github.com/abapify/adt-cli.git","directory":"packages/adt-plugin"},"description":"ADT Plugin interface and factory for abapify","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"readme":"# @abapify/adt-plugin\n\n[![version](https://img.shields.io/github/package-json/v/abapify/adt-cli?filename=packages/adt-plugin/package.json)](https://github.com/abapify/adt-cli/pkgs/npm/%40abapify%2Fadt-plugin)\n\nCore plugin interface for ADT format serialization.\n\n## Overview\n\nThis package defines the **plugin contract** for serializing ADK objects to various formats (abapGit, etc.). Plugins implement this interface to provide format-specific serialization.\n\n**Key principle:** Plugins only handle serialization format. They receive ADK objects and produce files - no ADT client logic.\n\n## Installation\n\n```bash\nbun add @abapify/adt-plugin\n```\n\n## Usage\n\n### Creating a Plugin\n\n```typescript\nimport { createPlugin, type AdtPlugin } from '@abapify/adt-plugin';\n\nexport const myPlugin = createPlugin({\n  name: 'myFormat',\n  version: '1.0.0',\n  description: 'My custom format plugin',\n\n  // Registry service - what object types are supported\n  registry: {\n    isSupported: (type) => ['CLAS', 'INTF'].includes(type),\n    getSupportedTypes: () => ['CLAS', 'INTF'],\n  },\n\n  // Format service - import/export operations\n  format: {\n    // Import: ADK object → file system\n    import: async (object, targetPath, context) => {\n      // Serialize object to files\n      return {\n        success: true,\n        filesCreated: ['myclass.clas.xml'],\n      };\n    },\n\n    // Export: file system → ADK object (optional)\n    export: async (sourcePath, type, name) => {\n      // Deserialize files to ADK object\n      return {\n        success: true,\n        object: myAdkObject,\n      };\n    },\n  },\n\n  // Lifecycle hooks (optional)\n  hooks: {\n    afterImport: async (targetPath) => {\n      // Generate metadata files, etc.\n    },\n  },\n});\n```\n\n### Using a Plugin\n\n```typescript\nimport { abapGitPlugin } from '@abapify/adt-plugin-abapgit';\n\n// Check if type is supported\nif (abapGitPlugin.registry.isSupported('CLAS')) {\n  // Import object to file system\n  const result = await abapGitPlugin.format.import(myClassObject, './output', {\n    packagePath: ['ZROOT', 'ZSUB'],\n  });\n\n  if (result.success) {\n    console.log('Files created:', result.filesCreated);\n  }\n}\n\n// Get all supported types\nconst types = abapGitPlugin.registry.getSupportedTypes();\n// → ['CLAS', 'INTF', 'DOMA', 'DEVC', 'DTEL']\n```\n\n## API\n\n### `createPlugin(definition)`\n\nFactory function to create a validated plugin instance.\n\n### `AdtPlugin` Interface\n\n```typescript\ninterface AdtPlugin {\n  readonly name: string;\n  readonly version: string;\n  readonly description: string;\n\n  readonly registry: {\n    isSupported(type: AbapObjectType): boolean;\n    getSupportedTypes(): AbapObjectType[];\n  };\n\n  readonly format: {\n    import(object, targetPath, context): Promise<ImportResult>;\n    export?(sourcePath, type, name): Promise<ExportResult>;\n  };\n\n  readonly hooks?: {\n    afterImport?(targetPath: string): Promise<void>;\n    beforeExport?(sourcePath: string): Promise<void>;\n  };\n}\n```\n\n## Terminology\n\n- **Import** (to Git): ADK object → serialized files (SAP → file system)\n- **Export** (from Git): serialized files → ADK object (file system → SAP)\n","readmeFilename":"README.md"}