@abaplint/cli 2.83.4 → 2.83.5

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/cli.js +161 -18
  2. package/package.json +3 -3
package/build/cli.js CHANGED
@@ -9080,7 +9080,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9080
9080
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9081
9081
 
9082
9082
  "use strict";
9083
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSLexer = void 0;\r\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\n// todo: Keywords must be all uppercase, all lowercase, or in lowercase with an\r\n// uppercase initial letter. Other mixes of uppercase and lowercase are not allowed\r\nclass Stream {\r\n constructor(buffer) {\r\n this.buffer = buffer;\r\n }\r\n takeNext() {\r\n const next = this.buffer.substring(0, 1);\r\n this.buffer = this.buffer.substring(1);\r\n return next;\r\n }\r\n peekNext() {\r\n const next = this.buffer.substring(0, 1);\r\n return next;\r\n }\r\n length() {\r\n return this.buffer.length;\r\n }\r\n}\r\nclass Result {\r\n constructor() {\r\n this.result = [];\r\n }\r\n add(text, row, col) {\r\n if (text.length > 0) {\r\n this.result.push(new tokens_1.Identifier(new position_1.Position(row, col), text));\r\n }\r\n return \"\";\r\n }\r\n get() {\r\n return this.result;\r\n }\r\n}\r\nvar Mode;\r\n(function (Mode) {\r\n Mode[Mode[\"Default\"] = 0] = \"Default\";\r\n Mode[Mode[\"String\"] = 1] = \"String\";\r\n Mode[Mode[\"SingleLineComment\"] = 2] = \"SingleLineComment\";\r\n Mode[Mode[\"MultiLineComment\"] = 3] = \"MultiLineComment\";\r\n})(Mode || (Mode = {}));\r\nclass CDSLexer {\r\n static run(file) {\r\n const result = new Result();\r\n let mode = Mode.Default;\r\n let row = 1;\r\n let col = 1;\r\n let build = \"\";\r\n const stream = new Stream(file.getRaw());\r\n while (stream.length() > 0) {\r\n const next = stream.takeNext();\r\n const nextNext = stream.peekNext();\r\n col++;\r\n if (mode === Mode.String) {\r\n build += next;\r\n if (next === \"'\") {\r\n build = result.add(build, row, col);\r\n mode = Mode.Default;\r\n }\r\n continue;\r\n }\r\n if (mode === Mode.SingleLineComment) {\r\n if (next === \"\\n\") {\r\n mode = Mode.Default;\r\n }\r\n continue;\r\n }\r\n else if (mode === Mode.Default && next === \"/\" && nextNext === \"/\") {\r\n mode = Mode.SingleLineComment;\r\n build = result.add(build, row, col);\r\n continue;\r\n }\r\n switch (next) {\r\n case \"'\":\r\n mode = Mode.String;\r\n build += next;\r\n break;\r\n case \" \":\r\n build = result.add(build, row, col);\r\n break;\r\n case \"\\n\":\r\n build = result.add(build, row, col);\r\n row++;\r\n col = 0;\r\n break;\r\n case \";\":\r\n case \":\":\r\n case \",\":\r\n case \".\":\r\n case \"{\":\r\n case \"}\":\r\n case \"(\":\r\n case \")\":\r\n case \"[\":\r\n case \"]\":\r\n build = result.add(build, row, col);\r\n result.add(next, row, col);\r\n break;\r\n default:\r\n build += next;\r\n break;\r\n }\r\n }\r\n result.add(build, row, col);\r\n return result.get();\r\n }\r\n}\r\nexports.CDSLexer = CDSLexer;\r\n//# sourceMappingURL=cds_lexer.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/cds_lexer.js?");
9083
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSLexer = void 0;\r\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\n// todo: Keywords must be all uppercase, all lowercase, or in lowercase with an\r\n// uppercase initial letter. Other mixes of uppercase and lowercase are not allowed\r\nclass Stream {\r\n constructor(buffer) {\r\n this.buffer = buffer;\r\n }\r\n takeNext() {\r\n const next = this.buffer.substring(0, 1);\r\n this.buffer = this.buffer.substring(1);\r\n return next;\r\n }\r\n peekNext() {\r\n const next = this.buffer.substring(0, 1);\r\n return next;\r\n }\r\n length() {\r\n return this.buffer.length;\r\n }\r\n}\r\nclass Result {\r\n constructor() {\r\n this.result = [];\r\n }\r\n add(text, row, col) {\r\n if (text.length > 0) {\r\n this.result.push(new tokens_1.Identifier(new position_1.Position(row, col), text));\r\n }\r\n return \"\";\r\n }\r\n get() {\r\n return this.result;\r\n }\r\n}\r\nvar Mode;\r\n(function (Mode) {\r\n Mode[Mode[\"Default\"] = 0] = \"Default\";\r\n Mode[Mode[\"String\"] = 1] = \"String\";\r\n Mode[Mode[\"SingleLineComment\"] = 2] = \"SingleLineComment\";\r\n Mode[Mode[\"MultiLineComment\"] = 3] = \"MultiLineComment\";\r\n})(Mode || (Mode = {}));\r\nclass CDSLexer {\r\n static run(file) {\r\n const result = new Result();\r\n let mode = Mode.Default;\r\n let row = 1;\r\n let col = 1;\r\n let build = \"\";\r\n const stream = new Stream(file.getRaw().replace(/\\r/g, \"\").replace(/\\u00a0/g, \" \"));\r\n let next = \"\";\r\n while (stream.length() > 0) {\r\n const prev = next;\r\n next = stream.takeNext();\r\n const nextNext = stream.peekNext();\r\n col++;\r\n // string handling\r\n if (mode === Mode.String) {\r\n build += next;\r\n if (next === \"'\") {\r\n build = result.add(build, row, col);\r\n mode = Mode.Default;\r\n }\r\n continue;\r\n }\r\n // single line comment handling\r\n if (mode === Mode.SingleLineComment) {\r\n if (next === \"\\n\") {\r\n mode = Mode.Default;\r\n }\r\n continue;\r\n }\r\n else if (mode === Mode.Default && next === \"/\" && nextNext === \"/\") {\r\n mode = Mode.SingleLineComment;\r\n build = result.add(build, row, col);\r\n continue;\r\n }\r\n // multi line comment handling\r\n if (mode === Mode.MultiLineComment) {\r\n if (prev === \"*\" && next === \"/\") {\r\n mode = Mode.Default;\r\n }\r\n continue;\r\n }\r\n else if (mode === Mode.Default && next === \"/\" && nextNext === \"*\") {\r\n mode = Mode.MultiLineComment;\r\n build = result.add(build, row, col);\r\n continue;\r\n }\r\n switch (next) {\r\n case \"'\":\r\n mode = Mode.String;\r\n build += next;\r\n break;\r\n case \" \":\r\n build = result.add(build, row, col);\r\n break;\r\n case \"\\n\":\r\n build = result.add(build, row, col);\r\n row++;\r\n col = 0;\r\n break;\r\n case \";\":\r\n case \":\":\r\n case \",\":\r\n case \".\":\r\n case \"{\":\r\n case \"}\":\r\n case \"(\":\r\n case \")\":\r\n case \"[\":\r\n case \"]\":\r\n case \"+\":\r\n case \"-\":\r\n case \"*\":\r\n case \"/\":\r\n build = result.add(build, row, col);\r\n result.add(next, row, col);\r\n break;\r\n default:\r\n build += next;\r\n break;\r\n }\r\n }\r\n result.add(build, row, col);\r\n return result.get();\r\n }\r\n}\r\nexports.CDSLexer = CDSLexer;\r\n//# sourceMappingURL=cds_lexer.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/cds_lexer.js?");
9084
9084
 
9085
9085
  /***/ }),
9086
9086
 
@@ -9095,6 +9095,17 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9095
9095
 
9096
9096
  /***/ }),
9097
9097
 
