@abaplint/cli 2.120.17 → 2.120.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/build/cli.js +312 -128
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -6139,7 +6139,7 @@ class MessageSource extends combi_1.Expression {
6139
6139
  getRunnable() {
6140
6140
  const msgid = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), _1.MessageClass, (0, combi_1.tok)(tokens_1.ParenRightW));
6141
6141
  const simple = (0, combi_1.seq)(_1.MessageTypeAndNumber, (0, combi_1.opt)(msgid));
6142
- const mess1 = (0, combi_1.seq)("ID", _1.Source, "TYPE", _1.Source, "NUMBER", (0, combi_1.altPrio)(_1.MessageNumber, _1.Source));
6142
+ const mess1 = (0, combi_1.seq)("ID", _1.SimpleSource3, "TYPE", _1.SimpleSource3, "NUMBER", (0, combi_1.altPrio)(_1.MessageNumber, _1.SimpleSource3));
6143
6143
  return (0, combi_1.altPrio)(simple, mess1);
6144
6144
  }
6145
6145
  }
@@ -7563,7 +7563,7 @@ class Source extends combi_1.Expression {
7563
7563
  const value = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("VALUE", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ValueBody, rparenNoSpace, (0, combi_1.optPrio)(after)), { also: combi_1.AlsoIn.OpenABAP });
7564
7564
  const cond = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("COND", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.CondBody, rparenNoSpace, (0, combi_1.optPrio)(after)), { also: combi_1.AlsoIn.OpenABAP });
7565
7565
  const reff = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("REF", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, (0, combi_1.optPrio)("OPTIONAL"), rparen), { also: combi_1.AlsoIn.OpenABAP });
7566
- const exact = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("EXACT", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, rparen, (0, combi_1.optPrio)(after)));
7566
+ const exact = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("EXACT", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, rparen, (0, combi_1.optPrio)(after)), { also: combi_1.AlsoIn.OpenABAP });
7567
7567
  const filter = (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.seq)("FILTER", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.FilterBody, rparen), { also: combi_1.AlsoIn.OpenABAP });
7568
7568
  const reduce = (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.seq)("REDUCE", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ReduceBody, rparen, (0, combi_1.optPrio)(after)), { also: combi_1.AlsoIn.OpenABAP });
7569
7569
  const prefix1 = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WDashW), (0, combi_1.tok)(tokens_1.WPlusW));
@@ -27609,7 +27609,7 @@ class TypeUtils {
27609
27609
  return this.isAssignable(source, target);
27610
27610
  }
