@abaplint/transpiler-cli 2.13.32 → 2.13.33

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.
Files changed (2) hide show
  1. package/build/bundle.js +484 -141
  2. package/package.json +3 -3
package/build/bundle.js CHANGED
@@ -2242,7 +2242,7 @@ class Regex {
2242
2242
  return result;
2243
2243
  }
2244
2244
  railroad() {
2245
- return "Railroad.Terminal(\"" + this.regexp.source.replace(/\\/g, "\\\\") + "\")";
2245
+ return "Railroad.Terminal(\"" + this.regexp.source.replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\")";
2246
2246
  }
2247
2247
  toStr() {
2248
2248
  return this.regexp.toString();
@@ -11180,10 +11180,10 @@ const _derived_types_1 = __webpack_require__(/*! ./_derived_types */ "./node_mod
11180
11180
  class TypeStructure extends combi_1.Expression {
11181
11181
  getRunnable() {
11182
11182
  const entity = (0, combi_1.alt)(_1.TypeName, _1.EntityAssociation);
11183
- const derivedTypes = (0, _derived_types_1.derivedTypesAlt)((0, combi_1.ver)(version_1.Release.v779, (0, combi_1.seq)("FUNCTION REQUEST", entity)), (0, combi_1.ver)(version_1.Release.v779, (0, combi_1.seq)("ACTION REQUEST", entity)), (0, combi_1.seq)("ACTION IMPORT", _1.Source), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL AUTHORIZATION REQUEST", entity)), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL AUTHORIZATION RESULT", entity)), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL FEATURES REQUEST", entity)), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL FEATURES RESULT", entity)), (0, combi_1.ver)(version_1.Release.v780, (0, combi_1.seq)("AUTHORIZATION REQUEST", entity)), (0, combi_1.ver)(version_1.Release.v776, (0, combi_1.seq)("FEATURES REQUEST", entity)), (0, combi_1.seq)("PERMISSIONS REQUEST", _1.NamespaceSimpleName), (0, combi_1.ver)(version_1.Release.v780, (0, combi_1.seq)("PERMISSIONS RESULT", entity)), (0, combi_1.seq)("READ LINK", _1.EntityAssociation), (0, combi_1.seq)("HIERARCHY", _1.NamespaceSimpleName), (0, combi_1.seq)("EVENT", _1.EventName));
11184
- const structure = (0, combi_1.ver)(version_1.Release.v774, (0, combi_1.seq)("STRUCTURE FOR", derivedTypes));
11185
- const response = (0, combi_1.ver)(version_1.Release.v776, (0, combi_1.seq)("RESPONSE FOR", (0, combi_1.altPrio)((0, combi_1.seq)("FAILED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("FAILED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("FAILED", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED", _1.NamespaceSimpleName))));
11186
- const request = (0, combi_1.ver)(version_1.Release.v778, (0, combi_1.seq)("REQUEST FOR", (0, combi_1.alt)("CHANGE", "DELETE"), _1.NamespaceSimpleName));
11183
+ const derivedTypes = (0, _derived_types_1.derivedTypesAlt)((0, combi_1.ver)(version_1.Release.v779, (0, combi_1.seq)("FUNCTION REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v779, (0, combi_1.seq)("ACTION REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.seq)("ACTION IMPORT", _1.Source), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL AUTHORIZATION REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL AUTHORIZATION RESULT", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL FEATURES REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL FEATURES RESULT", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v780, (0, combi_1.seq)("AUTHORIZATION REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v776, (0, combi_1.seq)("FEATURES REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.seq)("PERMISSIONS REQUEST", _1.NamespaceSimpleName), (0, combi_1.ver)(version_1.Release.v780, (0, combi_1.seq)("PERMISSIONS RESULT", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.seq)("READ LINK", _1.EntityAssociation), (0, combi_1.seq)("HIERARCHY", _1.NamespaceSimpleName), (0, combi_1.seq)("EVENT", _1.EventName));
11184
+ const structure = (0, combi_1.ver)(version_1.Release.v774, (0, combi_1.seq)("STRUCTURE FOR", derivedTypes), { also: combi_1.AlsoIn.OpenABAP });
11185
+ const response = (0, combi_1.ver)(version_1.Release.v776, (0, combi_1.seq)("RESPONSE FOR", (0, combi_1.altPrio)((0, combi_1.seq)("FAILED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("FAILED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("FAILED", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED", _1.NamespaceSimpleName))), { also: combi_1.AlsoIn.OpenABAP });
11186
+ const request = (0, combi_1.ver)(version_1.Release.v778, (0, combi_1.seq)("REQUEST FOR", (0, combi_1.alt)("CHANGE", "DELETE"), _1.NamespaceSimpleName), { also: combi_1.AlsoIn.OpenABAP });
11187
11187
  return (0, combi_1.seq)("TYPE", (0, combi_1.altPrio)(structure, response, request), (0, combi_1.optPrio)("VALUE IS INITIAL"));
11188
11188
  }
11189
11189
  }
@@ -53200,6 +53200,12 @@ class CDSParser {
53200
53200
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
53201
53201
  res = combi_1.Combi.run(new Expressions.CDSDefineHierarchy(), tokens, version_1.defaultRelease);
53202
53202
  }
53203
+ if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
53204
+ res = combi_1.Combi.run(new Expressions.CDSDefineExternalEntity(), tokens, version_1.defaultRelease);
53205
+ }
53206
+ if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
53207
+ res = combi_1.Combi.run(new Expressions.CDSDefineTableEntity(), tokens, version_1.defaultRelease);
53208
+ }
53203
53209
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
53204
53210
  return undefined;
53205
53211
  }
@@ -53225,12 +53231,10 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
53225
53231
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
53226
53232
  class CDSAggregate extends combi_1.Expression {
53227
53233
  getRunnable() {
53228
- // CDSPrefixedName handles dotted paths with path filters e.g. a._Assoc[filter].Field
53229
- // CDSArithmetics handles expressions like sum(A + B), max(A * 100)
53230
- // fieldAsType handles avg(field AS type) / sum(field AS type) — SAP inline type coercion
53231
53234
  const fieldAsType = (0, combi_1.seq)(_1.CDSPrefixedName, "AS", _1.CDSType);
53232
- const value = (0, combi_1.altPrio)(_1.CDSArithmetics, _1.CDSCast, _1.CDSCase, _1.CDSFunction, fieldAsType, _1.CDSPrefixedName, _1.CDSString, "*");
53233
- return (0, combi_1.seq)((0, combi_1.altPrio)("MAX", "MIN", "SUM", "AVG", "COUNT"), "(", (0, combi_1.optPrio)((0, combi_1.altPrio)("DISTINCT", "ALL")), value, ")");
53235
+ const funcAsType = (0, combi_1.seq)(_1.CDSFunction, "AS", _1.CDSType);
53236
+ const value = (0, combi_1.altPrio)(_1.CDSArithmetics, _1.CDSCast, _1.CDSCase, funcAsType, _1.CDSFunction, fieldAsType, _1.CDSPrefixedName, _1.CDSString, "*");
53237
+ return (0, combi_1.seq)((0, combi_1.altPrio)("MAX", "MIN", "SUM", "AVG", "COUNT"), "(", (0, combi_1.optPrio)((0, combi_1.altPrio)("DISTINCT", "ALL")), value, (0, combi_1.opt)((0, combi_1.seq)("AS", _1.CDSType)), ")");
53234
53238
  }
53235
53239
  }
53236
53240
  exports.CDSAggregate = CDSAggregate;
@@ -53689,7 +53693,7 @@ class CDSDefineAbstract extends combi_1.Expression {
53689
53693
  getRunnable() {
53690
53694
  const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)((0, combi_1.str)("KEY")), cds_name_1.CDSName, ":", _1.CDSType, ";");
53691
53695
  const compsiOrAssoci = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), cds_name_1.CDSName, ":", (0, combi_1.alt)(_1.CDSComposition, _1.CDSAssociation), ";");
53692
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), "ABSTRACT", "ENTITY", cds_name_1.CDSName, (0, combi_1.str)("{"), (0, combi_1.plus)((0, combi_1.alt)(field, compsiOrAssoci)), (0, combi_1.str)("}"), (0, combi_1.opt)(";"));
53696
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), "ABSTRACT", "ENTITY", cds_name_1.CDSName, (0, combi_1.opt)(_1.CDSWithParameters), (0, combi_1.str)("{"), (0, combi_1.plus)((0, combi_1.alt)(field, compsiOrAssoci)), (0, combi_1.str)("}"), (0, combi_1.opt)(";"));
53693
53697
  }
53694
53698
  }
53695
53699
  exports.CDSDefineAbstract = CDSDefineAbstract;
@@ -53723,6 +53727,36 @@ exports.CDSDefineCustom = CDSDefineCustom;
53723
53727
 
53724
53728
  /***/ },
53725
53729
 
53730
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_external_entity.js"
53731
+ /*!*********************************************************************************************!*\
53732
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_external_entity.js ***!
53733
+ \*********************************************************************************************/
53734
+ (__unused_webpack_module, exports, __webpack_require__) {
53735
+
53736
+ "use strict";
53737
+
53738
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
53739
+ exports.CDSDefineExternalEntity = void 0;
53740
+ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
53741
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
53742
+ class CDSDefineExternalEntity extends combi_1.Expression {
53743
+ getRunnable() {
53744
+ const extNameValue = (0, combi_1.alt)(_1.CDSName, (0, combi_1.regex)(/^"[^"]*"$/));
53745
+ const externalName = (0, combi_1.seq)("EXTERNAL", "NAME", extNameValue);
53746
+ const nullability = (0, combi_1.optPrio)((0, combi_1.alt)("NOT NULL", "NULL"));
53747
+ const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)((0, combi_1.str)("KEY")), _1.CDSName, ":", _1.CDSType, nullability, (0, combi_1.optPrio)(externalName), ";");
53748
+ const assocOrComp = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), _1.CDSName, ":", (0, combi_1.alt)(_1.CDSComposition, _1.CDSAssociation), ";");
53749
+ const body = (0, combi_1.plus)((0, combi_1.alt)(field, assocOrComp));
53750
+ const externalEntity = (0, combi_1.seq)((0, combi_1.opt)("WRITABLE"), "EXTERNAL", "ENTITY", _1.CDSName, (0, combi_1.opt)(externalName), (0, combi_1.opt)(_1.CDSWithParameters));
53751
+ const staticEntity = (0, combi_1.seq)("STATIC", "ENTITY", _1.CDSName, (0, combi_1.opt)(externalName));
53752
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.alt)(externalEntity, staticEntity), (0, combi_1.str)("{"), body, (0, combi_1.str)("}"), (0, combi_1.opt)((0, combi_1.seq)("WITH", "FEDERATED", "DATA", (0, combi_1.optPrio)((0, combi_1.alt)((0, combi_1.seq)("PROVIDED", "AT", "RUNTIME"), (0, combi_1.seq)("PROVIDED", "BY", _1.CDSName))))), (0, combi_1.opt)(";"));
53753
+ }
53754
+ }
53755
+ exports.CDSDefineExternalEntity = CDSDefineExternalEntity;
53756
+ //# sourceMappingURL=cds_define_external_entity.js.map
53757
+
53758
+ /***/ },
53759
+
53726
53760
  /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_hierarchy.js"