9098
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js":
9099
+ /*!********************************************************************************!*\
9100
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js ***!
9101
+ \********************************************************************************/
9102
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9103
+
9104
+ "use strict";
9105
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSAggregate = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSAggregate extends combi_1.Expression {\r\n getRunnable() {\r\n const value = (0, combi_1.alt)(_1.CDSName, _1.CDSCast, _1.CDSCase);\r\n return (0, combi_1.seq)((0, combi_1.alt)(\"MAX\", \"MIN\", \"SUM\", \"AVG\", \"COUNT\"), \"(\", (0, combi_1.opt)(\"DISTINCT\"), value, \")\");\r\n }\r\n}\r\nexports.CDSAggregate = CDSAggregate;\r\n//# sourceMappingURL=cds_aggregate.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js?");
9106
+
9107
+ /***/ }),
9108
+
9098
9109
  /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js":
9099
9110
  /*!*********************************************************************************!*\
9100
9111
  !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js ***!
@@ -9102,7 +9113,51 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9102
9113
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9103
9114
 
9104
9115
  "use strict";
9105
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSAnnotation = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSAnnotation extends combi_1.Expression {\r\n getRunnable() {\r\n // todo: add all the known annotations\r\n const value = (0, combi_1.alt)(_1.CDSString, \"true\", \"false\", (0, combi_1.regex)(/^\\d+$/), (0, combi_1.seq)((0, combi_1.regex)(/^\\d+$/), \".\", (0, combi_1.regex)(/^\\d+$/)), (0, combi_1.regex)(/^#[\\w_]+$/));\r\n const namedot = (0, combi_1.seq)(_1.CDSName, (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n const valueNested = (0, combi_1.seq)(\"{\", namedot, \":\", value, (0, combi_1.star)((0, combi_1.seq)(\",\", namedot, \":\", value)), \"}\");\r\n const valueList = (0, combi_1.seq)(\"[\", (0, combi_1.alt)(value, valueNested), (0, combi_1.star)((0, combi_1.seq)(\",\", (0, combi_1.alt)(value, valueNested))), \"]\");\r\n return (0, combi_1.seq)((0, combi_1.regex)(/^@\\w+$/), (0, combi_1.star)((0, combi_1.seq)(\".\", (0, combi_1.regex)(/^\\w+$/))), (0, combi_1.opt)(\":\"), (0, combi_1.opt)((0, combi_1.alt)(valueList, valueNested, value)));\r\n }\r\n}\r\nexports.CDSAnnotation = CDSAnnotation;\r\n//# sourceMappingURL=cds_annotation.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js?");
9116
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSAnnotation = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_annotation_array_1 = __webpack_require__(/*! ./cds_annotation_array */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js\");\r\nclass CDSAnnotation extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)((0, combi_1.regex)(/^@\\w+$/), (0, combi_1.star)((0, combi_1.seq)(\".\", (0, combi_1.regex)(/^\\w+$/))), (0, combi_1.opt)(\":\"), (0, combi_1.opt)((0, combi_1.alt)(cds_annotation_array_1.CDSAnnotationArray, _1.CDSAnnotationObject, _1.CDSAnnotationSimple)));\r\n }\r\n}\r\nexports.CDSAnnotation = CDSAnnotation;\r\n//# sourceMappingURL=cds_annotation.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js?");
9117
+
9118
+ /***/ }),
9119
+
9120
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js":
9121
+ /*!***************************************************************************************!*\
9122
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js ***!
9123
+ \***************************************************************************************/
9124
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9125
+
9126
+ "use strict";
9127
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSAnnotationArray = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_annotation_simple_1 = __webpack_require__(/*! ./cds_annotation_simple */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js\");\r\nclass CDSAnnotationArray extends combi_1.Expression {\r\n getRunnable() {\r\n const value = (0, combi_1.alt)(cds_annotation_simple_1.CDSAnnotationSimple, _1.CDSAnnotationObject, CDSAnnotationArray);\r\n const valueList = (0, combi_1.seq)(\"[\", value, (0, combi_1.star)((0, combi_1.seq)(\",\", value)), \"]\");\r\n return valueList;\r\n }\r\n}\r\nexports.CDSAnnotationArray = CDSAnnotationArray;\r\n//# sourceMappingURL=cds_annotation_array.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js?");
9128
+
9129
+ /***/ }),
9130
+
9131
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_object.js":
9132
+ /*!****************************************************************************************!*\
9133
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_object.js ***!
9134
+ \****************************************************************************************/
9135
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9136
+
9137
+ "use strict";
9138
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSAnnotationObject = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_annotation_simple_1 = __webpack_require__(/*! ./cds_annotation_simple */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js\");\r\nclass CDSAnnotationObject extends combi_1.Expression {\r\n getRunnable() {\r\n const value = (0, combi_1.alt)(CDSAnnotationObject, _1.CDSAnnotationArray, cds_annotation_simple_1.CDSAnnotationSimple);\r\n const namedot = (0, combi_1.seq)(_1.CDSName, (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n const valueNested = (0, combi_1.seq)(\"{\", namedot, \":\", value, (0, combi_1.star)((0, combi_1.seq)(\",\", namedot, \":\", value)), \"}\");\r\n return valueNested;\r\n }\r\n}\r\nexports.CDSAnnotationObject = CDSAnnotationObject;\r\n//# sourceMappingURL=cds_annotation_object.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_object.js?");
9139
+
9140
+ /***/ }),
9141
+
9142
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js":
9143
+ /*!****************************************************************************************!*\
9144
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js ***!
9145
+ \****************************************************************************************/
9146
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9147
+
9148
+ "use strict";
9149
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSAnnotationSimple = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSAnnotationSimple extends combi_1.Expression {\r\n getRunnable() {\r\n const value = (0, combi_1.alt)(_1.CDSString, \"true\", \"false\", (0, combi_1.regex)(/^\\d+$/), (0, combi_1.seq)((0, combi_1.regex)(/^\\d+$/), \".\", (0, combi_1.regex)(/^\\d+$/)), (0, combi_1.regex)(/^#[\\w_]+$/));\r\n return value;\r\n }\r\n}\r\nexports.CDSAnnotationSimple = CDSAnnotationSimple;\r\n//# sourceMappingURL=cds_annotation_simple.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js?");
9150
+
9151
+ /***/ }),
9152
+
9153
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_arithmetics.js":
9154
+ /*!**********************************************************************************!*\
9155
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_arithmetics.js ***!
9156
+ \**********************************************************************************/
9157
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9158
+
9159
+ "use strict";
9160
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSArithmetics = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSArithmetics extends combi_1.Expression {\r\n getRunnable() {\r\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n const val = (0, combi_1.alt)((0, combi_1.regex)(/\\d+/), name, _1.CDSFunction, _1.CDSCase, _1.CDSCast, _1.CDSString);\r\n const operator = (0, combi_1.alt)(\"+\", \"-\", \"*\", \"/\");\r\n return (0, combi_1.seq)(val, operator, val);\r\n }\r\n}\r\nexports.CDSArithmetics = CDSArithmetics;\r\n//# sourceMappingURL=cds_arithmetics.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_arithmetics.js?");
9106
9161
 
9107
9162
  /***/ }),
9108
9163
 
@@ -9124,7 +9179,29 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9124
9179
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9125
9180
 
9126
9181
  "use strict";
9127
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSAssociation = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSAssociation extends combi_1.Expression {\r\n getRunnable() {\r\n const cardinality = (0, combi_1.seq)(\"[\", (0, combi_1.alt)(\"0\", \"1\"), (0, combi_1.opt)((0, combi_1.seq)(\".\", \".\", (0, combi_1.alt)(\"0\", \"1\", \"*\"))), \"]\");\r\n const as = (0, combi_1.seq)(\"AS\", _1.CDSName);\r\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.plus)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n const cond = (0, combi_1.seq)(name, \"=\", (0, combi_1.alt)(name, _1.CDSString));\r\n const and = (0, combi_1.seq)(\"AND\", cond);\r\n return (0, combi_1.seq)(\"ASSOCIATION\", cardinality, \"TO\", _1.CDSName, (0, combi_1.opt)(as), \"ON\", cond, (0, combi_1.star)(and));\r\n }\r\n}\r\nexports.CDSAssociation = CDSAssociation;\r\n//# sourceMappingURL=cds_association.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js?");
9182
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSAssociation = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_cardinality_1 = __webpack_require__(/*! ./cds_cardinality */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js\");\r\nclass CDSAssociation extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)(\"ASSOCIATION\", (0, combi_1.opt)(cds_cardinality_1.CDSCardinality), \"TO\", (0, combi_1.opt)(\"PARENT\"), _1.CDSName, (0, combi_1.opt)(_1.CDSAs), \"ON\", _1.CDSCondition);\r\n }\r\n}\r\nexports.CDSAssociation = CDSAssociation;\r\n//# sourceMappingURL=cds_association.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js?");
9183
+
9184
+ /***/ }),
9185
+
9186
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js":
9187
+ /*!**********************************************************************************!*\
9188
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js ***!
9189
+ \**********************************************************************************/
9190
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9191
+
9192
+ "use strict";
9193
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSCardinality = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSCardinality extends combi_1.Expression {\r\n getRunnable() {\r\n const cardinality = (0, combi_1.seq)(\"[\", (0, combi_1.alt)(\"0\", \"1\"), (0, combi_1.opt)((0, combi_1.seq)(\".\", \".\", (0, combi_1.alt)(\"0\", \"1\", \"*\"))), \"]\");\r\n return cardinality;\r\n }\r\n}\r\nexports.CDSCardinality = CDSCardinality;\r\n//# sourceMappingURL=cds_cardinality.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js?");
9194
+
9195
+ /***/ }),
9196
+
9197
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_case.js":
9198
+ /*!***************************************************************************!*\
9199
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_case.js ***!
9200
+ \***************************************************************************/
9201
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9202
+
9203
+ "use strict";
9204
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSCase = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSCase extends combi_1.Expression {\r\n getRunnable() {\r\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n const value = (0, combi_1.alt)(name, _1.CDSString, _1.CDSFunction, CDSCase, _1.CDSCast, _1.CDSArithmetics);\r\n const simple = (0, combi_1.seq)(\"CASE\", name, (0, combi_1.plus)((0, combi_1.seq)(\"WHEN\", value, \"THEN\", value)), \"ELSE\", value, \"END\");\r\n const complex = (0, combi_1.seq)(\"CASE\", (0, combi_1.plus)((0, combi_1.seq)(\"WHEN\", _1.CDSCondition, \"THEN\", value)), (0, combi_1.opt)((0, combi_1.seq)(\"ELSE\", value)), \"END\");\r\n return (0, combi_1.alt)(simple, complex);\r\n }\r\n}\r\nexports.CDSCase = CDSCase;\r\n//# sourceMappingURL=cds_case.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_case.js?");
9128
9205
 
9129
9206
  /***/ }),
9130
9207
 
@@ -9135,7 +9212,29 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9135
9212
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9136
9213
 
9137
9214
  "use strict";
9138
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSCast = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSCast extends combi_1.Expression {\r\n getRunnable() {\r\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n return (0, combi_1.seq)(\"CAST\", \"(\", (0, combi_1.alt)(name, _1.CDSFunction), \"AS\", _1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\"PRESERVING\", \"TYPE\")), \")\");\r\n }\r\n}\r\nexports.CDSCast = CDSCast;\r\n//# sourceMappingURL=cds_cast.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js?");
9215
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSCast = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSCast extends combi_1.Expression {\r\n getRunnable() {\r\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n return (0, combi_1.seq)(\"CAST\", \"(\", (0, combi_1.alt)(name, _1.CDSFunction, _1.CDSCase, CDSCast, _1.CDSString, _1.CDSArithmetics), \"AS\", _1.CDSType, (0, combi_1.opt)((0, combi_1.seq)(\"PRESERVING\", \"TYPE\")), \")\");\r\n }\r\n}\r\nexports.CDSCast = CDSCast;\r\n//# sourceMappingURL=cds_cast.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js?");
9216
+
9217
+ /***/ }),
9218
+
9219
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_composition.js":
9220
+ /*!**********************************************************************************!*\
9221
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_composition.js ***!
9222
+ \**********************************************************************************/
9223
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9224
+
9225
+ "use strict";
9226
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSComposition = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_cardinality_1 = __webpack_require__(/*! ./cds_cardinality */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js\");\r\nclass CDSComposition extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)(\"COMPOSITION\", (0, combi_1.opt)(cds_cardinality_1.CDSCardinality), \"OF\", _1.CDSName, (0, combi_1.opt)(_1.CDSAs));\r\n }\r\n}\r\nexports.CDSComposition = CDSComposition;\r\n//# sourceMappingURL=cds_composition.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_composition.js?");
9227
+
9228
+ /***/ }),
9229
+
9230
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js":
9231
+ /*!********************************************************************************!*\
9232
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js ***!
9233
+ \********************************************************************************/
9234
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9235
+
9236
+ "use strict";
9237
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSCondition = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSCondition extends combi_1.Expression {\r\n getRunnable() {\r\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", (0, combi_1.alt)(_1.CDSName, _1.CDSString))));\r\n const eq = (0, combi_1.seq)(name, (0, combi_1.alt)(\"=\", \"<>\", \"<\", \">\", \">=\", \"<=\"), (0, combi_1.alt)(name, _1.CDSFunction, _1.CDSString));\r\n const isInitial = (0, combi_1.seq)(name, \"IS INITIAL\");\r\n const isNotInitial = (0, combi_1.seq)(name, \"IS NOT INITIAL\");\r\n const isNull = (0, combi_1.seq)(name, \"IS NULL\");\r\n const isNotNull = (0, combi_1.seq)(name, \"IS NOT NULL\");\r\n const condition = (0, combi_1.alt)(eq, isNull, isNotNull, isInitial, isNotInitial);\r\n const paren = (0, combi_1.seq)(\"(\", CDSCondition, \")\");\r\n return (0, combi_1.seq)((0, combi_1.alt)(condition, paren), (0, combi_1.star)((0, combi_1.seq)((0, combi_1.alt)(\"AND\", \"OR\"), (0, combi_1.alt)(condition, paren))));\r\n }\r\n}\r\nexports.CDSCondition = CDSCondition;\r\n//# sourceMappingURL=cds_condition.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js?");
9139
9238
 
9140
9239
  /***/ }),