27611
27611
  isAssignableStrict(source, target, node) {
27612
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
27612
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
27613
27613
  const calculated = node ? this.isCalculated(node) : false;
27614
27614
  /*
27615
27615
  console.dir(source);
@@ -27620,6 +27620,17 @@ class TypeUtils {
27620
27620
  && (target instanceof basic_1.XStringType || target instanceof basic_1.XSequenceType)) {
27621
27621
  return false;
27622
27622
  }
27623
+ if (target instanceof basic_1.NumericType
27624
+ && (source instanceof basic_1.CharacterType || source instanceof basic_1.StringType)
27625
+ && ((_a = source.getAbstractTypeData()) === null || _a === void 0 ? void 0 : _a.derivedFromConstant) === true) {
27626
+ const constant = node === null || node === void 0 ? void 0 : node.concatTokens();
27627
+ if (constant !== undefined
27628
+ && ((constant.startsWith("'") && constant.endsWith("'"))
27629
+ || (constant.startsWith("`") && constant.endsWith("`")))
27630
+ && /^\d*$/.test(constant.substring(1, constant.length - 1)) === false) {
27631
+ return false;
27632
+ }
27633
+ }
27623
27634
  if (calculated) {
27624
27635
  return this.isAssignable(source, target);
27625
27636
  }
@@ -27636,25 +27647,25 @@ class TypeUtils {
27636
27647
  }
27637
27648
  if (source instanceof basic_1.CharacterType) {
27638
27649
  if (target instanceof basic_1.CharacterType) {
27639
- if (((_a = source.getAbstractTypeData()) === null || _a === void 0 ? void 0 : _a.derivedFromConstant) === true) {
27650
+ if (((_b = source.getAbstractTypeData()) === null || _b === void 0 ? void 0 : _b.derivedFromConstant) === true) {
27640
27651
  return source.getLength() <= target.getLength();
27641
27652
  }
27642
27653
  return source.getLength() === target.getLength();
27643
27654
  }
27644
27655
  else if (target instanceof basic_1.IntegerType) {
27645
- if (((_b = source.getAbstractTypeData()) === null || _b === void 0 ? void 0 : _b.derivedFromConstant) === true) {
27656
+ if (((_c = source.getAbstractTypeData()) === null || _c === void 0 ? void 0 : _c.derivedFromConstant) === true) {
27646
27657
  return true;
27647
27658
  }
27648
27659
  return false;
27649
27660
  }
27650
27661
  else if (target instanceof basic_1.XStringType) {
27651
- if (((_c = source.getAbstractTypeData()) === null || _c === void 0 ? void 0 : _c.derivedFromConstant) === true) {
27662
+ if (((_d = source.getAbstractTypeData()) === null || _d === void 0 ? void 0 : _d.derivedFromConstant) === true) {
27652
27663
  return (node === null || node === void 0 ? void 0 : node.concatTokens()) !== "''";
27653
27664
  }
27654
27665
  return false;
27655
27666
  }
27656
27667
  else if (target instanceof basic_1.StringType) {
27657
- if (((_d = source.getAbstractTypeData()) === null || _d === void 0 ? void 0 : _d.derivedFromConstant) === true) {
27668
+ if (((_e = source.getAbstractTypeData()) === null || _e === void 0 ? void 0 : _e.derivedFromConstant) === true) {
27658
27669
  return true;
27659
27670
  }
27660
27671
  return false;
@@ -27662,7 +27673,7 @@ class TypeUtils {
27662
27673
  }
27663
27674
  else if (source instanceof basic_1.HexType) {
27664
27675
  if (target instanceof basic_1.HexType) {
27665
- if (((_e = source.getAbstractTypeData()) === null || _e === void 0 ? void 0 : _e.derivedFromConstant) === true) {
27676
+ if (((_f = source.getAbstractTypeData()) === null || _f === void 0 ? void 0 : _f.derivedFromConstant) === true) {
27666
27677
  return source.getLength() <= target.getLength();
27667
27678
  }
27668
27679
  return source.getLength() === target.getLength();
@@ -27671,7 +27682,7 @@ class TypeUtils {
27671
27682
  return false;
27672
27683
  }
27673
27684
  else if (target instanceof basic_1.IntegerType || target instanceof basic_1.Integer8Type) {
27674
- if (((_f = source.getAbstractTypeData()) === null || _f === void 0 ? void 0 : _f.derivedFromConstant) === true) {
27685
+ if (((_g = source.getAbstractTypeData()) === null || _g === void 0 ? void 0 : _g.derivedFromConstant) === true) {
27675
27686
  return true;
27676
27687
  }
27677
27688
  return false;
@@ -27682,13 +27693,13 @@ class TypeUtils {
27682
27693
  return false;
27683
27694
  }
27684
27695
  else if (target instanceof basic_1.CharacterType) {
27685
- if (((_g = source.getAbstractTypeData()) === null || _g === void 0 ? void 0 : _g.derivedFromConstant) === true) {
27696
+ if (((_h = source.getAbstractTypeData()) === null || _h === void 0 ? void 0 : _h.derivedFromConstant) === true) {
27686
27697
  return true;
27687
27698
  }
27688
27699
  return false;
27689
27700
  }
27690
27701
  else if (target instanceof basic_1.IntegerType) {
27691
- if (((_h = source.getAbstractTypeData()) === null || _h === void 0 ? void 0 : _h.derivedFromConstant) === true) {
27702
+ if (((_j = source.getAbstractTypeData()) === null || _j === void 0 ? void 0 : _j.derivedFromConstant) === true) {
27692
27703
  return true;
27693
27704
  }
27694
27705
  return false;
@@ -27698,7 +27709,7 @@ class TypeUtils {
27698
27709
  return false;
27699
27710
  }
27700
27711
  else if (target instanceof basic_1.XSequenceType || target instanceof basic_1.XStringType) {
27701
- if (((_j = source.getAbstractTypeData()) === null || _j === void 0 ? void 0 : _j.derivedFromConstant) === true) {
27712
+ if (((_k = source.getAbstractTypeData()) === null || _k === void 0 ? void 0 : _k.derivedFromConstant) === true) {
27702
27713
  return true;
27703
27714
  }
27704
27715
  return false;
@@ -27742,7 +27753,7 @@ class TypeUtils {
27742
27753
  return false;
27743
27754
  }
27744
27755
  else if (target instanceof basic_1.Integer8Type || target instanceof basic_1.PackedType) {
27745
- if (((_k = source.getAbstractTypeData()) === null || _k === void 0 ? void 0 : _k.derivedFromConstant) === true) {
27756
+ if (((_l = source.getAbstractTypeData()) === null || _l === void 0 ? void 0 : _l.derivedFromConstant) === true) {
27746
27757
  return true;
27747
27758
  }
27748
27759
  return false;
@@ -31958,6 +31969,9 @@ class MessageSource {
31958
31969
  for (const f of node.findDirectExpressions(Expressions.Source)) {
31959
31970
  source_1.Source.runSyntax(f, input);
31960
31971
  }
31972
+ for (const f of node.findDirectExpressions(Expressions.SimpleSource3)) {
31973
+ source_1.Source.runSyntax(f, input);
31974
+ }
31961
31975
  if (node.getFirstToken().getStr().toUpperCase() === "ID") {
31962
31976
  const id = (_a = node.findExpressionAfterToken("ID")) === null || _a === void 0 ? void 0 : _a.concatTokens();
31963
31977
  let number = (_b = node.findDirectExpression(Expressions.MessageNumber)) === null || _b === void 0 ? void 0 : _b.concatTokens();
@@ -35458,7 +35472,7 @@ class Target {
35458
35472
  && !(context instanceof basic_1.VoidType)
35459
35473
  && !(context instanceof unknown_type_1.UnknownType)
35460
35474
  && !(context instanceof unknown_type_1.UnknownType)) {
35461
- const message = "Not a internal table, \"[]\"";
35475
+ const message = `Not an internal table, "${node.concatTokens()}"`;
35462
35476
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
35463
35477
  return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
35464
35478
  }
@@ -60041,21 +60055,22 @@ class ABAPObject extends _abstract_object_1.AbstractObject {
60041
60055
  return this.textsTranslations;
60042
60056
  }
60043
60057
  findTexts(parsed) {
60044
- var _a, _b, _c, _d, _e, _f;
60045
- var _g;
60058
+ var _a, _b, _c, _d, _e, _f, _g, _h;
60059
+ var _j;
60046
60060
  this.texts = {};
60047
60061
  if (((_d = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.TPOOL) === null || _d === void 0 ? void 0 : _d.item) === undefined) {
60048
60062
  return;
60049
60063
  }
60050
- for (const t of (0, xml_utils_1.xmlToArray)(parsed.abapGit["asx:abap"]["asx:values"].TPOOL.item)) {
60051
- const id = (_e = t.ID) === null || _e === void 0 ? void 0 : _e.toUpperCase();
60064
+ for (const t of (0, xml_utils_1.xmlToArray)((_h = (_g = (_f = (_e = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _e === void 0 ? void 0 : _e["asx:abap"]) === null || _f === void 0 ? void 0 : _f["asx:values"]) === null || _g === void 0 ? void 0 : _g.TPOOL) === null || _h === void 0 ? void 0 : _h.item)) {
60065
+ const id = typeof (t === null || t === void 0 ? void 0 : t.ID) === "string" ? t.ID.toUpperCase() : undefined;
60052
60066
  if (id === undefined) {
60053
60067
  continue;
60054
60068
  }
60055
60069
  if (id !== "R" && t.KEY === undefined) {
60056
60070
  continue;
60057
60071
  }
60058
- const key = (_f = ((_g = t.KEY) !== null && _g !== void 0 ? _g : t.ID)) === null || _f === void 0 ? void 0 : _f.toUpperCase();
60072
+ const rawKey = (_j = t.KEY) !== null && _j !== void 0 ? _j : t.ID;
60073
+ const key = typeof rawKey === "string" ? rawKey.toUpperCase() : undefined;
60059
60074
  if (key === undefined) {
60060
60075
  continue;
60061
60076
  }
@@ -60066,8 +60081,8 @@ class ABAPObject extends _abstract_object_1.AbstractObject {
60066
60081
  }
60067
60082
  }
60068
60083
  findTextsTranslations(parsed) {
60069
- var _a, _b, _c, _d, _e, _f;
60070
- var _g;
60084
+ var _a, _b, _c, _d, _e;
60085
+ var _f;
60071
60086
  this.textsTranslations = [];
60072
60087
  const values = (_d = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.I18N_TPOOL) === null || _d === void 0 ? void 0 : _d.item;
60073
60088
  if (values === undefined) {
@@ -60076,7 +60091,8 @@ class ABAPObject extends _abstract_object_1.AbstractObject {
60076
60091
  for (const langItem of (0, xml_utils_1.xmlToArray)(values)) {
60077
60092
  const textElements = {};
60078
60093
  for (const item of (0, xml_utils_1.xmlToArray)((_e = langItem.TEXTPOOL) === null || _e === void 0 ? void 0 : _e.item)) {
60079
- const key = (_f = ((_g = item.KEY) !== null && _g !== void 0 ? _g : item.ID)) === null || _f === void 0 ? void 0 : _f.toUpperCase();
60094
+ const rawKey = (_f = item.KEY) !== null && _f !== void 0 ? _f : item.ID;
60095
+ const key = typeof rawKey === "string" ? rawKey.toUpperCase() : undefined;
60080
60096
  if (key !== undefined) {
60081
60097
  textElements[key] = { entry: (0, xml_utils_1.unescape)(item.ENTRY), maxLength: parseInt(item.LENGTH, 10) };
60082
60098
  }
@@ -60237,11 +60253,14 @@ function parseNumber(value) {
60237
60253
  return parseInt(value, 10);
60238
60254
  }
60239
60255
  function parseDynpros(parsed) {
60240
- var _a, _b, _c, _d;
60256
+ var _a, _b, _c, _d, _e, _f, _g, _h;
60241
60257
  const dynpros = [];
60242
60258
  const xmlDynpros = (_c = (_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.DYNPROS;
60243
60259
  if (xmlDynpros !== undefined) {
60244
60260
  for (const d of (0, xml_utils_1.xmlToArray)(xmlDynpros.item)) {
60261
+ if ((d === null || d === void 0 ? void 0 : d.HEADER) === undefined) {
60262
+ continue;
60263
+ }
60245
60264
  const fields = [];
60246
60265
  for (const f of (0, xml_utils_1.xmlToArray)((_d = d.FIELDS) === null || _d === void 0 ? void 0 : _d.RPY_DYFATC)) {
60247
60266
  fields.push({
@@ -60256,10 +60275,10 @@ function parseDynpros(parsed) {
60256
60275
  });
60257
60276
  }
60258
60277
  dynpros.push({
60259
- number: d.HEADER.SCREEN,
60260
- description: d.HEADER.DESCRIPT,
60261
- nextScreen: d.HEADER.NEXTSCREEN,
60262
- type: d.HEADER.TYPE,
60278
+ number: (_e = d.HEADER) === null || _e === void 0 ? void 0 : _e.SCREEN,
60279
+ description: (_f = d.HEADER) === null || _f === void 0 ? void 0 : _f.DESCRIPT,
60280
+ nextScreen: (_g = d.HEADER) === null || _g === void 0 ? void 0 : _g.NEXTSCREEN,
60281
+ type: (_h = d.HEADER) === null || _h === void 0 ? void 0 : _h.TYPE,
60263
60282
  fields: fields,
60264
60283
  });
60265
60284
  }
@@ -60746,7 +60765,7 @@ class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
60746
60765
  }
60747
60766
  }
60748
60767
  parse() {
60749
- var _a;
60768
+ var _a, _b, _c, _d, _e, _f;
60750
60769
  if (this.parsedXML) {
60751
60770
  return { updated: false, runtime: 0 };
60752
60771
  }
@@ -60755,10 +60774,10 @@ class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
60755
60774
  const parsed = super.parseRaw2();
60756
60775
  if (parsed === undefined
60757
60776
  || parsed.abapGit === undefined
60758
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
60777
+ || ((_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
60759
60778
  return { updated: false, runtime: 0 };
60760
60779
  }
60761
- this.parsedXML.rollname = (_a = parsed.abapGit["asx:abap"]["asx:values"].AUTHX) === null || _a === void 0 ? void 0 : _a.ROLLNAME;
60780
+ this.parsedXML.rollname = (_f = (_e = (_d = (_c = parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.AUTHX) === null || _f === void 0 ? void 0 : _f.ROLLNAME;
60762
60781
  const end = Date.now();
60763
60782
  return { updated: true, runtime: end - start };
60764
60783
  }
@@ -61605,17 +61624,16 @@ class Class extends _abap_object_1.ABAPObject {
61605
61624
  }
61606
61625
  /////////////////////////
61607
61626
  parseXML() {
61627
+ var _a, _b, _c, _d, _e;
61608
61628
  if (this.parsedXML !== undefined) {
61609
61629
  return;
61610
61630
  }
61611
61631
  this.parsedXML = {};
61612
61632
  const parsed = super.parseRaw2();
61613
- if (parsed === undefined
61614
- || parsed.abapGit["asx:abap"] === undefined
61615
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
61633
+ if (((_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
61616
61634
  return;
61617
61635
  }
61618
- const vseo = parsed.abapGit["asx:abap"]["asx:values"].VSEOCLASS;
61636
+ const vseo = (_e = (_d = (_c = parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.VSEOCLASS;
61619
61637
  if (vseo === undefined) {
61620
61638
  return;
61621
61639
  }
@@ -62296,6 +62314,11 @@ class DataElement extends _abstract_object_1.AbstractObject {
62296
62314
  this.parse();
62297
62315
  return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.textsTranslations;
62298
62316
  }
62317
+ getDtelMaster() {
62318
+ var _a;
62319
+ this.parse();
62320
+ return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.dtelmaster;
62321
+ }
62299
62322
  parseType(reg) {
62300
62323
  var _a;
62301
62324
  const references = [];
@@ -62373,6 +62396,7 @@ class DataElement extends _abstract_object_1.AbstractObject {
62373
62396
  datatype: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DATATYPE,
62374
62397
  leng: dd04v === null || dd04v === void 0 ? void 0 : dd04v.LENG,
62375
62398
  decimals: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DECIMALS,
62399
+ dtelmaster: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DTELMASTER,
62376
62400
  texts: {
62377
62401
  short: dd04v === null || dd04v === void 0 ? void 0 : dd04v.SCRTEXT_S,
62378
62402
  medium: dd04v === null || dd04v === void 0 ? void 0 : dd04v.SCRTEXT_M,
@@ -62809,6 +62833,7 @@ class EnhancementImplementation extends _abstract_object_1.AbstractObject {
62809
62833
  return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;
62810
62834
  }
62811
62835
  parse() {
62836
+ var _a, _b, _c, _d, _e, _f, _g, _h;
62812
62837
  if (this.parsedXML) {
62813
62838
  return { updated: false, runtime: 0 };
62814
62839
  }
@@ -62817,11 +62842,11 @@ class EnhancementImplementation extends _abstract_object_1.AbstractObject {
62817
62842
  const parsed = super.parseRaw2();
62818
62843
  if (parsed === undefined
62819
62844
  || parsed.abapGit === undefined
62820
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
62845
+ || ((_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
62821
62846
  return { updated: false, runtime: 0 };
62822
62847
  }
62823
- this.parsedXML.className = parsed.abapGit["asx:abap"]["asx:values"].CLASS;
62824
- this.parsedXML.description = parsed.abapGit["asx:abap"]["asx:values"].SHORTTEXT;
62848
+ this.parsedXML.className = (_e = (_d = (_c = parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.CLASS;
62849
+ this.parsedXML.description = (_h = (_g = (_f = parsed.abapGit) === null || _f === void 0 ? void 0 : _f["asx:abap"]) === null || _g === void 0 ? void 0 : _g["asx:values"]) === null || _h === void 0 ? void 0 : _h.SHORTTEXT;
62825
62850
  const end = Date.now();
62826
62851
  return { updated: true, runtime: end - start };
62827
62852
  }
@@ -62869,13 +62894,13 @@ class EnhancementSpot extends _abstract_object_1.AbstractObject {
62869
62894
  }
62870
62895
  /////////////////
62871
62896
  parseXML() {
62872
- var _a, _b;
62897
+ var _a, _b, _c, _d;
62873
62898
  const parsed = super.parseRaw2();
62874
62899
  if (parsed === undefined) {
62875
62900
  return [];
62876
62901
  }
62877
62902
  const ret = [];
62878
- for (const b of (0, xml_utils_1.xmlToArray)((_b = (_a = parsed.abapGit["asx:abap"]["asx:values"]) === null || _a === void 0 ? void 0 : _a.BADI_DATA) === null || _b === void 0 ? void 0 : _b.ENH_BADI_DATA)) {
62903
+ for (const b of (0, xml_utils_1.xmlToArray)((_d = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.BADI_DATA) === null || _d === void 0 ? void 0 : _d.ENH_BADI_DATA)) {
62879
62904
  ret.push({
62880
62905
  name: b.BADI_NAME,
62881
62906
  interface: b.INTERFACE_NAME,
@@ -63318,33 +63343,45 @@ class FunctionGroup extends _abap_object_1.ABAPObject {
63318
63343
  if (found === undefined) {
63319
63344
  return {};
63320
63345
  }
63321
- const parsed = new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(found.getRaw());
63322
- this.findTexts(parsed);
63346
+ try {
63347
+ const parsed = new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(found.getRaw());
63348
+ this.findTexts(parsed);
63349
+ }
63350
+ catch (_b) {
63351
+ this.texts = {};
63352
+ }
63323
63353
  }
63324
63354
  return (_a = this.texts["I"]) !== null && _a !== void 0 ? _a : {};
63325
63355
  }
63326
63356
  /////////////////////////////////
63327
63357
  parseXML() {
63328
- var _a, _b, _c;
63358
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
63329
63359
  this.includes = [];
63330
63360
  this.modules = [];
63331
63361
  const parsed = this.parseRaw2();
63332
63362
  if (parsed === undefined) {
63333
63363
  return;
63334
63364
  }
63335
- this.description = (_a = parsed.abapGit["asx:abap"]["asx:values"]) === null || _a === void 0 ? void 0 : _a.AREAT;
63365
+ this.description = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.AREAT;
63336
63366
  this.dynpros = (0, _dynpros_1.parseDynpros)(parsed);
63337
63367
  // INCLUDES
63338
- const includes = (_b = parsed.abapGit["asx:abap"]["asx:values"]) === null || _b === void 0 ? void 0 : _b.INCLUDES;
63368
+ const includes = (_f = (_e = (_d = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _d === void 0 ? void 0 : _d["asx:abap"]) === null || _e === void 0 ? void 0 : _e["asx:values"]) === null || _f === void 0 ? void 0 : _f.INCLUDES;
63339
63369
  if (includes !== undefined) {
63340
63370
  for (const i of (0, xml_utils_1.xmlToArray)(includes.SOBJ_NAME)) {
63341
- this.includes.push(i);
63371
+ if (typeof i === "string") {
63372
+ this.includes.push(i);
63373
+ }
63342
63374
  }
63343
63375
  }
63344
63376
  // FUNCTION MODULES
63345
- const functions = (_c = parsed.abapGit["asx:abap"]["asx:values"]) === null || _c === void 0 ? void 0 : _c.FUNCTIONS;
63377
+ const functions = (_j = (_h = (_g = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _g === void 0 ? void 0 : _g["asx:abap"]) === null || _h === void 0 ? void 0 : _h["asx:values"]) === null || _j === void 0 ? void 0 : _j.FUNCTIONS;
63346
63378
  for (const module of (0, xml_utils_1.xmlToArray)(functions === null || functions === void 0 ? void 0 : functions.item)) {
63347
- this.modules.push(new types_1.FunctionModuleDefinition(module));
63379
+ try {
63380
+ this.modules.push(new types_1.FunctionModuleDefinition(module));
63381
+ }
63382
+ catch (_k) {
63383
+ // Ignore malformed function module metadata.
63384
+ }
63348
63385
  }
63349
63386
  }
63350
63387
  findTextFile() {
@@ -63900,6 +63937,7 @@ class ICFService extends _abstract_object_1.AbstractObject {
63900
63937
  return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.handlers;
63901
63938
  }
63902
63939
  parse() {
63940
+ var _a, _b, _c, _d, _e, _f, _g, _h;
63903
63941
  if (this.parsedXML) {
63904
63942
  return { updated: false, runtime: 0 };
63905
63943
  }
@@ -63908,17 +63946,17 @@ class ICFService extends _abstract_object_1.AbstractObject {
63908
63946
  const parsed = super.parseRaw2();
63909
63947
  if (parsed === undefined
63910
63948
  || parsed.abapGit === undefined
63911
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
63949
+ || ((_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
63912
63950
  return { updated: false, runtime: 0 };
63913
63951
  }
63914
- const table = parsed.abapGit["asx:abap"]["asx:values"].ICFHANDLER_TABLE;
63952
+ const table = (_e = (_d = (_c = parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.ICFHANDLER_TABLE;
63915
63953
  this.parsedXML.handlers = [];
63916
63954
  for (const h of (0, xml_utils_1.xmlToArray)(table)) {
63917
63955
  if (h.ICFHANDLER !== undefined) {
63918
63956
  this.parsedXML.handlers.push(h.ICFHANDLER.ICFHANDLER);
63919
63957
  }
63920
63958
  }
63921
- this.parsedXML.url = parsed.abapGit["asx:abap"]["asx:values"].URL;
63959
+ this.parsedXML.url = (_h = (_g = (_f = parsed.abapGit) === null || _f === void 0 ? void 0 : _f["asx:abap"]) === null || _g === void 0 ? void 0 : _g["asx:values"]) === null || _h === void 0 ? void 0 : _h.URL;
63922
63960
  const end = Date.now();
63923
63961
  return { updated: true, runtime: end - start };
63924
63962
  }
@@ -64341,16 +64379,17 @@ class Interface extends _abap_object_1.ABAPObject {
64341
64379
  }
64342
64380
  /////////////////////////
64343
64381
  parseXML() {
64382
+ var _a, _b, _c, _d, _e;
64344
64383
  if (this.parsedXML !== undefined) {
64345
64384
  return;
64346
64385
  }
64347
64386
  this.parsedXML = {};
64348
64387
  const parsed = super.parseRaw2();
64349
64388
  if (parsed === undefined
64350
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
64389
+ || ((_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
64351
64390
  return;
64352
64391
  }
64353
- const vseo = parsed.abapGit["asx:abap"]["asx:values"].VSEOINTERF;
64392
+ const vseo = (_e = (_d = (_c = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.VSEOINTERF;
64354
64393
  if (vseo === undefined) {
64355
64394
  this.parsedXML.description = "";
64356
64395
  this.parsedXML.name = "";
@@ -64454,7 +64493,7 @@ class LockObject extends _abstract_object_1.AbstractObject {
64454
64493
  }
64455
64494
  }
64456
64495
  parse() {
64457
- var _a, _b;
64496
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
64458
64497
  if (this.parsedXML) {
64459
64498
  return { updated: false, runtime: 0 };
64460
64499
  }
@@ -64463,11 +64502,11 @@ class LockObject extends _abstract_object_1.AbstractObject {
64463
64502
  const parsed = super.parseRaw2();
64464
64503
  if (parsed === undefined
64465
64504
  || parsed.abapGit === undefined
64466
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
64505
+ || ((_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
64467
64506
  return { updated: false, runtime: 0 };
64468
64507
  }
64469
- this.parsedXML.primaryTable = (_a = parsed.abapGit["asx:abap"]["asx:values"].DD25V) === null || _a === void 0 ? void 0 : _a.ROOTTAB;
64470
- this.parsedXML.description = (_b = parsed.abapGit["asx:abap"]["asx:values"].DD25V) === null || _b === void 0 ? void 0 : _b.DDTEXT;
64508
+ this.parsedXML.primaryTable = (_f = (_e = (_d = (_c = parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.DD25V) === null || _f === void 0 ? void 0 : _f.ROOTTAB;
64509
+ this.parsedXML.description = (_k = (_j = (_h = (_g = parsed.abapGit) === null || _g === void 0 ? void 0 : _g["asx:abap"]) === null || _h === void 0 ? void 0 : _h["asx:values"]) === null || _j === void 0 ? void 0 : _j.DD25V) === null || _k === void 0 ? void 0 : _k.DDTEXT;
64471
64510
  const end = Date.now();
64472
64511
  return { updated: true, runtime: end - start };
64473
64512
  }
@@ -64555,7 +64594,7 @@ class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
64555
64594
  }
64556
64595
  }
64557
64596
  parse() {
64558
- var _a, _b, _c, _d;
64597
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
64559
64598
  if (this.parsedXML) {
64560
64599
  return { updated: false, runtime: 0 };
64561
64600
  }
@@ -64564,12 +64603,12 @@ class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
64564
64603
  const parsed = super.parseRaw2();
64565
64604
  if (parsed === undefined
64566
64605
  || parsed.abapGit === undefined
64567
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
64606
+ || ((_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
64568
64607
  return { updated: false, runtime: 0 };
64569
64608
  }
64570
- this.parsedXML.area = (_b = (_a = parsed.abapGit["asx:abap"]["asx:values"].TOBJ) === null || _a === void 0 ? void 0 : _a.TVDIR) === null || _b === void 0 ? void 0 : _b.AREA;
64571
- this.parsedXML.objectName = (_c = parsed.abapGit["asx:abap"]["asx:values"].OBJH) === null || _c === void 0 ? void 0 : _c.OBJECTNAME;
64572
- this.parsedXML.objectType = (_d = parsed.abapGit["asx:abap"]["asx:values"].OBJH) === null || _d === void 0 ? void 0 : _d.OBJECTTYPE;
64609
+ this.parsedXML.area = (_g = (_f = (_e = (_d = (_c = parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.TOBJ) === null || _f === void 0 ? void 0 : _f.TVDIR) === null || _g === void 0 ? void 0 : _g.AREA;
64610
+ this.parsedXML.objectName = (_l = (_k = (_j = (_h = parsed.abapGit) === null || _h === void 0 ? void 0 : _h["asx:abap"]) === null || _j === void 0 ? void 0 : _j["asx:values"]) === null || _k === void 0 ? void 0 : _k.OBJH) === null || _l === void 0 ? void 0 : _l.OBJECTNAME;
64611
+ this.parsedXML.objectType = (_q = (_p = (_o = (_m = parsed.abapGit) === null || _m === void 0 ? void 0 : _m["asx:abap"]) === null || _o === void 0 ? void 0 : _o["asx:values"]) === null || _p === void 0 ? void 0 : _p.OBJH) === null || _q === void 0 ? void 0 : _q.OBJECTTYPE;
64573
64612
  const end = Date.now();
64574
64613
  return { updated: true, runtime: end - start };
64575
64614
  }
@@ -64642,7 +64681,7 @@ class MessageClass extends _abstract_object_1.AbstractObject {
64642
64681
  }
64643
64682
  /////////////////////////////////
64644
64683
  parseXML() {
64645
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
64684
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
64646
64685
  if (this.xml !== undefined) {
64647
64686
  return;
64648
64687
  }
@@ -64656,16 +64695,16 @@ class MessageClass extends _abstract_object_1.AbstractObject {
64656
64695
  if (parsed === undefined) {
64657
64696
  return;
64658
64697
  }
64659
- this.xml.topName = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]["asx:values"]) === null || _b === void 0 ? void 0 : _b.T100A) === null || _c === void 0 ? void 0 : _c.ARBGB;
64660
- this.xml.description = (_f = (_e = (_d = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _d === void 0 ? void 0 : _d["asx:abap"]["asx:values"]) === null || _e === void 0 ? void 0 : _e.T100A) === null || _f === void 0 ? void 0 : _f.STEXT;
64661
- const t100 = (_h = (_g = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _g === void 0 ? void 0 : _g["asx:abap"]["asx:values"]) === null || _h === void 0 ? void 0 : _h.T100;
64698
+ this.xml.topName = (_d = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.T100A) === null || _d === void 0 ? void 0 : _d.ARBGB;
64699
+ this.xml.description = (_h = (_g = (_f = (_e = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _e === void 0 ? void 0 : _e["asx:abap"]) === null || _f === void 0 ? void 0 : _f["asx:values"]) === null || _g === void 0 ? void 0 : _g.T100A) === null || _h === void 0 ? void 0 : _h.STEXT;
64700
+ const t100 = (_l = (_k = (_j = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _j === void 0 ? void 0 : _j["asx:abap"]) === null || _k === void 0 ? void 0 : _k["asx:values"]) === null || _l === void 0 ? void 0 : _l.T100;
64662
64701
  if (t100 === undefined) {
64663
64702
  return;
64664
64703
  }
64665
64704
  for (const msg of (0, xml_utils_1.xmlToArray)(t100.T100)) {
64666
64705
  this.xml.parsedMessages.push(new message_1.Message(msg.MSGNR, (0, xml_utils_1.unescape)(msg.TEXT), msg.ARBGB));
64667
64706
  }
64668
- const t100_texts = (_k = (_j = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _j === void 0 ? void 0 : _j["asx:abap"]["asx:values"]) === null || _k === void 0 ? void 0 : _k.T100_TEXTS;
64707
+ const t100_texts = (_p = (_o = (_m = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _m === void 0 ? void 0 : _m["asx:abap"]) === null || _o === void 0 ? void 0 : _o["asx:values"]) === null || _p === void 0 ? void 0 : _p.T100_TEXTS;
64669
64708
  if (t100_texts === undefined) {
64670
64709
  return;
64671
64710
  }
@@ -64763,6 +64802,7 @@ class MIMEObject extends _abstract_object_1.AbstractObject {
64763
64802
  return undefined;
64764
64803
  }
64765
64804
  parse() {
64805
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
64766
64806
  if (this.parsedXML) {
64767
64807
  return { updated: false, runtime: 0 };
64768
64808
  }
@@ -64771,12 +64811,12 @@ class MIMEObject extends _abstract_object_1.AbstractObject {
64771
64811
  const parsed = super.parseRaw2();
64772
64812
  if (parsed === undefined
64773
64813
  || parsed.abapGit === undefined
64774
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
64814
+ || ((_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
64775
64815
  return { updated: false, runtime: 0 };
64776
64816
  }
64777
- this.parsedXML.URL = parsed.abapGit["asx:abap"]["asx:values"].URL;
64778
- this.parsedXML.CLASS = parsed.abapGit["asx:abap"]["asx:values"].CLASS;
64779
- this.parsedXML.FOLDER = parsed.abapGit["asx:abap"]["asx:values"].FOLDER;
64817
+ this.parsedXML.URL = (_e = (_d = (_c = parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.URL;
64818
+ this.parsedXML.CLASS = (_h = (_g = (_f = parsed.abapGit) === null || _f === void 0 ? void 0 : _f["asx:abap"]) === null || _g === void 0 ? void 0 : _g["asx:values"]) === null || _h === void 0 ? void 0 : _h.CLASS;
64819
+ this.parsedXML.FOLDER = (_l = (_k = (_j = parsed.abapGit) === null || _j === void 0 ? void 0 : _j["asx:abap"]) === null || _k === void 0 ? void 0 : _k["asx:values"]) === null || _l === void 0 ? void 0 : _l.FOLDER;
64780
64820
  const end = Date.now();
64781
64821
  return { updated: true, runtime: end - start };
64782
64822
  }
@@ -65624,10 +65664,10 @@ class Oauth2Profile extends _abstract_object_1.AbstractObject {
65624
65664
  return undefined;
65625
65665
  }
65626
65666
  listScopes() {
65627
- var _a, _b, _c;
65667
+ var _a, _b, _c, _d, _e;
65628
65668
  const ret = [];
65629
65669
  const parsed = super.parseRaw2();
65630
- for (const t of (0, xml_utils_1.xmlToArray)((_c = (_b = (_a = parsed.abapGit["asx:abap"]["asx:values"]) === null || _a === void 0 ? void 0 : _a.PROFILE) === null || _b === void 0 ? void 0 : _b.T_SCOPES) === null || _c === void 0 ? void 0 : _c.OA2P_SCOPES)) {
65670
+ for (const t of (0, xml_utils_1.xmlToArray)((_e = (_d = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.PROFILE) === null || _d === void 0 ? void 0 : _d.T_SCOPES) === null || _e === void 0 ? void 0 : _e.OA2P_SCOPES)) {
65631
65671
  ret.push(t.SCOPE);
65632
65672
  }
65633
65673
  return ret;
@@ -65912,7 +65952,7 @@ class Program extends _abap_object_1.ABAPObject {
65912
65952
  }
65913
65953
  ////////////////////////////
65914
65954
  parseXML() {
65915
- var _a, _b, _c;
65955
+ var _a, _b, _c, _d;
65916
65956
  if (this.parsedXML !== undefined) {
65917
65957
  return;
65918
65958
  }
@@ -65930,11 +65970,11 @@ class Program extends _abap_object_1.ABAPObject {
65930
65970
  }
65931
65971
  let description = "";
65932
65972
  const selectionTexts = {};
65933
- for (const t of (0, xml_utils_1.xmlToArray)((_c = (_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]["asx:values"]) === null || _b === void 0 ? void 0 : _b.TPOOL) === null || _c === void 0 ? void 0 : _c.item)) {
65973
+ for (const t of (0, xml_utils_1.xmlToArray)((_d = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.TPOOL) === null || _d === void 0 ? void 0 : _d.item)) {
65934
65974
  if ((t === null || t === void 0 ? void 0 : t.ID) === "R") {
65935
65975
  description = t.ENTRY ? (0, xml_utils_1.unescape)(t.ENTRY) : "";
65936
65976
  }
65937
- else if ((t === null || t === void 0 ? void 0 : t.ID) === "S" && t.KEY !== undefined) {
65977
+ else if ((t === null || t === void 0 ? void 0 : t.ID) === "S" && typeof t.KEY === "string") {
65938
65978
  selectionTexts[t.KEY.toUpperCase()] = { entry: t.ENTRY ? (0, xml_utils_1.unescape)(t.ENTRY) : "", maxLength: parseInt(t.LENGTH, 10) };
65939
65979
  }
65940
65980
  }
@@ -66001,20 +66041,19 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66001
66041
  return { updated: true, runtime: end - start };
66002
66042
  }
66003
66043
  parseXML() {
66004
- var _a, _b;
66044
+ var _a, _b, _c, _d, _e;
66005
66045
  const result = { proxyData: [] };
66006
66046
  const parsed = super.parseRaw2();
66007
66047
  if (parsed === undefined
66008
66048
  || parsed.abapGit === undefined
66009
- || ((_a = parsed.abapGit["asx:abap"]) === null || _a === void 0 ? void 0 : _a["asx:values"]) === undefined) {
66049
+ || ((_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
66010
66050
  return result;
66011
66051
  }
66012
- const values = parsed.abapGit["asx:abap"]["asx:values"];
66013
- result.proxyData = (0, xml_utils_1.xmlToArray)((_b = values.PROXY_DATA) === null || _b === void 0 ? void 0 : _b.item);
66052
+ const values = (_d = (_c = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"];
66053
+ result.proxyData = (0, xml_utils_1.xmlToArray)((_e = values.PROXY_DATA) === null || _e === void 0 ? void 0 : _e.item);
66014
66054
  return result;
66015
66055
  }
66016
66056
  generateABAPObjects() {
66017
- var _a, _b, _c, _d, _e;
66018
66057
  this.parse();
66019
66058
  const result = [];
66020
66059
  if (!this.parsedXML) {
@@ -66022,7 +66061,7 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66022
66061
  }
66023
66062
  // Find interface definition
66024
66063
  const intfItem = this.parsedXML.proxyData.find(i => i.R3_TYPE === "INTF");
66025
- if (!intfItem || !intfItem.R3_NAME) {
66064
+ if (!intfItem || typeof intfItem.R3_NAME !== "string") {
66026
66065
  return result;
66027
66066
  }
66028
66067
  const intfName = intfItem.R3_NAME.toLowerCase();
@@ -66031,10 +66070,10 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66031
66070
  // Build interface code
66032
66071
  let code = `INTERFACE ${intfName} PUBLIC.\n`;
66033
66072
  for (const method of methods) {
66034
- const methodName = (_a = method.R3_NAME) === null || _a === void 0 ? void 0 : _a.toLowerCase();
66035
- if (!methodName) {
66073
+ if (typeof method.R3_NAME !== "string") {
66036
66074
  continue;
66037
66075
  }
66076
+ const methodName = method.R3_NAME.toLowerCase();
66038
66077
  // Find parameters for this method
66039
66078
  const importingParameters = this.parsedXML.proxyData.filter(i => i.R3_TYPE === "PAIM" && i.OBJ_NAME1 === method.OBJ_NAME1);
66040
66079
  const exportingParameters = this.parsedXML.proxyData.filter(i => i.R3_TYPE === "PAEX" && i.OBJ_NAME1 === method.OBJ_NAME1);
@@ -66043,8 +66082,8 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66043
66082
  code += ` IMPORTING\n`;
66044
66083
  for (let i = 0; i < importingParameters.length; i++) {
66045
66084
  const param = importingParameters[i];
66046
- const paramName = (_b = param.OBJ_NAME2) === null || _b === void 0 ? void 0 : _b.toLowerCase();
66047
- const paramType = (_c = param.OBJ_NAME_R) === null || _c === void 0 ? void 0 : _c.toLowerCase();
66085
+ const paramName = typeof param.OBJ_NAME2 === "string" ? param.OBJ_NAME2.toLowerCase() : undefined;
66086
+ const paramType = typeof param.OBJ_NAME_R === "string" ? param.OBJ_NAME_R.toLowerCase() : undefined;
66048
66087
  const isLast = i === importingParameters.length - 1 && exportingParameters.length === 0;
66049
66088
  code += ` ${paramName} TYPE ${paramType}${isLast ? "." : ""}\n`;
66050
66089
  }
@@ -66053,8 +66092,8 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66053
66092
  code += ` EXPORTING\n`;
66054
66093
  for (let i = 0; i < exportingParameters.length; i++) {
66055
66094
  const param = exportingParameters[i];
66056
- const paramName = (_d = param.OBJ_NAME2) === null || _d === void 0 ? void 0 : _d.toLowerCase();
66057
- const paramType = (_e = param.OBJ_NAME_R) === null || _e === void 0 ? void 0 : _e.toLowerCase();
66095
+ const paramName = typeof param.OBJ_NAME2 === "string" ? param.OBJ_NAME2.toLowerCase() : undefined;
66096
+ const paramType = typeof param.OBJ_NAME_R === "string" ? param.OBJ_NAME_R.toLowerCase() : undefined;
66058
66097
  const isLast = i === exportingParameters.length - 1;
66059
66098
  code += ` ${paramName} TYPE ${paramType}${isLast ? "." : ""}\n`;
66060
66099
  }
@@ -67885,7 +67924,7 @@ class Table extends _abstract_object_1.AbstractObject {
67885
67924
  return false;
67886
67925
  }
67887
67926
  parseXML() {
67888
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
67927
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
67889
67928
  const parsed = super.parseRaw2();
67890
67929
  if (parsed === undefined) {
67891
67930
  return;
@@ -67895,19 +67934,22 @@ class Table extends _abstract_object_1.AbstractObject {
67895
67934
  return;
67896
67935
  }
67897
67936
  // enhancement category
67898
- if (((_b = (_a = parsed.abapGit["asx:abap"]["asx:values"]) === null || _a === void 0 ? void 0 : _a.DD02V) === null || _b === void 0 ? void 0 : _b.EXCLASS) === undefined) {
67937
+ if (((_d = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.DD02V) === null || _d === void 0 ? void 0 : _d.EXCLASS) === undefined) {
67899
67938
  this.parsedData.enhancementCategory = EnhancementCategory.NotClassified;
67900
67939
  }
67901
67940
  else {
67902
- this.parsedData.enhancementCategory = (_d = (_c = parsed.abapGit["asx:abap"]["asx:values"]) === null || _c === void 0 ? void 0 : _c.DD02V) === null || _d === void 0 ? void 0 : _d.EXCLASS;
67941
+ this.parsedData.enhancementCategory = (_h = (_g = (_f = (_e = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _e === void 0 ? void 0 : _e["asx:abap"]) === null || _f === void 0 ? void 0 : _f["asx:values"]) === null || _g === void 0 ? void 0 : _g.DD02V) === null || _h === void 0 ? void 0 : _h.EXCLASS;
67903
67942
  }
67904
67943
  // table category
67905
- this.parsedData.tableCategory = (_f = (_e = parsed.abapGit["asx:abap"]["asx:values"]) === null || _e === void 0 ? void 0 : _e.DD02V) === null || _f === void 0 ? void 0 : _f.TABCLASS;
67906
- this.parsedData.description = (_h = (_g = parsed.abapGit["asx:abap"]["asx:values"]) === null || _g === void 0 ? void 0 : _g.DD02V) === null || _h === void 0 ? void 0 : _h.DDTEXT;
67907
- this.parsedData.dataClass = (_k = (_j = parsed.abapGit["asx:abap"]["asx:values"]) === null || _j === void 0 ? void 0 : _j.DD09L) === null || _k === void 0 ? void 0 : _k.TABART;
67944
+ this.parsedData.tableCategory = (_m = (_l = (_k = (_j = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _j === void 0 ? void 0 : _j["asx:abap"]) === null || _k === void 0 ? void 0 : _k["asx:values"]) === null || _l === void 0 ? void 0 : _l.DD02V) === null || _m === void 0 ? void 0 : _m.TABCLASS;
67945
+ this.parsedData.description = (_r = (_q = (_p = (_o = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _o === void 0 ? void 0 : _o["asx:abap"]) === null || _p === void 0 ? void 0 : _p["asx:values"]) === null || _q === void 0 ? void 0 : _q.DD02V) === null || _r === void 0 ? void 0 : _r.DDTEXT;
67946
+ this.parsedData.dataClass = (_v = (_u = (_t = (_s = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _s === void 0 ? void 0 : _s["asx:abap"]) === null || _t === void 0 ? void 0 : _t["asx:values"]) === null || _u === void 0 ? void 0 : _u.DD09L) === null || _v === void 0 ? void 0 : _v.TABART;
67908
67947
  // fields
67909
- const fields = (_l = parsed.abapGit["asx:abap"]["asx:values"]) === null || _l === void 0 ? void 0 : _l.DD03P_TABLE;
67948
+ const fields = (_y = (_x = (_w = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _w === void 0 ? void 0 : _w["asx:abap"]) === null || _x === void 0 ? void 0 : _x["asx:values"]) === null || _y === void 0 ? void 0 : _y.DD03P_TABLE;
67910
67949
  for (const field of (0, xml_utils_1.xmlToArray)(fields === null || fields === void 0 ? void 0 : fields.DD03P)) {
67950
+ if (typeof (field === null || field === void 0 ? void 0 : field.FIELDNAME) !== "string") {
67951
+ continue;
67952
+ }
67911
67953
  this.parsedData.fields.push({
67912
67954
  FIELDNAME: field.FIELDNAME,
67913
67955
  ROLLNAME: field.ROLLNAME,
@@ -67927,13 +67969,13 @@ class Table extends _abstract_object_1.AbstractObject {
67927
67969
  });
67928
67970
  }
67929
67971
  // secondary indexes
67930
- const indexes = (_m = parsed.abapGit["asx:abap"]["asx:values"]) === null || _m === void 0 ? void 0 : _m.DD12V;
67972
+ const indexes = (_1 = (_0 = (_z = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _z === void 0 ? void 0 : _z["asx:abap"]) === null || _0 === void 0 ? void 0 : _0["asx:values"]) === null || _1 === void 0 ? void 0 : _1.DD12V;
67931
67973
  ;
67932
67974
  this.parsedData.secondaryIndexes = [];
67933
67975
  for (const index of (0, xml_utils_1.xmlToArray)(indexes === null || indexes === void 0 ? void 0 : indexes.DD12V)) {
67934
67976
  const indexName = index.INDEXNAME;
67935
67977
  const indexFields = [];
67936
- const indexFieldsXml = (_o = parsed.abapGit["asx:abap"]["asx:values"]) === null || _o === void 0 ? void 0 : _o.DD17V;
67978
+ const indexFieldsXml = (_4 = (_3 = (_2 = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _2 === void 0 ? void 0 : _2["asx:abap"]) === null || _3 === void 0 ? void 0 : _3["asx:values"]) === null || _4 === void 0 ? void 0 : _4.DD17V;
67937
67979
  for (const indexField of (0, xml_utils_1.xmlToArray)(indexFieldsXml === null || indexFieldsXml === void 0 ? void 0 : indexFieldsXml.DD17V)) {
67938
67980
  if (indexField.INDEXNAME === indexName) {
67939
67981
  // assumption: fields are listed by POSITION in the xml
@@ -68156,7 +68198,7 @@ class TableType extends _abstract_object_1.AbstractObject {
68156
68198
  }
68157
68199
  ////////////////////
68158
68200
  parseXML() {
68159
- var _a, _b;
68201
+ var _a, _b, _c, _d;
68160
68202
  if (this.parsedXML !== undefined) {
68161
68203
  return;
68162
68204
  }
@@ -68168,11 +68210,14 @@ class TableType extends _abstract_object_1.AbstractObject {
68168
68210
  if (parsed === undefined || parsed.abapGit === undefined) {
68169
68211
  return;
68170
68212
  }
68171
- const values = parsed.abapGit["asx:abap"]["asx:values"];
68213
+ const values = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"];
68172
68214
  if (values === undefined) {
68173
68215
  return;
68174
68216
  }
68175
68217
  const dd40v = values.DD40V;
68218
+ if (dd40v === undefined) {
68219
+ return;
68220
+ }
68176
68221
  this.parsedXML.rowtype = dd40v.ROWTYPE ? dd40v.ROWTYPE : "";
68177
68222
  this.parsedXML.rowkind = dd40v.ROWKIND ? dd40v.ROWKIND : "";
68178
68223
  this.parsedXML.datatype = dd40v.DATATYPE;
@@ -68182,13 +68227,13 @@ class TableType extends _abstract_object_1.AbstractObject {
68182
68227
  this.parsedXML.keykind = dd40v.KEYKIND;
68183
68228
  this.parsedXML.ddtext = dd40v.DDTEXT;
68184
68229
  this.parsedXML.keydef = dd40v.KEYDEF;
68185
- for (const x of (0, xml_utils_1.xmlToArray)((_a = values.DD42V) === null || _a === void 0 ? void 0 : _a.DD42V)) {
68230
+ for (const x of (0, xml_utils_1.xmlToArray)((_c = values.DD42V) === null || _c === void 0 ? void 0 : _c.DD42V)) {
68186
68231
  this.parsedXML.dd42v.push({
68187
68232
  keyname: x.SECKEYNAME || "",
68188
68233
  keyfield: x.KEYFIELD || "",
68189
68234
  });
68190
68235
  }
68191
- for (const x of (0, xml_utils_1.xmlToArray)((_b = values.DD43V) === null || _b === void 0 ? void 0 : _b.DD43V)) {
68236
+ for (const x of (0, xml_utils_1.xmlToArray)((_d = values.DD43V) === null || _d === void 0 ? void 0 : _d.DD43V)) {
68192
68237
  this.parsedXML.dd43v.push({
68193
68238
  keyname: x.SECKEYNAME || "",
68194
68239
  accessmode: x.ACCESSMODE || "",
@@ -68564,7 +68609,7 @@ class View extends _abstract_object_1.AbstractObject {
68564
68609
  }
68565
68610
  ///////////////
68566
68611
  parseXML() {
68567
- var _a, _b, _c;
68612
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
68568
68613
  this.parsedData = {
68569
68614
  header: {
68570
68615
  VIEWCLASS: "",
@@ -68577,13 +68622,18 @@ class View extends _abstract_object_1.AbstractObject {
68577
68622
  if (parsed === undefined || parsed.abapGit === undefined) {
68578
68623
  return;
68579
68624
  }
68580
- const header = (_a = parsed.abapGit["asx:abap"]["asx:values"]) === null || _a === void 0 ? void 0 : _a.DD25V;
68625
+ const header = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.DD25V;
68581
68626
  this.parsedData.header = {
68582
68627
  VIEWCLASS: (header === null || header === void 0 ? void 0 : header.VIEWCLASS) || "",
68583
68628
  DDTEXT: (header === null || header === void 0 ? void 0 : header.DDTEXT) || "",
68584
68629
  };
68585
- const fields = (_b = parsed.abapGit["asx:abap"]["asx:values"]) === null || _b === void 0 ? void 0 : _b.DD27P_TABLE;
68630
+ const fields = (_f = (_e = (_d = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _d === void 0 ? void 0 : _d["asx:abap"]) === null || _e === void 0 ? void 0 : _e["asx:values"]) === null || _f === void 0 ? void 0 : _f.DD27P_TABLE;
68586
68631
  for (const field of (0, xml_utils_1.xmlToArray)(fields === null || fields === void 0 ? void 0 : fields.DD27P)) {
68632
+ if (typeof (field === null || field === void 0 ? void 0 : field.VIEWFIELD) !== "string"
68633
+ || typeof (field === null || field === void 0 ? void 0 : field.TABNAME) !== "string"
68634
+ || typeof (field === null || field === void 0 ? void 0 : field.FIELDNAME) !== "string") {
68635
+ continue;
68636
+ }
68587
68637
  this.parsedData.fields.push({
68588
68638
  VIEWFIELD: field.VIEWFIELD,
68589
68639
  TABNAME: field.TABNAME,
@@ -68591,7 +68641,7 @@ class View extends _abstract_object_1.AbstractObject {
68591
68641
  KEYFLAG: field.KEYFLAG,
68592
68642
  });
68593
68643
  }
68594
- const join = (_c = parsed.abapGit["asx:abap"]["asx:values"]) === null || _c === void 0 ? void 0 : _c.DD28J_TABLE;
68644
+ const join = (_j = (_h = (_g = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _g === void 0 ? void 0 : _g["asx:abap"]) === null || _h === void 0 ? void 0 : _h["asx:values"]) === null || _j === void 0 ? void 0 : _j.DD28J_TABLE;
68595
68645
  for (const j of (0, xml_utils_1.xmlToArray)(join === null || join === void 0 ? void 0 : join.DD28J)) {
68596
68646
  this.parsedData.join.push({
68597
68647
  LTAB: j.LTAB,
@@ -68846,7 +68896,7 @@ class WebMIME extends _abstract_object_1.AbstractObject {
68846
68896
  return undefined;
68847
68897
  }
68848
68898
  parse() {
68849
- var _a;
68899
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
68850
68900
  if (this.parsedXML) {
68851
68901
  return { updated: false, runtime: 0 };
68852
68902
  }
@@ -68855,11 +68905,14 @@ class WebMIME extends _abstract_object_1.AbstractObject {
68855
68905
  const parsed = super.parseRaw2();
68856
68906
  if (parsed === undefined
68857
68907
  || parsed.abapGit === undefined
68858
- || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
68908
+ || ((_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
68859
68909
  return { updated: false, runtime: 0 };
68860
68910
  }
68861
- this.parsedXML.description = parsed.abapGit["asx:abap"]["asx:values"].TEXT;
68862
- for (const param of (0, xml_utils_1.xmlToArray)((_a = parsed.abapGit["asx:abap"]["asx:values"].PARAMS) === null || _a === void 0 ? void 0 : _a.WWWPARAMS)) {
68911
+ this.parsedXML.description = (_e = (_d = (_c = parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.TEXT;
68912
+ for (const param of (0, xml_utils_1.xmlToArray)((_j = (_h = (_g = (_f = parsed.abapGit) === null || _f === void 0 ? void 0 : _f["asx:abap"]) === null || _g === void 0 ? void 0 : _g["asx:values"]) === null || _h === void 0 ? void 0 : _h.PARAMS) === null || _j === void 0 ? void 0 : _j.WWWPARAMS)) {
68913
+ if (typeof (param === null || param === void 0 ? void 0 : param.NAME) !== "string") {
68914
+ continue;
68915
+ }
68863
68916
  this.parsedXML.params[param.NAME.toLowerCase()] = param.VALUE;
68864
68917
  }
68865
68918
  const end = Date.now();
@@ -69460,7 +69513,7 @@ class Registry {
69460
69513
  }
69461
69514
  static abaplintVersion() {
69462
69515
  // magic, see build script "version.js"
69463
- return "2.120.17";
69516
+ return "2.120.19";
69464
69517
  }
69465
69518
  getDDICReferences() {
69466
69519
  return this.ddicReferences;
@@ -74184,6 +74237,8 @@ const objects_1 = __webpack_require__(/*! ../objects */ "../core/build/src/objec
74184
74237
  const _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ "../core/build/src/abap/5_syntax/_reference.js");