53727
53761
  /*!***************************************************************************************!*\
53728
53762
  !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_hierarchy.js ***!
@@ -53742,7 +53776,13 @@ class CDSDefineHierarchy extends combi_1.Expression {
53742
53776
  const siblingsOrderField = (0, combi_1.seq)(_1.CDSPrefixedName, (0, combi_1.optPrio)(sortDirection));
53743
53777
  const siblingsOrder = (0, combi_1.seq)("SIBLINGS", "ORDER", "BY", siblingsOrderField, (0, combi_1.star)((0, combi_1.seq)(",", siblingsOrderField)));
53744
53778
  const directory = (0, combi_1.seq)("DIRECTORY", _1.CDSName, "FILTER", "BY", _1.CDSCondition);
53745
- const hierarchyBody = (0, combi_1.seq)("SOURCE", _1.CDSName, (0, combi_1.opt)(_1.CDSParametersSelect), "CHILD", "TO", "PARENT", "ASSOCIATION", _1.CDSName, (0, combi_1.opt)(directory), (0, combi_1.opt)((0, combi_1.seq)("START", "WHERE", _1.CDSCondition)), (0, combi_1.opt)(siblingsOrder), (0, combi_1.opt)((0, combi_1.seq)("NODETYPE", _1.CDSName)), (0, combi_1.opt)((0, combi_1.seq)("DEPTH", _1.CDSInteger)), (0, combi_1.opt)((0, combi_1.seq)("MULTIPLE", "PARENTS", (0, combi_1.altPrio)("NOT ALLOWED", "ALLOWED"))), (0, combi_1.opt)((0, combi_1.seq)("ORPHANS", (0, combi_1.altPrio)("IGNORE", "ROOT"))), (0, combi_1.opt)((0, combi_1.seq)("CYCLES", "BREAKUP")), (0, combi_1.opt)((0, combi_1.seq)("CACHE", (0, combi_1.altPrio)("FORCE", "NONE", "EMPTY", "OFF"))));
53779
+ // DATE PERIOD: period from <field> to <field> [valid from :p to :p]
53780
+ const datePeriod = (0, combi_1.seq)("PERIOD", "FROM", _1.CDSName, "TO", _1.CDSName, (0, combi_1.opt)((0, combi_1.seq)("VALID", "FROM", _1.CDSPrefixedName, "TO", _1.CDSPrefixedName)));
53781
+ // DEPTH accepts an integer literal or a parameter reference (:param)
53782
+ const depthValue = (0, combi_1.altPrio)(_1.CDSInteger, _1.CDSPrefixedName);
53783
+ // LOAD mode: BULK, INCREMENTAL, or a parameter reference ($parameters.p_load)
53784
+ const loadMode = (0, combi_1.altPrio)("BULK", "INCREMENTAL", _1.CDSPrefixedName);
53785
+ const hierarchyBody = (0, combi_1.seq)("SOURCE", _1.CDSName, (0, combi_1.opt)(_1.CDSParametersSelect), "CHILD", "TO", "PARENT", "ASSOCIATION", _1.CDSName, (0, combi_1.opt)(directory), (0, combi_1.opt)(datePeriod), (0, combi_1.opt)((0, combi_1.seq)("START", "WHERE", _1.CDSCondition)), (0, combi_1.opt)(siblingsOrder), (0, combi_1.opt)((0, combi_1.seq)("LOAD", loadMode)), (0, combi_1.opt)((0, combi_1.seq)("NODETYPE", _1.CDSName)), (0, combi_1.opt)((0, combi_1.seq)("DEPTH", depthValue)), (0, combi_1.opt)((0, combi_1.seq)("MULTIPLE", "PARENTS", (0, combi_1.altPrio)("NOT ALLOWED", "ALLOWED", (0, combi_1.seq)("LEAVES", (0, combi_1.optPrio)("ONLY"))))), (0, combi_1.opt)((0, combi_1.seq)("ORPHANS", (0, combi_1.altPrio)("IGNORE", "ROOT", "ERROR"))), (0, combi_1.opt)((0, combi_1.seq)("CYCLES", (0, combi_1.altPrio)("BREAKUP", "ERROR"))), (0, combi_1.opt)((0, combi_1.seq)("GENERATE", "SPANTREE")), (0, combi_1.opt)((0, combi_1.seq)("CACHE", (0, combi_1.altPrio)("ON", "OFF", "FORCE"))));
53746
53786
  return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", "HIERARCHY", _1.CDSName, (0, combi_1.opt)(_1.CDSWithParameters), "AS", "PARENT", "CHILD", "HIERARCHY", "(", hierarchyBody, ")", "{", (0, combi_1.seq)(field, (0, combi_1.star)((0, combi_1.seq)(",", field))), "}", (0, combi_1.opt)(";"));
53747
53787
  }
53748
53788
  }
@@ -53766,7 +53806,9 @@ const __1 = __webpack_require__(/*! ../.. */ "./node_modules/@abaplint/core/buil
53766
53806
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
53767
53807
  class CDSDefineProjection extends combi_1.Expression {
53768
53808
  getRunnable() {
53769
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), (0, combi_1.opt)("TRANSIENT"), "VIEW", (0, combi_1.ver)(__1.Release.v755, (0, combi_1.opt)("ENTITY")), _1.CDSName, (0, combi_1.opt)(_1.CDSProviderContract), (0, combi_1.opt)(_1.CDSWithParameters), "AS PROJECTION ON", _1.CDSName, (0, combi_1.opt)(_1.CDSParametersSelect), (0, combi_1.opt)(_1.CDSAs), (0, combi_1.star)(_1.CDSAssociation), (0, combi_1.str)("{"), (0, combi_1.seq)(_1.CDSElement, (0, combi_1.star)((0, combi_1.seq)(",", _1.CDSElement)), (0, combi_1.opt)(",")), (0, combi_1.str)("}"), (0, combi_1.opt)(_1.CDSWhere), (0, combi_1.opt)(";"));
53809
+ // redefine association _Assoc redirected to [composition child | parent] Entity
53810
+ const redefineAssoc = (0, combi_1.seq)("REDEFINE", "ASSOCIATION", _1.CDSName, "REDIRECTED", "TO", (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)("COMPOSITION", "CHILD"), "PARENT")), _1.CDSName);
53811
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), (0, combi_1.opt)("TRANSIENT"), "VIEW", (0, combi_1.ver)(__1.Release.v755, (0, combi_1.opt)("ENTITY")), _1.CDSName, (0, combi_1.opt)(_1.CDSProviderContract), (0, combi_1.opt)(_1.CDSWithParameters), "AS PROJECTION ON", _1.CDSName, (0, combi_1.opt)(_1.CDSParametersSelect), (0, combi_1.opt)(_1.CDSAs), (0, combi_1.star)((0, combi_1.altPrio)(_1.CDSAssociation, redefineAssoc)), (0, combi_1.str)("{"), (0, combi_1.seq)(_1.CDSElement, (0, combi_1.star)((0, combi_1.seq)(",", _1.CDSElement)), (0, combi_1.opt)(",")), (0, combi_1.str)("}"), (0, combi_1.opt)(_1.CDSWhere), (0, combi_1.opt)(";"));
53770
53812
  }
53771
53813
  }
53772
53814
  exports.CDSDefineProjection = CDSDefineProjection;
@@ -53774,6 +53816,35 @@ exports.CDSDefineProjection = CDSDefineProjection;
53774
53816
 
53775
53817
  /***/ },
53776
53818
 
53819
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_entity.js"
53820
+ /*!******************************************************************************************!*\
53821
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_entity.js ***!
53822
+ \******************************************************************************************/
53823
+ (__unused_webpack_module, exports, __webpack_require__) {
53824
+
53825
+ "use strict";
53826
+
53827
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
53828
+ exports.CDSDefineTableEntity = void 0;
53829
+ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
53830
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
53831
+ class CDSDefineTableEntity extends combi_1.Expression {
53832
+ getRunnable() {
53833
+ const nullability = (0, combi_1.optPrio)((0, combi_1.alt)("NOT NULL", "NULL"));
53834
+ const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)((0, combi_1.str)("KEY")), _1.CDSName, ":", _1.CDSType, nullability, ";");
53835
+ const assocOrComp = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), _1.CDSName, ":", (0, combi_1.alt)(_1.CDSComposition, _1.CDSAssociation), ";");
53836
+ const inlineBody = (0, combi_1.plus)((0, combi_1.alt)(field, assocOrComp));
53837
+ const elementList = (0, combi_1.seq)(_1.CDSElement, (0, combi_1.star)((0, combi_1.seq)(",", _1.CDSElement)), (0, combi_1.opt)(","));
53838
+ const elements = (0, combi_1.seq)((0, combi_1.str)("{"), (0, combi_1.altPrio)("*", elementList), (0, combi_1.str)("}"));
53839
+ const selectBody = (0, combi_1.seq)("AS", "SELECT", "FROM", _1.CDSSource, (0, combi_1.star)(_1.CDSJoin), (0, combi_1.star)((0, combi_1.altPrio)(_1.CDSComposition, _1.CDSAssociation)), (0, combi_1.opt)(elements), (0, combi_1.optPrio)(_1.CDSWhere));
53840
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), "TABLE", "ENTITY", _1.CDSName, (0, combi_1.opt)(_1.CDSWithParameters), (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.str)("{"), inlineBody, (0, combi_1.str)("}")), selectBody), (0, combi_1.opt)(";"));
53841
+ }
53842
+ }
53843
+ exports.CDSDefineTableEntity = CDSDefineTableEntity;
53844
+ //# sourceMappingURL=cds_define_table_entity.js.map
53845
+
53846
+ /***/ },
53847
+
53777
53848
  /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js"