9141
9240
 
@@ -9146,7 +9245,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9146
9245
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9147
9246
 
9148
9247
  "use strict";
9149
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSDefineAbstract = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_name_1 = __webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\");\r\nclass CDSDefineAbstract extends combi_1.Expression {\r\n getRunnable() {\r\n const field = (0, combi_1.seq)((0, combi_1.str)(\"KEY\"), cds_name_1.CDSName, \":\", cds_name_1.CDSName, \";\");\r\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)(\"DEFINE ABSTRACT ENTITY\"), cds_name_1.CDSName, (0, combi_1.str)(\"{\"), (0, combi_1.plus)(field), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(\";\"));\r\n }\r\n}\r\nexports.CDSDefineAbstract = CDSDefineAbstract;\r\n//# sourceMappingURL=cds_define_abstract.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js?");
9248
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSDefineAbstract = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_name_1 = __webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\");\r\nclass CDSDefineAbstract extends combi_1.Expression {\r\n getRunnable() {\r\n const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)(\"KEY\"), cds_name_1.CDSName, \":\", cds_name_1.CDSName, \";\");\r\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)(\"DEFINE ABSTRACT ENTITY\"), cds_name_1.CDSName, (0, combi_1.str)(\"{\"), (0, combi_1.plus)(field), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(\";\"));\r\n }\r\n}\r\nexports.CDSDefineAbstract = CDSDefineAbstract;\r\n//# sourceMappingURL=cds_define_abstract.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js?");
9150
9249
 
9151
9250
  /***/ }),
9152
9251
 
@@ -9157,7 +9256,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9157
9256
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9158
9257
 
9159
9258
  "use strict";
9160
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSDefineView = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_name_1 = __webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\");\r\nconst cds_select_1 = __webpack_require__(/*! ./cds_select */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js\");\r\nclass CDSDefineView extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)(\"DEFINE VIEW\"), cds_name_1.CDSName, \"AS\", cds_select_1.CDSSelect, (0, combi_1.opt)(\";\"));\r\n }\r\n}\r\nexports.CDSDefineView = CDSDefineView;\r\n//# sourceMappingURL=cds_define_view.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js?");
9259
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSDefineView = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst __1 = __webpack_require__(/*! ../.. */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_name_1 = __webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\");\r\nconst cds_select_1 = __webpack_require__(/*! ./cds_select */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js\");\r\nconst cds_with_parameters_1 = __webpack_require__(/*! ./cds_with_parameters */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js\");\r\nclass CDSDefineView extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), \"DEFINE\", (0, combi_1.opt)(\"ROOT\"), \"VIEW\", (0, combi_1.ver)(__1.Version.v755, (0, combi_1.opt)(\"ENTITY\")), cds_name_1.CDSName, (0, combi_1.opt)(cds_with_parameters_1.CDSWithParameters), \"AS\", cds_select_1.CDSSelect, (0, combi_1.opt)(\";\"));\r\n }\r\n}\r\nexports.CDSDefineView = CDSDefineView;\r\n//# sourceMappingURL=cds_define_view.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js?");
9161
9260
 
9162
9261
  /***/ }),
9163
9262
 
@@ -9168,7 +9267,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9168
9267
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9169
9268
 
9170
9269
  "use strict";
9171
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSElement = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_as_1 = __webpack_require__(/*! ./cds_as */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js\");\r\nconst cds_cast_1 = __webpack_require__(/*! ./cds_cast */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js\");\r\nclass CDSElement extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)(\"KEY\"), (0, combi_1.alt)((0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName))), cds_cast_1.CDSCast), (0, combi_1.optPrio)(cds_as_1.CDSAs));\r\n }\r\n}\r\nexports.CDSElement = CDSElement;\r\n//# sourceMappingURL=cds_element.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js?");
9270
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSElement = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_as_1 = __webpack_require__(/*! ./cds_as */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js\");\r\nconst cds_cast_1 = __webpack_require__(/*! ./cds_cast */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js\");\r\nclass CDSElement extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)(\"KEY\"), (0, combi_1.alt)((0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)(_1.CDSParameters), (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName, (0, combi_1.opt)(_1.CDSParameters)))), cds_cast_1.CDSCast, _1.CDSAggregate, _1.CDSString, _1.CDSFunction, (0, combi_1.regex)(/^\\d+$/), _1.CDSArithmetics, _1.CDSCase), (0, combi_1.opt)(cds_as_1.CDSAs));\r\n }\r\n}\r\nexports.CDSElement = CDSElement;\r\n//# sourceMappingURL=cds_element.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js?");
9172
9271
 
9173
9272
  /***/ }),
9174
9273
 
@@ -9179,7 +9278,18 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9179
9278
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9180
9279
 
9181
9280
  "use strict";
9182
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSFunction = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSFunction extends combi_1.Expression {\r\n getRunnable() {\r\n const input = (0, combi_1.alt)(_1.CDSName, (0, combi_1.regex)(/^\\d+$/));\r\n const coalesce = (0, combi_1.seq)(\"COALESCE\", \"(\", input, \",\", input, \")\");\r\n const concat = (0, combi_1.seq)(\"CONCAT\", \"(\", input, \",\", input, \")\");\r\n const concat_with_space = (0, combi_1.seq)(\"CONCAT_WITH_SPACE\", \"(\", input, \",\", input, \",\", input, \")\");\r\n const substring = (0, combi_1.seq)(\"SUBSTRING\", \"(\", input, \",\", input, \",\", input, \")\");\r\n return (0, combi_1.alt)(substring, coalesce, concat, concat_with_space);\r\n }\r\n}\r\nexports.CDSFunction = CDSFunction;\r\n//# sourceMappingURL=cds_function.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js?");
9281
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSFunction = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSFunction extends combi_1.Expression {\r\n getRunnable() {\r\n const qualified = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)(_1.CDSParameters), (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName, (0, combi_1.opt)(_1.CDSParameters))));\r\n const input = (0, combi_1.alt)(qualified, (0, combi_1.regex)(/^\\d+$/), _1.CDSCast, CDSFunction, _1.CDSArithmetics, _1.CDSCase, _1.CDSString);\r\n const coalesce = (0, combi_1.seq)(\"COALESCE\", \"(\", input, \",\", input, \")\");\r\n const concat = (0, combi_1.seq)(\"CONCAT\", \"(\", input, \",\", input, \")\");\r\n const concat_with_space = (0, combi_1.seq)(\"CONCAT_WITH_SPACE\", \"(\", input, \",\", input, \",\", input, \")\");\r\n const dats_add_days = (0, combi_1.seq)(\"DATS_ADD_DAYS\", \"(\", input, \",\", input, \",\", input, \")\");\r\n const dats_add_months = (0, combi_1.seq)(\"DATS_ADD_MONTHS\", \"(\", input, \",\", input, \",\", input, \")\");\r\n const dats_days_between = (0, combi_1.seq)(\"DATS_DAYS_BETWEEN\", \"(\", input, \",\", input, \")\");\r\n const dats_is_valid = (0, combi_1.seq)(\"DATS_IS_VALID\", \"(\", input, \")\");\r\n const substring = (0, combi_1.seq)(\"SUBSTRING\", \"(\", input, \",\", input, \",\", input, \")\");\r\n const tstmp_to_dats = (0, combi_1.seq)(\"TSTMP_TO_DATS\", \"(\", input, \",\", input, \",\", input, \",\", input, \")\");\r\n const tstmp_to_tims = (0, combi_1.seq)(\"TSTMP_TO_TIMS\", \"(\", input, \",\", input, \",\", input, \",\", input, \")\");\r\n const tstmp_to_dst = (0, combi_1.seq)(\"TSTMP_TO_DST\", \"(\", input, \",\", input, \",\", input, \",\", input, \")\");\r\n const dats_tims_to_tstmp = (0, combi_1.seq)(\"DATS_TIMS_TO_TSTMP\", \"(\", input, \",\", input, \",\", input, \",\", input, \",\", input, \")\");\r\n const tstmp_is_valid = (0, combi_1.seq)(\"TSTMP_IS_VALID\", \"(\", input, \")\");\r\n const tstmp_current_utctimestamp = (0, combi_1.seq)(\"TSTMP_CURRENT_UTCTIMESTAMP\", \"(\", \")\");\r\n const tstmp_seconds_between = (0, combi_1.seq)(\"TSTMP_SECONDS_BETWEEN\", \"(\", input, \",\", input, \",\", input, \")\");\r\n const tstmp_add_seconds = (0, combi_1.seq)(\"TSTMP_ADD_SECONDS\", \"(\", input, \",\", input, \",\", input, \")\");\r\n const abap_system_timezone = (0, combi_1.seq)(\"ABAP_SYSTEM_TIMEZONE\", \"(\", input, \",\", input, \")\");\r\n const abap_user_timezone = (0, combi_1.seq)(\"ABAP_USER_TIMEZONE\", \"(\", input, \",\", input, \",\", input, \")\");\r\n return (0, combi_1.alt)(substring, coalesce, tstmp_to_dats, concat, tstmp_to_tims, concat_with_space, dats_is_valid, dats_days_between, tstmp_add_seconds, tstmp_seconds_between, tstmp_current_utctimestamp, tstmp_is_valid, abap_system_timezone, abap_user_timezone, dats_add_days, dats_add_months, tstmp_to_dst, dats_tims_to_tstmp);\r\n }\r\n}\r\nexports.CDSFunction = CDSFunction;\r\n//# sourceMappingURL=cds_function.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js?");
9282
+
9283
+ /***/ }),
9284
+
9285
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js":
9286
+ /*!*******************************************************************************!*\
9287
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js ***!
9288
+ \*******************************************************************************/
9289
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9290
+
9291
+ "use strict";
9292
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSGroupBy = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSGroupBy extends combi_1.Expression {\r\n getRunnable() {\r\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n return (0, combi_1.seq)(\"GROUP BY\", name, (0, combi_1.star)((0, combi_1.seq)(\",\", name)));\r\n }\r\n}\r\nexports.CDSGroupBy = CDSGroupBy;\r\n//# sourceMappingURL=cds_group_by.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js?");
9183
9293
 
9184
9294
  /***/ }),
