@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 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 ret = (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)));
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
- const message = "Incompatible types for comparison";
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
- this.checkFields(fields, dbSources, input, node);
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
- if (dbSources.length !== 1) {
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
- for (const s of node.findDirectExpressions(Expressions.FieldAssignment)) {
36373
- field_assignment_1.FieldAssignment.runSyntax(s, input, targetType);
36374
- if (node.findDirectExpression(Expressions.ValueBodyLine) === undefined) {
36375
- // todo: refine, still needs to be checked when there are table lines
36376
- const fieldname = (_a = s.findDirectExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();
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
- if (fields.has(fieldname)) {
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, s.getFirstToken(), message));
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
- fields.add(fieldname);
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 ((_b = node.findDirectExpression(Expressions.ValueBase)) === null || _b === void 0 ? void 0 : _b.findDirectExpressions(Expressions.Source)) || []) {
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 = (_a = target.findFirstExpression(Expressions.TargetField)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
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.checkClassConstructorStatic(input);
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
- checkClassConstructorStatic(input) {
52389
+ checkClassConstructor(input) {
52244
52390
  for (const m of this.methodDefs.getAll()) {
52245
- if (m.getName().toUpperCase() === "CLASS_CONSTRUCTOR" && m.isStatic() === false) {
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.22";
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 (simple && simple.findDirectExpression(abaplint.Expressions.Constant) === undefined) {
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
- // todo
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
- let select = "SELECT ";
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.58",
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.22",
31
- "@abaplint/transpiler": "^2.13.58",
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
  },
@@ -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"}