{"_id":"@abapify/acds","_rev":"6-4d83e860c2c585a4a0ef936d9dfe2193","name":"@abapify/acds","dist-tags":{"latest":"0.4.1"},"versions":{"0.0.0":{"name":"@abapify/acds","version":"0.0.0","_id":"@abapify/acds@0.0.0","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"dist":{"shasum":"bca898af30263b97a2be455cfbeccdb4bac0b259","tarball":"https://registry.npmjs.org/@abapify/acds/-/acds-0.0.0.tgz","fileCount":2,"integrity":"sha512-TNim4Ds3L231Y7uEVBMxdMLTneoqm+QSMU/9LH38fru5i/rId9bOSEilnUu+gAQbQw/F2byGnTg6E0i1DpW2iQ==","signatures":[{"sig":"MEUCIDbyabUYr/L/HMw4s+BDLb53YJ37i21Phie0m9GQh3rXAiEA54HHfzgDpFPzHQ7pwyTolH7M+XqAwkg+wSYwmsbpGYY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216},"_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/acds_0.0.0_1776719500210_0.5142127464865305","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@abapify/acds","version":"0.3.4","keywords":["abap","cds","parser","ddl","sap","adt"],"author":{"name":"abapify"},"license":"MIT","_id":"@abapify/acds@0.3.4","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/acds#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"dist":{"shasum":"6377e7a89ce39fe9ca86d4d61a88ea720e0318d9","tarball":"https://registry.npmjs.org/@abapify/acds/-/acds-0.3.4.tgz","fileCount":2,"integrity":"sha512-s6sR3ndqQonDwMykyAUgDQXZUc86OpR2xUXzNgAPcHitFtegohPdzWfY45Ict0r4EBcJwFWIGPrNLO17qLePDg==","signatures":[{"sig":"MEQCIDok6yTjiSBP+XYXuMcykaDMvm+ks9RQsggkGjkIr+c+AiAT5oZjVluHtO0sIWdPTYKtuWO6p7iF9kaM2N3Va4Zgjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2facds@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7043},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"6a630228129c616054aad8dfafe17c42f389986e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c2b8a11b-7e18-4c6b-8172-08900d7a2031"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/acds"},"_npmVersion":"11.12.1","description":"ABAP CDS source parser — tokenizer, parser, and AST for all DDL-based ABAP source types","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chevrotain":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/acds_0.3.4_1776722403426_0.24117154888059855","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@abapify/acds","version":"0.3.5","keywords":["abap","cds","parser","ddl","sap","adt"],"author":{"name":"abapify"},"license":"MIT","_id":"@abapify/acds@0.3.5","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/acds#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"dist":{"shasum":"eb721e23e8c342af41bb0ace37e16bfcb4ff3430","tarball":"https://registry.npmjs.org/@abapify/acds/-/acds-0.3.5.tgz","fileCount":2,"integrity":"sha512-pnCLB5d5nlFAMkDAUjL5hI2YtMentnXg9SRme8WeEaMEJOA0bHg9/6DUiwjx8j/fm07tvlrMgCSGOyXHJ+wU5w==","signatures":[{"sig":"MEQCIEZLPRf/UbzkDwiOewI6G5q53fO+tI2C1XBkBId+JdzPAiAP6rbWWsN0mFERzH99mQLmWzI3C5AHuAHuo1Z68GFLgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2facds@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7043},"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:c2b8a11b-7e18-4c6b-8172-08900d7a2031"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/acds"},"_npmVersion":"11.12.1","description":"ABAP CDS source parser — tokenizer, parser, and AST for all DDL-based ABAP source types","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chevrotain":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/acds_0.3.5_1776723645260_0.4293504749406185","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@abapify/acds","version":"0.3.6","keywords":["abap","cds","parser","ddl","sap","adt"],"author":{"name":"abapify"},"license":"MIT","_id":"@abapify/acds@0.3.6","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/acds#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"dist":{"shasum":"025a3f8a8733d89c077f9bd452d9d9e1568ea2aa","tarball":"https://registry.npmjs.org/@abapify/acds/-/acds-0.3.6.tgz","fileCount":2,"integrity":"sha512-qxpDnoLxVk4Xo1HpyxhKn9BLY1R3P21aDXIADec6MFaLiDjKuOKnVnoIjlbkCaByp5HAhpsKsXMW2ftThp610g==","signatures":[{"sig":"MEQCIB7vTuziXkO1z71Uyf5AWU2wJ0aIMskGLED0sCU5WJubAiA5K7zPKIONGLTEPdajK5EI/W9ZLQfIgJw/bm+R0QB1Kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2facds@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7043},"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:c2b8a11b-7e18-4c6b-8172-08900d7a2031"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/acds"},"_npmVersion":"11.11.0","description":"ABAP CDS source parser — tokenizer, parser, and AST for all DDL-based ABAP source types","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chevrotain":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/acds_0.3.6_1776744792400_0.1135361090482001","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@abapify/acds","version":"0.4.0","keywords":["abap","cds","parser","ddl","sap","adt"],"author":{"name":"abapify"},"license":"MIT","_id":"@abapify/acds@0.4.0","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/acds#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"dist":{"shasum":"b86c5c082a2f307fba5ab97a80e9bbda3161a72a","tarball":"https://registry.npmjs.org/@abapify/acds/-/acds-0.4.0.tgz","fileCount":2,"integrity":"sha512-TmPu498KvbCre+BDYZuSG2xX6+bvH2eyYGeBd44c0LFo+hr4GIwcj0cLegInEUrplEPO/u0kTR7prTgDuC50IQ==","signatures":[{"sig":"MEYCIQDz6tN7EWDUx3zso3H0qPJjzOwLvhGEGIsJX8BVGTyX+gIhAN2zLypXr/71EKZApQxvlO+RHgYmj7A0YX51Axesp6TC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2facds@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7043},"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:c2b8a11b-7e18-4c6b-8172-08900d7a2031"}},"repository":{"url":"git+https://github.com/abapify/adt-cli.git","type":"git","directory":"packages/acds"},"_npmVersion":"11.13.0","description":"ABAP CDS source parser — tokenizer, parser, and AST for all DDL-based ABAP source types","directories":{},"_nodeVersion":"24.16.0","dependencies":{"chevrotain":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/acds_0.4.0_1780072634958_0.265335584491738","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@abapify/acds","publishConfig":{"access":"public"},"version":"0.4.1","description":"ABAP CDS source parser — tokenizer, parser, and AST for all DDL-based ABAP source types","type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"dependencies":{"chevrotain":"^11.0.0"},"keywords":["abap","cds","parser","ddl","sap","adt"],"author":{"name":"abapify"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abapify/adt-cli.git","directory":"packages/acds"},"homepage":"https://github.com/abapify/adt-cli/tree/main/packages/acds#readme","bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"gitHead":"9d3b996a5c760a8db67e28c4df3c30098bd29e4a","_id":"@abapify/acds@0.4.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-hammBpBPd75ZEP/o8Mqh59WiJREFkgJhDqyXsf5fMpxKZD7wcRPkNltnoj5hRe7XRsuG/r22Y1cT/hDawUjb1g==","shasum":"8e3a4ab18b5408b4d7ba5119c2a0ae37544dc268","tarball":"https://registry.npmjs.org/@abapify/acds/-/acds-0.4.1.tgz","fileCount":6,"unpackedSize":171237,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abapify%2facds@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD7gCht5ia8k9k5dHQSKUDmie+vuRqR7vZ1PrMtNixd0QIgQysmUXNBskKAnVxzOCRYmcTa6sBZEFG/3oFZK9K+F2I="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c2b8a11b-7e18-4c6b-8172-08900d7a2031"}},"directories":{},"maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/acds_0.4.1_1780074918234_0.26444759668970086"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T21:11:40.054Z","modified":"2026-05-29T17:15:18.707Z","0.0.0":"2026-04-20T21:11:40.371Z","0.3.4":"2026-04-20T22:00:03.572Z","0.3.5":"2026-04-20T22:20:45.413Z","0.3.6":"2026-04-21T04:13:12.530Z","0.4.0":"2026-05-29T16:37:15.113Z","0.4.1":"2026-05-29T17:15:18.417Z"},"bugs":{"url":"https://github.com/abapify/adt-cli/issues"},"author":{"name":"abapify"},"license":"MIT","homepage":"https://github.com/abapify/adt-cli/tree/main/packages/acds#readme","keywords":["abap","cds","parser","ddl","sap","adt"],"repository":{"type":"git","url":"git+https://github.com/abapify/adt-cli.git","directory":"packages/acds"},"description":"ABAP CDS source parser — tokenizer, parser, and AST for all DDL-based ABAP source types","maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"readme":"# @abapify/acds\n\n**ABAP CDS source parser** — tokenizer, parser, and typed AST for DDL-based ABAP source types.\n\n## Overview\n\nParses `.acds` (ABAP CDS DDL) source code into a fully typed Abstract Syntax Tree. Built on [Chevrotain](https://chevrotain.io/) for fast, error-recovering parsing.\n\n### Supported Definitions\n\n| CDS Construct | AST Node               | Example                              |\n| ------------- | ---------------------- | ------------------------------------ |\n| Table         | `TableDefinition`      | `define table ztable { ... }`        |\n| Structure     | `StructureDefinition`  | `define structure zstruct { ... }`   |\n| Simple type   | `SimpleTypeDefinition` | `define type ztype : abap.char(10);` |\n| Service       | `ServiceDefinition`    | `define service zsvc { ... }`        |\n| Metadata ext. | `MetadataExtension`    | `annotate entity ZView with { ... }` |\n\n### Parser Features\n\n- **Error recovery** — returns partial AST + structured errors on invalid input\n- **Full annotation support** — strings, enums, booleans, numbers, arrays, objects\n- **Built-in types** — `abap.char(10)`, `abap.dec(11,2)`, `abap.dats`, etc.\n- **Named types** — data element and qualified name references\n- **Include directives** — `include <structure>` with optional suffix\n- **Comments** — line (`//`) and block (`/* */`) comments are skipped\n\n## Installation\n\n```bash\nbun add @abapify/acds\n```\n\n## Quick Start\n\n```typescript\nimport { parse } from '@abapify/acds';\n\nconst result = parse(`\n  @AbapCatalog.tableCategory : #TRANSPARENT\n  @AbapCatalog.deliveryClass : #A\n  define table ztable {\n    key mandt : abap.clnt not null;\n    key field1 : abap.char(10) not null;\n    field2 : some_data_element;\n  }\n`);\n\nif (result.errors.length === 0) {\n  const table = result.ast.definitions[0]; // TableDefinition\n  console.log(table.kind); // 'table'\n  console.log(table.name); // 'ztable'\n  console.log(table.members); // [FieldDefinition, FieldDefinition, ...]\n  console.log(table.annotations); // [Annotation, Annotation]\n}\n```\n\n## API\n\n### `parse(source: string): ParseResult`\n\nParses a CDS source string through the full pipeline: tokenize → parse → visit.\n\n```typescript\ninterface ParseResult {\n  /** The parsed AST (may be partial if there are errors) */\n  ast: CdsSourceFile;\n  /** Lexing and parsing errors */\n  errors: CdsParseError[];\n}\n```\n\n### AST Types\n\n#### Root\n\n```typescript\ninterface CdsSourceFile {\n  definitions: CdsDefinition[];\n}\n\ntype CdsDefinition =\n  | TableDefinition\n  | StructureDefinition\n  | SimpleTypeDefinition\n  | ServiceDefinition\n  | MetadataExtension\n  | RoleDefinition // Phase 2 placeholder\n  | ViewEntityDefinition; // Phase 3 placeholder\n```\n\n#### Definitions\n\n```typescript\ninterface TableDefinition {\n  kind: 'table';\n  name: string;\n  annotations: Annotation[];\n  members: TableMember[]; // FieldDefinition | IncludeDirective\n}\n\ninterface StructureDefinition {\n  kind: 'structure';\n  name: string;\n  annotations: Annotation[];\n  members: TableMember[];\n}\n\ninterface SimpleTypeDefinition {\n  kind: 'simpleType';\n  name: string;\n  annotations: Annotation[];\n  type: TypeRef;\n}\n\ninterface ServiceDefinition {\n  kind: 'service';\n  name: string;\n  annotations: Annotation[];\n  exposes: ExposeStatement[];\n}\n\ninterface MetadataExtension {\n  kind: 'metadataExtension';\n  entity: string;\n  annotations: Annotation[];\n  elements: AnnotatedElement[];\n}\n```\n\n#### Fields & Types\n\n```typescript\ninterface FieldDefinition {\n  annotations: Annotation[];\n  name: string;\n  type: TypeRef;\n  isKey: boolean;\n  notNull: boolean;\n}\n\ntype TypeRef = BuiltinTypeRef | NamedTypeRef;\n\n// abap.char(10), abap.dec(11,2)\ninterface BuiltinTypeRef {\n  kind: 'builtin';\n  name: string;\n  length?: number;\n  decimals?: number;\n}\n\n// Data element or qualified name\ninterface NamedTypeRef {\n  kind: 'named';\n  name: string;\n}\n```\n\n#### Annotations\n\n```typescript\ninterface Annotation {\n  key: string;\n  value: AnnotationValue;\n}\n\ntype AnnotationValue =\n  | { kind: 'string'; value: string }\n  | { kind: 'enum'; value: string } // #TRANSPARENT → 'TRANSPARENT'\n  | { kind: 'boolean'; value: boolean }\n  | { kind: 'number'; value: number }\n  | { kind: 'array'; items: AnnotationValue[] }\n  | { kind: 'object'; properties: AnnotationProperty[] };\n```\n\n#### Errors\n\n```typescript\ninterface CdsParseError {\n  message: string;\n  line: number;\n  column: number;\n  offset: number;\n  length: number;\n}\n```\n\n## Architecture\n\n```\nSource string\n  → CdsLexer (Chevrotain Lexer)     tokens.ts\n  → CdsParser (Chevrotain CstParser) parser.ts\n  → CdsVisitor (CST → AST)           visitor.ts\n  → CdsSourceFile                     ast.ts\n```\n\n| Module       | Responsibility                                  |\n| ------------ | ----------------------------------------------- |\n| `tokens.ts`  | Token definitions (keywords, symbols, literals) |\n| `parser.ts`  | Grammar rules (CST production)                  |\n| `visitor.ts` | CST → typed AST transformation                  |\n| `ast.ts`     | AST node type definitions                       |\n| `errors.ts`  | Error normalization (lex + parse)               |\n| `index.ts`   | `parse()` entry point + re-exports              |\n\n## Roadmap\n\n- ✅ **DDL**: tables, structures, simple types, view entities, projection views, abstract/custom entities, services (SRVD), metadata extensions (DDLX), parameters, associations, compositions\n- ✅ **DCL**: role definitions with grant-select + where clauses\n- ✅ **Annotations**: full value grammar (strings, enums, booleans, numbers, arrays, objects, dotted keys)\n- ✅ **Tooling**: AST walker helpers, semantic validators (`SemanticDiagnostic`), grammar coverage metadata\n- 🔜 **Expression grammar** (structured `on`/`where` trees — currently opaque `{ source, tokens }`)\n- 🔜 **Joins** (`inner join`, `left outer join …`), CASE/CAST, aggregates, GROUP BY, UNION\n- 🔜 **`define aspect` (DRAS), `define hierarchy`, cache definitions (DTDC/DTSC), scalar functions (DSFD)**\n- 🔜 **BDEF / behavior definitions** (owned by epic E10)\n\n## Dependencies\n\n- [`chevrotain`](https://chevrotain.io/) — Parser toolkit (lexer + CstParser + visitor)\n","readmeFilename":"README.md"}