53778
53849
  /*!********************************************************************************************!*\
53779
53850
  !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js ***!
@@ -53817,7 +53888,8 @@ const cds_with_parameters_1 = __webpack_require__(/*! ./cds_with_parameters */ "
53817
53888
  class CDSDefineView extends combi_1.Expression {
53818
53889
  getRunnable() {
53819
53890
  const columnAlias = (0, combi_1.seq)("(", cds_name_1.CDSName, (0, combi_1.star)((0, combi_1.seq)(",", cds_name_1.CDSName)), ")");
53820
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.opt)("DEFINE"), (0, combi_1.opt)("ROOT"), "VIEW", (0, combi_1.ver)(__1.Release.v755, (0, combi_1.opt)("ENTITY")), cds_name_1.CDSName, (0, combi_1.opt)(columnAlias), (0, combi_1.opt)(cds_with_parameters_1.CDSWithParameters), "AS", cds_select_1.CDSSelect, (0, combi_1.opt)(";"));
53891
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.opt)("DEFINE"), (0, combi_1.opt)("ROOT"), (0, combi_1.opt)("WRITABLE"), "VIEW", (0, combi_1.ver)(__1.Release.v755, (0, combi_1.opt)("ENTITY")), cds_name_1.CDSName, (0, combi_1.opt)(columnAlias), (0, combi_1.opt)(cds_with_parameters_1.CDSWithParameters), "AS", cds_select_1.CDSSelect, (0, combi_1.opt)((0, combi_1.seq)("WITH", "HIERARCHY", cds_name_1.CDSName)), // post-select WITH HIERARCHY clause
53892
+ (0, combi_1.opt)(";"));
53821
53893
  }
53822
53894
  }
53823
53895
  exports.CDSDefineView = CDSDefineView;
@@ -53843,14 +53915,11 @@ class CDSElement extends combi_1.Expression {
53843
53915
  getRunnable() {
53844
53916
  const redirected = (0, combi_1.seq)(": REDIRECTED TO", (0, combi_1.optPrio)((0, combi_1.altPrio)("PARENT", "COMPOSITION CHILD")), _1.CDSName);
53845
53917
  const colonThing = (0, combi_1.seq)(":", (0, combi_1.altPrio)(_1.CDSType, _1.CDSName, "LOCALIZED"));
53846
- // $extension.* — extension field wildcard
53847
53918
  const extensionWildcard = (0, combi_1.seq)("$extension", ".", "*");
53848
- const body = (0, combi_1.altPrio)(extensionWildcard, _1.CDSArithmetics, _1.CDSAggregate, _1.CDSString, _1.CDSArithParen, _1.CDSFunction, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)("(", _1.CDSCase, ")"), (0, combi_1.seq)(_1.CDSPrefixedName, (0, combi_1.optPrio)(cds_as_1.CDSAs), (0, combi_1.optPrio)((0, combi_1.altPrio)(redirected, colonThing))), _1.CDSInteger);
53849
- // KEY/VIRTUAL keyword handling via altPrio:
53850
- // - Try keyword form first: if keyword consumed but body fails (e.g. "virtual.Field"),
53851
- // altPrio backtracks to plain body (which handles "virtual" as a datasource alias prefix).
53852
- // - This gives exactly 1 state in all cases (no exponential blowup from opt()).
53853
- const elementBody = (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.altPrio)("KEY", "VIRTUAL"), body), body);
53919
+ const includeElement = (0, combi_1.seq)("INCLUDE", _1.CDSPrefixedName);
53920
+ const typedVirtual = (0, combi_1.seq)("VIRTUAL", _1.CDSName, ":", _1.CDSType);
53921
+ const body = (0, combi_1.altPrio)(extensionWildcard, includeElement, _1.CDSArithmetics, _1.CDSAggregate, _1.CDSString, _1.CDSArithParen, _1.CDSFunction, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)("(", _1.CDSCase, ")"), (0, combi_1.seq)(_1.CDSPrefixedName, (0, combi_1.optPrio)(cds_as_1.CDSAs), (0, combi_1.optPrio)((0, combi_1.altPrio)(redirected, colonThing))), _1.CDSInteger);
53922
+ const elementBody = (0, combi_1.altPrio)(typedVirtual, (0, combi_1.seq)((0, combi_1.altPrio)("KEY", "VIRTUAL"), body), body);
53854
53923
  return (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), elementBody, (0, combi_1.optPrio)(cds_as_1.CDSAs));
53855
53924
  }
53856
53925
  }
@@ -53871,12 +53940,17 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
53871
53940
  exports.CDSExtendView = void 0;
53872
53941
  const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
53873
53942
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
53874
- const cds_name_1 = __webpack_require__(/*! ./cds_name */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js");
53875
53943
  class CDSExtendView extends combi_1.Expression {
53876
53944
  getRunnable() {
53877
- const namedot = (0, combi_1.seq)(cds_name_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", cds_name_1.CDSName)), (0, combi_1.optPrio)(_1.CDSAs));
53945
+ const namedot = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)), (0, combi_1.optPrio)(_1.CDSAs));
53878
53946
  const valueNested = (0, combi_1.seq)("{", namedot, (0, combi_1.star)((0, combi_1.seq)(",", namedot)), "}");
53879
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("EXTEND VIEW"), (0, combi_1.opt)((0, combi_1.str)("ENTITY")), cds_name_1.CDSName, (0, combi_1.str)("WITH"), (0, combi_1.opt)(cds_name_1.CDSName), valueNested, (0, combi_1.opt)(";"));
53947
+ const redefineAssoc = (0, combi_1.seq)("REDEFINE", "ASSOCIATION", _1.CDSPrefixedName, (0, combi_1.optPrio)((0, combi_1.seq)("[", _1.CDSCondition, "]")), (0, combi_1.opt)(_1.CDSAs), "REDIRECTED", "TO", (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)("COMPOSITION", "CHILD"), "PARENT")), _1.CDSName);
53948
+ const extendView = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("EXTEND VIEW"), (0, combi_1.opt)((0, combi_1.str)("ENTITY")), _1.CDSName, (0, combi_1.str)("WITH"), (0, combi_1.opt)(_1.CDSName), (0, combi_1.star)(redefineAssoc), valueNested, (0, combi_1.opt)(";"));
53949
+ const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)((0, combi_1.str)("KEY")), _1.CDSName, ":", _1.CDSType, ";");
53950
+ const assocOrComp = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), _1.CDSName, ":", (0, combi_1.alt)(_1.CDSComposition, _1.CDSAssociation), ";");
53951
+ const entityBody = (0, combi_1.seq)("{", (0, combi_1.plus)((0, combi_1.alt)(field, assocOrComp)), "}");
53952
+ const extendAbstractOrCustom = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "EXTEND", (0, combi_1.alt)("ABSTRACT", "CUSTOM"), "ENTITY", _1.CDSName, (0, combi_1.opt)(_1.CDSWithParameters), "WITH", entityBody, (0, combi_1.opt)(";"));
53953
+ return (0, combi_1.alt)(extendAbstractOrCustom, extendView);
53880
53954
  }
53881
53955
  }
53882
53956
  exports.CDSExtendView = CDSExtendView;
@@ -53951,12 +54025,13 @@ class CDSFunction extends combi_1.Expression {
53951
54025
  const occurrencesRegexpr = (0, combi_1.seq)("OCCURRENCES_REGEXPR", "(", conversionInputs, ")");
53952
54026
  const substrRegexpr = (0, combi_1.seq)("SUBSTR_REGEXPR", "(", conversionInputs, ")");
53953
54027
  const locateRegexpr = (0, combi_1.seq)("LOCATE_REGEXPR", "(", conversionInputs, ")");
53954
- // Generic fallback: user-defined/extension functions like GET_NUMERIC_VALUE(arg).
53955
- // Use a regex that excludes CDS keywords that would otherwise be matched by CDSName.
53956
- // Must contain at least one underscore to distinguish from keywords (e.g. GET_NUMERIC_VALUE).
53957
54028
  const extFuncName = (0, combi_1.regex)(/^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)+$/i);
53958
54029
  const genericArgs = (0, combi_1.seq)(_1.CDSFunctionInput, (0, combi_1.starPrio)((0, combi_1.seq)(",", _1.CDSFunctionInput)));
53959
- const genericFunc = (0, combi_1.seq)(extFuncName, "(", genericArgs, ")");
54030
+ const namedArgValue = (0, combi_1.altPrio)((0, combi_1.seq)("INTERVAL", _1.CDSFunctionInput, _1.CDSName), _1.CDSFunctionInput, _1.CDSName);
54031
+ const namedArgArrow = (0, combi_1.seq)(_1.CDSName, "=", ">", namedArgValue);
54032
+ const namedArgColon = (0, combi_1.seq)(_1.CDSName, ":", namedArgValue);
54033
+ const namedArgs = (0, combi_1.seq)((0, combi_1.altPrio)(namedArgArrow, namedArgColon), (0, combi_1.starPrio)((0, combi_1.seq)(",", (0, combi_1.altPrio)(namedArgArrow, namedArgColon))));
54034
+ const genericFunc = (0, combi_1.seq)(extFuncName, "(", (0, combi_1.optPrio)((0, combi_1.altPrio)(namedArgs, genericArgs)), ")");
53960
54035
  return (0, combi_1.altPrio)(substring, coalesce, tstmp_to_dats, concat, tstmp_to_tims, upper, lower, abs, ceil, floor, round, div, division, concat_with_space, dats_is_valid, tims_is_valid, dats_days_between, tstmp_add_seconds, tstmp_seconds_between, tstmp_current_utctimestamp, tstmp_is_valid, utcl_current, abap_system_timezone, abap_user_timezone, bintohex, hextobin, dats_add_days, dats_add_months, tstmp_to_dst, dats_tims_to_tstmp, mod, left, right, lpad, rpad, instr, length, ltrim, rtrim, replace, unitConversion, currencyConversion, decimalShift, fltp_to_dec, ratioOf, replaceRegexpr, matchesRegexpr, occurrencesRegexpr, substrRegexpr, locateRegexpr, curr_to_decfloat_amount, genericFunc);
53961
54036
  }
