{"_id":"@abapify/adt-codegen","_rev":"5-f8285d8d26793db14eb028f4b783f7a4","name":"@abapify/adt-codegen","dist-tags":{"latest":"0.4.1"},"versions":{"0.0.0":{"name":"@abapify/adt-codegen","version":"0.0.0","_id":"@abapify/adt-codegen@0.0.0","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"dist":{"shasum":"9b715067f986f25fae1a1feb38389a2fecaaf477","tarball":"https://registry.npmjs.org/@abapify/adt-codegen/-/adt-codegen-0.0.0.tgz","fileCount":2,"integrity":"sha512-RXb+6vG2K2zXO20Hxy5J1r79D9HXjSuoPbccRJrBHfGbX4ws/N5dcVORaauekKY7dsfU5yXyaKCO2kY0wJo6yw==","signatures":[{"sig":"MEQCIDpAadbpK/4inOzcdIqQ58KY11TufLgOqRPsJ9MkH7d+AiBhMjIoMMSChFSgzU27VgsKZDI0wDFbHR47Lvr0oTnW5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230},"_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-codegen_0.0.0_1776719546442_0.6528487488130945","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@abapify/adt-codegen","version":"0.3.5","keywords":["sap","adt","abap","codegen","code-generation","typescript"],"license":"MIT","_id":"@abapify/adt-codegen@0.3.5","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-codegen#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"bin":{"adt-codegen":"dist/cli.mjs"},"dist":{"shasum":"1cb89005db54fa4d650404748faddbfb86af6189","tarball":"https://registry.npmjs.org/@abapify/adt-codegen/-/adt-codegen-0.3.5.tgz","fileCount":2,"integrity":"sha512-3Q7SV7bFki2BynrTQndtTyvasgk/JpzWi7zzdXMz9/+AD1yyia5l7b6moE1jOeTYqvtQGkO4JW8wefX+crfgdQ==","signatures":[{"sig":"MEQCIFxbpjk9WYj9oMsBv7bJli6K3moRhTbD6mcLD5AW7/F9AiBrRR3wLfvJelMxts+Npd8zc0RYS7zs+/SrdcKNIC6oqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-codegen@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5679},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./cli":"./dist/cli.mjs","./plugins":"./dist/plugins/index.mjs","./package.json":"./package.json","./commands/codegen":"./dist/commands/codegen.mjs"},"gitHead":"185666fe6ccb304e7b08529eb376ec2493131a7a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:da7024ea-5bee-436b-9ca3-6aa5797e09c5"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-codegen"},"_npmVersion":"11.12.1","description":"Code generation toolkit for SAP ADT APIs","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chalk":"^5.3.0","commander":"^11.1.0","fast-xml-parser":"^5.5.0","@abapify/adt-config":"0.3.5","@abapify/adt-plugin":"0.3.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-codegen_0.3.5_1776723679257_0.997080946076224","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@abapify/adt-codegen","version":"0.3.6","keywords":["sap","adt","abap","codegen","code-generation","typescript"],"license":"MIT","_id":"@abapify/adt-codegen@0.3.6","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-codegen#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"bin":{"adt-codegen":"dist/cli.mjs"},"dist":{"shasum":"1796e19c506545a2eca4ebd20fb3b73db8074bad","tarball":"https://registry.npmjs.org/@abapify/adt-codegen/-/adt-codegen-0.3.6.tgz","fileCount":2,"integrity":"sha512-7IZiY6XWZLO7ltW1IoT0uokMXPgLkaMrjB2FWaHvtRwP5a2a+i2hVDPR9vII5z2wwXYE5jctEbOaYYssWqGwfA==","signatures":[{"sig":"MEUCIHzfP4hy6gAmS1ZCJWbXBMyzullOad7+MB+f/1dpwJ/3AiEApOGI4Vo0LMbK13J6RCQtSLg8iXifWjQp2xIKXj3i354=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-codegen@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5679},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./cli":"./dist/cli.mjs","./plugins":"./dist/plugins/index.mjs","./package.json":"./package.json","./commands/codegen":"./dist/commands/codegen.mjs"},"gitHead":"489b2b4ad7c2ea972f323d4c356997ac5962ba9e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:da7024ea-5bee-436b-9ca3-6aa5797e09c5"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-codegen"},"_npmVersion":"11.11.0","description":"Code generation toolkit for SAP ADT APIs","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chalk":"^5.3.0","commander":"^11.1.0","fast-xml-parser":"^5.5.0","@abapify/adt-config":"0.3.6","@abapify/adt-plugin":"0.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-codegen_0.3.6_1776744824878_0.7369998430091897","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@abapify/adt-codegen","version":"0.4.0","keywords":["sap","adt","abap","codegen","code-generation","typescript"],"license":"MIT","_id":"@abapify/adt-codegen@0.4.0","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-codegen#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"bin":{"adt-codegen":"dist/cli.mjs"},"dist":{"shasum":"d7457235b9fe6ffd02b5c3722103d4e6bc21a657","tarball":"https://registry.npmjs.org/@abapify/adt-codegen/-/adt-codegen-0.4.0.tgz","fileCount":2,"integrity":"sha512-U+pzpHUC3Qrfn4BL08YG07mXwZ2JcTqEy81mQQixtD1vX8dikxQyPF4I3OrN9v0qat3tAVSfUapkUat3eRCu2g==","signatures":[{"sig":"MEUCIQDZz4z728OKvElvgBOzgvjHjyWYly72O1mjzWTT2DEChwIgb0UJyEX4LI28b65QvbO5oRK7RXGcU8IAkUqTjZ9VPPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-codegen@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5679},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./cli":"./dist/cli.mjs","./plugins":"./dist/plugins/index.mjs","./package.json":"./package.json","./commands/codegen":"./dist/commands/codegen.mjs"},"gitHead":"81dc9eea47fe419e41d246f0ec212fa78570a489","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:da7024ea-5bee-436b-9ca3-6aa5797e09c5"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/adt-codegen"},"_npmVersion":"11.13.0","description":"Code generation toolkit for SAP ADT APIs","directories":{},"_nodeVersion":"24.16.0","dependencies":{"chalk":"^5.3.0","commander":"^11.1.0","fast-xml-parser":"^5.5.0","@abapify/adt-config":"0.4.0","@abapify/adt-plugin":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adt-codegen_0.4.0_1780072666013_0.9566352455692422","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@abapify/adt-codegen","version":"0.4.1","description":"Code generation toolkit for SAP ADT APIs","license":"MIT","publishConfig":{"access":"public"},"type":"module","types":"./dist/index.d.mts","bin":{"adt-codegen":"dist/cli.mjs"},"exports":{".":"./dist/index.mjs","./cli":"./dist/cli.mjs","./commands/codegen":"./dist/commands/codegen.mjs","./plugins":"./dist/plugins/index.mjs","./package.json":"./package.json"},"keywords":["sap","adt","abap","codegen","code-generation","typescript"],"dependencies":{"@abapify/adt-config":"0.4.1","@abapify/adt-plugin":"0.4.1","fast-xml-parser":"^5.5.0","commander":"^11.1.0","chalk":"^5.3.0"},"repository":{"type":"git","url":"git+https://github.com/abapify/adt-cli.git","directory":"packages/adt-codegen"},"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-codegen#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"gitHead":"9d3b996a5c760a8db67e28c4df3c30098bd29e4a","_id":"@abapify/adt-codegen@0.4.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-d80l6WMO+ZgrbN9HJ8zndn37uE3vK5QHDbyNgyMgFCho4h6V03nwCmXg1eRyI2inCsYcNEWHH/0peVRvsRccEA==","shasum":"79c5f3614f85533752286299f2b7e23fb3372bfc","tarball":"https://registry.npmjs.org/@abapify/adt-codegen/-/adt-codegen-0.4.1.tgz","fileCount":22,"unpackedSize":187187,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2fadt-codegen@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCZwtPjspwZnhTAJ/XRE9qhzg+ZLriDfcVwqUuHI17vXgIhAIJ/30DiTB2JjsBn8thnDjXi+oaiJnjkHa03IUzucJ6L"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:da7024ea-5bee-436b-9ca3-6aa5797e09c5"}},"directories":{},"maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adt-codegen_0.4.1_1780074951503_0.3240683544778249"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T21:12:26.363Z","modified":"2026-05-29T17:15:52.048Z","0.0.0":"2026-04-20T21:12:26.590Z","0.3.5":"2026-04-20T22:21:19.404Z","0.3.6":"2026-04-21T04:13:45.008Z","0.4.0":"2026-05-29T16:37:46.147Z","0.4.1":"2026-05-29T17:15:51.661Z"},"bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"license":"MIT","homepage":"https://github.com/abapify/adt-cli/tree/main/packages/adt-codegen#readme","keywords":["sap","adt","abap","codegen","code-generation","typescript"],"repository":{"type":"git","url":"git+https://github.com/abapify/adt-cli.git","directory":"packages/adt-codegen"},"description":"Code generation toolkit for SAP ADT APIs","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"readme":"# @abapify/adt-codegen\n\n[![version](https://img.shields.io/github/package-json/v/abapify/adt-cli?filename=packages/adt-codegen/package.json)](https://github.com/abapify/adt-cli/pkgs/npm/%40abapify%2Fadt-codegen)\n\nHook-based code generation toolkit for SAP ADT APIs.\n\n## Overview\n\nThe `adt-codegen` framework uses a **hook-based architecture** inspired by unplugin.\n\n## Key Concepts\n\n### 1. **Plugins Declare Hooks**\n\n```typescript\nexport const myPlugin = definePlugin({\n  name: 'my-plugin',\n\n  hooks: {\n    workspace(ws) {\n      // Called for each workspace\n    },\n\n    collection(coll) {\n      // Called for each collection\n    },\n\n    finalize(ctx) {\n      // Called once at the end\n    },\n  },\n});\n```\n\n### 2. **Framework Orchestrates**\n\nThe framework:\n\n- Checks which hooks are registered\n- Only iterates if hooks exist\n- Calls hooks in order: `discovery` → `workspace` → `collection` → `templateLink` → `finalize`\n\n### 3. **Simple Configuration**\n\n```typescript\nexport default {\n  discovery: {\n    path: './discovery.xml',\n  },\n  output: {\n    baseDir: './generated',\n  },\n  plugins: [\n    workspaceSplitterPlugin,\n    extractCollectionsPlugin,\n    generateTypesPlugin,\n  ],\n};\n```\n\n## Available Hooks\n\n| Hook           | Called            | Context                            |\n| -------------- | ----------------- | ---------------------------------- |\n| `discovery`    | Once at start     | Parsed discovery XML               |\n| `workspace`    | Per workspace     | Workspace data + helpers           |\n| `collection`   | Per collection    | Collection data + parent workspace |\n| `templateLink` | Per template link | Link data + parent collection      |\n| `finalize`     | Once at end       | All workspaces + global data       |\n\n## Context Objects\n\n### WorkspaceContext\n\n```typescript\n{\n  title: string;\n  folderName: string;\n  dir: string;\n  xml: any;\n  data: Record<string, any>;  // Shared between plugins\n  artifacts: Artifact[];       // Files to write\n  logger: Logger;\n  writeFile(name, content): Promise<void>;\n}\n```\n\n### CollectionContext\n\n```typescript\n{\n  href: string;\n  title: string;\n  accepts: string[];\n  category: { term: string; scheme: string };\n  templateLinks: TemplateLink[];\n  workspace: WorkspaceContext;  // Parent\n  data: Record<string, any>;\n  logger: Logger;\n}\n```\n\n## Built-in Plugins\n\n### 1. workspace-splitter\n\nWrites `workspace.xml` for each workspace.\n\n**Hook:** `workspace`\n\n### 2. extract-collections\n\nExtracts collection metadata and writes `collections.json`.\n\n**Hooks:** `workspace`, `collection`, `finalize`\n\n### 3. generate-types\n\nGenerates TypeScript types from collections.\n\n**Hook:** `collection`, `finalize`\n\n## Example Output\n\n```\ngenerated/workspaces/\n├── abap-cross-trace/\n│   ├── workspace.xml           # From workspace-splitter\n│   ├── collections.json        # From extract-collections\n│   ├── traces.types.ts         # From generate-types\n│   ├── activations.types.ts\n│   └── components.types.ts\n├── dictionary/\n│   ├── workspace.xml\n│   ├── collections.json\n│   └── *.types.ts\n└── ...\n```\n\n## Creating Custom Plugins\n\n```typescript\nimport { definePlugin } from '@abapify/adt-codegen';\n\nexport const myCustomPlugin = definePlugin({\n  name: 'my-custom-plugin',\n\n  hooks: {\n    collection(coll) {\n      // Access parent workspace\n      const ws = coll.workspace;\n\n      // Store data for other plugins\n      ws.data.myData = { ... };\n\n      // Add artifacts to write\n      ws.artifacts.push({\n        file: 'my-file.ts',\n        content: '...'\n      });\n\n      // Log progress\n      coll.logger.info('Processing collection');\n    }\n  }\n});\n```\n\n## Benefits\n\n✅ **Simple config** - Just list plugins  \n✅ **Automatic orchestration** - Framework handles iteration  \n✅ **Composable** - Plugins share data via context  \n✅ **Efficient** - Only iterates if hooks exist  \n✅ **Type-safe** - Full TypeScript support  \n✅ **Extensible** - Easy to add new plugins\n\n## Usage\n\n```bash\n# Run codegen\nnpx tsx src/cli.ts ./adt-codegen.config.ts\n\n# Or programmatically\nimport { CodegenFramework } from '@abapify/adt-codegen';\nimport config from './adt-codegen.config';\n\nconst framework = new CodegenFramework(config);\nawait framework.run();\n```\n\n## Next Steps\n\nPotential new plugins:\n\n- `generate-openapi` - Convert to OpenAPI specs\n- `generate-client` - Generate TypeScript client\n- `validate-endpoints` - Validate against live SAP system\n- `generate-docs` - Generate documentation\n","readmeFilename":"README.md"}