9185
9295
 
@@ -9190,7 +9300,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9190
9300
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9191
9301
 
9192
9302
  "use strict";
9193
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSJoin = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSJoin extends combi_1.Expression {\r\n getRunnable() {\r\n const name = (0, combi_1.seq)(_1.CDSName, \".\", _1.CDSName);\r\n return (0, combi_1.seq)(\"INNER JOIN\", _1.CDSSource, \"ON\", name, \"=\", name);\r\n }\r\n}\r\nexports.CDSJoin = CDSJoin;\r\n//# sourceMappingURL=cds_join.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js?");
9303
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSJoin = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_condition_1 = __webpack_require__(/*! ./cds_condition */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js\");\r\nclass CDSJoin extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)(\"INNER\", \"LEFT OUTER\", \"LEFT OUTER TO ONE\")), \"JOIN\", _1.CDSSource, \"ON\", cds_condition_1.CDSCondition);\r\n }\r\n}\r\nexports.CDSJoin = CDSJoin;\r\n//# sourceMappingURL=cds_join.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js?");
9194
9304
 
9195
9305
  /***/ }),
9196
9306
 
@@ -9201,7 +9311,18 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9201
9311
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9202
9312
 
9203
9313
  "use strict";
9204
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSName = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSName extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.regex)(/^\\$?[\\w_]+$/);\r\n }\r\n}\r\nexports.CDSName = CDSName;\r\n//# sourceMappingURL=cds_name.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js?");
9314
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSName = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSName extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)((0, combi_1.opt)(\":\"), (0, combi_1.regex)(/^\\$?#?[\\w_]+$/));\r\n }\r\n}\r\nexports.CDSName = CDSName;\r\n//# sourceMappingURL=cds_name.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js?");
9315
+
9316
+ /***/ }),
9317
+
9318
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters.js":
9319
+ /*!*********************************************************************************!*\
9320
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters.js ***!
9321
+ \*********************************************************************************/
9322
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9323
+
9324
+ "use strict";
9325
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSParameters = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSParameters extends combi_1.Expression {\r\n getRunnable() {\r\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n const value = (0, combi_1.alt)(name, _1.CDSString);\r\n return (0, combi_1.seq)(\"[\", (0, combi_1.regex)(/\\d+/), \":\", name, \"=\", value, (0, combi_1.star)((0, combi_1.seq)(\"AND\", name, \"=\", value)), \"]\");\r\n }\r\n}\r\nexports.CDSParameters = CDSParameters;\r\n//# sourceMappingURL=cds_parameters.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters.js?");
9205
9326
 
9206
9327
  /***/ }),
9207
9328
 
@@ -9212,7 +9333,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9212
9333
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9213
9334
 
9214
9335
  "use strict";
9215
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSSelect = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_association_1 = __webpack_require__(/*! ./cds_association */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js\");\r\nconst cds_element_1 = __webpack_require__(/*! ./cds_element */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js\");\r\nconst cds_join_1 = __webpack_require__(/*! ./cds_join */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js\");\r\nclass CDSSelect extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)((0, combi_1.str)(\"SELECT FROM\"), _1.CDSSource, (0, combi_1.opt)(cds_join_1.CDSJoin), (0, combi_1.star)(cds_association_1.CDSAssociation), (0, combi_1.str)(\"{\"), (0, combi_1.plus)(cds_element_1.CDSElement), (0, combi_1.star)((0, combi_1.seq)(\",\", cds_element_1.CDSElement)), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(_1.CDSWhere));\r\n }\r\n}\r\nexports.CDSSelect = CDSSelect;\r\n//# sourceMappingURL=cds_select.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js?");
9336
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSSelect = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst cds_association_1 = __webpack_require__(/*! ./cds_association */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js\");\r\nconst cds_element_1 = __webpack_require__(/*! ./cds_element */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js\");\r\nconst cds_join_1 = __webpack_require__(/*! ./cds_join */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js\");\r\nclass CDSSelect extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)(\"SELECT\", (0, combi_1.opt)(\"DISTINCT\"), \"FROM\", _1.CDSSource, (0, combi_1.star)(cds_join_1.CDSJoin), (0, combi_1.star)(_1.CDSComposition), (0, combi_1.star)(cds_association_1.CDSAssociation), (0, combi_1.star)(_1.CDSComposition), (0, combi_1.str)(\"{\"), (0, combi_1.plus)(cds_element_1.CDSElement), (0, combi_1.star)((0, combi_1.seq)(\",\", cds_element_1.CDSElement)), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(_1.CDSGroupBy), (0, combi_1.opt)(_1.CDSWhere), (0, combi_1.opt)((0, combi_1.seq)(\"UNION\", (0, combi_1.opt)(\"ALL\"), CDSSelect)));\r\n }\r\n}\r\nexports.CDSSelect = CDSSelect;\r\n//# sourceMappingURL=cds_select.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js?");
9216
9337
 
9217
9338
  /***/ }),
9218
9339
 
@@ -9234,7 +9355,18 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9234
9355
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9235
9356
 
9236
9357
  "use strict";
9237
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSString = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSString extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.regex)(/^'[\\w: -_]+'$/);\r\n }\r\n}\r\nexports.CDSString = CDSString;\r\n//# sourceMappingURL=cds_string.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js?");
9358
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSString = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSString extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.regex)(/^'[\\w: -_]*'$/);\r\n }\r\n}\r\nexports.CDSString = CDSString;\r\n//# sourceMappingURL=cds_string.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js?");
9359
+
9360
+ /***/ }),
9361
+
9362
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js":
9363
+ /*!***************************************************************************!*\
9364
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js ***!
9365
+ \***************************************************************************/
9366
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9367
+
9368
+ "use strict";
9369
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSType = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSType extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)), (0, combi_1.opt)((0, combi_1.seq)(\"(\", (0, combi_1.regex)(/\\d+/), \")\")));\r\n }\r\n}\r\nexports.CDSType = CDSType;\r\n//# sourceMappingURL=cds_type.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js?");
9238
9370
 
9239
9371
  /***/ }),
9240
9372
 
@@ -9245,7 +9377,18 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9245
9377
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9246
9378
 
9247
9379
  "use strict";
9248
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSWhere = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSWhere extends combi_1.Expression {\r\n getRunnable() {\r\n const field = (0, combi_1.seq)(_1.CDSName, (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName)));\r\n const condition = (0, combi_1.seq)(field, \"=\", (0, combi_1.alt)(_1.CDSString, field));\r\n return (0, combi_1.seq)(\"WHERE\", condition, (0, combi_1.star)((0, combi_1.seq)(\"AND\", condition)));\r\n }\r\n}\r\nexports.CDSWhere = CDSWhere;\r\n//# sourceMappingURL=cds_where.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_where.js?");
9380
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSWhere = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSWhere extends combi_1.Expression {\r\n getRunnable() {\r\n return (0, combi_1.seq)(\"WHERE\", _1.CDSCondition);\r\n }\r\n}\r\nexports.CDSWhere = CDSWhere;\r\n//# sourceMappingURL=cds_where.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_where.js?");
9381
+
9382
+ /***/ }),
9383
+
9384
+ /***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js":
9385
+ /*!**************************************************************************************!*\
9386
+ !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js ***!
9387
+ \**************************************************************************************/
9388
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9389
+
9390
+ "use strict";
9391
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CDSWithParameters = void 0;\r\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nclass CDSWithParameters extends combi_1.Expression {\r\n getRunnable() {\r\n const param = (0, combi_1.seq)(_1.CDSName, \":\", _1.CDSType);\r\n return (0, combi_1.seq)(\"wITH PARAMETERS\", param, (0, combi_1.star)((0, combi_1.seq)(\",\", param)));\r\n }\r\n}\r\nexports.CDSWithParameters = CDSWithParameters;\r\n//# sourceMappingURL=cds_with_parameters.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js?");
9249
9392
 
9250
9393
  /***/ }),
9251
9394
 
@@ -9256,7 +9399,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9256
9399
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9257
9400
 
9258
9401
  "use strict";
9259
- eval("\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./cds_annotation */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_as */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_association */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_cast */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_define_view */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_define_abstract */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_element */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_function */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_join */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_select */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_source */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_source.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_where */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_where.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_string */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js\"), exports);\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/index.js?");
9402
+ eval("\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./cds_aggregate */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_aggregate */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_annotation_array */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_annotation_object */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_object.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_annotation_simple */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_annotation */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_arithmetics */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_arithmetics.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_as */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_association */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_cardinality */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_case */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_cast */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_composition */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_composition.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_condition */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_define_abstract */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_define_view */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_element */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_function */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_group_by */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_join */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_parameters */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_select */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_source */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_source.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_string */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_type */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_where */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_where.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cds_with_parameters */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js\"), exports);\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/cds/expressions/index.js?");
9260
9403
 
9261
9404
  /***/ }),
9262
9405
 
@@ -9300,7 +9443,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9300
9443
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9301
9444
 
9302
9445
  "use strict";
