@abapify/acds 0.4.0 → 0.4.1

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.
@@ -0,0 +1,356 @@
1
+ //#region src/ast.d.ts
2
+ /**
3
+ * AST Node Types for ABAP CDS source
4
+ *
5
+ * Phase 1: TABL, Structure, DRTY, SRVD, DDLX
6
+ * Phase 2: DCLS, DDLA, DRAS, DSFD, DTDC, DTEB, DTSC
7
+ * Phase 3: DDLS (view entity — SQL-like)
8
+ */
9
+ /** Source location for error reporting */
10
+ interface SourceLocation {
11
+ startOffset: number;
12
+ endOffset: number;
13
+ startLine: number;
14
+ startColumn: number;
15
+ endLine?: number;
16
+ endColumn?: number;
17
+ }
18
+ /** Base AST node */
19
+ interface AstNode {
20
+ loc?: SourceLocation;
21
+ }
22
+ /** Annotation value variants */
23
+ type AnnotationValue = StringLiteral | EnumValue | BooleanLiteral | NumberLiteral | AnnotationArray | AnnotationObject;
24
+ interface StringLiteral extends AstNode {
25
+ kind: 'string';
26
+ value: string;
27
+ }
28
+ interface EnumValue extends AstNode {
29
+ kind: 'enum';
30
+ value: string;
31
+ }
32
+ interface BooleanLiteral extends AstNode {
33
+ kind: 'boolean';
34
+ value: boolean;
35
+ }
36
+ interface NumberLiteral extends AstNode {
37
+ kind: 'number';
38
+ value: number;
39
+ }
40
+ interface AnnotationArray extends AstNode {
41
+ kind: 'array';
42
+ items: AnnotationValue[];
43
+ }
44
+ interface AnnotationObject extends AstNode {
45
+ kind: 'object';
46
+ properties: AnnotationProperty[];
47
+ }
48
+ interface AnnotationProperty extends AstNode {
49
+ key: string;
50
+ value: AnnotationValue;
51
+ }
52
+ /** A single annotation: @DottedKey.path: value */
53
+ interface Annotation extends AstNode {
54
+ key: string;
55
+ value: AnnotationValue;
56
+ }
57
+ /** ABAP built-in type: abap.char(10), abap.dec(11,2) */
58
+ interface BuiltinTypeRef extends AstNode {
59
+ kind: 'builtin';
60
+ name: string;
61
+ length?: number;
62
+ decimals?: number;
63
+ }
64
+ /** Data element / named type reference */
65
+ interface NamedTypeRef extends AstNode {
66
+ kind: 'named';
67
+ name: string;
68
+ }
69
+ type TypeRef = BuiltinTypeRef | NamedTypeRef;
70
+ /** Field in a table/structure/aspect body */
71
+ interface FieldDefinition extends AstNode {
72
+ annotations: Annotation[];
73
+ name: string;
74
+ type: TypeRef;
75
+ isKey: boolean;
76
+ notNull: boolean;
77
+ }
78
+ /** Include directive: include <typename>; or include <typename> with suffix <suffix>; */
79
+ interface IncludeDirective extends AstNode {
80
+ kind: 'include';
81
+ name: string;
82
+ suffix?: string;
83
+ }
84
+ type TableMember = FieldDefinition | IncludeDirective;
85
+ /** define table <name> { ... } */
86
+ interface TableDefinition extends AstNode {
87
+ kind: 'table';
88
+ name: string;
89
+ annotations: Annotation[];
90
+ members: TableMember[];
91
+ }
92
+ /** define structure <name> { ... } */
93
+ interface StructureDefinition extends AstNode {
94
+ kind: 'structure';
95
+ name: string;
96
+ annotations: Annotation[];
97
+ members: TableMember[];
98
+ }
99
+ /** define type <name> : <type>; */
100
+ interface SimpleTypeDefinition extends AstNode {
101
+ kind: 'simpleType';
102
+ name: string;
103
+ annotations: Annotation[];
104
+ type: TypeRef;
105
+ }
106
+ /** define service <name> { expose ...; } */
107
+ interface ServiceDefinition extends AstNode {
108
+ kind: 'service';
109
+ name: string;
110
+ annotations: Annotation[];
111
+ exposes: ExposeStatement[];
112
+ }
113
+ /** expose <entity> as <alias>; */
114
+ interface ExposeStatement extends AstNode {
115
+ entity: string;
116
+ alias?: string;
117
+ }
118
+ /** annotate entity <name> with { ... } */
119
+ interface MetadataExtension extends AstNode {
120
+ kind: 'metadataExtension';
121
+ entity: string;
122
+ annotations: Annotation[];
123
+ elements: AnnotatedElement[];
124
+ }
125
+ /** Element inside a metadata extension: @Anno field; */
126
+ interface AnnotatedElement extends AstNode {
127
+ annotations: Annotation[];
128
+ name: string;
129
+ }
130
+ interface ParameterDefinition extends AstNode {
131
+ annotations: Annotation[];
132
+ name: string;
133
+ type: TypeRef;
134
+ /** default literal value, if any (e.g. `default 'X'`) */
135
+ defaultValue?: AnnotationValue;
136
+ }
137
+ /**
138
+ * A parsed but un-interpreted expression from `on` / `where` clauses.
139
+ * Consumers typically only need the raw source span; `tokens` gives the
140
+ * flat token stream for lightweight introspection.
141
+ */
142
+ interface Expression extends AstNode {
143
+ /** Flattened source image of the expression (concatenated token images, space-separated). */
144
+ source: string;
145
+ /** Token images in order. */
146
+ tokens: string[];
147
+ }
148
+ /** Cardinality, e.g. `[0..1]`, `[1..*]`, `[*]`, `[5]` */
149
+ interface Cardinality extends AstNode {
150
+ min?: number;
151
+ /** `undefined` means unbounded (`*`) when present. */
152
+ max?: number | '*';
153
+ }
154
+ type AssociationKind = 'association' | 'composition';
155
+ interface AssociationDeclaration extends AstNode {
156
+ kind: 'association';
157
+ /** `association` or `composition` */
158
+ associationKind: AssociationKind;
159
+ annotations: Annotation[];
160
+ cardinality?: Cardinality;
161
+ /** `of many` / `of one` modifier (optional). */
162
+ targetMultiplicity?: 'many' | 'one';
163
+ /** Fully qualified target entity (e.g. `I_SalesOrder`). */
164
+ target: string;
165
+ /** `to redirected to <target>` (projection association). */
166
+ redirected?: boolean;
167
+ alias?: string;
168
+ on?: Expression;
169
+ }
170
+ type DataSourceKind = 'select' | 'projection';
171
+ interface DataSource extends AstNode {
172
+ name: string;
173
+ alias?: string;
174
+ }
175
+ /** Single element in a view's projection list. */
176
+ interface ViewElement extends AstNode {
177
+ annotations: Annotation[];
178
+ isKey: boolean;
179
+ isVirtual: boolean;
180
+ isRedirected: boolean;
181
+ /** Either a typed field (abstract/custom entities) or projection expression. */
182
+ expression: string;
183
+ alias?: string;
184
+ /** Present only when element is a typed field (`name : type`). */
185
+ type?: TypeRef;
186
+ notNull?: boolean;
187
+ }
188
+ type ViewMember = ViewElement | AssociationDeclaration;
189
+ interface ViewEntityDefinition extends AstNode {
190
+ kind: 'viewEntity';
191
+ name: string;
192
+ annotations: Annotation[];
193
+ sourceKind: DataSourceKind;
194
+ source: DataSource;
195
+ parameters: ParameterDefinition[];
196
+ members: ViewMember[];
197
+ /** Top-level filter clause (`where ...`). */
198
+ where?: Expression;
199
+ }
200
+ interface AbstractEntityDefinition extends AstNode {
201
+ kind: 'abstractEntity';
202
+ name: string;
203
+ annotations: Annotation[];
204
+ parameters: ParameterDefinition[];
205
+ members: ViewMember[];
206
+ }
207
+ interface CustomEntityDefinition extends AstNode {
208
+ kind: 'customEntity';
209
+ name: string;
210
+ annotations: Annotation[];
211
+ parameters: ParameterDefinition[];
212
+ members: ViewMember[];
213
+ }
214
+ interface GrantStatement extends AstNode {
215
+ /** The granted privilege, always `select` for now. */
216
+ privilege: 'select';
217
+ /** Target entity (qualified). */
218
+ entity: string;
219
+ where?: Expression;
220
+ }
221
+ interface RoleDefinition extends AstNode {
222
+ kind: 'role';
223
+ name: string;
224
+ annotations: Annotation[];
225
+ grants: GrantStatement[];
226
+ }
227
+ type CdsDefinition = TableDefinition | StructureDefinition | SimpleTypeDefinition | ServiceDefinition | MetadataExtension | RoleDefinition | ViewEntityDefinition | AbstractEntityDefinition | CustomEntityDefinition;
228
+ /** Root AST node representing a parsed CDS source file */
229
+ interface CdsSourceFile extends AstNode {
230
+ definitions: CdsDefinition[];
231
+ }
232
+ //#endregion
233
+ //#region src/errors.d.ts
234
+ interface CdsParseError {
235
+ message: string;
236
+ line: number;
237
+ column: number;
238
+ offset: number;
239
+ length: number;
240
+ }
241
+ //#endregion
242
+ //#region src/lib/ast/walker.d.ts
243
+ type WithMembers = ViewEntityDefinition | AbstractEntityDefinition | CustomEntityDefinition;
244
+ type WithFields = TableDefinition | StructureDefinition;
245
+ type WithParameters = ViewEntityDefinition | AbstractEntityDefinition | CustomEntityDefinition;
246
+ /** True when the definition has a `members` array (view-like entities). */
247
+ declare function hasMembers(def: CdsDefinition): def is WithMembers;
248
+ /** True when the definition has a `members` array of typed fields (TABL/structure). */
249
+ declare function hasFields(def: CdsDefinition): def is WithFields;
250
+ declare function hasParameters(def: CdsDefinition): def is WithParameters;
251
+ /** Yield every definition in the file (currently one, future-proofed). */
252
+ declare function walkDefinitions(file: CdsSourceFile): Iterable<CdsDefinition>;
253
+ /**
254
+ * Yield every annotation attached anywhere in the AST (definitions,
255
+ * elements/fields, parameters, associations).
256
+ */
257
+ declare function walkAnnotations(file: CdsSourceFile): Iterable<Annotation>;
258
+ /** Yield every element (`ViewElement`) across all view-like definitions. */
259
+ declare function walkViewElements(file: CdsSourceFile): Iterable<{
260
+ owner: WithMembers;
261
+ element: ViewElement;
262
+ }>;
263
+ /** Yield every association declaration across view-like definitions. */
264
+ declare function walkAssociations(file: CdsSourceFile): Iterable<{
265
+ owner: WithMembers;
266
+ association: AssociationDeclaration;
267
+ }>;
268
+ /** Yield every field definition from tables and structures. */
269
+ declare function walkFields(file: CdsSourceFile): Iterable<{
270
+ owner: WithFields;
271
+ field: FieldDefinition;
272
+ }>;
273
+ /** Yield every parameter definition across view-like entities. */
274
+ declare function walkParameters(file: CdsSourceFile): Iterable<{
275
+ owner: WithParameters;
276
+ parameter: ParameterDefinition;
277
+ }>;
278
+ declare function isAssociation(m: ViewMember): m is AssociationDeclaration;
279
+ /** Look up an annotation by its dotted key. Returns the first match. */
280
+ declare function findAnnotation(annotations: readonly Annotation[], key: string): Annotation | undefined;
281
+ //#endregion
282
+ //#region src/lib/validate/cardinality.d.ts
283
+ declare function validateCardinality(file: CdsSourceFile): SemanticDiagnostic[];
284
+ //#endregion
285
+ //#region src/lib/validate/elements.d.ts
286
+ declare function validateViewElements(file: CdsSourceFile): SemanticDiagnostic[];
287
+ //#endregion
288
+ //#region src/lib/validate/index.d.ts
289
+ interface SemanticDiagnostic {
290
+ /** Stable machine-readable code. */
291
+ code: string;
292
+ severity: 'error' | 'warning';
293
+ message: string;
294
+ /** Optional location hint (e.g. element name, association alias). */
295
+ target?: string;
296
+ }
297
+ /** Run all validators. */
298
+ declare function validate(file: CdsSourceFile): SemanticDiagnostic[];
299
+ //#endregion
300
+ //#region src/lib/grammar/ddl.d.ts
301
+ declare const ddlCoverage: GrammarCoverage;
302
+ //#endregion
303
+ //#region src/lib/grammar/dcl.d.ts
304
+ declare const dclCoverage: GrammarCoverage;
305
+ //#endregion
306
+ //#region src/lib/grammar/annotations.d.ts
307
+ declare const annotationsCoverage: GrammarCoverage;
308
+ //#endregion
309
+ //#region src/lib/grammar/associations.d.ts
310
+ declare const associationsCoverage: GrammarCoverage;
311
+ //#endregion
312
+ //#region src/lib/grammar/parameters.d.ts
313
+ declare const parametersCoverage: GrammarCoverage;
314
+ //#endregion
315
+ //#region src/lib/grammar/projections.d.ts
316
+ declare const projectionsCoverage: GrammarCoverage;
317
+ //#endregion
318
+ //#region src/lib/grammar/actions.d.ts
319
+ declare const actionsCoverage: GrammarCoverage;
320
+ //#endregion
321
+ //#region src/lib/grammar/index.d.ts
322
+ /**
323
+ * Grammar coverage index.
324
+ *
325
+ * Each topic module in this directory documents a slice of the CDS grammar
326
+ * implemented by the single Chevrotain parser in `../../parser.ts`. They are
327
+ * intentionally documentation-first: Chevrotain's `CstParser` requires all
328
+ * rules to live on one class, so we keep them together and split the docs
329
+ * into focused files. Each module re-exports a `COVERED` array listing the
330
+ * grammar constructs currently implemented — useful for downstream tools
331
+ * (E10/E11/E12) to know what they can rely on.
332
+ */
333
+ type GrammarCoverage = {
334
+ readonly topic: string;
335
+ readonly constructs: readonly string[];
336
+ };
337
+ declare const GRAMMAR_COVERAGE: readonly GrammarCoverage[];
338
+ //#endregion
339
+ //#region src/index.d.ts
340
+ /** Result of parsing a CDS source file */
341
+ interface ParseResult {
342
+ /** The parsed AST (may be partial if there are errors) */
343
+ ast: CdsSourceFile;
344
+ /** Lexing and parsing errors */
345
+ errors: CdsParseError[];
346
+ }
347
+ /**
348
+ * Parse an ABAP CDS source string into a typed AST.
349
+ *
350
+ * @param source - The CDS source code to parse
351
+ * @returns Parse result with AST and any errors
352
+ */
353
+ declare function parse(source: string): ParseResult;
354
+ //#endregion
355
+ export { type AbstractEntityDefinition, type AnnotatedElement, type Annotation, type AnnotationArray, type AnnotationObject, type AnnotationProperty, type AnnotationValue, type AssociationDeclaration, type AssociationKind, type AstNode, type BooleanLiteral, type BuiltinTypeRef, type Cardinality, type CdsDefinition, type CdsParseError, type CdsSourceFile, type CustomEntityDefinition, type DataSource, type DataSourceKind, type EnumValue, type ExposeStatement, type Expression, type FieldDefinition, GRAMMAR_COVERAGE, type GrammarCoverage, type GrantStatement, type IncludeDirective, type MetadataExtension, type NamedTypeRef, type NumberLiteral, type ParameterDefinition, ParseResult, type RoleDefinition, type SemanticDiagnostic, type ServiceDefinition, type SimpleTypeDefinition, type SourceLocation, type StringLiteral, type StructureDefinition, type TableDefinition, type TableMember, type TypeRef, type ViewElement, type ViewEntityDefinition, type ViewMember, actionsCoverage, annotationsCoverage, associationsCoverage, dclCoverage, ddlCoverage, findAnnotation, hasFields, hasMembers, hasParameters, isAssociation, parametersCoverage, parse, projectionsCoverage, validate, validateCardinality, validateViewElements, walkAnnotations, walkAssociations, walkDefinitions, walkFields, walkParameters, walkViewElements };
356
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/ast.ts","../src/errors.ts","../src/lib/ast/walker.ts","../src/lib/validate/cardinality.ts","../src/lib/validate/elements.ts","../src/lib/validate/index.ts","../src/lib/grammar/ddl.ts","../src/lib/grammar/dcl.ts","../src/lib/grammar/annotations.ts","../src/lib/grammar/associations.ts","../src/lib/grammar/parameters.ts","../src/lib/grammar/projections.ts","../src/lib/grammar/actions.ts","../src/lib/grammar/index.ts","../src/index.ts"],"mappings":"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"}