53962
54037
  }
@@ -54188,31 +54263,18 @@ const cds_integer_1 = __webpack_require__(/*! ./cds_integer */ "./node_modules/@
54188
54263
  const cds_string_1 = __webpack_require__(/*! ./cds_string */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js");
54189
54264
  class CDSPrefixedName extends combi_1.Expression {
54190
54265
  getRunnable() {
54191
- // Path filter variants:
54192
- // [inner], [left outer], [cross] — join-type redirect
54193
- // [1:left outer], [1:inner] — cardinality + join-type
54194
- // [1: condition] — cardinality + filter condition
54195
- // [condition] — filter condition only
54196
54266
  const joinType = (0, combi_1.altPrio)("LEFT OUTER", "INNER", "CROSS");
54197
54267
  const joinRedirect = (0, combi_1.seq)("[", joinType, "]");
54198
- // Cardinality spec: integer or * (e.g. [*:inner], [1:inner])
54199
54268
  const cardSpec = (0, combi_1.altPrio)(cds_integer_1.CDSInteger, "*");
54200
54269
  const cardinalityJoin = (0, combi_1.seq)("[", cardSpec, ":", joinType, "]");
54201
- // [1: left outer where condition] — cardinality + join-type + WHERE filter
54202
54270
  const cardinalityJoinWhere = (0, combi_1.seq)("[", cardSpec, ":", joinType, "WHERE", cds_condition_1.CDSCondition, "]");
54203
- // [left outer where condition] — join-type + WHERE filter (no cardinality prefix)
54204
54271
  const joinWhere = (0, combi_1.seq)("[", joinType, "WHERE", cds_condition_1.CDSCondition, "]");
54205
- // Text cardinality forms: [to one: cond], [to many: cond]
54206
- const textCard = (0, combi_1.altPrio)("TO ONE", "TO MANY");
54207
- const textCardFilter = (0, combi_1.seq)("[", textCard, ":", cds_condition_1.CDSCondition, "]");
54208
- // Numeric range cardinality: [0..1: cond], [1..1: cond], [0..*: cond], [n..m: cond]
54272
+ const textCard = (0, combi_1.altPrio)("TO EXACT ONE", "TO ONE", "TO MANY");
54273
+ const textCardFilter = (0, combi_1.seq)("[", textCard, (0, combi_1.optPrio)((0, combi_1.seq)(":", (0, combi_1.altPrio)((0, combi_1.seq)(joinType, "WHERE", cds_condition_1.CDSCondition), joinType, cds_condition_1.CDSCondition))), "]");
54209
54274
  const cardNum = (0, combi_1.altPrio)(cds_integer_1.CDSInteger, "*");
54210
54275
  const rangeCard = (0, combi_1.seq)(cds_integer_1.CDSInteger, ".", ".", cardNum);
54211
54276
  const rangeCardFilter = (0, combi_1.seq)("[", rangeCard, ":", cds_condition_1.CDSCondition, "]");
54212
54277
  const pathFilter = (0, combi_1.altPrio)(cardinalityJoinWhere, joinWhere, cardinalityJoin, joinRedirect, textCardFilter, rangeCardFilter, (0, combi_1.seq)("[", cardSpec, ":", cds_condition_1.CDSCondition, "]"), (0, combi_1.seq)("[", cds_condition_1.CDSCondition, "]"));
54213
- // Each dotted segment may have its own path filter: A[cond].B[cond].C
54214
- // The final segment may also be a string literal: #enum.'value'
54215
- // A segment may have a parameterized call: _Assoc( P_Key : value ) or _Assoc[filter]
54216
54278
  const segment = (0, combi_1.seq)(".", (0, combi_1.altPrio)(cds_string_1.CDSString, cds_name_1.CDSName), (0, combi_1.optPrio)((0, combi_1.altPrio)(cds_parameters_select_1.CDSParametersSelect, cds_parameters_1.CDSParameters)), (0, combi_1.optPrio)(pathFilter));
54217
54279
  return (0, combi_1.seq)(cds_name_1.CDSName, (0, combi_1.optPrio)((0, combi_1.altPrio)(cds_parameters_1.CDSParameters, cds_parameters_select_1.CDSParametersSelect)), (0, combi_1.optPrio)(pathFilter), (0, combi_1.star)(segment));
54218
54280
  }
@@ -54235,7 +54297,7 @@ exports.CDSProviderContract = void 0;
54235
54297
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
54236
54298
  class CDSProviderContract extends combi_1.Expression {
54237
54299
  getRunnable() {
54238
- return (0, combi_1.seq)("PROVIDER CONTRACT", (0, combi_1.alt)("TRANSACTIONAL_QUERY", "TRANSACTIONAL_INTERFACE", "ANALYTICAL_QUERY"));
54300
+ return (0, combi_1.seq)("PROVIDER CONTRACT", (0, combi_1.alt)("TRANSACTIONAL_QUERY", "TRANSACTIONAL_INTERFACE", "ANALYTICAL_QUERY", "SQL_QUERY", "STRUCTURED_QUERY"));
54239
54301
  }
54240
54302
  }
54241
54303
  exports.CDSProviderContract = CDSProviderContract;
@@ -54284,10 +54346,13 @@ class CDSSelect extends combi_1.Expression {
54284
54346
  getRunnable() {
54285
54347
  const fields = (0, combi_1.seq)((0, combi_1.star)((0, combi_1.seq)(_1.CDSElement, ",")), _1.CDSElement);
54286
54348
  const distinct = (0, combi_1.str)("DISTINCT");
54287
- // elem (,elem)* [,] — handles separator commas and optional trailing comma
54288
54349
  const elementList = (0, combi_1.seq)(_1.CDSElement, (0, combi_1.star)((0, combi_1.seq)(",", _1.CDSElement)), (0, combi_1.opt)(","));
54289
54350
  const elements = (0, combi_1.seq)((0, combi_1.str)("{"), (0, combi_1.altPrio)("*", elementList), (0, combi_1.str)("}"));
54290
- return (0, combi_1.seq)("SELECT", (0, combi_1.optPrio)(distinct), (0, combi_1.opt)((0, combi_1.altPrio)("*", fields)), "FROM", _1.CDSSource, (0, combi_1.star)(cds_join_1.CDSJoin), (0, combi_1.star)((0, combi_1.altPrio)(_1.CDSComposition, cds_association_1.CDSAssociation)), (0, combi_1.opt)(elements), (0, combi_1.optPrio)(_1.CDSWhere), (0, combi_1.optPrio)(_1.CDSGroupBy), (0, combi_1.optPrio)(_1.CDSHaving), (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)("UNION", (0, combi_1.optPrio)("ALL"), CDSSelect), (0, combi_1.seq)("EXCEPT", CDSSelect), (0, combi_1.seq)("INTERSECT", CDSSelect))));
54351
+ const aspectBinding = (0, combi_1.seq)(_1.CDSPrefixedName, "=", ">", _1.CDSPrefixedName);
54352
+ const bindAspect = (0, combi_1.seq)("BIND", "ASPECT", _1.CDSName, "(", aspectBinding, (0, combi_1.starPrio)((0, combi_1.seq)(",", aspectBinding)), ")");
54353
+ const parenSelect = (0, combi_1.seq)("(", CDSSelect, ")");
54354
+ const unionBranch = (0, combi_1.altPrio)(parenSelect, CDSSelect);
54355
+ return (0, combi_1.seq)("SELECT", (0, combi_1.optPrio)(distinct), (0, combi_1.opt)((0, combi_1.altPrio)("*", fields)), "FROM", _1.CDSSource, (0, combi_1.star)(cds_join_1.CDSJoin), (0, combi_1.star)((0, combi_1.altPrio)(_1.CDSComposition, cds_association_1.CDSAssociation)), (0, combi_1.optPrio)(bindAspect), (0, combi_1.opt)(elements), (0, combi_1.optPrio)(_1.CDSWhere), (0, combi_1.optPrio)(_1.CDSGroupBy), (0, combi_1.optPrio)(_1.CDSHaving), (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)("UNION", (0, combi_1.optPrio)("ALL"), unionBranch), (0, combi_1.seq)("EXCEPT", unionBranch), (0, combi_1.seq)("INTERSECT", unionBranch))));
54291
54356
  }
54292
54357
  }
54293
54358
  exports.CDSSelect = CDSSelect;
@@ -54309,13 +54374,14 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
54309
54374
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
54310
54375
  class CDSSource extends combi_1.Expression {
54311
54376
  getRunnable() {
54312
- // Static where filter in FROM: SomeTable [Field = 'Value']
54313
54377
  const staticFilter = (0, combi_1.seq)("[", _1.CDSCondition, "]");
54314
- const singleSource = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)(_1.CDSParametersSelect), (0, combi_1.optPrio)(staticFilter), (0, combi_1.opt)((0, combi_1.altPrio)(_1.CDSAs, _1.CDSName)));
54315
- // FROM ( src [JOIN src ON cond]* ) — parenthesized join chain, arbitrarily nested
54316
- // CDSSource is self-referential here to handle: (((T1 join T2) join T3) join T4)
54378
+ // Dotted path: T._Assoc association path as FROM source
54379
+ const dottedName = (0, combi_1.seq)(_1.CDSName, ".", _1.CDSName);
54380
+ const namedSource = (0, combi_1.altPrio)(dottedName, _1.CDSName);
54381
+ const singleSource = (0, combi_1.seq)(namedSource, (0, combi_1.optPrio)(_1.CDSParametersSelect), (0, combi_1.optPrio)(staticFilter), (0, combi_1.opt)((0, combi_1.altPrio)(_1.CDSAs, _1.CDSName)));
54382
+ const funcSingleSource = (0, combi_1.seq)(_1.CDSFunction, (0, combi_1.opt)((0, combi_1.altPrio)(_1.CDSAs, _1.CDSName)));
54317
54383
  const parenSource = (0, combi_1.seq)("(", (0, combi_1.altPrio)(CDSSource, singleSource), (0, combi_1.star)(_1.CDSJoin), ")");
54318
- return (0, combi_1.altPrio)(parenSource, singleSource);
54384
+ return (0, combi_1.altPrio)(parenSource, funcSingleSource, singleSource);
54319
54385
  }
54320
54386
  }
54321
54387
  exports.CDSSource = CDSSource;