9303
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DDLLexer = void 0;\r\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nclass DDLLexer {\r\n static run(file) {\r\n const step1 = [];\r\n const lines = file.getRaw().replace(/\\c/g, \"\").split(\"\\n\");\r\n for (const l of lines) {\r\n if (l.startsWith(\"@\")) {\r\n continue; // skip annotations for now\r\n }\r\n step1.push(...l.split(\" \"));\r\n }\r\n const step2 = [];\r\n for (const t of step1) {\r\n if (t === \"\") {\r\n continue;\r\n }\r\n else if (t.endsWith(\";\")) {\r\n step2.push(t.substr(0, t.length - 1));\r\n step2.push(\";\");\r\n }\r\n else {\r\n step2.push(t);\r\n }\r\n }\r\n return step2.map(t => new tokens_1.Identifier(new position_1.Position(1, 1), t));\r\n }\r\n}\r\nexports.DDLLexer = DDLLexer;\r\n//# sourceMappingURL=ddl_lexer.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js?");
9446
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DDLLexer = void 0;\r\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nclass DDLLexer {\r\n static run(file) {\r\n const step1 = [];\r\n const lines = file.getRaw().replace(/\\r/g, \"\").split(\"\\n\");\r\n for (const l of lines) {\r\n if (l.startsWith(\"@\")) {\r\n continue; // skip annotations for now\r\n }\r\n step1.push(...l.split(\" \"));\r\n }\r\n const step2 = [];\r\n for (const t of step1) {\r\n if (t === \"\") {\r\n continue;\r\n }\r\n else if (t.endsWith(\";\")) {\r\n step2.push(t.substr(0, t.length - 1));\r\n step2.push(\";\");\r\n }\r\n else {\r\n step2.push(t);\r\n }\r\n }\r\n return step2.map(t => new tokens_1.Identifier(new position_1.Position(1, 1), t));\r\n }\r\n}\r\nexports.DDLLexer = DDLLexer;\r\n//# sourceMappingURL=ddl_lexer.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js?");
9304
9447
 
9305
9448
  /***/ }),
9306
9449
 
@@ -9982,7 +10125,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
9982
10125
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9983
10126
 
9984
10127
  "use strict";
9985
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DataDefinition = void 0;\r\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\r\nconst cds_parser_1 = __webpack_require__(/*! ../cds/cds_parser */ \"./node_modules/@abaplint/core/build/src/cds/cds_parser.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../cds/expressions */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\r\nclass DataDefinition extends _abstract_object_1.AbstractObject {\r\n constructor() {\r\n super(...arguments);\r\n this.sqlViewName = undefined;\r\n this.parserError = undefined;\r\n this.fieldNames = [];\r\n this.sources = [];\r\n }\r\n getType() {\r\n return \"DDLS\";\r\n }\r\n getAllowedNaming() {\r\n return {\r\n maxLength: 40,\r\n allowNamespace: true,\r\n };\r\n }\r\n getSQLViewName() {\r\n return this.sqlViewName;\r\n }\r\n getDescription() {\r\n // todo\r\n return undefined;\r\n }\r\n parseType(_reg) {\r\n this.parse();\r\n if (this.fieldNames.length === 0) {\r\n return new basic_1.VoidType(\"DDLS:todo\");\r\n }\r\n else {\r\n const components = [];\r\n for (const f of this.fieldNames) {\r\n components.push({\r\n name: f,\r\n type: new basic_1.VoidType(\"DDLS:fieldname\"),\r\n });\r\n }\r\n return new basic_1.StructureType(components);\r\n }\r\n }\r\n listSources() {\r\n return this.sources;\r\n }\r\n setDirty() {\r\n this.sqlViewName = undefined;\r\n this.parserError = undefined;\r\n this.fieldNames = [];\r\n this.sources = [];\r\n super.setDirty();\r\n }\r\n findSourceFile() {\r\n return this.getFiles().find(f => f.getFilename().endsWith(\".asddls\"));\r\n }\r\n hasParserError() {\r\n return this.parserError;\r\n }\r\n parse() {\r\n var _a;\r\n if (this.isDirty() === false) {\r\n return { updated: false, runtime: 0 };\r\n }\r\n this.sqlViewName = undefined;\r\n const match = (_a = this.findSourceFile()) === null || _a === void 0 ? void 0 : _a.getRaw().match(/@AbapCatalog\\.sqlViewName: '(\\w+)'/);\r\n if (match) {\r\n this.sqlViewName = match[1].toUpperCase();\r\n }\r\n const tree = new cds_parser_1.CDSParser().parse(this.findSourceFile());\r\n if (tree) {\r\n this.findFieldNames(tree);\r\n this.findSources(tree);\r\n }\r\n else {\r\n this.parserError = true;\r\n }\r\n this.dirty = false;\r\n return { updated: true, runtime: 0 };\r\n }\r\n findFieldNames(tree) {\r\n var _a;\r\n this.fieldNames = [];\r\n for (const e of tree.findAllExpressions(expressions_1.CDSElement)) {\r\n let found = (_a = e.findDirectExpression(expressions_1.CDSAs)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(expressions_1.CDSName);\r\n if (found === undefined) {\r\n found = e.findDirectExpression(expressions_1.CDSName);\r\n }\r\n if (found === undefined) {\r\n continue;\r\n }\r\n this.fieldNames.push(found === null || found === void 0 ? void 0 : found.concatTokens());\r\n }\r\n }\r\n findSources(tree) {\r\n var _a, _b;\r\n this.sources = [];\r\n for (const e of tree.findAllExpressions(expressions_1.CDSSource)) {\r\n const name = e.getFirstToken().getStr();\r\n const as = (_b = (_a = e.findDirectExpression(expressions_1.CDSAs)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(expressions_1.CDSName)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr();\r\n this.sources.push({ name, as });\r\n }\r\n }\r\n}\r\nexports.DataDefinition = DataDefinition;\r\n//# sourceMappingURL=data_definition.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/objects/data_definition.js?");
10128
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DataDefinition = void 0;\r\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\r\nconst cds_parser_1 = __webpack_require__(/*! ../cds/cds_parser */ \"./node_modules/@abaplint/core/build/src/cds/cds_parser.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../cds/expressions */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\r\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\r\nclass DataDefinition extends _abstract_object_1.AbstractObject {\r\n constructor() {\r\n super(...arguments);\r\n this.sqlViewName = undefined;\r\n this.parserError = undefined;\r\n this.fieldNames = [];\r\n this.sources = [];\r\n }\r\n getType() {\r\n return \"DDLS\";\r\n }\r\n getAllowedNaming() {\r\n return {\r\n maxLength: 40,\r\n allowNamespace: true,\r\n };\r\n }\r\n getSQLViewName() {\r\n return this.sqlViewName;\r\n }\r\n getDescription() {\r\n // todo\r\n return undefined;\r\n }\r\n parseType(_reg) {\r\n this.parse();\r\n if (this.fieldNames.length === 0) {\r\n return new basic_1.VoidType(\"DDLS:todo\");\r\n }\r\n else {\r\n const components = [];\r\n for (const f of this.fieldNames) {\r\n components.push({\r\n name: f,\r\n type: new basic_1.VoidType(\"DDLS:fieldname\"),\r\n });\r\n }\r\n return new basic_1.StructureType(components);\r\n }\r\n }\r\n listSources() {\r\n return this.sources;\r\n }\r\n setDirty() {\r\n this.sqlViewName = undefined;\r\n this.parserError = undefined;\r\n this.fieldNames = [];\r\n this.sources = [];\r\n super.setDirty();\r\n }\r\n findSourceFile() {\r\n return this.getFiles().find(f => f.getFilename().endsWith(\".asddls\"));\r\n }\r\n hasParserError() {\r\n return this.parserError;\r\n }\r\n parse() {\r\n var _a;\r\n if (this.isDirty() === false) {\r\n return { updated: false, runtime: 0 };\r\n }\r\n const start = Date.now();\r\n this.sqlViewName = undefined;\r\n const match = (_a = this.findSourceFile()) === null || _a === void 0 ? void 0 : _a.getRaw().match(/@AbapCatalog\\.sqlViewName: '(\\w+)'/);\r\n if (match) {\r\n this.sqlViewName = match[1].toUpperCase();\r\n }\r\n const tree = new cds_parser_1.CDSParser().parse(this.findSourceFile());\r\n if (tree) {\r\n this.findFieldNames(tree);\r\n this.findSources(tree);\r\n }\r\n else {\r\n this.parserError = true;\r\n }\r\n const end = Date.now();\r\n this.dirty = false;\r\n return { updated: true, runtime: end - start };\r\n }\r\n findFieldNames(tree) {\r\n var _a;\r\n this.fieldNames = [];\r\n for (const e of tree.findAllExpressions(expressions_1.CDSElement)) {\r\n let found = (_a = e.findDirectExpression(expressions_1.CDSAs)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(expressions_1.CDSName);\r\n if (found === undefined) {\r\n found = e.findDirectExpression(expressions_1.CDSName);\r\n }\r\n if (found === undefined) {\r\n continue;\r\n }\r\n this.fieldNames.push(found === null || found === void 0 ? void 0 : found.concatTokens());\r\n }\r\n }\r\n findSources(tree) {\r\n var _a, _b;\r\n this.sources = [];\r\n for (const e of tree.findAllExpressions(expressions_1.CDSSource)) {\r\n const name = e.getFirstToken().getStr();\r\n const as = (_b = (_a = e.findDirectExpression(expressions_1.CDSAs)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(expressions_1.CDSName)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr();\r\n this.sources.push({ name, as });\r\n }\r\n }\r\n}\r\nexports.DataDefinition = DataDefinition;\r\n//# sourceMappingURL=data_definition.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/objects/data_definition.js?");
9986
10129
 
9987
10130
  /***/ }),
9988
10131
 
@@ -10972,7 +11115,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
10972
11115
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
10973
11116
 
10974
11117
  "use strict";