74185
74238
  const basic_1 = __webpack_require__(/*! ../abap/types/basic */ "../core/build/src/abap/types/basic/index.js");
74186
74239
  const _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ "../core/build/src/abap/2_statements/statements/_statement.js");
74240
+ const statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ "../core/build/src/abap/2_statements/statements/index.js");
74241
+ const expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
74187
74242
  class ClearExportingParametersConf extends _basic_rule_config_1.BasicRuleConfig {
74188
74243
  constructor() {
74189
74244
  super(...arguments);
@@ -74215,6 +74270,8 @@ Note: EXPORTING parameters passed by VALUE are always initialized and are theref
74215
74270
  Reading and writing the parameter in the same statement (e.g. "ev_result = ev_result + 1") is reported,
74216
74271
  as the source is evaluated before the parameter is assigned.
74217
74272
  Objects containing parser or syntax errors are not reported.
74273
+ "IS SUPPLIED"/"IS REQUESTED" checks are not considered reads, and "GET REFERENCE OF" plus
74274
+ "ASSIGN ... TO <fs>" are considered writes, as the value can be written via the reference.
74218
74275
 
74219
74276
  Class and interface method implementations and function modules are checked.`,
74220
74277
  tags: [_irule_1.RuleTag.Styleguide],
@@ -74340,6 +74397,16 @@ ENDCLASS.`,
74340
74397
  }
74341
74398
  const pos = reference.position.getStart();
74342
74399
  if (reference.referenceType === _reference_1.ReferenceType.DataReadReference) {
74400
+ if (this.isSuppliedOrRequested(reference, obj)) {
74401
+ continue; // "IS SUPPLIED" / "IS REQUESTED" does not read the value
74402
+ }
74403
+ if (this.isReferenceOrAssign(reference, obj)) {
74404
+ // "GET REFERENCE OF" and "ASSIGN ... TO <fs>" may be used for writing the value
74405
+ if (earliestWrite === undefined || pos.isBefore(earliestWrite.position.getStart())) {
74406
+ earliestWrite = reference;
74407
+ }
74408
+ continue;
74409
+ }
74343
74410
  if (firstRead === undefined || pos.isBefore(firstRead.position.getStart())) {
74344
74411
  firstRead = reference;
74345
74412
  }
@@ -74362,6 +74429,46 @@ ENDCLASS.`,
74362
74429
  const message = `EXPORTING parameter "${parameter.getName().toLowerCase()}" read before it is cleared or assigned`;
74363
74430
  return issue_1.Issue.atIdentifier(firstRead.position, message, this.getMetadata().key, this.conf.severity);
74364
74431
  }
74432
+ isReferenceOrAssign(reference, obj) {
74433
+ const file = obj.getABAPFileByName(reference.position.getFilename());
74434
+ const pos = reference.position.getStart();
74435
+ for (const statement of (file === null || file === void 0 ? void 0 : file.getStatements()) || []) {
74436
+ const start = statement.getStart();
74437
+ const end = statement.getEnd();
74438
+ if (pos.equals(start) === false && (pos.isAfter(start) === false || pos.isBefore(end) === false)) {
74439
+ continue;
74440
+ }
74441
+ const type = statement.get();
74442
+ return type instanceof statements_1.GetReference || type instanceof statements_1.Assign;
74443
+ }
74444
+ return false;
74445
+ }
74446
+ isSuppliedOrRequested(reference, obj) {
74447
+ const file = obj.getABAPFileByName(reference.position.getFilename());
74448
+ const pos = reference.position.getStart();
74449
+ for (const statement of (file === null || file === void 0 ? void 0 : file.getStatements()) || []) {
74450
+ const start = statement.getStart();
74451
+ const end = statement.getEnd();
74452
+ if (pos.equals(start) === false && (pos.isAfter(start) === false || pos.isBefore(end) === false)) {
74453
+ continue;
74454
+ }
74455
+ for (const compare of statement.findAllExpressionsRecursive(expressions_1.Compare)) {
74456
+ const upper = compare.concatTokens().toUpperCase();
74457
+ if (upper.includes(" IS SUPPLIED") === false
74458
+ && upper.includes(" IS REQUESTED") === false
74459
+ && upper.includes(" IS NOT SUPPLIED") === false
74460
+ && upper.includes(" IS NOT REQUESTED") === false) {
74461
+ continue;
74462
+ }
74463
+ const cStart = compare.getFirstToken().getStart();
74464
+ const cEnd = compare.getLastToken().getEnd();
74465
+ if ((pos.equals(cStart) || pos.isAfter(cStart)) && pos.isBefore(cEnd)) {
74466
+ return true;
74467
+ }
74468
+ }
74469
+ }
74470
+ return false;
74471
+ }
74365
74472
  statementStart(reference, obj) {
74366
74473
  const file = obj.getABAPFileByName(reference.position.getFilename());
74367
74474
  for (const statement of (file === null || file === void 0 ? void 0 : file.getStatements()) || []) {
@@ -92413,11 +92520,18 @@ Consider using ABAP Doc for documentation.`,
92413
92520
  return this.checkXML(xml, file);
92414
92521
  }
92415
92522
  checkXML(xml, file) {
92416
- const parsed = new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(xml);
92417
- if (parsed === undefined || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
92523
+ var _a, _b, _c, _d, _e;
92524
+ let parsed;
92525
+ try {
92526
+ parsed = new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(xml);
92527
+ }
92528
+ catch (_f) {
92418
92529
  return [];
92419
92530
  }
92420
- const desc = parsed.abapGit["asx:abap"]["asx:values"].DESCRIPTIONS;
92531
+ if (((_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === undefined) {
92532
+ return [];
92533
+ }
92534
+ const desc = (_e = (_d = (_c = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _c === void 0 ? void 0 : _c["asx:abap"]) === null || _d === void 0 ? void 0 : _d["asx:values"]) === null || _e === void 0 ? void 0 : _e.DESCRIPTIONS;
92421
92535
  if (desc === undefined) {
92422
92536
  return [];
92423
92537
  }
@@ -98755,6 +98869,40 @@ class XMLConsistency {
98755
98869
  const issues = [];
98756
98870
  const texts = obj.getTexts();
98757
98871
  const maxLengths = obj.getTextMaxLengths();
98872
+ const hasLabelTexts = (texts === null || texts === void 0 ? void 0 : texts.short) !== undefined
98873
+ || (texts === null || texts === void 0 ? void 0 : texts.medium) !== undefined
98874
+ || (texts === null || texts === void 0 ? void 0 : texts.long) !== undefined
98875
+ || (texts === null || texts === void 0 ? void 0 : texts.heading) !== undefined;
98876
+ if ((texts === null || texts === void 0 ? void 0 : texts.short) !== undefined) {
98877
+ const issue = this.checkRequiredField(file, "SCRLEN1", maxLengths === null || maxLengths === void 0 ? void 0 : maxLengths.short);
98878
+ if (issue) {
98879
+ issues.push(issue);
98880
+ }
98881
+ }
98882
+ if ((texts === null || texts === void 0 ? void 0 : texts.medium) !== undefined) {
98883
+ const issue = this.checkRequiredField(file, "SCRLEN2", maxLengths === null || maxLengths === void 0 ? void 0 : maxLengths.medium);
98884
+ if (issue) {
98885
+ issues.push(issue);
98886
+ }
98887
+ }
98888
+ if ((texts === null || texts === void 0 ? void 0 : texts.long) !== undefined) {
98889
+ const issue = this.checkRequiredField(file, "SCRLEN3", maxLengths === null || maxLengths === void 0 ? void 0 : maxLengths.long);
98890
+ if (issue) {
98891
+ issues.push(issue);
98892
+ }
98893
+ }
98894
+ if ((texts === null || texts === void 0 ? void 0 : texts.heading) !== undefined) {
98895
+ const issue = this.checkRequiredField(file, "HEADLEN", maxLengths === null || maxLengths === void 0 ? void 0 : maxLengths.heading);
98896
+ if (issue) {
98897
+ issues.push(issue);
98898
+ }
98899
+ }
98900
+ if (hasLabelTexts) {
98901
+ const issue = this.checkRequiredField(file, "DTELMASTER", obj.getDtelMaster());
98902
+ if (issue) {
98903
+ issues.push(issue);
98904
+ }
98905
+ }
98758
98906
  for (const issue of [
98759
98907
  this.checkTextLength(file, "DDTEXT", obj.getDescription(), 60),
98760
98908
  this.checkTextLength(file, "SCRTEXT_S", texts === null || texts === void 0 ? void 0 : texts.short, maxLengths === null || maxLengths === void 0 ? void 0 : maxLengths.short),
@@ -98782,6 +98930,12 @@ class XMLConsistency {
98782
98930
  }
98783
98931
  return issues;
98784
98932
  }
98933
+ checkRequiredField(file, fieldName, value) {
98934
+ if (value === undefined || value === "") {
98935
+ return issue_1.Issue.atRow(file, 1, `Missing required field ${fieldName} in DD04V`, this.getMetadata().key, this.conf.severity);
98936
+ }
98937
+ return undefined;
98938
+ }
98785
98939
  runDomain(obj, file) {
98786
98940
  var _a, _b;
98787
98941
  const maxTextLength = 60;
@@ -100191,15 +100345,15 @@ function xmlToArray(data) {
100191
100345
  }
100192
100346
  }
100193
100347
  function unescape(str) {
100194
- if (str === undefined) {
100348
+ if (typeof str !== "string") {
100195
100349
  return "";
100196
100350
  }
100197
- str = str.replace(/&amp;/g, "&");
100198
- str = str.replace(/&gt;/g, ">");
100199
- str = str.replace(/&lt;/g, "<");
100200
- str = str.replace(/&quot;/g, "\"");
100201
- str = str.replace(/&apos;/g, "'");
100202
- return str;
100351
+ let result = str.replace(/&amp;/g, "&");
100352
+ result = result.replace(/&gt;/g, ">");
100353
+ result = result.replace(/&lt;/g, "<");
100354
+ result = result.replace(/&quot;/g, "\"");
100355
+ result = result.replace(/&apos;/g, "'");
100356
+ return result;
100203
100357
  }
100204
100358
  //# sourceMappingURL=xml_utils.js.map
100205
100359
 
@@ -100218,13 +100372,19 @@ exports.ApackDependencyProvider = void 0;
100218
100372
  const xml_js_1 = __webpack_require__(/*! xml-js */ "./node_modules/xml-js/lib/index.js");
100219
100373
  class ApackDependencyProvider {
100220
100374
  static fromManifest(manifestContents) {
100221
- var _a, _b;
100375
+ var _a, _b, _c, _d, _e;
100222
100376
  if (!manifestContents || !manifestContents.length) {
100223
100377
  return [];
100224
100378
  }
100225
100379
  const result = [];
100226
- const manifest = (0, xml_js_1.xml2js)(manifestContents, { compact: true });
100227
- let apackDependencies = (_b = (_a = manifest["asx:abap"]["asx:values"]["DATA"]) === null || _a === void 0 ? void 0 : _a["DEPENDENCIES"]) === null || _b === void 0 ? void 0 : _b.item;
100380
+ let manifest;
100381
+ try {
100382
+ manifest = (0, xml_js_1.xml2js)(manifestContents, { compact: true });
100383
+ }
100384
+ catch (_f) {
100385
+ return [];
100386
+ }
100387
+ let apackDependencies = (_d = (_c = (_b = (_a = manifest === null || manifest === void 0 ? void 0 : manifest["asx:abap"]) === null || _a === void 0 ? void 0 : _a["asx:values"]) === null || _b === void 0 ? void 0 : _b["DATA"]) === null || _c === void 0 ? void 0 : _c["DEPENDENCIES"]) === null || _d === void 0 ? void 0 : _d.item;
100228
100388
  if (!apackDependencies) {
100229
100389
  return [];
100230
100390
  }
@@ -100232,9 +100392,13 @@ class ApackDependencyProvider {
100232
100392
  apackDependencies = [apackDependencies];
100233
100393
  }
100234
100394
  for (const dependency of apackDependencies) {
100395
+ const url = (_e = dependency === null || dependency === void 0 ? void 0 : dependency["GIT_URL"]) === null || _e === void 0 ? void 0 : _e["_text"];
100396
+ if (typeof url !== "string") {
100397
+ continue;
100398
+ }
100235
100399
  result.push({
100236
100400
  files: "/src/**/*.*",
100237
- url: dependency["GIT_URL"]["_text"],
100401
+ url,
100238
100402
  });
100239
100403
  }
100240
100404
  return result;
@@ -101339,6 +101503,28 @@ exports.Total = Total;
101339
101503
 
101340
101504
  /***/ },
101341
101505
 
101506
+ /***/ "./build/src/git_clone.js"
101507
+ /*!********************************!*\
101508
+ !*** ./build/src/git_clone.js ***!
101509
+ \********************************/
101510
+ (__unused_webpack_module, exports) {
101511
+
101512
+ "use strict";
101513
+
101514
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
101515
+ exports.buildGitCloneArguments = buildGitCloneArguments;
101516
+ function buildGitCloneArguments(url, branch) {
101517
+ const args = ["clone", "--quiet", "--depth", "1"];
101518
+ if (branch) {
101519
+ args.push("-b", branch);
101520
+ }
101521
+ args.push("--", url, ".");
101522
+ return args;
101523
+ }
101524
+ //# sourceMappingURL=git_clone.js.map
101525
+
101526
+ /***/ },
101527
+
101342
101528
  /***/ "./build/src/index.js"
101343
101529
  /*!****************************!*\
101344
101530
  !*** ./build/src/index.js ***!
@@ -101397,6 +101583,7 @@ const _format_1 = __webpack_require__(/*! ./formatters/_format */ "./build/src/f
101397
101583
  const file_operations_1 = __webpack_require__(/*! ./file_operations */ "./build/src/file_operations.js");
101398
101584
  const apack_dependency_provider_1 = __webpack_require__(/*! ./apack_dependency_provider */ "./build/src/apack_dependency_provider.js");
101399
101585
  const fixes_1 = __webpack_require__(/*! ./fixes */ "./build/src/fixes.js");
101586
+ const git_clone_1 = __webpack_require__(/*! ./git_clone */ "./build/src/git_clone.js");
101400
101587
  const rename_1 = __webpack_require__(/*! ./rename */ "./build/src/rename.js");
101401
101588
  exports.GENERIC_ERROR = "generic_error";
101402
101589
  class Progress {
@@ -101518,11 +101705,8 @@ async function loadDependencies(config, compress, bar, base) {
101518
101705
  if (d.url) {
101519
101706
  process.stderr.write("Clone: " + d.url + "\n");
101520
101707
  const dir = fs.mkdtempSync(path.join(os.tmpdir(), "abaplint-"));
101521
- let branch = "";
101522
- if (d.branch) {
101523
- branch = "-b " + d.branch + " ";
101524
- }
101525
- childProcess.execSync("git clone --quiet --depth 1 " + branch + d.url + " .", { cwd: dir, stdio: "inherit" });
101708
+ const args = (0, git_clone_1.buildGitCloneArguments)(d.url, d.branch);
101709
+ childProcess.execFileSync("git", args, { cwd: dir, stdio: "inherit" });
101526
101710
  const names = file_operations_1.FileOperations.loadFileNames(file_operations_1.FileOperations.toUnixPath(dir) + d.files);
101527
101711
  files = files.concat(await file_operations_1.FileOperations.loadFiles(compress, names, bar));
101528
101712
  file_operations_1.FileOperations.deleteFolderRecursive(dir);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.120.17",
3
+ "version": "2.120.19",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "homepage": "https://abaplint.org",
41
41
  "devDependencies": {
42
- "@abaplint/core": "^2.120.17",
42
+ "@abaplint/core": "^2.120.19",
43
43
  "@types/chai": "^4.3.20",
44
44
  "@types/minimist": "^1.2.5",
45
45
  "@types/mocha": "^10.0.10",