@@ -54336,15 +54402,8 @@ exports.CDSString = void 0;
54336
54402
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
54337
54403
  class CDSString extends combi_1.Expression {
54338
54404
  getRunnable() {
54339
- // Allow any character except unescaped single quote; escape sequences:
54340
- // '' — escaped single quote (doubling)
54341
- // \' — escaped single quote (backslash form)
54342
- // \\ — escaped backslash (e.g. '\\' in ltrim/rtrim calls)
54343
- // \x — other backslash sequences not followed by '
54344
54405
  const reg = (0, combi_1.regex)(/^'(?:[^'\\]|''|\\'|\\\\|\\(?!'))*'$/);
54345
- // Typed literal: abap.int4'1', abap.char'X', abap.numc(3)'123', etc.
54346
- // Lexed as tokens: abap, ., typename, 'value'
54347
- const abapTypeName = (0, combi_1.regex)(/^(?:int[1-9]|sstring|char|numc|dats|tims|fltp|decfloat\d+|dec|string|raw|xstring|clnt|lang|unit|cuky|curr|quan|d|t|p|n|c|x|f)$/i);
54406
+ const abapTypeName = (0, combi_1.regex)(/^(?:int[1-9]|int8|sstring|char|numc|dats|datn|tims|timn|utcl|utclong|fltp|decfloat\d+|dec|string|rawstring|rstr|raw|xstring|clnt|lang|unit|cuky|curr|quan|geom_ewkb|d34n|d16n|d34d|d16d|d34s|d16s|d34r|d16r|d|t|p|n|c|x|f)$/i);
54348
54407
  const abap = (0, combi_1.seq)("abap", ".", abapTypeName, (0, combi_1.optPrio)((0, combi_1.seq)("(", (0, combi_1.regex)(/^\d+$/), ")")), reg);
54349
54408
  return (0, combi_1.altPrio)(abap, reg);
54350
54409
  }