10975
- eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Registry = void 0;\nconst config_1 = __webpack_require__(/*! ./config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nconst artifacts_objects_1 = __webpack_require__(/*! ./artifacts_objects */ \"./node_modules/@abaplint/core/build/src/artifacts_objects.js\");\nconst artifacts_rules_1 = __webpack_require__(/*! ./artifacts_rules */ \"./node_modules/@abaplint/core/build/src/artifacts_rules.js\");\nconst skip_logic_1 = __webpack_require__(/*! ./skip_logic */ \"./node_modules/@abaplint/core/build/src/skip_logic.js\");\nconst _abap_object_1 = __webpack_require__(/*! ./objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst find_global_definitions_1 = __webpack_require__(/*! ./abap/5_syntax/global_definitions/find_global_definitions */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js\");\nconst syntax_1 = __webpack_require__(/*! ./abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst excludeHelper_1 = __webpack_require__(/*! ./utils/excludeHelper */ \"./node_modules/@abaplint/core/build/src/utils/excludeHelper.js\");\nconst ddic_references_1 = __webpack_require__(/*! ./ddic_references */ \"./node_modules/@abaplint/core/build/src/ddic_references.js\");\n// todo, this should really be an instance in case there are multiple Registry'ies\nclass ParsingPerformance {\n static clear() {\n this.results = [];\n this.lexing = 0;\n this.statements = 0;\n this.structure = 0;\n }\n static push(obj, result) {\n if (result.runtimeExtra) {\n this.lexing += result.runtimeExtra.lexing;\n this.statements += result.runtimeExtra.statements;\n this.structure += result.runtimeExtra.structure;\n }\n if (result.runtime < 100) {\n return;\n }\n if (this.results === undefined) {\n this.results = [];\n }\n let extra = \"\";\n if (result.runtimeExtra) {\n extra = `\\t(lexing: ${result.runtimeExtra.lexing}ms, statements: ${result.runtimeExtra.statements}ms, structure: ${result.runtimeExtra.structure}ms)`;\n }\n this.results.push({\n runtime: result.runtime,\n extra,\n name: obj.getType() + \" \" + obj.getName(),\n });\n }\n static output() {\n const MAX = 10;\n this.results.sort((a, b) => { return b.runtime - a.runtime; });\n for (let i = 0; i < MAX; i++) {\n const row = this.results[i];\n if (row === undefined) {\n break;\n }\n process.stderr.write(`\\t${row.runtime}ms\\t${row.name} ${row.extra}\\n`);\n }\n process.stderr.write(`\\tTotal lexing: ${this.lexing}ms\\n`);\n process.stderr.write(`\\tTotal statements: ${this.statements}ms\\n`);\n process.stderr.write(`\\tTotal structure: ${this.structure}ms\\n`);\n }\n}\n///////////////////////////////////////////////////////////////////////////////////////////////\nclass Registry {\n constructor(conf) {\n this.objects = {};\n this.objectsByType = {};\n /** object containing filenames of dependencies */\n this.dependencies = {};\n this.issues = [];\n this.conf = conf ? conf : config_1.Config.getDefault();\n this.references = new ddic_references_1.DDICReferences();\n }\n static abaplintVersion() {\n // magic, see build script \"version.sh\"\n return \"2.83.4\";\n }\n getDDICReferences() {\n return this.references;\n }\n *getObjects() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n yield this.objects[name][type];\n }\n }\n }\n *getObjectsByType(type) {\n for (const name in this.objectsByType[type] || []) {\n yield this.objectsByType[type][name];\n }\n }\n *getFiles() {\n for (const obj of this.getObjects()) {\n for (const file of obj.getFiles()) {\n yield file;\n }\n }\n }\n getFirstObject() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n return this.objects[name][type];\n }\n }\n return undefined;\n }\n getObjectCount(skipDependencies = true) {\n let res = 0;\n for (const o of this.getObjects()) {\n if (skipDependencies === true && this.isDependency(o)) {\n continue;\n }\n res = res + 1;\n }\n return res;\n }\n getFileByName(filename) {\n const upper = filename.toUpperCase();\n for (const o of this.getObjects()) {\n for (const f of o.getFiles()) {\n if (f.getFilename().toUpperCase() === upper) {\n return f;\n }\n }\n }\n return undefined;\n }\n getObject(type, name) {\n if (type === undefined || name === undefined) {\n return undefined;\n }\n const searchName = name.toUpperCase();\n if (this.objects[searchName]) {\n return this.objects[searchName][type];\n }\n return undefined;\n }\n getConfig() {\n return this.conf;\n }\n // assumption: Config is immutable, and can only be changed via this method\n setConfig(conf) {\n for (const obj of this.getObjects()) {\n obj.setDirty();\n }\n this.conf = conf;\n return this;\n }\n inErrorNamespace(name) {\n const reg = new RegExp(this.getConfig().getSyntaxSetttings().errorNamespace, \"i\");\n return reg.test(name);\n }\n addFile(file) {\n return this.addFiles([file]);\n }\n updateFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.updateFile(file);\n return this;\n }\n removeFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.removeFile(file);\n if (obj.getFiles().length === 0) {\n this.references.clear(obj);\n this.removeObject(obj);\n }\n return this;\n }\n addFiles(files) {\n var _a;\n const globalExclude = ((_a = this.conf.getGlobal().exclude) !== null && _a !== void 0 ? _a : [])\n .map(pattern => new RegExp(pattern, \"i\"));\n for (const f of files) {\n const filename = f.getFilename();\n const isNotAbapgitFile = filename.split(\".\").length <= 2;\n if (isNotAbapgitFile || excludeHelper_1.ExcludeHelper.isExcluded(filename, globalExclude)) {\n continue;\n }\n const found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n found.addFile(f);\n }\n return this;\n }\n addDependencies(files) {\n for (const f of files) {\n this.dependencies[f.getFilename().toUpperCase()] = true;\n }\n return this.addFiles(files);\n }\n addDependency(file) {\n this.dependencies[file.getFilename().toUpperCase()] = true;\n this.addFile(file);\n return this;\n }\n isDependency(obj) {\n const filename = obj.getFiles()[0].getFilename().toUpperCase();\n return this.dependencies[filename] === true;\n }\n isFileDependency(filename) {\n return this.dependencies[filename.toUpperCase()] === true;\n }\n // assumption: the file is already in the registry\n findObjectForFile(file) {\n const filename = file.getFilename();\n for (const obj of this.getObjects()) {\n for (const ofile of obj.getFiles()) {\n if (ofile.getFilename() === filename) {\n return obj;\n }\n }\n }\n return undefined;\n }\n // todo, this will be changed to async sometime\n findIssues(input) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return this.runRules(input);\n }\n // todo, this will be changed to async sometime\n findIssuesObject(iobj) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return this.runRules(undefined, iobj);\n }\n // todo, this will be changed to async sometime\n parse() {\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n this.issues = [];\n for (const o of this.getObjects()) {\n this.parsePrivate(o);\n this.issues.push(...o.getParsingIssues());\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run();\n return this;\n }\n async parseAsync(input) {\n var _a, _b;\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(this.getObjectCount(false), \"Lexing and parsing\");\n this.issues = [];\n for (const o of this.getObjects()) {\n await ((_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Lexing and parsing(\" + this.conf.getVersion() + \") - \" + o.getType() + \" \" + o.getName()));\n this.parsePrivate(o);\n this.issues.push(...o.getParsingIssues());\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n ParsingPerformance.output();\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run(input === null || input === void 0 ? void 0 : input.progress);\n return this;\n }\n //////////////////////////////////////////\n // todo, refactor, this is a mess, see where-used, a lot of the code should be in this method instead\n parsePrivate(input) {\n const config = this.getConfig();\n const result = input.parse(config.getVersion(), config.getSyntaxSetttings().globalMacros);\n ParsingPerformance.push(input, result);\n }\n isDirty() {\n for (const o of this.getObjects()) {\n const dirty = o.isDirty();\n if (dirty === true) {\n return true;\n }\n }\n return false;\n }\n runRules(input, iobj) {\n var _a, _b, _c, _d, _e, _f;\n const rulePerformance = {};\n const issues = this.issues.slice(0);\n const objects = iobj ? [iobj] : this.getObjects();\n const rules = this.conf.getEnabledRules();\n const skipLogic = new skip_logic_1.SkipLogic(this);\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(iobj ? 1 : this.getObjectCount(false), \"Run Syntax\");\n const check = [];\n for (const obj of objects) {\n (_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Run Syntax - \" + obj.getName());\n if (skipLogic.skip(obj) || this.isDependency(obj)) {\n continue;\n }\n if (obj instanceof _abap_object_1.ABAPObject) {\n new syntax_1.SyntaxLogic(this, obj).run();\n }\n check.push(obj);\n }\n (_c = input === null || input === void 0 ? void 0 : input.progress) === null || _c === void 0 ? void 0 : _c.set(rules.length, \"Initialize Rules\");\n for (const rule of rules) {\n (_d = input === null || input === void 0 ? void 0 : input.progress) === null || _d === void 0 ? void 0 : _d.tick(\"Initialize Rules - \" + rule.getMetadata().key);\n if (rule.initialize === undefined) {\n throw new Error(rule.getMetadata().key + \" missing initialize method\");\n }\n rule.initialize(this);\n rulePerformance[rule.getMetadata().key] = 0;\n }\n (_e = input === null || input === void 0 ? void 0 : input.progress) === null || _e === void 0 ? void 0 : _e.set(check.length, \"Finding Issues\");\n for (const obj of check) {\n (_f = input === null || input === void 0 ? void 0 : input.progress) === null || _f === void 0 ? void 0 : _f.tick(\"Finding Issues - \" + obj.getType() + \" \" + obj.getName());\n for (const rule of rules) {\n const before = Date.now();\n issues.push(...rule.run(obj));\n const runtime = Date.now() - before;\n rulePerformance[rule.getMetadata().key] = rulePerformance[rule.getMetadata().key] + runtime;\n }\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n const perf = [];\n for (const p in rulePerformance) {\n if (rulePerformance[p] > 100) { // ignore rules if it takes less than 100ms\n perf.push({ name: p, time: rulePerformance[p] });\n }\n }\n perf.sort((a, b) => { return b.time - a.time; });\n for (const p of perf) {\n process.stderr.write(\"\\t\" + p.time + \"ms\\t\" + p.name + \"\\n\");\n }\n }\n return this.excludeIssues(issues);\n }\n excludeIssues(issues) {\n var _a;\n const ret = issues;\n const globalNoIssues = this.conf.getGlobal().noIssues || [];\n const globalNoIssuesPatterns = globalNoIssues.map(x => new RegExp(x, \"i\"));\n if (globalNoIssuesPatterns.length > 0) {\n for (let i = ret.length - 1; i >= 0; i--) {\n const filename = ret[i].getFilename();\n if (excludeHelper_1.ExcludeHelper.isExcluded(filename, globalNoIssuesPatterns)) {\n ret.splice(i, 1);\n }\n }\n }\n // exclude issues, as now we know both the filename and issue key\n for (const rule of artifacts_rules_1.ArtifactsRules.getRules()) {\n const key = rule.getMetadata().key;\n const ruleExclude = (_a = this.conf.readByKey(key, \"exclude\")) !== null && _a !== void 0 ? _a : [];\n if (ruleExclude.length === 0) {\n continue;\n }\n const ruleExcludePatterns = ruleExclude.map(x => new RegExp(x, \"i\"));\n for (let i = ret.length - 1; i >= 0; i--) {\n if (ret[i].getKey() !== key) {\n continue;\n }\n const filename = ret[i].getFilename();\n if (excludeHelper_1.ExcludeHelper.isExcluded(filename, ruleExcludePatterns)) {\n ret.splice(i, 1);\n }\n }\n }\n return ret;\n }\n findOrCreate(name, type) {\n try {\n return this.find(name, type);\n }\n catch (_a) {\n const newName = name.toUpperCase();\n const newType = type ? type : \"UNKNOWN\";\n const add = artifacts_objects_1.ArtifactsObjects.newObject(newName, newType);\n if (this.objects[newName] === undefined) {\n this.objects[newName] = {};\n }\n this.objects[newName][newType] = add;\n if (this.objectsByType[newType] === undefined) {\n this.objectsByType[newType] = {};\n }\n this.objectsByType[newType][newName] = add;\n return add;\n }\n }\n removeObject(remove) {\n if (remove === undefined) {\n return;\n }\n if (this.objects[remove.getName()][remove.getType()] === undefined) {\n throw new Error(\"removeObject: object not found\");\n }\n if (Object.keys(this.objects[remove.getName()]).length === 1) {\n delete this.objects[remove.getName()];\n }\n else {\n delete this.objects[remove.getName()][remove.getType()];\n }\n if (Object.keys(this.objectsByType[remove.getType()]).length === 1) {\n delete this.objectsByType[remove.getType()];\n }\n else {\n delete this.objectsByType[remove.getType()][remove.getName()];\n }\n }\n find(name, type) {\n const searchType = type ? type : \"UNKNOWN\";\n const searchName = name.toUpperCase();\n if (this.objects[searchName] !== undefined\n && this.objects[searchName][searchType]) {\n return this.objects[searchName][searchType];\n }\n throw new Error(\"find: object not found, \" + type + \" \" + name);\n }\n}\nexports.Registry = Registry;\n//# sourceMappingURL=registry.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/registry.js?");
11118
+ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Registry = void 0;\nconst config_1 = __webpack_require__(/*! ./config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nconst artifacts_objects_1 = __webpack_require__(/*! ./artifacts_objects */ \"./node_modules/@abaplint/core/build/src/artifacts_objects.js\");\nconst artifacts_rules_1 = __webpack_require__(/*! ./artifacts_rules */ \"./node_modules/@abaplint/core/build/src/artifacts_rules.js\");\nconst skip_logic_1 = __webpack_require__(/*! ./skip_logic */ \"./node_modules/@abaplint/core/build/src/skip_logic.js\");\nconst _abap_object_1 = __webpack_require__(/*! ./objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst find_global_definitions_1 = __webpack_require__(/*! ./abap/5_syntax/global_definitions/find_global_definitions */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js\");\nconst syntax_1 = __webpack_require__(/*! ./abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst excludeHelper_1 = __webpack_require__(/*! ./utils/excludeHelper */ \"./node_modules/@abaplint/core/build/src/utils/excludeHelper.js\");\nconst ddic_references_1 = __webpack_require__(/*! ./ddic_references */ \"./node_modules/@abaplint/core/build/src/ddic_references.js\");\n// todo, this should really be an instance in case there are multiple Registry'ies\nclass ParsingPerformance {\n static clear() {\n this.results = [];\n this.lexing = 0;\n this.statements = 0;\n this.structure = 0;\n }\n static push(obj, result) {\n if (result.runtimeExtra) {\n this.lexing += result.runtimeExtra.lexing;\n this.statements += result.runtimeExtra.statements;\n this.structure += result.runtimeExtra.structure;\n }\n if (result.runtime < 100) {\n return;\n }\n if (this.results === undefined) {\n this.results = [];\n }\n let extra = \"\";\n if (result.runtimeExtra) {\n extra = `\\t(lexing: ${result.runtimeExtra.lexing}ms, statements: ${result.runtimeExtra.statements}ms, structure: ${result.runtimeExtra.structure}ms)`;\n }\n this.results.push({\n runtime: result.runtime,\n extra,\n name: obj.getType() + \" \" + obj.getName(),\n });\n }\n static output() {\n const MAX = 10;\n this.results.sort((a, b) => { return b.runtime - a.runtime; });\n for (let i = 0; i < MAX; i++) {\n const row = this.results[i];\n if (row === undefined) {\n break;\n }\n process.stderr.write(`\\t${row.runtime}ms\\t${row.name} ${row.extra}\\n`);\n }\n process.stderr.write(`\\tTotal lexing: ${this.lexing}ms\\n`);\n process.stderr.write(`\\tTotal statements: ${this.statements}ms\\n`);\n process.stderr.write(`\\tTotal structure: ${this.structure}ms\\n`);\n }\n}\n///////////////////////////////////////////////////////////////////////////////////////////////\nclass Registry {\n constructor(conf) {\n this.objects = {};\n this.objectsByType = {};\n /** object containing filenames of dependencies */\n this.dependencies = {};\n this.issues = [];\n this.conf = conf ? conf : config_1.Config.getDefault();\n this.references = new ddic_references_1.DDICReferences();\n }\n static abaplintVersion() {\n // magic, see build script \"version.sh\"\n return \"2.83.5\";\n }\n getDDICReferences() {\n return this.references;\n }\n *getObjects() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n yield this.objects[name][type];\n }\n }\n }\n *getObjectsByType(type) {\n for (const name in this.objectsByType[type] || []) {\n yield this.objectsByType[type][name];\n }\n }\n *getFiles() {\n for (const obj of this.getObjects()) {\n for (const file of obj.getFiles()) {\n yield file;\n }\n }\n }\n getFirstObject() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n return this.objects[name][type];\n }\n }\n return undefined;\n }\n getObjectCount(skipDependencies = true) {\n let res = 0;\n for (const o of this.getObjects()) {\n if (skipDependencies === true && this.isDependency(o)) {\n continue;\n }\n res = res + 1;\n }\n return res;\n }\n getFileByName(filename) {\n const upper = filename.toUpperCase();\n for (const o of this.getObjects()) {\n for (const f of o.getFiles()) {\n if (f.getFilename().toUpperCase() === upper) {\n return f;\n }\n }\n }\n return undefined;\n }\n getObject(type, name) {\n if (type === undefined || name === undefined) {\n return undefined;\n }\n const searchName = name.toUpperCase();\n if (this.objects[searchName]) {\n return this.objects[searchName][type];\n }\n return undefined;\n }\n getConfig() {\n return this.conf;\n }\n // assumption: Config is immutable, and can only be changed via this method\n setConfig(conf) {\n for (const obj of this.getObjects()) {\n obj.setDirty();\n }\n this.conf = conf;\n return this;\n }\n inErrorNamespace(name) {\n const reg = new RegExp(this.getConfig().getSyntaxSetttings().errorNamespace, \"i\");\n return reg.test(name);\n }\n addFile(file) {\n return this.addFiles([file]);\n }\n updateFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.updateFile(file);\n return this;\n }\n removeFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.removeFile(file);\n if (obj.getFiles().length === 0) {\n this.references.clear(obj);\n this.removeObject(obj);\n }\n return this;\n }\n addFiles(files) {\n var _a;\n const globalExclude = ((_a = this.conf.getGlobal().exclude) !== null && _a !== void 0 ? _a : [])\n .map(pattern => new RegExp(pattern, \"i\"));\n for (const f of files) {\n const filename = f.getFilename();\n const isNotAbapgitFile = filename.split(\".\").length <= 2;\n if (isNotAbapgitFile || excludeHelper_1.ExcludeHelper.isExcluded(filename, globalExclude)) {\n continue;\n }\n const found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n found.addFile(f);\n }\n return this;\n }\n addDependencies(files) {\n for (const f of files) {\n this.dependencies[f.getFilename().toUpperCase()] = true;\n }\n return this.addFiles(files);\n }\n addDependency(file) {\n this.dependencies[file.getFilename().toUpperCase()] = true;\n this.addFile(file);\n return this;\n }\n isDependency(obj) {\n const filename = obj.getFiles()[0].getFilename().toUpperCase();\n return this.dependencies[filename] === true;\n }\n isFileDependency(filename) {\n return this.dependencies[filename.toUpperCase()] === true;\n }\n // assumption: the file is already in the registry\n findObjectForFile(file) {\n const filename = file.getFilename();\n for (const obj of this.getObjects()) {\n for (const ofile of obj.getFiles()) {\n if (ofile.getFilename() === filename) {\n return obj;\n }\n }\n }\n return undefined;\n }\n // todo, this will be changed to async sometime\n findIssues(input) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return this.runRules(input);\n }\n // todo, this will be changed to async sometime\n findIssuesObject(iobj) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return this.runRules(undefined, iobj);\n }\n // todo, this will be changed to async sometime\n parse() {\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n this.issues = [];\n for (const o of this.getObjects()) {\n this.parsePrivate(o);\n this.issues.push(...o.getParsingIssues());\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run();\n return this;\n }\n async parseAsync(input) {\n var _a, _b;\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(this.getObjectCount(false), \"Lexing and parsing\");\n this.issues = [];\n for (const o of this.getObjects()) {\n await ((_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Lexing and parsing(\" + this.conf.getVersion() + \") - \" + o.getType() + \" \" + o.getName()));\n this.parsePrivate(o);\n this.issues.push(...o.getParsingIssues());\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n ParsingPerformance.output();\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run(input === null || input === void 0 ? void 0 : input.progress);\n return this;\n }\n //////////////////////////////////////////\n // todo, refactor, this is a mess, see where-used, a lot of the code should be in this method instead\n parsePrivate(input) {\n const config = this.getConfig();\n const result = input.parse(config.getVersion(), config.getSyntaxSetttings().globalMacros);\n ParsingPerformance.push(input, result);\n }\n isDirty() {\n for (const o of this.getObjects()) {\n const dirty = o.isDirty();\n if (dirty === true) {\n return true;\n }\n }\n return false;\n }\n runRules(input, iobj) {\n var _a, _b, _c, _d, _e, _f;\n const rulePerformance = {};\n const issues = this.issues.slice(0);\n const objects = iobj ? [iobj] : this.getObjects();\n const rules = this.conf.getEnabledRules();\n const skipLogic = new skip_logic_1.SkipLogic(this);\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(iobj ? 1 : this.getObjectCount(false), \"Run Syntax\");\n const check = [];\n for (const obj of objects) {\n (_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Run Syntax - \" + obj.getName());\n if (skipLogic.skip(obj) || this.isDependency(obj)) {\n continue;\n }\n if (obj instanceof _abap_object_1.ABAPObject) {\n new syntax_1.SyntaxLogic(this, obj).run();\n }\n check.push(obj);\n }\n (_c = input === null || input === void 0 ? void 0 : input.progress) === null || _c === void 0 ? void 0 : _c.set(rules.length, \"Initialize Rules\");\n for (const rule of rules) {\n (_d = input === null || input === void 0 ? void 0 : input.progress) === null || _d === void 0 ? void 0 : _d.tick(\"Initialize Rules - \" + rule.getMetadata().key);\n if (rule.initialize === undefined) {\n throw new Error(rule.getMetadata().key + \" missing initialize method\");\n }\n rule.initialize(this);\n rulePerformance[rule.getMetadata().key] = 0;\n }\n (_e = input === null || input === void 0 ? void 0 : input.progress) === null || _e === void 0 ? void 0 : _e.set(check.length, \"Finding Issues\");\n for (const obj of check) {\n (_f = input === null || input === void 0 ? void 0 : input.progress) === null || _f === void 0 ? void 0 : _f.tick(\"Finding Issues - \" + obj.getType() + \" \" + obj.getName());\n for (const rule of rules) {\n const before = Date.now();\n issues.push(...rule.run(obj));\n const runtime = Date.now() - before;\n rulePerformance[rule.getMetadata().key] = rulePerformance[rule.getMetadata().key] + runtime;\n }\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n const perf = [];\n for (const p in rulePerformance) {\n if (rulePerformance[p] > 100) { // ignore rules if it takes less than 100ms\n perf.push({ name: p, time: rulePerformance[p] });\n }\n }\n perf.sort((a, b) => { return b.time - a.time; });\n for (const p of perf) {\n process.stderr.write(\"\\t\" + p.time + \"ms\\t\" + p.name + \"\\n\");\n }\n }\n return this.excludeIssues(issues);\n }\n excludeIssues(issues) {\n var _a;\n const ret = issues;\n const globalNoIssues = this.conf.getGlobal().noIssues || [];\n const globalNoIssuesPatterns = globalNoIssues.map(x => new RegExp(x, \"i\"));\n if (globalNoIssuesPatterns.length > 0) {\n for (let i = ret.length - 1; i >= 0; i--) {\n const filename = ret[i].getFilename();\n if (excludeHelper_1.ExcludeHelper.isExcluded(filename, globalNoIssuesPatterns)) {\n ret.splice(i, 1);\n }\n }\n }\n // exclude issues, as now we know both the filename and issue key\n for (const rule of artifacts_rules_1.ArtifactsRules.getRules()) {\n const key = rule.getMetadata().key;\n const ruleExclude = (_a = this.conf.readByKey(key, \"exclude\")) !== null && _a !== void 0 ? _a : [];\n if (ruleExclude.length === 0) {\n continue;\n }\n const ruleExcludePatterns = ruleExclude.map(x => new RegExp(x, \"i\"));\n for (let i = ret.length - 1; i >= 0; i--) {\n if (ret[i].getKey() !== key) {\n continue;\n }\n const filename = ret[i].getFilename();\n if (excludeHelper_1.ExcludeHelper.isExcluded(filename, ruleExcludePatterns)) {\n ret.splice(i, 1);\n }\n }\n }\n return ret;\n }\n findOrCreate(name, type) {\n try {\n return this.find(name, type);\n }\n catch (_a) {\n const newName = name.toUpperCase();\n const newType = type ? type : \"UNKNOWN\";\n const add = artifacts_objects_1.ArtifactsObjects.newObject(newName, newType);\n if (this.objects[newName] === undefined) {\n this.objects[newName] = {};\n }\n this.objects[newName][newType] = add;\n if (this.objectsByType[newType] === undefined) {\n this.objectsByType[newType] = {};\n }\n this.objectsByType[newType][newName] = add;\n return add;\n }\n }\n removeObject(remove) {\n if (remove === undefined) {\n return;\n }\n if (this.objects[remove.getName()][remove.getType()] === undefined) {\n throw new Error(\"removeObject: object not found\");\n }\n if (Object.keys(this.objects[remove.getName()]).length === 1) {\n delete this.objects[remove.getName()];\n }\n else {\n delete this.objects[remove.getName()][remove.getType()];\n }\n if (Object.keys(this.objectsByType[remove.getType()]).length === 1) {\n delete this.objectsByType[remove.getType()];\n }\n else {\n delete this.objectsByType[remove.getType()][remove.getName()];\n }\n }\n find(name, type) {\n const searchType = type ? type : \"UNKNOWN\";\n const searchName = name.toUpperCase();\n if (this.objects[searchName] !== undefined\n && this.objects[searchName][searchType]) {\n return this.objects[searchName][searchType];\n }\n throw new Error(\"find: object not found, \" + type + \" \" + name);\n }\n}\nexports.Registry = Registry;\n//# sourceMappingURL=registry.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/registry.js?");
10976
11119
 
