@abaplint/transpiler-cli 2.13.58 → 2.13.60
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.
- package/build/bundle.js +663 -64
- package/package.json +3 -3
- package/schema.json +8 -0
- package/tsconfig.tsbuildinfo +0 -1
package/build/bundle.js
CHANGED
|
@@ -9527,7 +9527,7 @@ const sql_field_1 = __webpack_require__(/*! ./sql_field */ "./node_modules/@abap
|
|
|
9527
9527
|
const sql_grouping_sets_1 = __webpack_require__(/*! ./sql_grouping_sets */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_grouping_sets.js");
|
|
9528
9528
|
class SQLGroupBy extends combi_1.Expression {
|
|
9529
9529
|
getRunnable() {
|
|
9530
|
-
const fieldName = (0, combi_1.alt)(sql_field_name_1.SQLFieldName, dynamic_1.Dynamic);
|
|
9530
|
+
const fieldName = (0, combi_1.seq)((0, combi_1.stopBefore)("ORDER", "BY"), (0, combi_1.alt)(sql_field_name_1.SQLFieldName, dynamic_1.Dynamic));
|
|
9531
9531
|
const expr = (0, combi_1.ver)(version_1.Release.v740sp02, sql_field_1.SQLField, { also: combi_1.AlsoIn.OpenABAP });
|
|
9532
9532
|
const newGroup = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("GROUP BY", expr, (0, combi_1.altPrio)((0, combi_1.plus)((0, combi_1.seq)(",", expr)), (0, combi_1.optPrio)((0, combi_1.plus)(fieldName)))), { also: combi_1.AlsoIn.OpenABAP });
|
|
9533
9533
|
const old = (0, combi_1.seq)((0, combi_1.plus)((0, combi_1.seq)(fieldName, ",")), fieldName);
|
|
@@ -13129,7 +13129,7 @@ class ClassDefinition {
|
|
|
13129
13129
|
const risk = (0, combi_1.seq)("RISK LEVEL", level);
|
|
13130
13130
|
const time = (0, combi_1.altPrio)("LONG", "MEDIUM", "SHORT");
|
|
13131
13131
|
const duration = (0, combi_1.seq)("DURATION", time);
|
|
13132
|
-
const blah = (0, combi_1.per)(expressions_1.ClassGlobal, expressions_1.ClassFinal, "ABSTRACT", (0, combi_1.seq)("INHERITING FROM", expressions_1.SuperClassName), create, "FOR TESTING", risk, "SHARED MEMORY ENABLED", duration, (0, combi_1.ver)(version_1.Release.v754, (0, combi_1.seq)("FOR BEHAVIOR OF", expressions_1.BehaviorDefinitionName), { also: combi_1.AlsoIn.OpenABAP }), expressions_1.ClassFriends);
|
|
13132
|
+
const blah = (0, combi_1.per)(expressions_1.ClassGlobal, expressions_1.ClassFinal, "ABSTRACT", (0, combi_1.seq)("INHERITING FROM", expressions_1.SuperClassName), create, "FOR TESTING", risk, "SHARED MEMORY ENABLED", duration, (0, combi_1.ver)(version_1.Release.v754, (0, combi_1.seq)("FOR BEHAVIOR OF", expressions_1.BehaviorDefinitionName), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v758, (0, combi_1.seq)("FOR EVENTS OF", expressions_1.BehaviorDefinitionName)), expressions_1.ClassFriends);
|
|
13133
13133
|
const def = (0, combi_1.seq)("DEFINITION", (0, combi_1.optPrio)(blah));
|
|
13134
13134
|
return (0, combi_1.seq)("CLASS", expressions_1.ClassName, def);
|
|
13135
13135
|
}
|
|
@@ -17098,6 +17098,7 @@ exports.MethodDef = void 0;
|
|
|
17098
17098
|
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
17099
17099
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
17100
17100
|
const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
17101
|
+
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
17101
17102
|
class MethodDef {
|
|
17102
17103
|
getMatcher() {
|
|
17103
17104
|
const def = (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.seq)("DEFAULT", (0, combi_1.altPrio)("FAIL", "IGNORE")), { also: combi_1.AlsoIn.OpenABAP });
|
|
@@ -17111,6 +17112,9 @@ class MethodDef {
|
|
|
17111
17112
|
const modify = (0, combi_1.alt)((0, combi_1.seq)("FOR ACTION", expressions_1.TypeName, (0, combi_1.optPrio)(result)), (0, combi_1.seq)("FOR CREATE", (0, combi_1.alt)(expressions_1.TypeName, expressions_1.EntityAssociation)), (0, combi_1.seq)("FOR DELETE", expressions_1.TypeName), (0, combi_1.seq)("FOR UPDATE", expressions_1.TypeName));
|
|
17112
17113
|
const forRead = (0, combi_1.seq)("FOR READ", (0, combi_1.alt)(expressions_1.TypeName, expressions_1.EntityAssociation), (0, combi_1.optPrio)(full), result, (0, combi_1.optPrio)(link));
|
|
17113
17114
|
const forfunction = (0, combi_1.seq)("FOR FUNCTION", expressions_1.TypeName, result);
|
|
17115
|
+
const entityEventReference = (0, combi_1.seq)("REFERENCE", (0, combi_1.tok)(tokens_1.ParenLeft), expressions_1.MethodParamName, (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
17116
|
+
const entityEventParameter = (0, combi_1.seq)((0, combi_1.altPrio)(entityEventReference, expressions_1.MethodParamName), "FOR", expressions_1.TypeName);
|
|
17117
|
+
const entityEvent = (0, combi_1.seq)((0, combi_1.optPrio)("FINAL"), "FOR ENTITY EVENT", (0, combi_1.optPrio)("IMPORTING"), (0, combi_1.plus)(entityEventParameter));
|
|
17114
17118
|
const behavior = (0, combi_1.altPrio)("DDL OBJECT OPTIONS CDS SESSION CLIENT REQUIRED", // todo, this is only from version something
|
|
17115
17119
|
(0, combi_1.seq)("TABLE FUNCTION", expressions_1.NamespaceSimpleName), // todo, this is only from version something
|
|
17116
17120
|
(0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY", (0, combi_1.opt)("IMPORTING"), (0, combi_1.plus)((0, combi_1.seq)(expressions_1.MethodParamName, modify))), (0, combi_1.seq)("PRECHECK IMPORTING", expressions_1.MethodParamName, modify), (0, combi_1.seq)("DETERMINATION", expressions_1.TypeName, "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("VALIDATION", expressions_1.TypeName, "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("NUMBERING IMPORTING", expressions_1.MethodParamName, modify), (0, combi_1.seq)("READ IMPORTING", expressions_1.MethodParamName, (0, combi_1.altPrio)(forRead, forfunction)), (0, combi_1.seq)("FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.NamespaceSimpleName, "FOR", expressions_1.NamespaceSimpleName, result), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR CREATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR UPDATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR DELETE", expressions_1.TypeName), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR READ", expressions_1.TypeName, result), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR UPDATE", expressions_1.TypeName), (0, combi_1.seq)((0, combi_1.alt)("BEHAVIOR", "LOCK"), "IMPORTING", expressions_1.MethodParamName, "FOR LOCK", expressions_1.TypeName), (0, combi_1.seq)("DETERMINE", (0, combi_1.alt)("ON MODIFY", "ON SAVE"), "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("GLOBAL AUTHORIZATION IMPORTING REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("GLOBAL FEATURES IMPORTING REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)((0, combi_1.seq)((0, combi_1.opt)("INSTANCE"), "AUTHORIZATION IMPORTING"), expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("INSTANCE FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result));
|
|
@@ -17118,7 +17122,9 @@ class MethodDef {
|
|
|
17118
17122
|
// AMDP OPTIONS clause blocked in KeyUser
|
|
17119
17123
|
const amdp = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("AMDP OPTIONS", (0, combi_1.optPrio)("READ-ONLY"), "CDS SESSION CLIENT", (0, combi_1.alt)("CURRENT", "DEPENDENT"), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising)));
|
|
17120
17124
|
// FOR DDL OBJECT / FOR TABLE FUNCTION / FOR SCALAR FUNCTION blocked in KeyUser
|
|
17121
|
-
const
|
|
17125
|
+
const regular = (0, combi_1.seq)((0, combi_1.altPrio)("CLASS-METHODS", "METHODS"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), (0, combi_1.optPrio)(def), expressions_1.EventHandler), parameters, testing, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FOR", behavior)), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
|
|
17126
|
+
// RAP event handlers are instance methods; CLASS-METHODS is not allowed.
|
|
17127
|
+
const ret = (0, combi_1.alt)((0, combi_1.seq)("METHODS", expressions_1.MethodName, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, entityEvent)), regular);
|
|
17122
17128
|
return ret;
|
|
17123
17129
|
}
|
|
17124
17130
|
}
|
|
@@ -28021,6 +28027,12 @@ class TypeUtils {
|
|
|
28021
28027
|
if (source2 instanceof basic_1.HexType && this.isCalculated(node2) && source1 instanceof basic_1.IntegerType) {
|
|
28022
28028
|
return false;
|
|
28023
28029
|
}
|
|
28030
|
+
if (source1 instanceof basic_1.DateType && this.isCalculated(node2) && source2 instanceof basic_1.IntegerType) {
|
|
28031
|
+
return false;
|
|
28032
|
+
}
|
|
28033
|
+
if (source2 instanceof basic_1.DateType && this.isCalculated(node1) && source1 instanceof basic_1.IntegerType) {
|
|
28034
|
+
return false;
|
|
28035
|
+
}
|
|
28024
28036
|
return true;
|
|
28025
28037
|
}
|
|
28026
28038
|
structureContainsString(structure) {
|
|
@@ -28083,6 +28095,9 @@ class TypeUtils {
|
|
|
28083
28095
|
&& (target instanceof basic_1.XStringType || target instanceof basic_1.XSequenceType)) {
|
|
28084
28096
|
return false;
|
|
28085
28097
|
}
|
|
28098
|
+
if (calculated && source instanceof basic_1.IntegerType && target instanceof basic_1.DateType) {
|
|
28099
|
+
return false;
|
|
28100
|
+
}
|
|
28086
28101
|
if (target instanceof basic_1.NumericType
|
|
28087
28102
|
&& (source instanceof basic_1.CharacterType || source instanceof basic_1.StringType)
|
|
28088
28103
|
&& ((_a = source.getAbstractTypeData()) === null || _a === void 0 ? void 0 : _a.derivedFromConstant) === true) {
|
|
@@ -29536,6 +29551,51 @@ exports.BasicTypes = BasicTypes;
|
|
|
29536
29551
|
|
|
29537
29552
|
/***/ },
|
|
29538
29553
|
|
|
29554
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/_check_database_fields.js"
|
|
29555
|
+
/*!***************************************************************************************************!*\
|
|
29556
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/_check_database_fields.js ***!
|
|
29557
|
+
\***************************************************************************************************/
|
|
29558
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
29559
|
+
|
|
29560
|
+
"use strict";
|
|
29561
|
+
|
|
29562
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
29563
|
+
exports.checkDatabaseFields = checkDatabaseFields;
|
|
29564
|
+
const basic_1 = __webpack_require__(/*! ../../types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js");
|
|
29565
|
+
const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
|
|
29566
|
+
function checkDatabaseFields(fields, dbSources, input, token) {
|
|
29567
|
+
if (dbSources.length > 1) {
|
|
29568
|
+
return;
|
|
29569
|
+
}
|
|
29570
|
+
const first = dbSources[0];
|
|
29571
|
+
if (first === undefined) {
|
|
29572
|
+
// then its voided
|
|
29573
|
+
return;
|
|
29574
|
+
}
|
|
29575
|
+
const type = first.parseType(input.scope.getRegistry());
|
|
29576
|
+
if (type instanceof basic_1.VoidType || type instanceof basic_1.UnknownType) {
|
|
29577
|
+
return;
|
|
29578
|
+
}
|
|
29579
|
+
if (!(type instanceof basic_1.StructureType)) {
|
|
29580
|
+
const message = "checkFields, expected structure, " + type.constructor.name;
|
|
29581
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, token, message));
|
|
29582
|
+
return;
|
|
29583
|
+
}
|
|
29584
|
+
for (const field of fields) {
|
|
29585
|
+
if (field === "*") {
|
|
29586
|
+
continue;
|
|
29587
|
+
}
|
|
29588
|
+
if (/^[A-Z_]\w*$/i.test(field) && type.getComponentByName(field) === undefined) {
|
|
29589
|
+
const message = `checkFields, field ${field} not found`;
|
|
29590
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, token, message));
|
|
29591
|
+
return;
|
|
29592
|
+
}
|
|
29593
|
+
}
|
|
29594
|
+
}
|
|
29595
|
+
//# sourceMappingURL=_check_database_fields.js.map
|
|
29596
|
+
|
|
29597
|
+
/***/ },
|
|
29598
|
+
|
|
29539
29599
|
/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/_check_offset_length.js"
|
|
29540
29600
|
/*!*************************************************************************************************!*\
|
|
29541
29601
|
!*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/_check_offset_length.js ***!
|
|
@@ -30015,6 +30075,7 @@ const source_1 = __webpack_require__(/*! ./source */ "./node_modules/@abaplint/c
|
|
|
30015
30075
|
const method_call_chain_1 = __webpack_require__(/*! ./method_call_chain */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_chain.js");
|
|
30016
30076
|
const source_field_symbol_1 = __webpack_require__(/*! ./source_field_symbol */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field_symbol.js");
|
|
30017
30077
|
const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
|
|
30078
|
+
const basic_1 = __webpack_require__(/*! ../../types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js");
|
|
30018
30079
|
const _type_utils_1 = __webpack_require__(/*! ../_type_utils */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js");
|
|
30019
30080
|
class Compare {
|
|
30020
30081
|
static runSyntax(node, input) {
|
|
@@ -30032,7 +30093,15 @@ class Compare {
|
|
|
30032
30093
|
if (node.findDirectExpression(Expressions.CompareOperator)
|
|
30033
30094
|
&& new _type_utils_1.TypeUtils(input.scope).isCompareable(sourceTypes[0], sourceTypes[1], sources[0], sources[1]) === false
|
|
30034
30095
|
&& sourceTypes.length === 2) {
|
|
30035
|
-
|
|
30096
|
+
let message = "Incompatible types for comparison";
|
|
30097
|
+
if ((sourceTypes[0] instanceof basic_1.DateType
|
|
30098
|
+
&& sourceTypes[1] instanceof basic_1.IntegerType
|
|
30099
|
+
&& sources[1].findFirstExpression(Expressions.ArithOperator))
|
|
30100
|
+
|| (sourceTypes[1] instanceof basic_1.DateType
|
|
30101
|
+
&& sourceTypes[0] instanceof basic_1.IntegerType
|
|
30102
|
+
&& sources[0].findFirstExpression(Expressions.ArithOperator))) {
|
|
30103
|
+
message = "Date cannot be compared with arithmetic result of type Integer";
|
|
30104
|
+
}
|
|
30036
30105
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30037
30106
|
}
|
|
30038
30107
|
}
|
|
@@ -34176,6 +34245,7 @@ const dynamic_1 = __webpack_require__(/*! ./dynamic */ "./node_modules/@abaplint
|
|
|
34176
34245
|
const _reference_1 = __webpack_require__(/*! ../_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js");
|
|
34177
34246
|
const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
|
|
34178
34247
|
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
34248
|
+
const _check_database_fields_1 = __webpack_require__(/*! ./_check_database_fields */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/_check_database_fields.js");
|
|
34179
34249
|
const isSimple = /^\w+$/;
|
|
34180
34250
|
class Select {
|
|
34181
34251
|
static runSyntax(node, input, skipImplicitInto = false, selectLoop = false) {
|
|
@@ -34200,8 +34270,8 @@ class Select {
|
|
|
34200
34270
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
34201
34271
|
return;
|
|
34202
34272
|
}
|
|
34203
|
-
|
|
34204
|
-
const intoExpression = this.handleInto(node, input, fields, dbSources);
|
|
34273
|
+
(0, _check_database_fields_1.checkDatabaseFields)(fields.map(field => field.code), dbSources, input, node.getFirstToken());
|
|
34274
|
+
const intoExpression = this.handleInto(node, input, fields, dbSources, from);
|
|
34205
34275
|
const fae = node.findDirectExpression(Expressions.SQLForAllEntries);
|
|
34206
34276
|
if (fae) {
|
|
34207
34277
|
input.scope.push(_scope_type_1.ScopeType.OpenSQL, "SELECT", token.getStart(), input.filename);
|
|
@@ -34362,12 +34432,12 @@ class Select {
|
|
|
34362
34432
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
34363
34433
|
}
|
|
34364
34434
|
}
|
|
34365
|
-
static handleInto(node, input, fields, dbSources) {
|
|
34435
|
+
static handleInto(node, input, fields, dbSources, from) {
|
|
34366
34436
|
const intoTable = node.findDirectExpression(Expressions.SQLIntoTable);
|
|
34367
34437
|
if (intoTable) {
|
|
34368
34438
|
const inline = intoTable.findFirstExpression(Expressions.InlineData);
|
|
34369
34439
|
if (inline) {
|
|
34370
|
-
inline_data_1.InlineData.runSyntax(inline, input, this.buildTableType(fields, dbSources, input.scope));
|
|
34440
|
+
inline_data_1.InlineData.runSyntax(inline, input, this.buildTableType(fields, dbSources, input.scope, from));
|
|
34371
34441
|
}
|
|
34372
34442
|
return intoTable;
|
|
34373
34443
|
}
|
|
@@ -34427,35 +34497,6 @@ class Select {
|
|
|
34427
34497
|
}
|
|
34428
34498
|
return undefined;
|
|
34429
34499
|
}
|
|
34430
|
-
static checkFields(fields, dbSources, input, node) {
|
|
34431
|
-
if (dbSources.length > 1) {
|
|
34432
|
-
return;
|
|
34433
|
-
}
|
|
34434
|
-
const first = dbSources[0];
|
|
34435
|
-
if (first === undefined) {
|
|
34436
|
-
// then its voided
|
|
34437
|
-
return;
|
|
34438
|
-
}
|
|
34439
|
-
const type = first.parseType(input.scope.getRegistry());
|
|
34440
|
-
if (type instanceof basic_1.VoidType || type instanceof basic_1.UnknownType) {
|
|
34441
|
-
return;
|
|
34442
|
-
}
|
|
34443
|
-
if (!(type instanceof basic_1.StructureType)) {
|
|
34444
|
-
const message = "checkFields, expected structure, " + type.constructor.name;
|
|
34445
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
34446
|
-
return;
|
|
34447
|
-
}
|
|
34448
|
-
for (const field of fields) {
|
|
34449
|
-
if (field.code === "*") {
|
|
34450
|
-
continue;
|
|
34451
|
-
}
|
|
34452
|
-
if (isSimple.test(field.code) && type.getComponentByName(field.code) === undefined) {
|
|
34453
|
-
const message = `checkFields, field ${field.code} not found`;
|
|
34454
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
34455
|
-
return;
|
|
34456
|
-
}
|
|
34457
|
-
}
|
|
34458
|
-
}
|
|
34459
34500
|
static countResultType(scope) {
|
|
34460
34501
|
if ((0, version_1.releaseAtLeast)(scope.getRelease(), version_1.Release.v750)
|
|
34461
34502
|
|| scope.getOpenABAP()
|
|
@@ -34544,11 +34585,36 @@ class Select {
|
|
|
34544
34585
|
return basic_1.VoidType.get("SELECT_todo13");
|
|
34545
34586
|
}
|
|
34546
34587
|
}
|
|
34547
|
-
static buildTableType(fields, dbSources, scope) {
|
|
34548
|
-
|
|
34588
|
+
static buildTableType(fields, dbSources, scope, from) {
|
|
34589
|
+
var _a;
|
|
34590
|
+
const tableOptions = { withHeader: false, keyType: basic_1.TableKeyType.empty };
|
|
34591
|
+
if (dbSources.length > 1) {
|
|
34592
|
+
const sourceInfos = this.buildDatabaseSourceInfos(from, dbSources);
|
|
34593
|
+
if (fields.length === 1 && fields[0].code === "*") {
|
|
34594
|
+
const components = [];
|
|
34595
|
+
for (const info of sourceInfos) {
|
|
34596
|
+
const type = (_a = info.source) === null || _a === void 0 ? void 0 : _a.parseType(scope.getRegistry());
|
|
34597
|
+
if (!(type instanceof basic_1.StructureType)) {
|
|
34598
|
+
return basic_1.VoidType.get("SELECT_todo3");
|
|
34599
|
+
}
|
|
34600
|
+
components.push({ name: info.alias || info.name, type });
|
|
34601
|
+
}
|
|
34602
|
+
return new basic_1.TableType(new basic_1.StructureType(components), tableOptions, undefined);
|
|
34603
|
+
}
|
|
34604
|
+
const components = [];
|
|
34605
|
+
for (const field of fields) {
|
|
34606
|
+
const type = this.findFieldType(field.code, sourceInfos, scope);
|
|
34607
|
+
if (type === undefined) {
|
|
34608
|
+
return basic_1.VoidType.get("SELECT_todo3");
|
|
34609
|
+
}
|
|
34610
|
+
const name = field.as || field.code.split("~").pop();
|
|
34611
|
+
components.push({ name, type });
|
|
34612
|
+
}
|
|
34613
|
+
return new basic_1.TableType(new basic_1.StructureType(components), tableOptions, undefined);
|
|
34614
|
+
}
|
|
34615
|
+
else if (dbSources.length !== 1) {
|
|
34549
34616
|
return basic_1.VoidType.get("SELECT_todo3");
|
|
34550
34617
|
}
|
|
34551
|
-
const tableOptions = { withHeader: false, keyType: basic_1.TableKeyType.empty };
|
|
34552
34618
|
if (dbSources[0] === undefined) {
|
|
34553
34619
|
// then its a voided table
|
|
34554
34620
|
return new basic_1.TableType(basic_1.VoidType.get("SELECT_todo4"), tableOptions, undefined);
|
|
@@ -34574,6 +34640,39 @@ class Select {
|
|
|
34574
34640
|
}
|
|
34575
34641
|
return basic_1.VoidType.get("SELECT_todo7");
|
|
34576
34642
|
}
|
|
34643
|
+
static buildDatabaseSourceInfos(from, dbSources) {
|
|
34644
|
+
const fromSources = from.findAllExpressions(Expressions.SQLFromSource);
|
|
34645
|
+
return dbSources.map((source, index) => {
|
|
34646
|
+
var _a, _b;
|
|
34647
|
+
const fromSource = fromSources[index];
|
|
34648
|
+
const name = ((_a = fromSource === null || fromSource === void 0 ? void 0 : fromSource.findFirstExpression(Expressions.DatabaseTable)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr().replace(/^\*/, "").toUpperCase()) || "";
|
|
34649
|
+
const alias = ((_b = fromSource === null || fromSource === void 0 ? void 0 : fromSource.findDirectExpression(Expressions.SQLAsName)) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase()) || "";
|
|
34650
|
+
return { source, name, alias };
|
|
34651
|
+
});
|
|
34652
|
+
}
|
|
34653
|
+
static findFieldType(code, sourceInfos, scope) {
|
|
34654
|
+
var _a;
|
|
34655
|
+
const separator = code.indexOf("~");
|
|
34656
|
+
const qualifier = separator >= 0 ? code.substring(0, separator) : undefined;
|
|
34657
|
+
const fieldName = separator >= 0 ? code.substring(separator + 1) : code;
|
|
34658
|
+
const candidates = qualifier === undefined
|
|
34659
|
+
? sourceInfos
|
|
34660
|
+
: sourceInfos.filter(info => info.alias === qualifier || info.name === qualifier);
|
|
34661
|
+
for (const candidate of candidates) {
|
|
34662
|
+
let type = (_a = candidate.source) === null || _a === void 0 ? void 0 : _a.parseType(scope.getRegistry());
|
|
34663
|
+
for (const component of fieldName.split("-")) {
|
|
34664
|
+
if (!(type instanceof basic_1.StructureType)) {
|
|
34665
|
+
type = undefined;
|
|
34666
|
+
break;
|
|
34667
|
+
}
|
|
34668
|
+
type = type.getComponentByName(component);
|
|
34669
|
+
}
|
|
34670
|
+
if (type) {
|
|
34671
|
+
return type;
|
|
34672
|
+
}
|
|
34673
|
+
}
|
|
34674
|
+
return undefined;
|
|
34675
|
+
}
|
|
34577
34676
|
static findFields(node, input) {
|
|
34578
34677
|
var _a, _b;
|
|
34579
34678
|
let expr = undefined;
|
|
@@ -34587,7 +34686,7 @@ class Select {
|
|
|
34587
34686
|
let code = field.concatTokens().toUpperCase();
|
|
34588
34687
|
const as = ((_b = field.findDirectExpression(Expressions.SQLAsName)) === null || _b === void 0 ? void 0 : _b.concatTokens()) || "";
|
|
34589
34688
|
if (as !== "") {
|
|
34590
|
-
code = code.replace(" AS " + as, "");
|
|
34689
|
+
code = code.replace(" AS " + as.toUpperCase(), "");
|
|
34591
34690
|
}
|
|
34592
34691
|
ret.push({ code, as, expression: field });
|
|
34593
34692
|
}
|
|
@@ -36343,6 +36442,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36343
36442
|
})();
|
|
36344
36443
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36345
36444
|
exports.ValueBody = void 0;
|
|
36445
|
+
const nodes_1 = __webpack_require__(/*! ../../nodes */ "./node_modules/@abaplint/core/build/src/abap/nodes/index.js");
|
|
36346
36446
|
const Expressions = __importStar(__webpack_require__(/*! ../../2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js"));
|
|
36347
36447
|
const for_1 = __webpack_require__(/*! ./for */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/for.js");
|
|
36348
36448
|
const source_1 = __webpack_require__(/*! ./source */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js");
|
|
@@ -36352,7 +36452,7 @@ const basic_1 = __webpack_require__(/*! ../../types/basic */ "./node_modules/@ab
|
|
|
36352
36452
|
const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
|
|
36353
36453
|
class ValueBody {
|
|
36354
36454
|
static runSyntax(node, input, targetType) {
|
|
36355
|
-
var _a, _b;
|
|
36455
|
+
var _a, _b, _c;
|
|
36356
36456
|
if (node === undefined) {
|
|
36357
36457
|
return targetType;
|
|
36358
36458
|
}
|
|
@@ -36369,26 +36469,45 @@ class ValueBody {
|
|
|
36369
36469
|
}
|
|
36370
36470
|
}
|
|
36371
36471
|
const fields = new Set();
|
|
36372
|
-
|
|
36373
|
-
|
|
36374
|
-
if (
|
|
36375
|
-
|
|
36376
|
-
|
|
36472
|
+
const hasTableLines = node.findDirectExpression(Expressions.ValueBodyLine) !== undefined;
|
|
36473
|
+
for (const child of node.getChildren()) {
|
|
36474
|
+
if (!(child instanceof nodes_1.ExpressionNode)) {
|
|
36475
|
+
continue;
|
|
36476
|
+
}
|
|
36477
|
+
else if (child.get() instanceof Expressions.FieldAssignment) {
|
|
36478
|
+
const fieldname = (_a = child.findDirectExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();
|
|
36479
|
+
if (fieldname && hasTableLines === false && fields.has(fieldname)) {
|
|
36480
|
+
const message = "Duplicate field assignment";
|
|
36481
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, child.getFirstToken(), message));
|
|
36482
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
36483
|
+
}
|
|
36377
36484
|
if (fieldname) {
|
|
36378
|
-
|
|
36485
|
+
fields.add(fieldname);
|
|
36486
|
+
}
|
|
36487
|
+
}
|
|
36488
|
+
else if (child.get() instanceof Expressions.ValueBodyLine) {
|
|
36489
|
+
const rowFields = new Set(fields);
|
|
36490
|
+
for (const assignment of child.findDirectExpressions(Expressions.FieldAssignment)) {
|
|
36491
|
+
const fieldname = (_b = assignment.findDirectExpression(Expressions.FieldSub)) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase();
|
|
36492
|
+
if (fieldname && rowFields.has(fieldname)) {
|
|
36379
36493
|
const message = "Duplicate field assignment";
|
|
36380
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
36494
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, assignment.getFirstToken(), message));
|
|
36381
36495
|
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
36382
36496
|
}
|
|
36383
|
-
|
|
36497
|
+
if (fieldname) {
|
|
36498
|
+
rowFields.add(fieldname);
|
|
36499
|
+
}
|
|
36384
36500
|
}
|
|
36385
36501
|
}
|
|
36386
36502
|
}
|
|
36503
|
+
for (const s of node.findDirectExpressions(Expressions.FieldAssignment)) {
|
|
36504
|
+
field_assignment_1.FieldAssignment.runSyntax(s, input, targetType);
|
|
36505
|
+
}
|
|
36387
36506
|
let type = undefined; // todo, this is only correct if there is a single source in the body
|
|
36388
36507
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
36389
36508
|
type = source_1.Source.runSyntax(s, input, type);
|
|
36390
36509
|
}
|
|
36391
|
-
for (const s of ((
|
|
36510
|
+
for (const s of ((_c = node.findDirectExpression(Expressions.ValueBase)) === null || _c === void 0 ? void 0 : _c.findDirectExpressions(Expressions.Source)) || []) {
|
|
36392
36511
|
type = source_1.Source.runSyntax(s, input, type);
|
|
36393
36512
|
}
|
|
36394
36513
|
for (const foo of node.findDirectExpressions(Expressions.ValueBodyLine)) {
|
|
@@ -38064,7 +38183,12 @@ const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modu
|
|
|
38064
38183
|
const _type_utils_1 = __webpack_require__(/*! ../_type_utils */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js");
|
|
38065
38184
|
class Catch {
|
|
38066
38185
|
runSyntax(node, input) {
|
|
38067
|
-
var _a;
|
|
38186
|
+
var _a, _b, _c;
|
|
38187
|
+
const target = node.findDirectExpression(Expressions.Target);
|
|
38188
|
+
const inlineTarget = (_b = (_a = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData)) === null || _a === void 0 ? void 0 : _a.findFirstExpression(Expressions.TargetField)) === null || _b === void 0 ? void 0 : _b.getFirstToken();
|
|
38189
|
+
if (inlineTarget && inlineTarget.getStr().length > 30) {
|
|
38190
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, inlineTarget, "Inline exception name longer than 30 characters"));
|
|
38191
|
+
}
|
|
38068
38192
|
const names = new Set();
|
|
38069
38193
|
for (const c of node.findDirectExpressions(Expressions.ClassName)) {
|
|
38070
38194
|
const token = c.getFirstToken();
|
|
@@ -38088,9 +38212,8 @@ class Catch {
|
|
|
38088
38212
|
}
|
|
38089
38213
|
names.add(className);
|
|
38090
38214
|
}
|
|
38091
|
-
const target = node.findDirectExpression(Expressions.Target);
|
|
38092
38215
|
if (target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData)) {
|
|
38093
|
-
const token = (
|
|
38216
|
+
const token = (_c = target.findFirstExpression(Expressions.TargetField)) === null || _c === void 0 ? void 0 : _c.getFirstToken();
|
|
38094
38217
|
if (token) {
|
|
38095
38218
|
const classNames = Array.from(names);
|
|
38096
38219
|
const unknownClass = classNames.find(name => input.scope.findClassDefinition(name) === undefined);
|
|
@@ -39804,6 +39927,7 @@ const Expressions = __importStar(__webpack_require__(/*! ../../2_statements/expr
|
|
|
39804
39927
|
const source_1 = __webpack_require__(/*! ../expressions/source */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js");
|
|
39805
39928
|
const dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js");
|
|
39806
39929
|
const database_table_1 = __webpack_require__(/*! ../expressions/database_table */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js");
|
|
39930
|
+
const _check_database_fields_1 = __webpack_require__(/*! ../expressions/_check_database_fields */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/_check_database_fields.js");
|
|
39807
39931
|
class DeleteDatabase {
|
|
39808
39932
|
runSyntax(node, input) {
|
|
39809
39933
|
for (const s of node.findAllExpressions(Expressions.Source)) {
|
|
@@ -39817,7 +39941,14 @@ class DeleteDatabase {
|
|
|
39817
39941
|
}
|
|
39818
39942
|
const dbtab = node.findFirstExpression(Expressions.DatabaseTable);
|
|
39819
39943
|
if (dbtab !== undefined) {
|
|
39820
|
-
database_table_1.DatabaseTable.runSyntax(dbtab, input);
|
|
39944
|
+
const dbSource = database_table_1.DatabaseTable.runSyntax(dbtab, input);
|
|
39945
|
+
const fields = node.findAllExpressions(Expressions.SQLCompare)
|
|
39946
|
+
.map(compare => { var _a; return (_a = compare.findDirectExpression(Expressions.SQLFieldName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase(); })
|
|
39947
|
+
.filter(field => field !== undefined);
|
|
39948
|
+
for (const orderBy of node.findAllExpressions(Expressions.SQLOrderBy)) {
|
|
39949
|
+
fields.push(...orderBy.findAllExpressions(Expressions.SQLFieldName).map(field => field.concatTokens().toUpperCase()));
|
|
39950
|
+
}
|
|
39951
|
+
(0, _check_database_fields_1.checkDatabaseFields)(fields, [dbSource], input, node.getFirstToken());
|
|
39821
39952
|
}
|
|
39822
39953
|
}
|
|
39823
39954
|
}
|
|
@@ -42852,7 +42983,7 @@ class MethodImplementation {
|
|
|
42852
42983
|
return;
|
|
42853
42984
|
}
|
|
42854
42985
|
const start = node.getFirstToken().getStart();
|
|
42855
|
-
if ((methodDefinition === null || methodDefinition === void 0 ? void 0 : methodDefinition.isStatic()) === false) {
|
|
42986
|
+
if ((methodDefinition === null || methodDefinition === void 0 ? void 0 : methodDefinition.isStatic()) === false || methodDefinition === undefined) {
|
|
42856
42987
|
input.scope.push(_scope_type_1.ScopeType.MethodInstance, methodName, start, input.filename);
|
|
42857
42988
|
input.scope.addList(classDefinition.getAttributes().getInstance());
|
|
42858
42989
|
}
|
|
@@ -46762,11 +46893,19 @@ const _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifie
|
|
|
46762
46893
|
const identifier_1 = __webpack_require__(/*! ../../1_lexer/tokens/identifier */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js");
|
|
46763
46894
|
const database_table_1 = __webpack_require__(/*! ../expressions/database_table */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js");
|
|
46764
46895
|
const dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js");
|
|
46896
|
+
const _check_database_fields_1 = __webpack_require__(/*! ../expressions/_check_database_fields */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/_check_database_fields.js");
|
|
46765
46897
|
class UpdateDatabase {
|
|
46766
46898
|
runSyntax(node, input) {
|
|
46767
46899
|
const dbtab = node.findFirstExpression(Expressions.DatabaseTable);
|
|
46768
46900
|
if (dbtab !== undefined) {
|
|
46769
|
-
database_table_1.DatabaseTable.runSyntax(dbtab, input);
|
|
46901
|
+
const dbSource = database_table_1.DatabaseTable.runSyntax(dbtab, input);
|
|
46902
|
+
const fields = node.findAllExpressions(Expressions.SQLFieldAndValue)
|
|
46903
|
+
.flatMap(fieldAndValue => fieldAndValue.findDirectExpressions(Expressions.SQLFieldName))
|
|
46904
|
+
.map(field => field.concatTokens().toUpperCase());
|
|
46905
|
+
fields.push(...node.findAllExpressions(Expressions.SQLCompare)
|
|
46906
|
+
.map(compare => { var _a; return (_a = compare.findDirectExpression(Expressions.SQLFieldName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase(); })
|
|
46907
|
+
.filter(field => field !== undefined));
|
|
46908
|
+
(0, _check_database_fields_1.checkDatabaseFields)(fields, [dbSource], input, node.getFirstToken());
|
|
46770
46909
|
}
|
|
46771
46910
|
const tableName = node.findDirectExpression(Expressions.DatabaseTable);
|
|
46772
46911
|
const tokenName = tableName === null || tableName === void 0 ? void 0 : tableName.getFirstToken();
|
|
@@ -48040,6 +48179,7 @@ const include_type_1 = __webpack_require__(/*! ../statements/include_type */ "./
|
|
|
48040
48179
|
const type_1 = __webpack_require__(/*! ../statements/type */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/type.js");
|
|
48041
48180
|
const Basic = __importStar(__webpack_require__(/*! ../../types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js"));
|
|
48042
48181
|
const _scope_type_1 = __webpack_require__(/*! ../_scope_type */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js");
|
|
48182
|
+
const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
|
|
48043
48183
|
class Types {
|
|
48044
48184
|
runSyntax(node, input, qualifiedNamePrefix) {
|
|
48045
48185
|
const name = node.findFirstExpression(Expressions.NamespaceSimpleName).getFirstToken();
|
|
@@ -48054,6 +48194,9 @@ class Types {
|
|
|
48054
48194
|
if (ctyp instanceof Statements.Type) {
|
|
48055
48195
|
const found = new type_1.Type().runSyntax(c, input, qualifiedNamePrefix + name.getStr() + "-");
|
|
48056
48196
|
if (found) {
|
|
48197
|
+
if (found.getName().length > 30) {
|
|
48198
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, found.getToken(), "Structure field name longer than 30 characters"));
|
|
48199
|
+
}
|
|
48057
48200
|
components.push({ name: found.getName(), type: found.getType() });
|
|
48058
48201
|
}
|
|
48059
48202
|
}
|
|
@@ -48070,6 +48213,9 @@ class Types {
|
|
|
48070
48213
|
else if (c instanceof nodes_1.StructureNode && ctyp instanceof Structures.Types) {
|
|
48071
48214
|
const found = new Types().runSyntax(c, input, qualifiedNamePrefix + name.getStr() + "-");
|
|
48072
48215
|
if (found) {
|
|
48216
|
+
if (found.getName().length > 30) {
|
|
48217
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, found.getToken(), "Structure field name longer than 30 characters"));
|
|
48218
|
+
}
|
|
48073
48219
|
components.push({ name: found.getName(), type: found.getType() });
|
|
48074
48220
|
}
|
|
48075
48221
|
}
|
|
@@ -52170,7 +52316,7 @@ class ClassDefinition extends _identifier_1.Identifier {
|
|
|
52170
52316
|
this.checkEventNameConflicts(input);
|
|
52171
52317
|
this.checkClassNameLength(input);
|
|
52172
52318
|
this.checkMethodNameLength(input);
|
|
52173
|
-
this.
|
|
52319
|
+
this.checkClassConstructor(input);
|
|
52174
52320
|
}
|
|
52175
52321
|
getFriends() {
|
|
52176
52322
|
return this.friends;
|
|
@@ -52240,11 +52386,17 @@ class ClassDefinition extends _identifier_1.Identifier {
|
|
|
52240
52386
|
}
|
|
52241
52387
|
}
|
|
52242
52388
|
}
|
|
52243
|
-
|
|
52389
|
+
checkClassConstructor(input) {
|
|
52244
52390
|
for (const m of this.methodDefs.getAll()) {
|
|
52245
|
-
if (m.getName().toUpperCase()
|
|
52391
|
+
if (m.getName().toUpperCase() !== "CLASS_CONSTRUCTOR") {
|
|
52392
|
+
continue;
|
|
52393
|
+
}
|
|
52394
|
+
if (m.isStatic() === false) {
|
|
52246
52395
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, m.getToken(), "CLASS_CONSTRUCTOR must be static"));
|
|
52247
52396
|
}
|
|
52397
|
+
else if (m.getVisibility() !== visibility_1.Visibility.Public) {
|
|
52398
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, m.getToken(), "CLASS_CONSTRUCTOR must be declared in the public section"));
|
|
52399
|
+
}
|
|
52248
52400
|
}
|
|
52249
52401
|
}
|
|
52250
52402
|
checkInterfaceVisibility(input, node) {
|
|
@@ -53409,6 +53561,7 @@ const _object_oriented_1 = __webpack_require__(/*! ../5_syntax/_object_oriented
|
|
|
53409
53561
|
const _reference_1 = __webpack_require__(/*! ../5_syntax/_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js");
|
|
53410
53562
|
const identifier_1 = __webpack_require__(/*! ../1_lexer/tokens/identifier */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js");
|
|
53411
53563
|
const _scope_type_1 = __webpack_require__(/*! ../5_syntax/_scope_type */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js");
|
|
53564
|
+
const _syntax_input_1 = __webpack_require__(/*! ../5_syntax/_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
|
|
53412
53565
|
// todo:
|
|
53413
53566
|
// this.exceptions = [];
|
|
53414
53567
|
// also consider RAISING vs EXCEPTIONS
|
|
@@ -53431,6 +53584,7 @@ class MethodParameters {
|
|
|
53431
53584
|
input.scope.push(_scope_type_1.ScopeType.MethodDefinition, "method definition", node.getStart(), input.filename);
|
|
53432
53585
|
try {
|
|
53433
53586
|
this.parse(node, input, parentName, abstractMethod);
|
|
53587
|
+
this.checkNameLengths(input);
|
|
53434
53588
|
this.checkDuplicateNames();
|
|
53435
53589
|
}
|
|
53436
53590
|
finally {
|
|
@@ -53582,6 +53736,13 @@ class MethodParameters {
|
|
|
53582
53736
|
names.add(name);
|
|
53583
53737
|
}
|
|
53584
53738
|
}
|
|
53739
|
+
checkNameLengths(input) {
|
|
53740
|
+
for (const parameter of this.getAll()) {
|
|
53741
|
+
if (parameter.getName().length > 30) {
|
|
53742
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, parameter.getToken(), "Method parameter name longer than 30 characters"));
|
|
53743
|
+
}
|
|
53744
|
+
}
|
|
53745
|
+
}
|
|
53585
53746
|
workaroundRAP(node, input, parentName) {
|
|
53586
53747
|
const resultName = node.findExpressionAfterToken("RESULT");
|
|
53587
53748
|
const concat = node.concatTokens().toUpperCase();
|
|
@@ -62872,6 +63033,7 @@ const _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ "./node
|
|
|
62872
63033
|
const ddic_1 = __webpack_require__(/*! ../ddic */ "./node_modules/@abaplint/core/build/src/ddic.js");
|
|
62873
63034
|
const Types = __importStar(__webpack_require__(/*! ../abap/types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js"));
|
|
62874
63035
|
const xml_utils_1 = __webpack_require__(/*! ../xml_utils */ "./node_modules/@abaplint/core/build/src/xml_utils.js");
|
|
63036
|
+
const domain_1 = __webpack_require__(/*! ./domain */ "./node_modules/@abaplint/core/build/src/objects/domain.js");
|
|
62875
63037
|
class DataElement extends _abstract_object_1.AbstractObject {
|
|
62876
63038
|
constructor() {
|
|
62877
63039
|
super(...arguments);
|
|
@@ -62902,6 +63064,22 @@ class DataElement extends _abstract_object_1.AbstractObject {
|
|
|
62902
63064
|
this.parse();
|
|
62903
63065
|
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.domname;
|
|
62904
63066
|
}
|
|
63067
|
+
/** parseType() cannot distinguish DEC, CURR, and QUAN because they all become PackedType.
|
|
63068
|
+
* Return the original DDIC datatype instead, resolving domain-backed data elements when possible. */
|
|
63069
|
+
getDataType(reg) {
|
|
63070
|
+
var _a, _b;
|
|
63071
|
+
this.parse();
|
|
63072
|
+
if ((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.datatype) {
|
|
63073
|
+
return this.parsedXML.datatype;
|
|
63074
|
+
}
|
|
63075
|
+
if (reg && ((_b = this.parsedXML) === null || _b === void 0 ? void 0 : _b.refkind) === "D" && this.parsedXML.domname) {
|
|
63076
|
+
const domain = reg.getObject("DOMA", this.parsedXML.domname);
|
|
63077
|
+
if (domain instanceof domain_1.Domain) {
|
|
63078
|
+
return domain.getDataType();
|
|
63079
|
+
}
|
|
63080
|
+
}
|
|
63081
|
+
return undefined;
|
|
63082
|
+
}
|
|
62905
63083
|
getTexts() {
|
|
62906
63084
|
var _a;
|
|
62907
63085
|
this.parse();
|
|
@@ -63185,6 +63363,11 @@ class Domain extends _abstract_object_1.AbstractObject {
|
|
|
63185
63363
|
var _a;
|
|
63186
63364
|
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.conversionExit;
|
|
63187
63365
|
}
|
|
63366
|
+
getDataType() {
|
|
63367
|
+
var _a;
|
|
63368
|
+
this.parse();
|
|
63369
|
+
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.datatype;
|
|
63370
|
+
}
|
|
63188
63371
|
getAllowedNaming() {
|
|
63189
63372
|
return {
|
|
63190
63373
|
maxLength: 30,
|
|
@@ -70116,7 +70299,7 @@ class Registry {
|
|
|
70116
70299
|
}
|
|
70117
70300
|
static abaplintVersion() {
|
|
70118
70301
|
// magic, see build script "version.js"
|
|
70119
|
-
return "2.120.
|
|
70302
|
+
return "2.120.28";
|
|
70120
70303
|
}
|
|
70121
70304
|
getDDICReferences() {
|
|
70122
70305
|
return this.ddicReferences;
|
|
@@ -72780,6 +72963,315 @@ exports.CDSAssociationName = CDSAssociationName;
|
|
|
72780
72963
|
|
|
72781
72964
|
/***/ },
|
|
72782
72965
|
|
|
72966
|
+
/***/ "./node_modules/@abaplint/core/build/src/rules/cds_check_syntax.js"
|
|
72967
|
+
/*!*************************************************************************!*\
|
|
72968
|
+
!*** ./node_modules/@abaplint/core/build/src/rules/cds_check_syntax.js ***!
|
|
72969
|
+
\*************************************************************************/
|
|
72970
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
72971
|
+
|
|
72972
|
+
"use strict";
|
|
72973
|
+
|
|
72974
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
72975
|
+
exports.CDSCheckSyntax = exports.CDSCheckSyntaxConf = void 0;
|
|
72976
|
+
const nodes_1 = __webpack_require__(/*! ../abap/nodes */ "./node_modules/@abaplint/core/build/src/abap/nodes/index.js");
|
|
72977
|
+
const basic_1 = __webpack_require__(/*! ../abap/types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js");
|
|
72978
|
+
const expressions_1 = __webpack_require__(/*! ../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
|
|
72979
|
+
const ddic_1 = __webpack_require__(/*! ../ddic */ "./node_modules/@abaplint/core/build/src/ddic.js");
|
|
72980
|
+
const issue_1 = __webpack_require__(/*! ../issue */ "./node_modules/@abaplint/core/build/src/issue.js");
|
|
72981
|
+
const objects_1 = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
|
|
72982
|
+
const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js");
|
|
72983
|
+
const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/core/build/src/rules/_irule.js");
|
|
72984
|
+
class CDSCheckSyntaxConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
72985
|
+
}
|
|
72986
|
+
exports.CDSCheckSyntaxConf = CDSCheckSyntaxConf;
|
|
72987
|
+
const KNOWN_QUAN_DATA_ELEMENTS = ["MENGE_D"];
|
|
72988
|
+
const KNOWN_CURR_DATA_ELEMENTS = ["BWERT", "DZWERT"];
|
|
72989
|
+
class CDSCheckSyntax {
|
|
72990
|
+
constructor() {
|
|
72991
|
+
this.conf = new CDSCheckSyntaxConf();
|
|
72992
|
+
}
|
|
72993
|
+
getMetadata() {
|
|
72994
|
+
return {
|
|
72995
|
+
key: "cds_check_syntax",
|
|
72996
|
+
title: "CDS Check Syntax",
|
|
72997
|
+
shortDescription: "Checks CDS source, field, type, and semantic annotation references",
|
|
72998
|
+
extendedInformation: `Performs semantic checks which require other DDIC objects to be available.
|
|
72999
|
+
|
|
73000
|
+
Missing objects are only reported when their names match the configured errorNamespace.`,
|
|
73001
|
+
tags: [_irule_1.RuleTag.Syntax],
|
|
73002
|
+
};
|
|
73003
|
+
}
|
|
73004
|
+
getConfig() {
|
|
73005
|
+
return this.conf;
|
|
73006
|
+
}
|
|
73007
|
+
setConfig(conf) {
|
|
73008
|
+
this.conf = conf;
|
|
73009
|
+
}
|
|
73010
|
+
initialize(reg) {
|
|
73011
|
+
this.reg = reg;
|
|
73012
|
+
return this;
|
|
73013
|
+
}
|
|
73014
|
+
run(object) {
|
|
73015
|
+
if (!(object instanceof objects_1.DataDefinition)) {
|
|
73016
|
+
return [];
|
|
73017
|
+
}
|
|
73018
|
+
const tree = object.getTree();
|
|
73019
|
+
const file = object.findSourceFile();
|
|
73020
|
+
if (tree === undefined || file === undefined) {
|
|
73021
|
+
return [];
|
|
73022
|
+
}
|
|
73023
|
+
const issues = [];
|
|
73024
|
+
const ddic = new ddic_1.DDIC(this.reg);
|
|
73025
|
+
const sources = this.findSources(tree, ddic, issues, file);
|
|
73026
|
+
this.checkRelations(tree, ddic, issues, file);
|
|
73027
|
+
this.checkTypes(tree, ddic, issues, file);
|
|
73028
|
+
this.checkRootProjection(tree, ddic, issues, file);
|
|
73029
|
+
this.checkFieldAnnotations(tree, ddic, issues, file);
|
|
73030
|
+
this.checkFields(tree, sources, object, issues, file);
|
|
73031
|
+
return issues;
|
|
73032
|
+
}
|
|
73033
|
+
findSources(tree, ddic, issues, file) {
|
|
73034
|
+
var _a;
|
|
73035
|
+
const sources = [];
|
|
73036
|
+
for (const node of tree.findAllExpressionsRecursive(expressions_1.CDSSource)) {
|
|
73037
|
+
const prefixed = node.findDirectExpression(expressions_1.CDSPrefixedName);
|
|
73038
|
+
const entityNode = prefixed === null || prefixed === void 0 ? void 0 : prefixed.findDirectExpression(expressions_1.CDSName);
|
|
73039
|
+
if (entityNode === undefined) {
|
|
73040
|
+
continue;
|
|
73041
|
+
}
|
|
73042
|
+
const entity = this.name(entityNode);
|
|
73043
|
+
const asName = (_a = node.findDirectExpression(expressions_1.CDSAs)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(expressions_1.CDSName);
|
|
73044
|
+
const bareAlias = node.findDirectExpression(expressions_1.CDSName);
|
|
73045
|
+
const alias = asName === undefined ? bareAlias : asName;
|
|
73046
|
+
const lookup = ddic.lookupTableOrView(entity);
|
|
73047
|
+
if (lookup.type instanceof basic_1.UnknownType && lookup.object === undefined && this.reg.inErrorNamespace(entity)) {
|
|
73048
|
+
issues.push(issue_1.Issue.atToken(file, entityNode.getFirstToken(), `CDS source "${entity}" not found`, this.getMetadata().key, this.conf.severity));
|
|
73049
|
+
}
|
|
73050
|
+
if (lookup.type instanceof basic_1.StructureType || lookup.type instanceof basic_1.UnknownType || lookup.type instanceof basic_1.VoidType) {
|
|
73051
|
+
const names = [entity.toUpperCase()];
|
|
73052
|
+
if (alias) {
|
|
73053
|
+
names.push(this.name(alias).toUpperCase());
|
|
73054
|
+
}
|
|
73055
|
+
sources.push({ entity, names, type: lookup.type });
|
|
73056
|
+
}
|
|
73057
|
+
}
|
|
73058
|
+
return sources;
|
|
73059
|
+
}
|
|
73060
|
+
checkRelations(tree, ddic, issues, file) {
|
|
73061
|
+
for (const relation of tree.findAllExpressionsRecursive(expressions_1.CDSRelation)) {
|
|
73062
|
+
const directTokens = relation.getDirectTokens();
|
|
73063
|
+
if (directTokens.length === 0) {
|
|
73064
|
+
continue;
|
|
73065
|
+
}
|
|
73066
|
+
const entity = directTokens.map(t => t.getStr()).join("");
|
|
73067
|
+
const lookup = ddic.lookupTableOrView(entity);
|
|
73068
|
+
if (lookup.type instanceof basic_1.UnknownType && lookup.object === undefined && this.reg.inErrorNamespace(entity)) {
|
|
73069
|
+
issues.push(issue_1.Issue.atToken(file, directTokens[0], `CDS source "${entity}" not found`, this.getMetadata().key, this.conf.severity));
|
|
73070
|
+
}
|
|
73071
|
+
}
|
|
73072
|
+
}
|
|
73073
|
+
checkTypes(tree, ddic, issues, file) {
|
|
73074
|
+
for (const typeNode of tree.findAllExpressionsRecursive(expressions_1.CDSType)) {
|
|
73075
|
+
const typeName = typeNode.findDirectExpressions(expressions_1.CDSName).map(n => this.name(n)).join(".");
|
|
73076
|
+
if (typeName === "" || typeName.toUpperCase().startsWith("ABAP.")) {
|
|
73077
|
+
continue;
|
|
73078
|
+
}
|
|
73079
|
+
const lookup = ddic.lookup(typeName);
|
|
73080
|
+
if (lookup.type instanceof basic_1.UnknownType && lookup.object === undefined && this.reg.inErrorNamespace(typeName)) {
|
|
73081
|
+
issues.push(issue_1.Issue.atToken(file, typeNode.getFirstToken(), `CDS type "${typeName}" not found`, this.getMetadata().key, this.conf.severity));
|
|
73082
|
+
}
|
|
73083
|
+
}
|
|
73084
|
+
}
|
|
73085
|
+
checkRootProjection(tree, ddic, issues, file) {
|
|
73086
|
+
var _a;
|
|
73087
|
+
const projection = tree.findFirstExpression(expressions_1.CDSDefineProjection);
|
|
73088
|
+
const rootToken = projection === null || projection === void 0 ? void 0 : projection.findDirectTokenByText("ROOT");
|
|
73089
|
+
if (projection === undefined || rootToken === undefined) {
|
|
73090
|
+
return;
|
|
73091
|
+
}
|
|
73092
|
+
const names = projection.findDirectExpressions(expressions_1.CDSName);
|
|
73093
|
+
const projectedEntityNode = names[1];
|
|
73094
|
+
if (projectedEntityNode === undefined) {
|
|
73095
|
+
return;
|
|
73096
|
+
}
|
|
73097
|
+
const projectedEntityName = this.name(projectedEntityNode);
|
|
73098
|
+
const projectedEntity = ddic.lookupTableOrView(projectedEntityName).object;
|
|
73099
|
+
if (projectedEntity instanceof objects_1.DataDefinition
|
|
73100
|
+
&& ((_a = projectedEntity.getTree()) === null || _a === void 0 ? void 0 : _a.findDirectTokenByText("ROOT")) === undefined) {
|
|
73101
|
+
const message = `ROOT keyword not valid since ${projectedEntityName} is not a root property`;
|
|
73102
|
+
issues.push(issue_1.Issue.atToken(file, rootToken, message, this.getMetadata().key, this.conf.severity));
|
|
73103
|
+
}
|
|
73104
|
+
}
|
|
73105
|
+
checkFieldAnnotations(tree, ddic, issues, file) {
|
|
73106
|
+
const definition = tree.findFirstExpression(expressions_1.CDSDefineAbstract);
|
|
73107
|
+
if (definition === undefined) {
|
|
73108
|
+
return;
|
|
73109
|
+
}
|
|
73110
|
+
let definitionNameSeen = false;
|
|
73111
|
+
let fieldName;
|
|
73112
|
+
let annotations = [];
|
|
73113
|
+
const fields = [];
|
|
73114
|
+
for (const child of definition.getChildren()) {
|
|
73115
|
+
if (child instanceof nodes_1.TokenNode) {
|
|
73116
|
+
if (child.get().getStr() === ";") {
|
|
73117
|
+
fieldName = undefined;
|
|
73118
|
+
annotations = [];
|
|
73119
|
+
}
|
|
73120
|
+
continue;
|
|
73121
|
+
}
|
|
73122
|
+
else if (child.get() instanceof expressions_1.CDSAnnotation) {
|
|
73123
|
+
annotations.push(child);
|
|
73124
|
+
}
|
|
73125
|
+
else if (child.get() instanceof expressions_1.CDSName) {
|
|
73126
|
+
if (definitionNameSeen === false) {
|
|
73127
|
+
definitionNameSeen = true;
|
|
73128
|
+
annotations = [];
|
|
73129
|
+
}
|
|
73130
|
+
else {
|
|
73131
|
+
fieldName = child;
|
|
73132
|
+
}
|
|
73133
|
+
}
|
|
73134
|
+
else if (child.get() instanceof expressions_1.CDSType && fieldName !== undefined) {
|
|
73135
|
+
const semanticType = this.determineSemanticType(child, ddic);
|
|
73136
|
+
const normalizedAnnotations = annotations.map(a => a.concatTokens().replace(/\s/g, ""));
|
|
73137
|
+
fields.push({ name: this.name(fieldName), node: fieldName, annotations: normalizedAnnotations, semanticType });
|
|
73138
|
+
fieldName = undefined;
|
|
73139
|
+
annotations = [];
|
|
73140
|
+
}
|
|
73141
|
+
}
|
|
73142
|
+
const reportedCompanionFields = new Set();
|
|
73143
|
+
for (const field of fields) {
|
|
73144
|
+
if (field.semanticType === undefined) {
|
|
73145
|
+
continue;
|
|
73146
|
+
}
|
|
73147
|
+
const quantity = field.semanticType === "QUAN";
|
|
73148
|
+
const referenceAnnotation = quantity ? "@Semantics.quantity.unitOfMeasure" : "@Semantics.amount.currencyCode";
|
|
73149
|
+
const companionAnnotation = quantity ? "@Semantics.unitOfMeasure: true" : "@Semantics.currencyCode: true";
|
|
73150
|
+
const reference = this.findSemanticReference(field.annotations, field.semanticType);
|
|
73151
|
+
if (reference === undefined) {
|
|
73152
|
+
const kind = quantity ? "quantity" : "amount";
|
|
73153
|
+
const message = `CDS ${kind} field "${field.name}" requires ${referenceAnnotation}`;
|
|
73154
|
+
issues.push(issue_1.Issue.atToken(file, field.node.getFirstToken(), message, this.getMetadata().key, this.conf.severity));
|
|
73155
|
+
continue;
|
|
73156
|
+
}
|
|
73157
|
+
const companion = fields.find(f => f.name.toUpperCase() === reference.toUpperCase());
|
|
73158
|
+
if (companion === undefined) {
|
|
73159
|
+
const kind = quantity ? "unit" : "currency";
|
|
73160
|
+
const message = `CDS field "${field.name}" references missing ${kind} field "${reference}"`;
|
|
73161
|
+
issues.push(issue_1.Issue.atToken(file, field.node.getFirstToken(), message, this.getMetadata().key, this.conf.severity));
|
|
73162
|
+
continue;
|
|
73163
|
+
}
|
|
73164
|
+
const companionKey = field.semanticType + ":" + companion.name.toUpperCase();
|
|
73165
|
+
if (reportedCompanionFields.has(companionKey) === false
|
|
73166
|
+
&& this.hasCompanionAnnotation(companion.annotations, field.semanticType) === false) {
|
|
73167
|
+
const message = `CDS field "${companion.name}" requires ${companionAnnotation}`;
|
|
73168
|
+
issues.push(issue_1.Issue.atToken(file, companion.node.getFirstToken(), message, this.getMetadata().key, this.conf.severity));
|
|
73169
|
+
reportedCompanionFields.add(companionKey);
|
|
73170
|
+
}
|
|
73171
|
+
}
|
|
73172
|
+
}
|
|
73173
|
+
determineSemanticType(typeNode, ddic) {
|
|
73174
|
+
var _a;
|
|
73175
|
+
const typeName = typeNode.findDirectExpressions(expressions_1.CDSName).map(n => this.name(n)).join(".");
|
|
73176
|
+
const upper = typeName.toUpperCase();
|
|
73177
|
+
if (upper === "ABAP.QUAN" || KNOWN_QUAN_DATA_ELEMENTS.includes(upper)) {
|
|
73178
|
+
return "QUAN";
|
|
73179
|
+
}
|
|
73180
|
+
else if (upper === "ABAP.CURR" || KNOWN_CURR_DATA_ELEMENTS.includes(upper)) {
|
|
73181
|
+
return "CURR";
|
|
73182
|
+
}
|
|
73183
|
+
const object = ddic.lookup(typeName).object;
|
|
73184
|
+
if (object instanceof objects_1.DataElement) {
|
|
73185
|
+
const dataType = (_a = object.getDataType(this.reg)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
|
|
73186
|
+
if (dataType === "QUAN" || dataType === "CURR") {
|
|
73187
|
+
return dataType;
|
|
73188
|
+
}
|
|
73189
|
+
}
|
|
73190
|
+
return undefined;
|
|
73191
|
+
}
|
|
73192
|
+
findSemanticReference(annotations, type) {
|
|
73193
|
+
const expression = type === "QUAN"
|
|
73194
|
+
? /(?:SEMANTICS\.QUANTITY|SEMANTICS:\{QUANTITY:\{)\.?UNITOFMEASURE:'([^']+)'/i
|
|
73195
|
+
: /(?:SEMANTICS\.AMOUNT|SEMANTICS:\{AMOUNT:\{)\.?CURRENCYCODE:'([^']+)'/i;
|
|
73196
|
+
for (const annotation of annotations) {
|
|
73197
|
+
const match = annotation.match(expression);
|
|
73198
|
+
if (match) {
|
|
73199
|
+
return match[1];
|
|
73200
|
+
}
|
|
73201
|
+
}
|
|
73202
|
+
return undefined;
|
|
73203
|
+
}
|
|
73204
|
+
hasCompanionAnnotation(annotations, type) {
|
|
73205
|
+
if (type === "QUAN") {
|
|
73206
|
+
return annotations.some(a => a.toUpperCase().includes("@SEMANTICS.UNITOFMEASURE:TRUE")
|
|
73207
|
+
|| a.toUpperCase().includes("@SEMANTICS:{UNITOFMEASURE:TRUE"));
|
|
73208
|
+
}
|
|
73209
|
+
else {
|
|
73210
|
+
return annotations.some(a => a.toUpperCase().includes("@SEMANTICS.CURRENCYCODE:TRUE")
|
|
73211
|
+
|| a.toUpperCase().includes("@SEMANTICS:{CURRENCYCODE:TRUE"));
|
|
73212
|
+
}
|
|
73213
|
+
}
|
|
73214
|
+
checkFields(tree, sources, object, issues, file) {
|
|
73215
|
+
var _a;
|
|
73216
|
+
const associationNames = new Set();
|
|
73217
|
+
for (const association of ((_a = object.getParsedData()) === null || _a === void 0 ? void 0 : _a.associations) || []) {
|
|
73218
|
+
associationNames.add(association.name.toUpperCase());
|
|
73219
|
+
if (association.as) {
|
|
73220
|
+
associationNames.add(association.as.toUpperCase());
|
|
73221
|
+
}
|
|
73222
|
+
}
|
|
73223
|
+
for (const element of tree.findAllExpressionsRecursive(expressions_1.CDSElement)) {
|
|
73224
|
+
const prefixed = element.findDirectExpression(expressions_1.CDSPrefixedName);
|
|
73225
|
+
if (prefixed === undefined) {
|
|
73226
|
+
continue;
|
|
73227
|
+
}
|
|
73228
|
+
const names = prefixed.findDirectExpressions(expressions_1.CDSName);
|
|
73229
|
+
if (names.length === 0) {
|
|
73230
|
+
continue;
|
|
73231
|
+
}
|
|
73232
|
+
const first = this.name(names[0]);
|
|
73233
|
+
if (first === "*" || first.startsWith("$") || first.startsWith("#") || associationNames.has(first.toUpperCase())) {
|
|
73234
|
+
continue;
|
|
73235
|
+
}
|
|
73236
|
+
if (names.length > 1) {
|
|
73237
|
+
const matchingSources = sources.filter(s => s.names.includes(first.toUpperCase()));
|
|
73238
|
+
if (matchingSources.length !== 1) {
|
|
73239
|
+
continue;
|
|
73240
|
+
}
|
|
73241
|
+
const source = matchingSources[0];
|
|
73242
|
+
const sourceType = source.type;
|
|
73243
|
+
if (!(sourceType instanceof basic_1.StructureType)) {
|
|
73244
|
+
continue;
|
|
73245
|
+
}
|
|
73246
|
+
const field = this.name(names[1]);
|
|
73247
|
+
if (field !== "*" && sourceType.getComponentByName(field) === undefined) {
|
|
73248
|
+
issues.push(issue_1.Issue.atToken(file, names[1].getFirstToken(), `CDS field "${field}" not found in "${source.entity}"`, this.getMetadata().key, this.conf.severity));
|
|
73249
|
+
}
|
|
73250
|
+
continue;
|
|
73251
|
+
}
|
|
73252
|
+
// Do not guess across joins or when a dependency is absent.
|
|
73253
|
+
if (sources.length !== 1) {
|
|
73254
|
+
continue;
|
|
73255
|
+
}
|
|
73256
|
+
const source = sources[0];
|
|
73257
|
+
const sourceType = source.type;
|
|
73258
|
+
if (!(sourceType instanceof basic_1.StructureType)) {
|
|
73259
|
+
continue;
|
|
73260
|
+
}
|
|
73261
|
+
if (sourceType.getComponentByName(first) === undefined) {
|
|
73262
|
+
issues.push(issue_1.Issue.atToken(file, names[0].getFirstToken(), `CDS field "${first}" not found in "${source.entity}"`, this.getMetadata().key, this.conf.severity));
|
|
73263
|
+
}
|
|
73264
|
+
}
|
|
73265
|
+
}
|
|
73266
|
+
name(node) {
|
|
73267
|
+
return node.concatTokens().replace(/ /g, "");
|
|
73268
|
+
}
|
|
73269
|
+
}
|
|
73270
|
+
exports.CDSCheckSyntax = CDSCheckSyntax;
|
|
73271
|
+
//# sourceMappingURL=cds_check_syntax.js.map
|
|
73272
|
+
|
|
73273
|
+
/***/ },
|
|
73274
|
+
|
|
72783
73275
|
/***/ "./node_modules/@abaplint/core/build/src/rules/cds_comment_style.js"
|
|
72784
73276
|
/*!**************************************************************************!*\
|
|
72785
73277
|
!*** ./node_modules/@abaplint/core/build/src/rules/cds_comment_style.js ***!
|
|
@@ -83874,6 +84366,7 @@ __exportStar(__webpack_require__(/*! ./begin_single_include */ "./node_modules/@
|
|
|
83874
84366
|
__exportStar(__webpack_require__(/*! ./call_transaction_authority_check */ "./node_modules/@abaplint/core/build/src/rules/call_transaction_authority_check.js"), exports);
|
|
83875
84367
|
__exportStar(__webpack_require__(/*! ./catch_and_raise */ "./node_modules/@abaplint/core/build/src/rules/catch_and_raise.js"), exports);
|
|
83876
84368
|
__exportStar(__webpack_require__(/*! ./cds_association_name */ "./node_modules/@abaplint/core/build/src/rules/cds_association_name.js"), exports);
|
|
84369
|
+
__exportStar(__webpack_require__(/*! ./cds_check_syntax */ "./node_modules/@abaplint/core/build/src/rules/cds_check_syntax.js"), exports);
|
|
83877
84370
|
__exportStar(__webpack_require__(/*! ./cds_comment_style */ "./node_modules/@abaplint/core/build/src/rules/cds_comment_style.js"), exports);
|
|
83878
84371
|
__exportStar(__webpack_require__(/*! ./cds_field_order */ "./node_modules/@abaplint/core/build/src/rules/cds_field_order.js"), exports);
|
|
83879
84372
|
__exportStar(__webpack_require__(/*! ./cds_legacy_view */ "./node_modules/@abaplint/core/build/src/rules/cds_legacy_view.js"), exports);
|
|
@@ -105773,8 +106266,13 @@ class SQLCondTranspiler {
|
|
|
105773
106266
|
sqlSource(source, traversal, filename, table) {
|
|
105774
106267
|
let ret = "";
|
|
105775
106268
|
const simple = source.findDirectExpression(abaplint.Expressions.SimpleSource3);
|
|
106269
|
+
const hostExpression = source.findDirectExpression(abaplint.Expressions.Source);
|
|
105776
106270
|
const alias = source.findDirectExpression(abaplint.Expressions.SQLAliasField);
|
|
105777
|
-
if (
|
|
106271
|
+
if (source.getFirstToken().getStr() === "@" && hostExpression) {
|
|
106272
|
+
const code = new source_1.SourceTranspiler(true).transpile(hostExpression, traversal).getCode();
|
|
106273
|
+
ret += "'\" + " + code + " + \"'";
|
|
106274
|
+
}
|
|
106275
|
+
else if (simple && simple.findDirectExpression(abaplint.Expressions.Constant) === undefined) {
|
|
105778
106276
|
ret += "'\" + " + new simple_source3_1.SimpleSource3Transpiler(true).transpile(simple, traversal).getCode() + " + \"'";
|
|
105779
106277
|
}
|
|
105780
106278
|
else if (alias) {
|
|
@@ -109870,7 +110368,35 @@ class AuthorityCheckTranspiler {
|
|
|
109870
110368
|
transpile(node, traversal) {
|
|
109871
110369
|
const lookup = traversal.lookupClassOrInterface("KERNEL_AUTHORITY_CHECK", node.getFirstToken());
|
|
109872
110370
|
const options = [];
|
|
109873
|
-
|
|
110371
|
+
const object = node.findExpressionAfterToken("OBJECT");
|
|
110372
|
+
if (object) {
|
|
110373
|
+
options.push("object: " + traversal.traverse(object).getCode());
|
|
110374
|
+
}
|
|
110375
|
+
const user = node.findExpressionAfterToken("USER");
|
|
110376
|
+
if (user) {
|
|
110377
|
+
options.push("user: " + traversal.traverse(user).getCode());
|
|
110378
|
+
}
|
|
110379
|
+
const fields = [];
|
|
110380
|
+
const children = node.getChildren();
|
|
110381
|
+
for (let i = 0; i < children.length; i++) {
|
|
110382
|
+
if (children[i].concatTokens().toUpperCase() !== "ID") {
|
|
110383
|
+
continue;
|
|
110384
|
+
}
|
|
110385
|
+
const id = children[i + 1];
|
|
110386
|
+
const addition = children[i + 2]?.concatTokens().toUpperCase();
|
|
110387
|
+
if (id === undefined) {
|
|
110388
|
+
continue;
|
|
110389
|
+
}
|
|
110390
|
+
const field = ["id: " + traversal.traverse(id).getCode()];
|
|
110391
|
+
if (addition === "FIELD" && children[i + 3] !== undefined) {
|
|
110392
|
+
field.push("field: " + traversal.traverse(children[i + 3]).getCode());
|
|
110393
|
+
}
|
|
110394
|
+
else if (addition === "DUMMY") {
|
|
110395
|
+
field.push("dummy: true");
|
|
110396
|
+
}
|
|
110397
|
+
fields.push("{" + field.join(", ") + "}");
|
|
110398
|
+
}
|
|
110399
|
+
options.push("fields: [" + fields.join(", ") + "]");
|
|
109874
110400
|
const call = `await ${lookup}.call({${options.join(",")}});`;
|
|
109875
110401
|
return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("AuthorityCheck, kernel class missing");\n${call}`, node, traversal);
|
|
109876
110402
|
}
|
|
@@ -111469,8 +111995,13 @@ class CreateObjectTranspiler {
|
|
|
111469
111995
|
const cx = traversal.lookupClassOrInterface("CX_SY_CREATE_OBJECT_ERROR", node.getFirstToken());
|
|
111470
111996
|
if (dynamic) {
|
|
111471
111997
|
const id = unique_identifier_1.UniqueIdentifier.get();
|
|
111998
|
+
const internalName = unique_identifier_1.UniqueIdentifier.get();
|
|
111472
111999
|
ret += `let ${id} = abap.Classes["${traversal.buildPrefix()}"+${name}.trimEnd()];\n`;
|
|
111473
112000
|
ret += `if (${id} === undefined) { ${id} = abap.Classes[${name}.trimEnd()]; }\n`;
|
|
112001
|
+
ret += `if (${id} === undefined && abap.Classes['KERNEL_INTERNAL_NAME'] !== undefined) {\n`;
|
|
112002
|
+
ret += ` const ${internalName} = await abap.Classes['KERNEL_INTERNAL_NAME'].rtti_to_internal({iv_rtti: ${name}});\n`;
|
|
112003
|
+
ret += ` ${id} = abap.Classes[${internalName}.get().trimEnd()];\n`;
|
|
112004
|
+
ret += `}\n`;
|
|
111474
112005
|
ret += `if (${id} === undefined) { throw new ${cx}; }\n`;
|
|
111475
112006
|
clas = id;
|
|
111476
112007
|
}
|
|
@@ -113779,6 +114310,7 @@ __exportStar(__webpack_require__(/*! ./generate_subroutine */ "./node_modules/@a
|
|
|
113779
114310
|
__exportStar(__webpack_require__(/*! ./set_screen */ "./node_modules/@abaplint/transpiler/build/src/statements/set_screen.js"), exports);
|
|
113780
114311
|
__exportStar(__webpack_require__(/*! ./set_titlebar */ "./node_modules/@abaplint/transpiler/build/src/statements/set_titlebar.js"), exports);
|
|
113781
114312
|
__exportStar(__webpack_require__(/*! ./shift */ "./node_modules/@abaplint/transpiler/build/src/statements/shift.js"), exports);
|
|
114313
|
+
__exportStar(__webpack_require__(/*! ./skip */ "./node_modules/@abaplint/transpiler/build/src/statements/skip.js"), exports);
|
|
113782
114314
|
__exportStar(__webpack_require__(/*! ./sort_dataset */ "./node_modules/@abaplint/transpiler/build/src/statements/sort_dataset.js"), exports);
|
|
113783
114315
|
__exportStar(__webpack_require__(/*! ./sort */ "./node_modules/@abaplint/transpiler/build/src/statements/sort.js"), exports);
|
|
113784
114316
|
__exportStar(__webpack_require__(/*! ./split */ "./node_modules/@abaplint/transpiler/build/src/statements/split.js"), exports);
|
|
@@ -116540,7 +117072,10 @@ class SelectTranspiler {
|
|
|
116540
117072
|
else if (node.findFirstExpression(abaplint.Expressions.SQLIntoStructure)) {
|
|
116541
117073
|
target = traversal.traverse(node.findFirstExpression(abaplint.Expressions.SQLIntoStructure)).getCode();
|
|
116542
117074
|
}
|
|
116543
|
-
|
|
117075
|
+
const tokens = node.getTokens();
|
|
117076
|
+
const isDistinct = tokens[0]?.getStr().toUpperCase() === "SELECT"
|
|
117077
|
+
&& tokens[1]?.getStr().toUpperCase() === "DISTINCT";
|
|
117078
|
+
let select = isDistinct ? "SELECT DISTINCT " : "SELECT ";
|
|
116544
117079
|
const fieldList = node.findFirstExpression(abaplint.Expressions.SQLFieldList)
|
|
116545
117080
|
|| node.findFirstExpression(abaplint.Expressions.SQLFieldListLoop);
|
|
116546
117081
|
if (fieldList === undefined) {
|
|
@@ -117199,6 +117734,68 @@ exports.ShiftTranspiler = ShiftTranspiler;
|
|
|
117199
117734
|
|
|
117200
117735
|
/***/ },
|
|
117201
117736
|
|
|
117737
|
+
/***/ "./node_modules/@abaplint/transpiler/build/src/statements/skip.js"
|
|
117738
|
+
/*!************************************************************************!*\
|
|
117739
|
+
!*** ./node_modules/@abaplint/transpiler/build/src/statements/skip.js ***!
|
|
117740
|
+
\************************************************************************/
|
|
117741
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
117742
|
+
|
|
117743
|
+
"use strict";
|
|
117744
|
+
|
|
117745
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
117746
|
+
if (k2 === undefined) k2 = k;
|
|
117747
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
117748
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
117749
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
117750
|
+
}
|
|
117751
|
+
Object.defineProperty(o, k2, desc);
|
|
117752
|
+
}) : (function(o, m, k, k2) {
|
|
117753
|
+
if (k2 === undefined) k2 = k;
|
|
117754
|
+
o[k2] = m[k];
|
|
117755
|
+
}));
|
|
117756
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
117757
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
117758
|
+
}) : function(o, v) {
|
|
117759
|
+
o["default"] = v;
|
|
117760
|
+
});
|
|
117761
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
117762
|
+
var ownKeys = function(o) {
|
|
117763
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
117764
|
+
var ar = [];
|
|
117765
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
117766
|
+
return ar;
|
|
117767
|
+
};
|
|
117768
|
+
return ownKeys(o);
|
|
117769
|
+
};
|
|
117770
|
+
return function (mod) {
|
|
117771
|
+
if (mod && mod.__esModule) return mod;
|
|
117772
|
+
var result = {};
|
|
117773
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
117774
|
+
__setModuleDefault(result, mod);
|
|
117775
|
+
return result;
|
|
117776
|
+
};
|
|
117777
|
+
})();
|
|
117778
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
117779
|
+
exports.SkipTranspiler = void 0;
|
|
117780
|
+
const abaplint = __importStar(__webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js"));
|
|
117781
|
+
const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
|
|
117782
|
+
class SkipTranspiler {
|
|
117783
|
+
transpile(node, traversal) {
|
|
117784
|
+
const source = node.findDirectExpression(abaplint.Expressions.Source);
|
|
117785
|
+
if (source === undefined) {
|
|
117786
|
+
return new chunk_1.Chunk().append("abap.statements.skip();", node, traversal);
|
|
117787
|
+
}
|
|
117788
|
+
const option = node.concatTokens().toUpperCase().includes("TO LINE") ? "toLine" : "lines";
|
|
117789
|
+
return new chunk_1.Chunk().append("abap.statements.skip({" + option + ": ", node, traversal)
|
|
117790
|
+
.appendChunk(traversal.traverse(source))
|
|
117791
|
+
.append("});", node.getLastToken(), traversal);
|
|
117792
|
+
}
|
|
117793
|
+
}
|
|
117794
|
+
exports.SkipTranspiler = SkipTranspiler;
|
|
117795
|
+
//# sourceMappingURL=skip.js.map
|
|
117796
|
+
|
|
117797
|
+
/***/ },
|
|
117798
|
+
|
|
117202
117799
|
/***/ "./node_modules/@abaplint/transpiler/build/src/statements/sort.js"
|
|
117203
117800
|
/*!************************************************************************!*\
|
|
117204
117801
|
!*** ./node_modules/@abaplint/transpiler/build/src/statements/sort.js ***!
|
|
@@ -119452,6 +120049,7 @@ const traversal_1 = __webpack_require__(/*! ../traversal */ "./node_modules/@aba
|
|
|
119452
120049
|
const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
|
|
119453
120050
|
const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
|
|
119454
120051
|
const unique_identifier_1 = __webpack_require__(/*! ../unique_identifier */ "./node_modules/@abaplint/transpiler/build/src/unique_identifier.js");
|
|
120052
|
+
const inline_1 = __webpack_require__(/*! ../inline */ "./node_modules/@abaplint/transpiler/build/src/inline.js");
|
|
119455
120053
|
class FunctionModuleTranspiler {
|
|
119456
120054
|
transpile(node, traversal) {
|
|
119457
120055
|
const chunk = new chunk_1.Chunk();
|
|
@@ -119464,6 +120062,7 @@ class FunctionModuleTranspiler {
|
|
|
119464
120062
|
}
|
|
119465
120063
|
chunk.append(`async function ${traversal_1.Traversal.escapeNamespace(name)}(INPUT) {\n`, c, traversal);
|
|
119466
120064
|
chunk.appendString(this.findSignature(traversal, name, c));
|
|
120065
|
+
chunk.appendString(inline_1.InlineDeclarations.buildDeclarations(node, traversal));
|
|
119467
120066
|
}
|
|
119468
120067
|
else if (c.get() instanceof abaplint.Statements.EndFunction) {
|
|
119469
120068
|
chunk.append("}\n", c, traversal);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/transpiler-cli",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.60",
|
|
4
4
|
"description": "Transpiler - Command Line Interface",
|
|
5
5
|
"funding": "https://github.com/sponsors/larshp",
|
|
6
6
|
"bin": {
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"author": "abaplint",
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@abaplint/core": "^2.120.
|
|
31
|
-
"@abaplint/transpiler": "^2.13.
|
|
30
|
+
"@abaplint/core": "^2.120.28",
|
|
31
|
+
"@abaplint/transpiler": "^2.13.60",
|
|
32
32
|
"@types/glob": "^8.1.0",
|
|
33
33
|
"@types/node": "^24.13.3",
|
|
34
34
|
"@types/progress": "^2.0.7",
|
package/schema.json
CHANGED
|
@@ -76,6 +76,14 @@
|
|
|
76
76
|
"output_folder": {
|
|
77
77
|
"type": "string"
|
|
78
78
|
},
|
|
79
|
+
"plugins": {
|
|
80
|
+
"description": "list of npm module names or paths, resolved from the current working directory, each module exports \"plugins\", an array of ITranspilerPlugin instances",
|
|
81
|
+
"items": {
|
|
82
|
+
"type": "string"
|
|
83
|
+
},
|
|
84
|
+
"type": "array",
|
|
85
|
+
"uniqueItems": true
|
|
86
|
+
},
|
|
79
87
|
"write_source_map": {
|
|
80
88
|
"type": "boolean"
|
|
81
89
|
},
|
package/tsconfig.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.dom.asynciterable.d.ts","./node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2025.float16.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/typescript/lib/lib.es2022.full.d.ts","./node_modules/vscode-languageserver-types/lib/umd/main.d.ts","./node_modules/@abaplint/core/build/abaplint.d.ts","./node_modules/source-map/source-map.d.ts","./node_modules/@abaplint/transpiler/build/src/chunk.d.ts","./node_modules/@abaplint/transpiler/build/src/unit_test.d.ts","./node_modules/@abaplint/transpiler/build/src/db/database_setup_result.d.ts","./node_modules/@abaplint/transpiler/build/src/types.d.ts","./node_modules/@abaplint/transpiler/build/src/validation.d.ts","./node_modules/@abaplint/transpiler/build/src/index.d.ts","./src/types.ts","./src/config.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/utility.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client-stats.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/h2c-client.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-call-history.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/snapshot-agent.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cache-interceptor.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/web-globals/streams.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/minimatch/index.d.ts","./node_modules/@types/glob/index.d.ts","./node_modules/p-limit/index.d.ts","./src/file_operations.ts","./node_modules/@types/progress/index.d.ts","./src/index.ts","../../node_modules/@types/mocha/index.d.ts"],"fileIdsList":[[79,133,150,151],[66,79,133,150,151],[67,68,79,133,150,151],[67,72,73,79,133,150,151],[67,69,70,71,79,133,150,151],[67,79,133,150,151],[67,72,79,133,150,151],[79,133,144,145,150,151,183,184],[79,130,131,133,150,151],[79,132,133,150,151],[133,150,151],[79,133,138,150,151,168],[79,133,134,139,144,150,151,153,165,176],[79,133,134,135,144,150,151,153],[79,133,136,150,151,177],[79,133,137,138,145,150,151,154],[79,133,138,150,151,165,173],[79,133,139,141,144,150,151,153],[79,132,133,140,150,151],[79,133,141,142,150,151],[79,133,143,144,150,151],[79,132,133,144,150,151],[79,133,144,145,146,150,151,165,176],[79,133,144,145,146,150,151,160,165,168],[79,125,133,141,144,147,150,151,153,165,176],[79,133,144,145,147,148,150,151,153,165,173,176],[79,133,147,149,150,151,165,173,176],[77,78,79,80,81,82,83,84,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182],[79,133,144,150,151],[79,133,150,151,152,176],[79,133,141,144,150,151,153,165],[79,133,150,151,154],[79,133,150,151,155],[79,132,133,150,151,156],[79,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182],[79,133,150,151,158],[79,133,150,151,159],[79,133,144,150,151,160,161],[79,133,150,151,160,162,177,179],[79,133,145,150,151],[79,133,144,150,151,165,166,168],[79,133,150,151,167,168],[79,133,150,151,165,166],[79,133,150,151,168],[79,133,150,151,169],[79,130,133,150,151,165,170,176],[79,133,144,150,151,171,172],[79,133,150,151,171,172],[79,133,138,150,151,153,165,173],[79,133,150,151,174],[79,133,150,151,153,175],[79,133,147,150,151,159,176],[79,133,138,150,151,177],[79,133,150,151,165,178],[79,133,150,151,152,179],[79,133,150,151,180],[79,133,138,150,151],[79,125,133,150,151],[79,133,150,151,181],[79,125,133,144,146,150,151,156,165,168,176,178,179,181],[79,133,150,151,165,182],[79,133,150,151,183],[79,91,94,97,98,133,150,151,176],[79,94,133,150,151,165,176],[79,94,98,133,150,151,176],[79,133,150,151,165],[79,88,133,150,151],[79,92,133,150,151],[79,90,91,94,133,150,151,176],[79,133,150,151,153,173],[79,88,133,150,151,183],[79,90,94,133,150,151,153,176],[79,85,86,87,89,93,133,144,150,151,165,176],[79,94,102,110,133,150,151],[79,86,92,133,150,151],[79,94,119,120,133,150,151],[79,86,89,94,133,150,151,168,176,183],[79,94,133,150,151],[79,90,94,133,150,151,176],[79,85,133,150,151],[79,88,89,90,92,93,94,95,96,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,133,150,151],[79,94,112,115,133,141,150,151],[79,94,102,103,104,133,150,151],[79,92,94,103,105,133,150,151],[79,93,133,150,151],[79,86,88,94,133,150,151],[79,94,98,103,105,133,150,151],[79,98,133,150,151],[79,92,94,97,133,150,151,176],[79,86,90,94,102,133,150,151],[79,94,112,133,150,151],[79,105,133,150,151],[79,88,94,119,133,150,151,168,181,183],[74,75,79,133,145,150,151,155],[74,75,79,133,145,146,150,151,154,155,185,186],[67,74,75,76,79,133,134,145,150,151,154,155,185,187,188],[74,79,133,150,151]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"01a30f9e8582b369075c0808df71121e6855cb06fd8d3d39511d9ebb66405205","impliedFormat":1},{"version":"af4f042e8a99eb6f9a48411042e9633486f1eb058d9e1c769c9836cd05464489","impliedFormat":1},{"version":"b4d0053584c73bf5833bbcd9ec96d25600137c3af90bf0e69aff09afb70a741e","impliedFormat":1},{"version":"89dcbbf69b16cd94043e16c7fbcfa04256577ec98bb8ae894833d2a922394db4","impliedFormat":1},{"version":"7c0590bae81bbe21e3878be296210b76afd6c05a098bc287dbe242f38a8a852b","impliedFormat":1},{"version":"83bff103f33fa5b2bb32986e890533f95677057a836b7cf78a8202ad90a45608","impliedFormat":1},{"version":"72003eb7651e998adc17d10707d2ed12e5270c4b23edb513d0614491db91aa10","impliedFormat":1},{"version":"a9eac7528f5d68e0073a0db760c177c0e2e46c322c5a56819cc7fe82713fd156","impliedFormat":1},{"version":"314857f821f9455b2ac936919fd37752b5472ca21bb9433cc640662c81caaa4b","impliedFormat":1},{"version":"d596b83809535dbe4ce7b1c7a668e7ab4e4b8c249d5ddf7d0b1db16f5c1d7a81","impliedFormat":1},{"version":"f20028696c1a38226e42010da3031ddea24b3a418ad56a0bddbbf1a82fe8c609","signature":"3db2a08b4341f2125ba4bb3f793debb7b30932295c36871bcb138dc65115f23a"},{"version":"740d510020f3536ce50c4e341917ad27a3bb4ffeee6509f770efb5675b5896bd","signature":"e08bb6219752efcaf6119c06958e6e83b878bbb3369e1bb4aeac454836735f54"},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3806cdd6b48ba01a9198134e62a384ec217a98f316d4baef74dd46d62c947a63","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"3910dab597c40e173bf0e0d419d3ce9682c54ebf6ae84849f9b829b1451a17ec","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"486c074a5c0f2254345c0d1c9540380f5463999e42d7e1a159305ea823d3c4b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"963d59066dd6742da1918a6213a209bcc205b8ee53b1876ee2b4e6d80f97c85e","impliedFormat":1},{"version":"9c5c92b7fb8c38ff1b46df69701f2d1ea8e2d6468e3cd8f73d8af5e6f7864576","impliedFormat":1},{"version":"9f91eee81fda27d38d60963fe1de2f050a5cfb241af56b7e7ee6d9aa8522a058","impliedFormat":1},{"version":"1baaf9e01ea72170d3c74aca2d0d7acbef3eb83f776ba6e0ef0c944b454bd295","signature":"7657ae67f69f3df2efb4fc6bbebd5702f35bdb5662211626856df64bc0be41e5"},{"version":"399fc76aafc3c3e506515b7796f8a9b0ae63a40733f0b452fe949d986f1c01b7","impliedFormat":1},{"version":"4aee29034bd907cfbf0cddc8be9ebd421082a3703b509809170d97f20677a876","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true,"impliedFormat":1}],"root":[75,76,187,189],"options":{"alwaysStrict":true,"declaration":true,"esModuleInterop":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./build","rootDir":"./src","sourceMap":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":9,"useUnknownInCatchVariables":false},"referencedMap":[[190,1],[67,2],[69,3],[71,1],[74,4],[72,5],[70,6],[73,7],[185,8],[184,1],[130,9],[131,9],[132,10],[79,11],[133,12],[134,13],[135,14],[77,1],[136,15],[137,16],[138,17],[139,18],[140,19],[141,20],[142,20],[143,21],[144,22],[145,23],[146,24],[80,1],[78,1],[147,25],[148,26],[149,27],[183,28],[150,29],[151,1],[152,30],[153,31],[154,32],[155,33],[156,34],[157,35],[158,36],[159,37],[160,38],[161,38],[162,39],[163,1],[164,40],[165,41],[167,42],[166,43],[168,44],[169,45],[170,46],[171,47],[172,48],[173,49],[174,50],[175,51],[176,52],[177,53],[178,54],[179,55],[180,56],[81,1],[82,57],[83,1],[84,1],[126,58],[127,59],[128,1],[129,44],[181,60],[182,61],[188,62],[186,1],[68,1],[63,1],[64,1],[12,1],[10,1],[11,1],[16,1],[15,1],[2,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[3,1],[25,1],[26,1],[4,1],[27,1],[31,1],[28,1],[29,1],[30,1],[32,1],[33,1],[34,1],[5,1],[35,1],[36,1],[37,1],[38,1],[6,1],[42,1],[39,1],[40,1],[41,1],[43,1],[7,1],[44,1],[49,1],[50,1],[45,1],[46,1],[47,1],[48,1],[8,1],[54,1],[51,1],[52,1],[53,1],[55,1],[9,1],[56,1],[65,1],[57,1],[58,1],[60,1],[59,1],[61,1],[1,1],[62,1],[14,1],[13,1],[102,63],[114,64],[100,65],[115,66],[124,67],[91,68],[92,69],[90,70],[123,62],[118,71],[122,72],[94,73],[111,74],[93,75],[121,76],[88,77],[89,71],[95,78],[96,1],[101,79],[99,78],[86,80],[125,81],[116,82],[105,83],[104,78],[106,84],[109,85],[103,86],[107,87],[119,62],[97,88],[98,89],[110,90],[87,66],[113,91],[112,78],[108,92],[117,1],[85,1],[120,93],[66,1],[76,94],[187,95],[189,96],[75,97]],"version":"6.0.3"}
|