@@ -54462,8 +54521,10 @@ __exportStar(__webpack_require__(/*! ./cds_composition */ "./node_modules/@abapl
54462
54521
  __exportStar(__webpack_require__(/*! ./cds_condition */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js"), exports);
54463
54522
  __exportStar(__webpack_require__(/*! ./cds_define_abstract */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js"), exports);
54464
54523
  __exportStar(__webpack_require__(/*! ./cds_define_custom */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_custom.js"), exports);
54524
+ __exportStar(__webpack_require__(/*! ./cds_define_external_entity */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_external_entity.js"), exports);
54465
54525
  __exportStar(__webpack_require__(/*! ./cds_define_hierarchy */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_hierarchy.js"), exports);
54466
54526
  __exportStar(__webpack_require__(/*! ./cds_define_projection */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_projection.js"), exports);
54527
+ __exportStar(__webpack_require__(/*! ./cds_define_table_entity */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_entity.js"), exports);
54467
54528
  __exportStar(__webpack_require__(/*! ./cds_define_table_function */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js"), exports);
54468
54529
  __exportStar(__webpack_require__(/*! ./cds_define_view */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js"), exports);
54469
54530
  __exportStar(__webpack_require__(/*! ./cds_element */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js"), exports);
@@ -54546,7 +54607,10 @@ class Config {
54546
54607
  for (const rule of sorted) {
54547
54608
  rules[rule.getMetadata().key] = rule.getConfig();
54548
54609
  }
54549
- const version = ver;
54610
+ const version = ver !== null && ver !== void 0 ? ver : {
54611
+ release: version_1.Release.Newest.name,
54612
+ language: langVer !== null && langVer !== void 0 ? langVer : version_1.LanguageVersion.Normal,
54613
+ };
54550
54614
  // defaults: dont skip anything, report everything. The user can decide to skip stuff
54551
54615
  // its difficult to debug errors not being reported
54552
54616
  const config = {
@@ -54673,12 +54737,14 @@ class Config {
54673
54737
  return v;
54674
54738
  }
54675
54739
  getLanguageVersion() {
54676
- var _a;
54740
+ if (this.config.syntax.languageVersion !== undefined) {
54741
+ return this.config.syntax.languageVersion;
54742
+ }
54677
54743
  const v = this.config.syntax.version;
54678
54744
  if (v !== undefined && typeof v !== "string") {
54679
54745
  return v.language;
54680
54746
  }
54681
- return (_a = this.config.syntax.languageVersion) !== null && _a !== void 0 ? _a : version_1.LanguageVersion.Normal;
54747
+ return version_1.LanguageVersion.Normal;
54682
54748
  }
54683
54749
  checkVersion() {
54684
54750
  const version = this.config.syntax.version;
@@ -55282,49 +55348,6 @@ exports.DDICReferences = DDICReferences;
55282
55348
 
55283
55349
  /***/ },
55284
55350
 
55285
- /***/ "./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js"
55286
- /*!****************************************************************!*\
55287
- !*** ./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js ***!
55288
- \****************************************************************/
55289
- (__unused_webpack_module, exports, __webpack_require__) {
55290
-
55291
- "use strict";
55292
-
55293
- Object.defineProperty(exports, "__esModule", ({ value: true }));
55294
- exports.DDLLexer = void 0;
55295
- const tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
55296
- const position_1 = __webpack_require__(/*! ../position */ "./node_modules/@abaplint/core/build/src/position.js");
55297
- class DDLLexer {
55298
- static run(file) {
55299
- const step1 = [];
55300
- const lines = file.getRaw().replace(/\r/g, "").split("\n");
55301
- for (const l of lines) {
55302
- if (l.startsWith("@")) {
55303
- continue; // skip annotations for now
55304
- }
55305
- step1.push(...l.split(" "));
55306
- }
55307
- const step2 = [];
55308
- for (const t of step1) {
55309
- if (t === "") {
55310
- continue;
55311
- }
55312
- else if (t.endsWith(";")) {
55313
- step2.push(t.substr(0, t.length - 1));
55314
- step2.push(";");
55315
- }
55316
- else {
55317
- step2.push(t);
55318
- }
55319
- }
55320
- return step2.map(t => new tokens_1.Identifier(new position_1.Position(1, 1), t));
55321
- }
55322
- }
55323
- exports.DDLLexer = DDLLexer;
55324
- //# sourceMappingURL=ddl_lexer.js.map
55325
-
55326
- /***/ },
55327
-
55328
55351
  /***/ "./node_modules/@abaplint/core/build/src/ddl/ddl_parser.js"
55329
55352
  /*!*****************************************************************!*\
55330
55353
  !*** ./node_modules/@abaplint/core/build/src/ddl/ddl_parser.js ***!
@@ -55368,67 +55391,250 @@ var __importStar = (this && this.__importStar) || (function () {
55368
55391
  })();
55369
55392
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55370
55393
  exports.DDLParser = exports.DDLKind = void 0;
55394
+ const tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
55371
55395
  const combi_1 = __webpack_require__(/*! ../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55372
55396
  const nodes_1 = __webpack_require__(/*! ../abap/nodes */ "./node_modules/@abaplint/core/build/src/abap/nodes/index.js");
55373
55397
  const version_1 = __webpack_require__(/*! ../version */ "./node_modules/@abaplint/core/build/src/version.js");
55374
- const ddl_lexer_1 = __webpack_require__(/*! ./ddl_lexer */ "./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js");
55398
+ const cds_lexer_1 = __webpack_require__(/*! ../cds/cds_lexer */ "./node_modules/@abaplint/core/build/src/cds/cds_lexer.js");
55375
55399
  const Expressions = __importStar(__webpack_require__(/*! ./expressions */ "./node_modules/@abaplint/core/build/src/ddl/expressions/index.js"));
55376
55400
  var DDLKind;
55377
55401
  (function (DDLKind) {
55378
55402
  DDLKind["Structure"] = "structure";
55379
55403
  DDLKind["Table"] = "table";
55404
+ DDLKind["Aspect"] = "aspect";
55405
+ DDLKind["ExtendType"] = "extend-type";
55380
55406
  })(DDLKind || (exports.DDLKind = DDLKind = {}));
55381
55407
  class DDLParser {
55382
55408
  parse(file) {
55383
- const tokens = ddl_lexer_1.DDLLexer.run(file);
55409
+ let tokens = cds_lexer_1.CDSLexer.run(file);
55410
+ tokens = tokens.filter(t => !(t instanceof tokens_1.Comment));
55384
55411
  let res = combi_1.Combi.run(new Expressions.DDLStructure(), tokens, version_1.defaultRelease);
55385
55412
  if (res === undefined) {
55386
55413
  res = combi_1.Combi.run(new Expressions.DDLTable(), tokens, version_1.defaultRelease);
55387
55414
  }
55415
+ if (res === undefined) {
55416
+ res = combi_1.Combi.run(new Expressions.DDLAspect(), tokens, version_1.defaultRelease);
55417
+ }
55418
+ if (res === undefined) {
55419
+ res = combi_1.Combi.run(new Expressions.DDLExtendType(), tokens, version_1.defaultRelease);
55420
+ }
55388
55421
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
55389
55422
  return undefined;
55390
55423
  }
55391
55424
  return this.parsedToResult(res[0]);
55392
55425
  }
55393
55426
  parsedToResult(node) {
55394
- var _a, _b;
55395
55427
  const fields = [];
55396
- let found = node.findDirectExpressions(Expressions.DDLStructureField);
55397
- found = found.concat(node.findDirectExpressions(Expressions.DDLTableField));
55398
- found = found.concat(node.findDirectExpressions(Expressions.DDLInclude));
55399
- for (const f of found) {
55400
- const name = ((_a = f.findDirectExpression(Expressions.DDLName)) === null || _a === void 0 ? void 0 : _a.concatTokens()) || "";
55401
- if (f.get() instanceof Expressions.DDLInclude) {
55402
- fields.push({
55403
- name: ".INCLUDE",
55404
- type: name,
55405
- key: false,
55406
- notNull: false,
55407
- });
55428
+ for (const child of node.getChildren()) {
55429
+ if (!(child instanceof nodes_1.ExpressionNode)) {
55430
+ continue;
55431
+ }
55432
+ const expr = child.get();
55433
+ const isField = expr instanceof Expressions.DDLStructureField
55434
+ || expr instanceof Expressions.DDLTableField
55435
+ || expr instanceof Expressions.DDLInclude
55436
+ || expr instanceof Expressions.DDLNamedInclude;
55437
+ if (!isField) {
55438
+ continue;
55439
+ }
55440
+ const key = this.hasKey(child);
55441
+ const notNull = this.hasNotNull(child);
55442
+ if (expr instanceof Expressions.DDLInclude) {
55443
+ const target = this.compactTokens(child.findDirectExpression(Expressions.DDLName));
55444
+ fields.push({ name: ".INCLUDE", type: target, key, notNull });
55445
+ }
55446
+ else if (expr instanceof Expressions.DDLNamedInclude) {
55447
+ const names = child.findDirectExpressions(Expressions.DDLName);
55448
+ const alias = this.compactTokens(names[0]);
55449
+ const target = this.compactTokens(names[1]);
55450
+ fields.push({ name: alias, type: target, key, notNull });
55408
55451
  }
55409
55452
  else {
55410
- const type = ((_b = f.findDirectExpression(Expressions.DDLType)) === null || _b === void 0 ? void 0 : _b.concatTokens()) || "";
55411
- fields.push({
55412
- name,
55413
- type,
55414
- key: false,
55415
- notNull: false,
55416
- });
55453
+ const name = this.compactTokens(child.findDirectExpression(Expressions.DDLName));
55454
+ const type = this.compactTokens(child.findDirectExpression(Expressions.DDLType));
55455
+ fields.push({ name, type, key, notNull });
55417
55456
  }
55418
55457
  }
55419
55458
  const result = {
55420
- name: node.findDirectExpression(Expressions.DDLName).concatTokens(),
55421
- kind: node.get() instanceof Expressions.DDLStructure ? DDLKind.Structure : DDLKind.Table,
55459
+ name: this.compactTokens(node.findDirectExpression(Expressions.DDLName)),
55460
+ kind: this.kindOf(node),
55422
55461
  fields,
55423
55462
  };
55424
55463
  return result;
55425
55464
  }
55465
+ compactTokens(node) {
55466
+ if (node === undefined) {
55467
+ return "";
55468
+ }
55469
+ return node.concatTokens().replace(/\s+/g, "");
55470
+ }
55471
+ hasKey(node) {
55472
+ var _a, _b, _c;
55473
+ for (const c of node.getChildren()) {
55474
+ const expr = (_b = (_a = c).get) === null || _b === void 0 ? void 0 : _b.call(_a);
55475
+ const ctor = (_c = expr === null || expr === void 0 ? void 0 : expr.constructor) === null || _c === void 0 ? void 0 : _c.name;
55476
+ if (ctor === "CDSAnnotation") {
55477
+ continue;
55478
+ }
55479
+ const tok = c.concatTokens().toUpperCase().trim();
55480
+ if (tok === "KEY") {
55481
+ return true;
55482
+ }
55483
+ if (tok !== "") {
55484
+ return false;
55485
+ }
55486
+ }
55487
+ return false;
55488
+ }
55489
+ hasNotNull(node) {
55490
+ var _a, _b, _c, _d;
55491
+ const children = node.getChildren();
55492
+ for (let i = 0; i < children.length - 1; i++) {
55493
+ const a = (_b = (_a = children[i]).concatTokens) === null || _b === void 0 ? void 0 : _b.call(_a).toUpperCase().trim();
55494
+ const b = (_d = (_c = children[i + 1]).concatTokens) === null || _d === void 0 ? void 0 : _d.call(_c).toUpperCase().trim();
55495
+ if (a === "NOT" && b === "NULL") {
55496
+ return true;
55497
+ }
55498
+ }
55499
+ return false;
55500
+ }
55501
+ kindOf(node) {
55502
+ const expr = node.get();
55503
+ if (expr instanceof Expressions.DDLStructure) {
55504
+ return DDLKind.Structure;
55505
+ }
55506
+ if (expr instanceof Expressions.DDLAspect) {
55507
+ return DDLKind.Aspect;
55508
+ }
55509
+ if (expr instanceof Expressions.DDLExtendType) {
55510
+ return DDLKind.ExtendType;
55511
+ }
55512
+ return DDLKind.Table;
55513
+ }
55426
55514
  }
55427
55515
  exports.DDLParser = DDLParser;
55428
55516
  //# sourceMappingURL=ddl_parser.js.map
55429
55517
 
55430
55518
  /***/ },
55431
55519
 
55520
+ /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_aspect.js"
55521
+ /*!*****************************************************************************!*\
55522
+ !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_aspect.js ***!
55523
+ \*****************************************************************************/
55524
+ (__unused_webpack_module, exports, __webpack_require__) {
55525
+
55526
+ "use strict";
55527
+
55528
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55529
+ exports.DDLAspect = void 0;
55530
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55531
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55532
+ const ddl_extend_1 = __webpack_require__(/*! ./ddl_extend */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_extend.js");
55533
+ const ddl_include_1 = __webpack_require__(/*! ./ddl_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js");
55534
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55535
+ const ddl_named_include_1 = __webpack_require__(/*! ./ddl_named_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_named_include.js");
55536
+ const ddl_table_field_1 = __webpack_require__(/*! ./ddl_table_field */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js");
55537
+ class DDLAspect extends combi_1.Expression {
55538
+ getRunnable() {
55539
+ const entry = (0, combi_1.altPrio)(ddl_named_include_1.DDLNamedInclude, ddl_include_1.DDLInclude, ddl_table_field_1.DDLTableField, ddl_extend_1.DDLExtend);
55540
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "DEFINE", "ASPECT", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)(entry), "}", (0, combi_1.optPrio)(";"));
55541
+ }
55542
+ }
55543
+ exports.DDLAspect = DDLAspect;
55544
+ //# sourceMappingURL=ddl_aspect.js.map
55545
+
55546
+ /***/ },
55547
+
55548
+ /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_clauses.js"
55549
+ /*!******************************************************************************!*\
55550
+ !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_clauses.js ***!
55551
+ \******************************************************************************/
55552
+ (__unused_webpack_module, exports, __webpack_require__) {
55553
+
55554
+ "use strict";
55555
+
55556
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55557
+ exports.DDLValueHelp = exports.DDLForeignKey = exports.DDLForeignKeyTarget = void 0;
55558
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55559
+ const ddl_literal_1 = __webpack_require__(/*! ./ddl_literal */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_literal.js");
55560
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55561
+ const ddl_where_1 = __webpack_require__(/*! ./ddl_where */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_where.js");
55562
+ class DDLForeignKeyTarget extends combi_1.Expression {
55563
+ getRunnable() {
55564
+ const cardinality = (0, combi_1.seq)("[", ddl_literal_1.DDLCardinalityValue, ".", ".", ddl_literal_1.DDLCardinalityValue, (0, combi_1.optPrio)((0, combi_1.seq)(",", ddl_literal_1.DDLCardinalityValue)), "]");
55565
+ return (0, combi_1.seq)((0, combi_1.optPrio)(cardinality), ddl_name_1.DDLName);
55566
+ }
55567
+ }
55568
+ exports.DDLForeignKeyTarget = DDLForeignKeyTarget;
55569
+ class DDLForeignKey extends combi_1.Expression {
55570
+ getRunnable() {
55571
+ return (0, combi_1.seq)("WITH", "FOREIGN", "KEY", DDLForeignKeyTarget, (0, combi_1.optPrio)(ddl_where_1.DDLWhere));
55572
+ }
55573
+ }
55574
+ exports.DDLForeignKey = DDLForeignKey;
55575
+ class DDLValueHelp extends combi_1.Expression {
55576
+ getRunnable() {
55577
+ return (0, combi_1.seq)("WITH", "VALUE", "HELP", ddl_name_1.DDLName, (0, combi_1.optPrio)(ddl_where_1.DDLWhere));
55578
+ }
55579
+ }
55580
+ exports.DDLValueHelp = DDLValueHelp;
55581
+ //# sourceMappingURL=ddl_clauses.js.map
55582
+
55583
+ /***/ },
55584
+
55585
+ /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_extend.js"
55586
+ /*!*****************************************************************************!*\
55587
+ !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_extend.js ***!
55588
+ \*****************************************************************************/
55589
+ (__unused_webpack_module, exports, __webpack_require__) {
55590
+
55591
+ "use strict";
55592
+
55593
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55594
+ exports.DDLExtend = void 0;
55595
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55596
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55597
+ const ddl_clauses_1 = __webpack_require__(/*! ./ddl_clauses */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_clauses.js");
55598
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55599
+ class DDLExtend extends combi_1.Expression {
55600
+ getRunnable() {
55601
+ const clause = (0, combi_1.alt)(ddl_clauses_1.DDLForeignKey, ddl_clauses_1.DDLValueHelp);
55602
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "EXTEND", ddl_name_1.DDLName, ":", (0, combi_1.plus)(clause), ";");
55603
+ }
55604
+ }
55605
+ exports.DDLExtend = DDLExtend;
55606
+ //# sourceMappingURL=ddl_extend.js.map
55607
+
55608
+ /***/ },
55609
+
55610
+ /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_extend_type.js"
55611
+ /*!**********************************************************************************!*\
55612
+ !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_extend_type.js ***!
55613
+ \**********************************************************************************/
55614
+ (__unused_webpack_module, exports, __webpack_require__) {
55615
+
55616
+ "use strict";
55617
+
55618
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55619
+ exports.DDLExtendType = void 0;
55620
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55621
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55622
+ const ddl_include_1 = __webpack_require__(/*! ./ddl_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js");
55623
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55624
+ const ddl_named_include_1 = __webpack_require__(/*! ./ddl_named_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_named_include.js");
55625
+ const ddl_structure_field_1 = __webpack_require__(/*! ./ddl_structure_field */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js");
55626
+ const ddl_table_field_1 = __webpack_require__(/*! ./ddl_table_field */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js");
55627
+ class DDLExtendType extends combi_1.Expression {
55628
+ getRunnable() {
55629
+ const entry = (0, combi_1.altPrio)(ddl_named_include_1.DDLNamedInclude, ddl_include_1.DDLInclude, ddl_table_field_1.DDLTableField, ddl_structure_field_1.DDLStructureField);
55630
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "EXTEND", "TYPE", ddl_name_1.DDLName, "WITH", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)(entry), "}", (0, combi_1.optPrio)(";"));
55631
+ }
55632
+ }
55633
+ exports.DDLExtendType = DDLExtendType;
55634
+ //# sourceMappingURL=ddl_extend_type.js.map
55635
+
55636
+ /***/ },
55637
+
55432
55638
  /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js"
55433
55639
  /*!******************************************************************************!*\
55434
55640
  !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js ***!
@@ -55440,10 +55646,13 @@ exports.DDLParser = DDLParser;
55440
55646
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55441
55647
  exports.DDLInclude = void 0;
55442
55648
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55649
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55650
+ const ddl_clauses_1 = __webpack_require__(/*! ./ddl_clauses */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_clauses.js");
55443
55651
  const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55444
55652
  class DDLInclude extends combi_1.Expression {
55445
55653
  getRunnable() {
55446
- return (0, combi_1.seq)("INCLUDE", ddl_name_1.DDLName, ";");
55654
+ const trailingClause = (0, combi_1.alt)(ddl_clauses_1.DDLForeignKey, ddl_clauses_1.DDLValueHelp);
55655
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), "INCLUDE", ddl_name_1.DDLName, (0, combi_1.optPrio)((0, combi_1.seq)("WITH", "SUFFIX", ddl_name_1.DDLName)), (0, combi_1.optPrio)("NOT NULL"), (0, combi_1.star)(trailingClause), ";");
55447
55656
  }
55448
55657
  }
55449
55658
  exports.DDLInclude = DDLInclude;
@@ -55451,6 +55660,34 @@ exports.DDLInclude = DDLInclude;
55451
55660
 
55452
55661
  /***/ },
55453
55662
 
55663
+ /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_literal.js"
55664
+ /*!******************************************************************************!*\
55665
+ !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_literal.js ***!
55666
+ \******************************************************************************/
55667
+ (__unused_webpack_module, exports, __webpack_require__) {
55668
+
55669
+ "use strict";
55670
+
55671
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55672
+ exports.DDLStringLiteral = exports.DDLCardinalityValue = void 0;
55673
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55674
+ const cds_integer_1 = __webpack_require__(/*! ../../cds/expressions/cds_integer */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js");
55675
+ class DDLCardinalityValue extends combi_1.Expression {
55676
+ getRunnable() {
55677
+ return (0, combi_1.altPrio)(cds_integer_1.CDSInteger, "*");
55678
+ }
55679
+ }
55680
+ exports.DDLCardinalityValue = DDLCardinalityValue;
55681
+ class DDLStringLiteral extends combi_1.Expression {
55682
+ getRunnable() {
55683
+ return (0, combi_1.regex)(/^'[^']*'$/);
55684
+ }
55685
+ }
55686
+ exports.DDLStringLiteral = DDLStringLiteral;
55687
+ //# sourceMappingURL=ddl_literal.js.map
55688
+
55689
+ /***/ },
55690
+
55454
55691
  /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js"
55455
55692
  /*!***************************************************************************!*\
55456
55693
  !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js ***!
@@ -55462,9 +55699,10 @@ exports.DDLInclude = DDLInclude;
55462
55699
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55463
55700
  exports.DDLName = void 0;
55464
55701
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55702
+ const cds_name_1 = __webpack_require__(/*! ../../cds/expressions/cds_name */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js");
55465
55703
  class DDLName extends combi_1.Expression {
55466
55704
  getRunnable() {
55467
- return (0, combi_1.regex)(/^\w+$/);
55705
+ return (0, combi_1.alt)(cds_name_1.CDSName, (0, combi_1.regex)(/^"[^"]*"$/));
55468
55706
  }
55469
55707
  }
55470
55708
  exports.DDLName = DDLName;
@@ -55472,6 +55710,53 @@ exports.DDLName = DDLName;
55472
55710
 
55473
55711
  /***/ },
55474
55712
 
55713
+ /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_named_include.js"
55714
+ /*!************************************************************************************!*\
55715
+ !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_named_include.js ***!
55716
+ \************************************************************************************/
55717
+ (__unused_webpack_module, exports, __webpack_require__) {
55718
+
55719
+ "use strict";
55720
+
55721
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55722
+ exports.DDLNamedInclude = void 0;
55723
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55724
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55725
+ const ddl_clauses_1 = __webpack_require__(/*! ./ddl_clauses */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_clauses.js");
55726
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55727
+ class DDLNamedInclude extends combi_1.Expression {
55728
+ getRunnable() {
55729
+ const trailingClause = (0, combi_1.alt)(ddl_clauses_1.DDLForeignKey, ddl_clauses_1.DDLValueHelp);
55730
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), ddl_name_1.DDLName, ":", "INCLUDE", ddl_name_1.DDLName, (0, combi_1.optPrio)((0, combi_1.seq)("WITH", "SUFFIX", ddl_name_1.DDLName)), (0, combi_1.optPrio)("NOT NULL"), (0, combi_1.star)(trailingClause), ";");
55731
+ }
55732
+ }
55733
+ exports.DDLNamedInclude = DDLNamedInclude;
55734
+ //# sourceMappingURL=ddl_named_include.js.map
55735
+
55736
+ /***/ },
55737
+
55738
+ /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_qualified_name.js"
55739
+ /*!*************************************************************************************!*\
55740
+ !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_qualified_name.js ***!
55741
+ \*************************************************************************************/
55742
+ (__unused_webpack_module, exports, __webpack_require__) {
55743
+
55744
+ "use strict";
55745
+
55746
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55747
+ exports.DDLQualifiedName = void 0;
55748
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55749
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55750
+ class DDLQualifiedName extends combi_1.Expression {
55751
+ getRunnable() {
55752
+ return (0, combi_1.seq)(ddl_name_1.DDLName, (0, combi_1.optPrio)((0, combi_1.seq)(".", ddl_name_1.DDLName)));
55753
+ }
55754
+ }
55755
+ exports.DDLQualifiedName = DDLQualifiedName;
55756
+ //# sourceMappingURL=ddl_qualified_name.js.map
55757
+
55758
+ /***/ },
55759
+
55475
55760
  /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure.js"
55476
55761
  /*!********************************************************************************!*\
55477
55762
  !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure.js ***!
@@ -55483,12 +55768,15 @@ exports.DDLName = DDLName;
55483
55768
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55484
55769
  exports.DDLStructure = void 0;
55485
55770
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55486
- const ddl_structure_field_1 = __webpack_require__(/*! ./ddl_structure_field */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js");
55487
- const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55771
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55488
55772
  const ddl_include_1 = __webpack_require__(/*! ./ddl_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js");
55773
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55774
+ const ddl_named_include_1 = __webpack_require__(/*! ./ddl_named_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_named_include.js");
55775
+ const ddl_structure_field_1 = __webpack_require__(/*! ./ddl_structure_field */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js");
55489
55776
  class DDLStructure extends combi_1.Expression {
55490
55777
  getRunnable() {
55491
- return (0, combi_1.seq)("DEFINE STRUCTURE", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)((0, combi_1.altPrio)(ddl_structure_field_1.DDLStructureField, ddl_include_1.DDLInclude)), "}");
55778
+ const entry = (0, combi_1.altPrio)(ddl_named_include_1.DDLNamedInclude, ddl_include_1.DDLInclude, ddl_structure_field_1.DDLStructureField);
55779
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "DEFINE", "STRUCTURE", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)(entry), "}", (0, combi_1.optPrio)(";"));
55492
55780
  }
55493
55781
  }
55494
55782
  exports.DDLStructure = DDLStructure;
@@ -55507,11 +55795,12 @@ exports.DDLStructure = DDLStructure;
55507
55795
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55508
55796
  exports.DDLStructureField = void 0;
55509
55797
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55798
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55510
55799
  const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55511
55800
  const ddl_type_1 = __webpack_require__(/*! ./ddl_type */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js");
55512
55801
  class DDLStructureField extends combi_1.Expression {
55513
55802
  getRunnable() {
55514
- return (0, combi_1.seq)(ddl_name_1.DDLName, ":", ddl_type_1.DDLType, ";");
55803
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), ddl_name_1.DDLName, ":", ddl_type_1.DDLType, (0, combi_1.optPrio)("NOT NULL"), ";");
55515
55804
  }
55516
55805
  }
55517
55806
  exports.DDLStructureField = DDLStructureField;
@@ -55530,12 +55819,16 @@ exports.DDLStructureField = DDLStructureField;
55530
55819
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55531
55820
  exports.DDLTable = void 0;
55532
55821
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55822
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55823
+ const ddl_extend_1 = __webpack_require__(/*! ./ddl_extend */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_extend.js");
55533
55824
  const ddl_include_1 = __webpack_require__(/*! ./ddl_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js");
55534
55825
  const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55826
+ const ddl_named_include_1 = __webpack_require__(/*! ./ddl_named_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_named_include.js");
55535
55827
  const ddl_table_field_1 = __webpack_require__(/*! ./ddl_table_field */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js");
55536
55828
  class DDLTable extends combi_1.Expression {
55537
55829
  getRunnable() {
55538
- return (0, combi_1.seq)("DEFINE TABLE", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)((0, combi_1.altPrio)(ddl_table_field_1.DDLTableField, ddl_include_1.DDLInclude)), "}");
55830
+ const entry = (0, combi_1.altPrio)(ddl_named_include_1.DDLNamedInclude, ddl_include_1.DDLInclude, ddl_table_field_1.DDLTableField, ddl_extend_1.DDLExtend);
55831
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "DEFINE", "TABLE", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)(entry), "}", (0, combi_1.optPrio)(";"));
55539
55832
  }
55540
55833
  }
55541
55834
  exports.DDLTable = DDLTable;
@@ -55554,11 +55847,14 @@ exports.DDLTable = DDLTable;
55554
55847
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55555
55848
  exports.DDLTableField = void 0;
55556
55849
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55850
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
55851
+ const ddl_clauses_1 = __webpack_require__(/*! ./ddl_clauses */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_clauses.js");
55557
55852
  const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55558
55853
  const ddl_type_1 = __webpack_require__(/*! ./ddl_type */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js");
55559
55854
  class DDLTableField extends combi_1.Expression {
55560
55855
  getRunnable() {
55561
- return (0, combi_1.seq)((0, combi_1.optPrio)("KEY"), ddl_name_1.DDLName, ":", ddl_type_1.DDLType, (0, combi_1.optPrio)("NOT NULL"), ";");
55856
+ const trailingClause = (0, combi_1.alt)(ddl_clauses_1.DDLForeignKey, ddl_clauses_1.DDLValueHelp);
55857
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), ddl_name_1.DDLName, ":", ddl_type_1.DDLType, (0, combi_1.optPrio)("NOT NULL"), (0, combi_1.star)(trailingClause), ";");
55562
55858
  }
55563
55859
  }
55564
55860
  exports.DDLTableField = DDLTableField;
@@ -55577,9 +55873,15 @@ exports.DDLTableField = DDLTableField;
55577
55873
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55578
55874
  exports.DDLType = void 0;
55579
55875
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55876
+ const cds_integer_1 = __webpack_require__(/*! ../../cds/expressions/cds_integer */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js");
55877
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js");
55580
55878
  class DDLType extends combi_1.Expression {
55581
55879
  getRunnable() {
55582
- return (0, combi_1.regex)(/^(abap\.)?\w+(\(\d+\))?$/);
55880
+ const decimals = (0, combi_1.seq)(",", cds_integer_1.CDSInteger);
55881
+ const lenSpec = (0, combi_1.seq)("(", cds_integer_1.CDSInteger, (0, combi_1.optPrio)(decimals), ")");
55882
+ const dotted = (0, combi_1.seq)(ddl_name_1.DDLName, ".", ddl_name_1.DDLName, (0, combi_1.optPrio)(lenSpec));
55883
+ const plain = (0, combi_1.seq)(ddl_name_1.DDLName, (0, combi_1.optPrio)(lenSpec));
55884
+ return (0, combi_1.altPrio)(dotted, plain);
55583
55885
  }
55584
55886
  }
55585
55887
  exports.DDLType = DDLType;
@@ -55587,6 +55889,31 @@ exports.DDLType = DDLType;
55587
55889
 
55588
55890
  /***/ },
55589
55891
 
55892
+ /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_where.js"
55893
+ /*!****************************************************************************!*\
55894
+ !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_where.js ***!
55895
+ \****************************************************************************/
55896
+ (__unused_webpack_module, exports, __webpack_require__) {
55897
+
55898
+ "use strict";
55899
+
55900
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55901
+ exports.DDLWhere = void 0;
55902
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
55903
+ const ddl_qualified_name_1 = __webpack_require__(/*! ./ddl_qualified_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_qualified_name.js");
55904
+ const ddl_literal_1 = __webpack_require__(/*! ./ddl_literal */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_literal.js");
55905
+ class DDLWhere extends combi_1.Expression {
55906
+ getRunnable() {
55907
+ const value = (0, combi_1.alt)(ddl_qualified_name_1.DDLQualifiedName, ddl_literal_1.DDLStringLiteral);
55908
+ const condition = (0, combi_1.seq)(ddl_qualified_name_1.DDLQualifiedName, "=", value);
55909
+ return (0, combi_1.seq)("WHERE", condition, (0, combi_1.star)((0, combi_1.seq)("AND", condition)));
55910
+ }
55911
+ }
55912
+ exports.DDLWhere = DDLWhere;
55913
+ //# sourceMappingURL=ddl_where.js.map
55914
+
55915
+ /***/ },
55916
+
55590
55917
  /***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/index.js"
55591
55918
  /*!************************************************************************!*\
55592
55919
  !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/index.js ***!
@@ -55610,13 +55937,21 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
55610
55937
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
55611
55938
  };
55612
55939
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55940
+ __exportStar(__webpack_require__(/*! ./ddl_aspect */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_aspect.js"), exports);
55941
+ __exportStar(__webpack_require__(/*! ./ddl_clauses */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_clauses.js"), exports);
55942
+ __exportStar(__webpack_require__(/*! ./ddl_extend */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_extend.js"), exports);
55943
+ __exportStar(__webpack_require__(/*! ./ddl_extend_type */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_extend_type.js"), exports);
55613
55944
  __exportStar(__webpack_require__(/*! ./ddl_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js"), exports);
55945
+ __exportStar(__webpack_require__(/*! ./ddl_literal */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_literal.js"), exports);
55614
55946
  __exportStar(__webpack_require__(/*! ./ddl_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js"), exports);
55947
+ __exportStar(__webpack_require__(/*! ./ddl_named_include */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_named_include.js"), exports);
55948
+ __exportStar(__webpack_require__(/*! ./ddl_qualified_name */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_qualified_name.js"), exports);
55615
55949
  __exportStar(__webpack_require__(/*! ./ddl_structure_field */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js"), exports);
55616
55950
  __exportStar(__webpack_require__(/*! ./ddl_structure */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure.js"), exports);
55617
55951
  __exportStar(__webpack_require__(/*! ./ddl_table_field */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js"), exports);
55618
55952
  __exportStar(__webpack_require__(/*! ./ddl_table */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table.js"), exports);
55619
55953
  __exportStar(__webpack_require__(/*! ./ddl_type */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js"), exports);
55954
+ __exportStar(__webpack_require__(/*! ./ddl_where */ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_where.js"), exports);
55620
55955
  //# sourceMappingURL=index.js.map
55621
55956
 
55622
55957
  /***/ },
@@ -56008,8 +56343,8 @@ var __importStar = (this && this.__importStar) || (function () {
56008
56343
  };
56009
56344
  })();
56010
56345
  Object.defineProperty(exports, "__esModule", ({ value: true }));
56011
- exports.SyntaxLogic = exports.ABAPObject = exports.Tokens = exports.ExpressionsCDS = exports.CDSParser = exports.LanguageServerTypes = exports.DDLParser = exports.AbstractFile = exports.ABAPFile = exports.MemoryFile = exports.Edits = exports.ReferenceType = exports.NativeSQL = exports.MacroContent = exports.MacroCall = exports.SpaghettiScopeNode = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.SkipLogic = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.ArtifactsABAP = exports.BuiltIn = exports.FormLengthStats = exports.FunctionLengthStats = exports.MethodLengthStats = exports.LanguageServer = exports.Registry = exports.CyclomaticComplexityStats = exports.versionToABAPRelease = exports.releaseAtLeast = exports.Release = exports.LanguageVersion = exports.Version = exports.Config = exports.Issue = void 0;
56012
- exports.LSPEdit = exports.RuleTag = exports.Severity = exports.Visibility = exports.Info = exports.Diagnostics = exports.Rename = exports.PrettyPrinter = exports.Position = exports.CurrentScope = exports.RulesRunner = exports.SpaghettiScope = void 0;
56346
+ exports.ABAPObject = exports.Tokens = exports.ExpressionsCDS = exports.CDSParser = exports.LanguageServerTypes = exports.DDLKind = exports.DDLParser = exports.AbstractFile = exports.ABAPFile = exports.MemoryFile = exports.Edits = exports.ReferenceType = exports.NativeSQL = exports.MacroContent = exports.MacroCall = exports.SpaghettiScopeNode = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.SkipLogic = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.ArtifactsABAP = exports.BuiltIn = exports.FormLengthStats = exports.FunctionLengthStats = exports.MethodLengthStats = exports.LanguageServer = exports.Registry = exports.CyclomaticComplexityStats = exports.versionToABAPRelease = exports.releaseAtLeast = exports.Release = exports.LanguageVersion = exports.Version = exports.Config = exports.Issue = void 0;
56347
+ exports.LSPEdit = exports.RuleTag = exports.Severity = exports.Visibility = exports.Info = exports.Diagnostics = exports.Rename = exports.PrettyPrinter = exports.Position = exports.CurrentScope = exports.RulesRunner = exports.SpaghettiScope = exports.SyntaxLogic = void 0;
56013
56348
  const issue_1 = __webpack_require__(/*! ./issue */ "./node_modules/@abaplint/core/build/src/issue.js");
56014
56349
  Object.defineProperty(exports, "Issue", ({ enumerable: true, get: function () { return issue_1.Issue; } }));
56015
56350
  const config_1 = __webpack_require__(/*! ./config */ "./node_modules/@abaplint/core/build/src/config.js");
@@ -56103,6 +56438,7 @@ const severity_1 = __webpack_require__(/*! ./severity */ "./node_modules/@abapli
56103
56438
  Object.defineProperty(exports, "Severity", ({ enumerable: true, get: function () { return severity_1.Severity; } }));
56104
56439
  const ddl_parser_1 = __webpack_require__(/*! ./ddl/ddl_parser */ "./node_modules/@abaplint/core/build/src/ddl/ddl_parser.js");
56105
56440
  Object.defineProperty(exports, "DDLParser", ({ enumerable: true, get: function () { return ddl_parser_1.DDLParser; } }));
56441
+ Object.defineProperty(exports, "DDLKind", ({ enumerable: true, get: function () { return ddl_parser_1.DDLKind; } }));
56106
56442
  const cds_parser_1 = __webpack_require__(/*! ./cds/cds_parser */ "./node_modules/@abaplint/core/build/src/cds/cds_parser.js");
56107
56443
  Object.defineProperty(exports, "CDSParser", ({ enumerable: true, get: function () { return cds_parser_1.CDSParser; } }));
56108
56444
  const rules_runner_1 = __webpack_require__(/*! ./rules_runner */ "./node_modules/@abaplint/core/build/src/rules_runner.js");
@@ -61241,6 +61577,13 @@ class DataDefinition extends _abstract_object_1.AbstractObject {
61241
61577
  }
61242
61578
  }
61243
61579
  }
61580
+ if (found === undefined) {
61581
+ // typed virtual element: VIRTUAL <name> : <type>
61582
+ const names = e.findAllExpressions(expressions_1.CDSName);
61583
+ if (e.findDirectTokenByText("VIRTUAL") !== undefined && names.length > 0) {
61584
+ found = names[0];
61585
+ }
61586
+ }
61244
61587
  if (found === undefined) {
61245
61588
  continue;
61246
61589
  }
@@ -68529,7 +68872,7 @@ class Registry {
68529
68872
  }
68530
68873
  static abaplintVersion() {
68531
68874
  // magic, see build script "version.js"
68532
- return "2.119.54";
68875
+ return "2.119.55";
68533
68876
  }
68534
68877
  getDDICReferences() {
68535
68878
  return this.ddicReferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler-cli",
3
- "version": "2.13.32",
3
+ "version": "2.13.33",
4
4
  "description": "Transpiler - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -27,8 +27,8 @@
27
27
  "author": "abaplint",
28
28
  "license": "MIT",
29
29
  "devDependencies": {
30
- "@abaplint/core": "^2.119.54",
31
- "@abaplint/transpiler": "^2.13.32",
30
+ "@abaplint/core": "^2.119.55",
31
+ "@abaplint/transpiler": "^2.13.33",
32
32
  "@types/glob": "^8.1.0",
33
33
  "@types/node": "^24.12.2",
34
34
  "@types/progress": "^2.0.7",