10977
11120
  /***/ }),
10978
11121
 
@@ -10983,7 +11126,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexpo
10983
11126
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
10984
11127
 
10985
11128
  "use strict";
10986
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SevenBitAscii = exports.SevenBitAsciiConf = void 0;\r\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\r\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\r\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\r\nclass SevenBitAsciiConf extends _basic_rule_config_1.BasicRuleConfig {\r\n}\r\nexports.SevenBitAsciiConf = SevenBitAsciiConf;\r\nclass SevenBitAscii {\r\n constructor() {\r\n this.conf = new SevenBitAsciiConf();\r\n }\r\n getMetadata() {\r\n return {\r\n key: \"7bit_ascii\",\r\n title: \"Check for 7bit ascii\",\r\n shortDescription: `Only allow characters from the 7bit ASCII set.`,\r\n extendedInformation: `https://docs.abapopenchecks.org/checks/05/`,\r\n tags: [_irule_1.RuleTag.SingleFile],\r\n };\r\n }\r\n initialize(_reg) {\r\n return this;\r\n }\r\n getConfig() {\r\n return this.conf;\r\n }\r\n setConfig(conf) {\r\n this.conf = conf;\r\n }\r\n run(obj) {\r\n const output = [];\r\n for (const file of obj.getFiles()) {\r\n if (file.getFilename().endsWith(\".abap\")) {\r\n const rows = file.getRawRows();\r\n for (let i = 0; i < rows.length; i++) {\r\n const found = /[\\u007f-\\uffff]/.exec(rows[i]);\r\n if (found !== null) {\r\n const column = found.index + 1;\r\n const start = new position_1.Position(i + 1, column);\r\n const end = new position_1.Position(i + 1, column + 1);\r\n const message = \"Contains non 7 bit ascii character\";\r\n const issue = issue_1.Issue.atRange(file, start, end, message, this.getMetadata().key, this.conf.severity);\r\n output.push(issue);\r\n }\r\n // method getRawRows() splits by newline, so the carraige return\r\n // should always be last character if present\r\n const carriage = /\\r.+$/.exec(rows[i]);\r\n if (carriage !== null) {\r\n const column = carriage.index + 1;\r\n const start = new position_1.Position(i + 1, column);\r\n const end = new position_1.Position(i + 1, column + 1);\r\n const message = \"Dangling carriage return\";\r\n const issue = issue_1.Issue.atRange(file, start, end, message, this.getMetadata().key, this.conf.severity);\r\n output.push(issue);\r\n }\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n}\r\nexports.SevenBitAscii = SevenBitAscii;\r\n//# sourceMappingURL=7bit_ascii.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/7bit_ascii.js?");
11129
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SevenBitAscii = exports.SevenBitAsciiConf = void 0;\r\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\r\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\r\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\r\nclass SevenBitAsciiConf extends _basic_rule_config_1.BasicRuleConfig {\r\n}\r\nexports.SevenBitAsciiConf = SevenBitAsciiConf;\r\nclass SevenBitAscii {\r\n constructor() {\r\n this.conf = new SevenBitAsciiConf();\r\n }\r\n getMetadata() {\r\n return {\r\n key: \"7bit_ascii\",\r\n title: \"Check for 7bit ascii\",\r\n shortDescription: `Only allow characters from the 7bit ASCII set.`,\r\n extendedInformation: `https://docs.abapopenchecks.org/checks/05/\n\nCheckes files with extension \".abap\" and \".asddls\"`,\r\n tags: [_irule_1.RuleTag.SingleFile],\r\n };\r\n }\r\n initialize(_reg) {\r\n return this;\r\n }\r\n getConfig() {\r\n return this.conf;\r\n }\r\n setConfig(conf) {\r\n this.conf = conf;\r\n }\r\n run(obj) {\r\n const output = [];\r\n for (const file of obj.getFiles()) {\r\n const filename = file.getFilename();\r\n if (filename.endsWith(\".abap\") || filename.endsWith(\".asddls\")) {\r\n const rows = file.getRawRows();\r\n for (let i = 0; i < rows.length; i++) {\r\n const found = /[\\u007f-\\uffff]/.exec(rows[i]);\r\n if (found !== null) {\r\n const column = found.index + 1;\r\n const start = new position_1.Position(i + 1, column);\r\n const end = new position_1.Position(i + 1, column + 1);\r\n const message = \"Contains non 7 bit ascii character\";\r\n const issue = issue_1.Issue.atRange(file, start, end, message, this.getMetadata().key, this.conf.severity);\r\n output.push(issue);\r\n }\r\n // method getRawRows() splits by newline, so the carraige return\r\n // should always be last character if present\r\n const carriage = /\\r.+$/.exec(rows[i]);\r\n if (carriage !== null) {\r\n const column = carriage.index + 1;\r\n const start = new position_1.Position(i + 1, column);\r\n const end = new position_1.Position(i + 1, column + 1);\r\n const message = \"Dangling carriage return\";\r\n const issue = issue_1.Issue.atRange(file, start, end, message, this.getMetadata().key, this.conf.severity);\r\n output.push(issue);\r\n }\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n}\r\nexports.SevenBitAscii = SevenBitAscii;\r\n//# sourceMappingURL=7bit_ascii.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/7bit_ascii.js?");
10987
11130
 
10988
11131
  /***/ }),
10989
11132
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.83.4",
3
+ "version": "2.83.5",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "bin": {
6
6
  "abaplint": "./abaplint"
@@ -39,12 +39,12 @@
39
39
  },
40
40
  "homepage": "https://abaplint.org",
41
41
  "devDependencies": {
42
- "@abaplint/core": "^2.83.4",
42
+ "@abaplint/core": "^2.83.5",
43
43
  "@types/chai": "^4.3.0",
44
44
  "@types/glob": "^7.2.0",
45
45
  "@types/minimist": "^1.2.2",
46
46
  "@types/mocha": "^9.0.0",
47
- "@types/node": "^17.0.4",
47
+ "@types/node": "^17.0.5",
48
48
  "@types/progress": "^2.0.5",
49
49
  "chai": "^4.3.4",
50
50
  "chalk": "=4.1.2",