@abaplint/cli 2.120.18 → 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 +265 -112
  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));
@@ -31969,6 +31969,9 @@ class MessageSource {
31969
31969
  for (const f of node.findDirectExpressions(Expressions.Source)) {
31970
31970
  source_1.Source.runSyntax(f, input);
31971
31971
  }
31972
+ for (const f of node.findDirectExpressions(Expressions.SimpleSource3)) {
31973
+ source_1.Source.runSyntax(f, input);
31974
+ }
31972
31975
  if (node.getFirstToken().getStr().toUpperCase() === "ID") {
31973
31976
  const id = (_a = node.findExpressionAfterToken("ID")) === null || _a === void 0 ? void 0 : _a.concatTokens();
31974
31977
  let number = (_b = node.findDirectExpression(Expressions.MessageNumber)) === null || _b === void 0 ? void 0 : _b.concatTokens();
@@ -35469,7 +35472,7 @@ class Target {
35469
35472
  && !(context instanceof basic_1.VoidType)
35470
35473
  && !(context instanceof unknown_type_1.UnknownType)
35471
35474
  && !(context instanceof unknown_type_1.UnknownType)) {
35472
- const message = "Not a internal table, \"[]\"";
35475
+ const message = `Not an internal table, "${node.concatTokens()}"`;
35473
35476
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
35474
35477
  return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
35475
35478
  }
@@ -60052,21 +60055,22 @@ class ABAPObject extends _abstract_object_1.AbstractObject {
60052
60055
  return this.textsTranslations;
60053
60056
  }
60054
60057
  findTexts(parsed) {
60055
- var _a, _b, _c, _d, _e, _f;
60056
- var _g;
60058
+ var _a, _b, _c, _d, _e, _f, _g, _h;
60059
+ var _j;
60057
60060
  this.texts = {};
60058
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) {
60059
60062
  return;
60060
60063
  }
60061
- for (const t of (0, xml_utils_1.xmlToArray)(parsed.abapGit["asx:abap"]["asx:values"].TPOOL.item)) {
60062
- 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;
60063
60066
  if (id === undefined) {
60064
60067
  continue;
60065
60068
  }
60066
60069
  if (id !== "R" && t.KEY === undefined) {
60067
60070
  continue;
60068
60071
  }
60069
- 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;
60070
60074
  if (key === undefined) {
60071
60075
  continue;
60072
60076
  }
@@ -60077,8 +60081,8 @@ class ABAPObject extends _abstract_object_1.AbstractObject {
60077
60081
  }
60078
60082
  }
60079
60083
  findTextsTranslations(parsed) {
60080
- var _a, _b, _c, _d, _e, _f;
60081
- var _g;
60084
+ var _a, _b, _c, _d, _e;
60085
+ var _f;
60082
60086
  this.textsTranslations = [];
60083
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;
60084
60088
  if (values === undefined) {
@@ -60087,7 +60091,8 @@ class ABAPObject extends _abstract_object_1.AbstractObject {
60087
60091
  for (const langItem of (0, xml_utils_1.xmlToArray)(values)) {
60088
60092
  const textElements = {};
60089
60093
  for (const item of (0, xml_utils_1.xmlToArray)((_e = langItem.TEXTPOOL) === null || _e === void 0 ? void 0 : _e.item)) {
60090
- 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;
60091
60096
  if (key !== undefined) {
60092
60097
  textElements[key] = { entry: (0, xml_utils_1.unescape)(item.ENTRY), maxLength: parseInt(item.LENGTH, 10) };
60093
60098
  }
@@ -60248,11 +60253,14 @@ function parseNumber(value) {
60248
60253
  return parseInt(value, 10);
60249
60254
  }
60250
60255
  function parseDynpros(parsed) {
60251
- var _a, _b, _c, _d;
60256
+ var _a, _b, _c, _d, _e, _f, _g, _h;
60252
60257
  const dynpros = [];
60253
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;
60254
60259
  if (xmlDynpros !== undefined) {
60255
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
+ }
60256
60264
  const fields = [];
60257
60265
  for (const f of (0, xml_utils_1.xmlToArray)((_d = d.FIELDS) === null || _d === void 0 ? void 0 : _d.RPY_DYFATC)) {
60258
60266
  fields.push({
@@ -60267,10 +60275,10 @@ function parseDynpros(parsed) {
60267
60275
  });
60268
60276
  }
60269
60277
  dynpros.push({
60270
- number: d.HEADER.SCREEN,
60271
- description: d.HEADER.DESCRIPT,
60272
- nextScreen: d.HEADER.NEXTSCREEN,
60273
- 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,
60274
60282
  fields: fields,
60275
60283
  });
60276
60284
  }
@@ -60757,7 +60765,7 @@ class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
60757
60765
  }
60758
60766
  }
60759
60767
  parse() {
60760
- var _a;
60768
+ var _a, _b, _c, _d, _e, _f;
60761
60769
  if (this.parsedXML) {
60762
60770
  return { updated: false, runtime: 0 };
60763
60771
  }
@@ -60766,10 +60774,10 @@ class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
60766
60774
  const parsed = super.parseRaw2();
60767
60775
  if (parsed === undefined
60768
60776
  || parsed.abapGit === undefined
60769
- || 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) {
60770
60778
  return { updated: false, runtime: 0 };
60771
60779
  }
60772
- 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;
60773
60781
  const end = Date.now();
60774
60782
  return { updated: true, runtime: end - start };
60775
60783
  }
@@ -61616,17 +61624,16 @@ class Class extends _abap_object_1.ABAPObject {
61616
61624
  }
61617
61625
  /////////////////////////
61618
61626
  parseXML() {
61627
+ var _a, _b, _c, _d, _e;
61619
61628
  if (this.parsedXML !== undefined) {
61620
61629
  return;
61621
61630
  }
61622
61631
  this.parsedXML = {};
61623
61632
  const parsed = super.parseRaw2();
61624
- if (parsed === undefined
61625
- || parsed.abapGit["asx:abap"] === undefined
61626
- || 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) {
61627
61634
  return;
61628
61635
  }
61629
- 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;
61630
61637
  if (vseo === undefined) {
61631
61638
  return;
61632
61639
  }
@@ -62307,6 +62314,11 @@ class DataElement extends _abstract_object_1.AbstractObject {
62307
62314
  this.parse();
62308
62315
  return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.textsTranslations;
62309
62316
  }
62317
+ getDtelMaster() {
62318
+ var _a;
62319
+ this.parse();
62320
+ return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.dtelmaster;
62321
+ }
62310
62322
  parseType(reg) {
62311
62323
  var _a;
62312
62324
  const references = [];
@@ -62384,6 +62396,7 @@ class DataElement extends _abstract_object_1.AbstractObject {
62384
62396
  datatype: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DATATYPE,
62385
62397
  leng: dd04v === null || dd04v === void 0 ? void 0 : dd04v.LENG,
62386
62398
  decimals: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DECIMALS,
62399
+ dtelmaster: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DTELMASTER,
62387
62400
  texts: {
62388
62401
  short: dd04v === null || dd04v === void 0 ? void 0 : dd04v.SCRTEXT_S,
62389
62402
  medium: dd04v === null || dd04v === void 0 ? void 0 : dd04v.SCRTEXT_M,
@@ -62820,6 +62833,7 @@ class EnhancementImplementation extends _abstract_object_1.AbstractObject {
62820
62833
  return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;
62821
62834
  }
62822
62835
  parse() {
62836
+ var _a, _b, _c, _d, _e, _f, _g, _h;
62823
62837
  if (this.parsedXML) {
62824
62838
  return { updated: false, runtime: 0 };
62825
62839
  }
@@ -62828,11 +62842,11 @@ class EnhancementImplementation extends _abstract_object_1.AbstractObject {
62828
62842
  const parsed = super.parseRaw2();
62829
62843
  if (parsed === undefined
62830
62844
  || parsed.abapGit === undefined
62831
- || 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) {
62832
62846
  return { updated: false, runtime: 0 };
62833
62847
  }
62834
- this.parsedXML.className = parsed.abapGit["asx:abap"]["asx:values"].CLASS;
62835
- 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;
62836
62850
  const end = Date.now();
62837
62851
  return { updated: true, runtime: end - start };
62838
62852
  }
@@ -62880,13 +62894,13 @@ class EnhancementSpot extends _abstract_object_1.AbstractObject {
62880
62894
  }
62881
62895
  /////////////////
62882
62896
  parseXML() {
62883
- var _a, _b;
62897
+ var _a, _b, _c, _d;
62884
62898
  const parsed = super.parseRaw2();
62885
62899
  if (parsed === undefined) {
62886
62900
  return [];
62887
62901
  }
62888
62902
  const ret = [];
62889
- 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)) {
62890
62904
  ret.push({
62891
62905
  name: b.BADI_NAME,
62892
62906
  interface: b.INTERFACE_NAME,
@@ -63329,33 +63343,45 @@ class FunctionGroup extends _abap_object_1.ABAPObject {
63329
63343
  if (found === undefined) {
63330
63344
  return {};
63331
63345
  }
63332
- const parsed = new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(found.getRaw());
63333
- 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
+ }
63334
63353
  }
63335
63354
  return (_a = this.texts["I"]) !== null && _a !== void 0 ? _a : {};
63336
63355
  }
63337
63356
  /////////////////////////////////
63338
63357
  parseXML() {
63339
- var _a, _b, _c;
63358
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
63340
63359
  this.includes = [];
63341
63360
  this.modules = [];
63342
63361
  const parsed = this.parseRaw2();
63343
63362
  if (parsed === undefined) {
63344
63363
  return;
63345
63364
  }
63346
- 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;
63347
63366
  this.dynpros = (0, _dynpros_1.parseDynpros)(parsed);
63348
63367
  // INCLUDES
63349
- 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;
63350
63369
  if (includes !== undefined) {
63351
63370
  for (const i of (0, xml_utils_1.xmlToArray)(includes.SOBJ_NAME)) {
63352
- this.includes.push(i);
63371
+ if (typeof i === "string") {
63372
+ this.includes.push(i);
63373
+ }
63353
63374
  }
63354
63375
  }
63355
63376
  // FUNCTION MODULES
63356
- 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;
63357
63378
  for (const module of (0, xml_utils_1.xmlToArray)(functions === null || functions === void 0 ? void 0 : functions.item)) {
63358
- 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
+ }
63359
63385
  }
63360
63386
  }
63361
63387
  findTextFile() {
@@ -63911,6 +63937,7 @@ class ICFService extends _abstract_object_1.AbstractObject {
63911
63937
  return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.handlers;
63912
63938
  }
63913
63939
  parse() {
63940
+ var _a, _b, _c, _d, _e, _f, _g, _h;
63914
63941
  if (this.parsedXML) {
63915
63942
  return { updated: false, runtime: 0 };
63916
63943
  }
@@ -63919,17 +63946,17 @@ class ICFService extends _abstract_object_1.AbstractObject {
63919
63946
  const parsed = super.parseRaw2();
63920
63947
  if (parsed === undefined
63921
63948
  || parsed.abapGit === undefined
63922
- || 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) {
63923
63950
  return { updated: false, runtime: 0 };
63924
63951
  }
63925
- 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;
63926
63953
  this.parsedXML.handlers = [];
63927
63954
  for (const h of (0, xml_utils_1.xmlToArray)(table)) {
63928
63955
  if (h.ICFHANDLER !== undefined) {
63929
63956
  this.parsedXML.handlers.push(h.ICFHANDLER.ICFHANDLER);
63930
63957
  }
63931
63958
  }
63932
- 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;
63933
63960
  const end = Date.now();
63934
63961
  return { updated: true, runtime: end - start };
63935
63962
  }
@@ -64352,16 +64379,17 @@ class Interface extends _abap_object_1.ABAPObject {
64352
64379
  }
64353
64380
  /////////////////////////
64354
64381
  parseXML() {
64382
+ var _a, _b, _c, _d, _e;
64355
64383
  if (this.parsedXML !== undefined) {
64356
64384
  return;
64357
64385
  }
64358
64386
  this.parsedXML = {};
64359
64387
  const parsed = super.parseRaw2();
64360
64388
  if (parsed === undefined
64361
- || 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) {
64362
64390
  return;
64363
64391
  }
64364
- 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;
64365
64393
  if (vseo === undefined) {
64366
64394
  this.parsedXML.description = "";
64367
64395
  this.parsedXML.name = "";
@@ -64465,7 +64493,7 @@ class LockObject extends _abstract_object_1.AbstractObject {
64465
64493
  }
64466
64494
  }
64467
64495
  parse() {
64468
- var _a, _b;
64496
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
64469
64497
  if (this.parsedXML) {
64470
64498
  return { updated: false, runtime: 0 };
64471
64499
  }
@@ -64474,11 +64502,11 @@ class LockObject extends _abstract_object_1.AbstractObject {
64474
64502
  const parsed = super.parseRaw2();
64475
64503
  if (parsed === undefined
64476
64504
  || parsed.abapGit === undefined
64477
- || 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) {
64478
64506
  return { updated: false, runtime: 0 };
64479
64507
  }
64480
- this.parsedXML.primaryTable = (_a = parsed.abapGit["asx:abap"]["asx:values"].DD25V) === null || _a === void 0 ? void 0 : _a.ROOTTAB;
64481
- 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;
64482
64510
  const end = Date.now();
64483
64511
  return { updated: true, runtime: end - start };
64484
64512
  }
@@ -64566,7 +64594,7 @@ class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
64566
64594
  }
64567
64595
  }
64568
64596
  parse() {
64569
- var _a, _b, _c, _d;
64597
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
64570
64598
  if (this.parsedXML) {
64571
64599
  return { updated: false, runtime: 0 };
64572
64600
  }
@@ -64575,12 +64603,12 @@ class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
64575
64603
  const parsed = super.parseRaw2();
64576
64604
  if (parsed === undefined
64577
64605
  || parsed.abapGit === undefined
64578
- || 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) {
64579
64607
  return { updated: false, runtime: 0 };
64580
64608
  }
64581
- 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;
64582
- this.parsedXML.objectName = (_c = parsed.abapGit["asx:abap"]["asx:values"].OBJH) === null || _c === void 0 ? void 0 : _c.OBJECTNAME;
64583
- 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;
64584
64612
  const end = Date.now();
64585
64613
  return { updated: true, runtime: end - start };
64586
64614
  }
@@ -64653,7 +64681,7 @@ class MessageClass extends _abstract_object_1.AbstractObject {
64653
64681
  }
64654
64682
  /////////////////////////////////
64655
64683
  parseXML() {
64656
- 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;
64657
64685
  if (this.xml !== undefined) {
64658
64686
  return;
64659
64687
  }
@@ -64667,16 +64695,16 @@ class MessageClass extends _abstract_object_1.AbstractObject {
64667
64695
  if (parsed === undefined) {
64668
64696
  return;
64669
64697
  }
64670
- 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;
64671
- 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;
64672
- 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;
64673
64701
  if (t100 === undefined) {
64674
64702
  return;
64675
64703
  }
64676
64704
  for (const msg of (0, xml_utils_1.xmlToArray)(t100.T100)) {
64677
64705
  this.xml.parsedMessages.push(new message_1.Message(msg.MSGNR, (0, xml_utils_1.unescape)(msg.TEXT), msg.ARBGB));
64678
64706
  }
64679
- 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;
64680
64708
  if (t100_texts === undefined) {
64681
64709
  return;
64682
64710
  }
@@ -64774,6 +64802,7 @@ class MIMEObject extends _abstract_object_1.AbstractObject {
64774
64802
  return undefined;
64775
64803
  }
64776
64804
  parse() {
64805
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
64777
64806
  if (this.parsedXML) {
64778
64807
  return { updated: false, runtime: 0 };
64779
64808
  }
@@ -64782,12 +64811,12 @@ class MIMEObject extends _abstract_object_1.AbstractObject {
64782
64811
  const parsed = super.parseRaw2();
64783
64812
  if (parsed === undefined
64784
64813
  || parsed.abapGit === undefined
64785
- || 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) {
64786
64815
  return { updated: false, runtime: 0 };
64787
64816
  }
64788
- this.parsedXML.URL = parsed.abapGit["asx:abap"]["asx:values"].URL;
64789
- this.parsedXML.CLASS = parsed.abapGit["asx:abap"]["asx:values"].CLASS;
64790
- 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;
64791
64820
  const end = Date.now();
64792
64821
  return { updated: true, runtime: end - start };
64793
64822
  }
@@ -65635,10 +65664,10 @@ class Oauth2Profile extends _abstract_object_1.AbstractObject {
65635
65664
  return undefined;
65636
65665
  }
65637
65666
  listScopes() {
65638
- var _a, _b, _c;
65667
+ var _a, _b, _c, _d, _e;
65639
65668
  const ret = [];
65640
65669
  const parsed = super.parseRaw2();
65641
- 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)) {
65642
65671
  ret.push(t.SCOPE);
65643
65672
  }
65644
65673
  return ret;
@@ -65923,7 +65952,7 @@ class Program extends _abap_object_1.ABAPObject {
65923
65952
  }
65924
65953
  ////////////////////////////
65925
65954
  parseXML() {
65926
- var _a, _b, _c;
65955
+ var _a, _b, _c, _d;
65927
65956
  if (this.parsedXML !== undefined) {
65928
65957
  return;
65929
65958
  }
@@ -65941,11 +65970,11 @@ class Program extends _abap_object_1.ABAPObject {
65941
65970
  }
65942
65971
  let description = "";
65943
65972
  const selectionTexts = {};
65944
- 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)) {
65945
65974
  if ((t === null || t === void 0 ? void 0 : t.ID) === "R") {
65946
65975
  description = t.ENTRY ? (0, xml_utils_1.unescape)(t.ENTRY) : "";
65947
65976
  }
65948
- 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") {
65949
65978
  selectionTexts[t.KEY.toUpperCase()] = { entry: t.ENTRY ? (0, xml_utils_1.unescape)(t.ENTRY) : "", maxLength: parseInt(t.LENGTH, 10) };
65950
65979
  }
65951
65980
  }
@@ -66012,20 +66041,19 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66012
66041
  return { updated: true, runtime: end - start };
66013
66042
  }
66014
66043
  parseXML() {
66015
- var _a, _b;
66044
+ var _a, _b, _c, _d, _e;
66016
66045
  const result = { proxyData: [] };
66017
66046
  const parsed = super.parseRaw2();
66018
66047
  if (parsed === undefined
66019
66048
  || parsed.abapGit === undefined
66020
- || ((_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) {
66021
66050
  return result;
66022
66051
  }
66023
- const values = parsed.abapGit["asx:abap"]["asx:values"];
66024
- 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);
66025
66054
  return result;
66026
66055
  }
66027
66056
  generateABAPObjects() {
66028
- var _a, _b, _c, _d, _e;
66029
66057
  this.parse();
66030
66058
  const result = [];
66031
66059
  if (!this.parsedXML) {
@@ -66033,7 +66061,7 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66033
66061
  }
66034
66062
  // Find interface definition
66035
66063
  const intfItem = this.parsedXML.proxyData.find(i => i.R3_TYPE === "INTF");
66036
- if (!intfItem || !intfItem.R3_NAME) {
66064
+ if (!intfItem || typeof intfItem.R3_NAME !== "string") {
66037
66065
  return result;
66038
66066
  }
66039
66067
  const intfName = intfItem.R3_NAME.toLowerCase();
@@ -66042,10 +66070,10 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66042
66070
  // Build interface code
66043
66071
  let code = `INTERFACE ${intfName} PUBLIC.\n`;
66044
66072
  for (const method of methods) {
66045
- const methodName = (_a = method.R3_NAME) === null || _a === void 0 ? void 0 : _a.toLowerCase();
66046
- if (!methodName) {
66073
+ if (typeof method.R3_NAME !== "string") {
66047
66074
  continue;
66048
66075
  }
66076
+ const methodName = method.R3_NAME.toLowerCase();
66049
66077
  // Find parameters for this method
66050
66078
  const importingParameters = this.parsedXML.proxyData.filter(i => i.R3_TYPE === "PAIM" && i.OBJ_NAME1 === method.OBJ_NAME1);
66051
66079
  const exportingParameters = this.parsedXML.proxyData.filter(i => i.R3_TYPE === "PAEX" && i.OBJ_NAME1 === method.OBJ_NAME1);
@@ -66054,8 +66082,8 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66054
66082
  code += ` IMPORTING\n`;
66055
66083
  for (let i = 0; i < importingParameters.length; i++) {
66056
66084
  const param = importingParameters[i];
66057
- const paramName = (_b = param.OBJ_NAME2) === null || _b === void 0 ? void 0 : _b.toLowerCase();
66058
- 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;
66059
66087
  const isLast = i === importingParameters.length - 1 && exportingParameters.length === 0;
66060
66088
  code += ` ${paramName} TYPE ${paramType}${isLast ? "." : ""}\n`;
66061
66089
  }
@@ -66064,8 +66092,8 @@ class ProxyObject extends _abstract_object_1.AbstractObject {
66064
66092
  code += ` EXPORTING\n`;
66065
66093
  for (let i = 0; i < exportingParameters.length; i++) {
66066
66094
  const param = exportingParameters[i];
66067
- const paramName = (_d = param.OBJ_NAME2) === null || _d === void 0 ? void 0 : _d.toLowerCase();
66068
- 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;
66069
66097
  const isLast = i === exportingParameters.length - 1;
66070
66098
  code += ` ${paramName} TYPE ${paramType}${isLast ? "." : ""}\n`;
66071
66099
  }
@@ -67896,7 +67924,7 @@ class Table extends _abstract_object_1.AbstractObject {
67896
67924
  return false;
67897
67925
  }
67898
67926
  parseXML() {
67899
- 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;
67900
67928
  const parsed = super.parseRaw2();
67901
67929
  if (parsed === undefined) {
67902
67930
  return;
@@ -67906,19 +67934,22 @@ class Table extends _abstract_object_1.AbstractObject {
67906
67934
  return;
67907
67935
  }
67908
67936
  // enhancement category
67909
- 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) {
67910
67938
  this.parsedData.enhancementCategory = EnhancementCategory.NotClassified;
67911
67939
  }
67912
67940
  else {
67913
- 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;
67914
67942
  }
67915
67943
  // table category
67916
- 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;
67917
- 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;
67918
- 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;
67919
67947
  // fields
67920
- 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;
67921
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
+ }
67922
67953
  this.parsedData.fields.push({
67923
67954
  FIELDNAME: field.FIELDNAME,
67924
67955
  ROLLNAME: field.ROLLNAME,
@@ -67938,13 +67969,13 @@ class Table extends _abstract_object_1.AbstractObject {
67938
67969
  });
67939
67970
  }
67940
67971
  // secondary indexes
67941
- 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;
67942
67973
  ;
67943
67974
  this.parsedData.secondaryIndexes = [];
67944
67975
  for (const index of (0, xml_utils_1.xmlToArray)(indexes === null || indexes === void 0 ? void 0 : indexes.DD12V)) {
67945
67976
  const indexName = index.INDEXNAME;
67946
67977
  const indexFields = [];
67947
- 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;
67948
67979
  for (const indexField of (0, xml_utils_1.xmlToArray)(indexFieldsXml === null || indexFieldsXml === void 0 ? void 0 : indexFieldsXml.DD17V)) {
67949
67980
  if (indexField.INDEXNAME === indexName) {
67950
67981
  // assumption: fields are listed by POSITION in the xml
@@ -68167,7 +68198,7 @@ class TableType extends _abstract_object_1.AbstractObject {
68167
68198
  }
68168
68199
  ////////////////////
68169
68200
  parseXML() {
68170
- var _a, _b;
68201
+ var _a, _b, _c, _d;
68171
68202
  if (this.parsedXML !== undefined) {
68172
68203
  return;
68173
68204
  }
@@ -68179,11 +68210,14 @@ class TableType extends _abstract_object_1.AbstractObject {
68179
68210
  if (parsed === undefined || parsed.abapGit === undefined) {
68180
68211
  return;
68181
68212
  }
68182
- 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"];
68183
68214
  if (values === undefined) {
68184
68215
  return;
68185
68216
  }
68186
68217
  const dd40v = values.DD40V;
68218
+ if (dd40v === undefined) {
68219
+ return;
68220
+ }
68187
68221
  this.parsedXML.rowtype = dd40v.ROWTYPE ? dd40v.ROWTYPE : "";
68188
68222
  this.parsedXML.rowkind = dd40v.ROWKIND ? dd40v.ROWKIND : "";
68189
68223
  this.parsedXML.datatype = dd40v.DATATYPE;
@@ -68193,13 +68227,13 @@ class TableType extends _abstract_object_1.AbstractObject {
68193
68227
  this.parsedXML.keykind = dd40v.KEYKIND;
68194
68228
  this.parsedXML.ddtext = dd40v.DDTEXT;
68195
68229
  this.parsedXML.keydef = dd40v.KEYDEF;
68196
- 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)) {
68197
68231
  this.parsedXML.dd42v.push({
68198
68232
  keyname: x.SECKEYNAME || "",
68199
68233
  keyfield: x.KEYFIELD || "",
68200
68234
  });
68201
68235
  }
68202
- 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)) {
68203
68237
  this.parsedXML.dd43v.push({
68204
68238
  keyname: x.SECKEYNAME || "",
68205
68239
  accessmode: x.ACCESSMODE || "",
@@ -68575,7 +68609,7 @@ class View extends _abstract_object_1.AbstractObject {
68575
68609
  }
68576
68610
  ///////////////
68577
68611
  parseXML() {
68578
- var _a, _b, _c;
68612
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
68579
68613
  this.parsedData = {
68580
68614
  header: {
68581
68615
  VIEWCLASS: "",
@@ -68588,13 +68622,18 @@ class View extends _abstract_object_1.AbstractObject {
68588
68622
  if (parsed === undefined || parsed.abapGit === undefined) {
68589
68623
  return;
68590
68624
  }
68591
- 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;
68592
68626
  this.parsedData.header = {
68593
68627
  VIEWCLASS: (header === null || header === void 0 ? void 0 : header.VIEWCLASS) || "",
68594
68628
  DDTEXT: (header === null || header === void 0 ? void 0 : header.DDTEXT) || "",
68595
68629
  };
68596
- 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;
68597
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
+ }
68598
68637
  this.parsedData.fields.push({
68599
68638
  VIEWFIELD: field.VIEWFIELD,
68600
68639
  TABNAME: field.TABNAME,
@@ -68602,7 +68641,7 @@ class View extends _abstract_object_1.AbstractObject {
68602
68641
  KEYFLAG: field.KEYFLAG,
68603
68642
  });
68604
68643
  }
68605
- 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;
68606
68645
  for (const j of (0, xml_utils_1.xmlToArray)(join === null || join === void 0 ? void 0 : join.DD28J)) {
68607
68646
  this.parsedData.join.push({
68608
68647
  LTAB: j.LTAB,
@@ -68857,7 +68896,7 @@ class WebMIME extends _abstract_object_1.AbstractObject {
68857
68896
  return undefined;
68858
68897
  }
68859
68898
  parse() {
68860
- var _a;
68899
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
68861
68900
  if (this.parsedXML) {
68862
68901
  return { updated: false, runtime: 0 };
68863
68902
  }
@@ -68866,11 +68905,14 @@ class WebMIME extends _abstract_object_1.AbstractObject {
68866
68905
  const parsed = super.parseRaw2();
68867
68906
  if (parsed === undefined
68868
68907
  || parsed.abapGit === undefined
68869
- || 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) {
68870
68909
  return { updated: false, runtime: 0 };
68871
68910
  }
68872
- this.parsedXML.description = parsed.abapGit["asx:abap"]["asx:values"].TEXT;
68873
- 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
+ }
68874
68916
  this.parsedXML.params[param.NAME.toLowerCase()] = param.VALUE;
68875
68917
  }
68876
68918
  const end = Date.now();
@@ -69471,7 +69513,7 @@ class Registry {
69471
69513
  }
69472
69514
  static abaplintVersion() {
69473
69515
  // magic, see build script "version.js"
69474
- return "2.120.18";
69516
+ return "2.120.19";
69475
69517
  }
69476
69518
  getDDICReferences() {
69477
69519
  return this.ddicReferences;
@@ -74195,6 +74237,8 @@ const objects_1 = __webpack_require__(/*! ../objects */ "../core/build/src/objec
74195
74237
  const _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ "../core/build/src/abap/5_syntax/_reference.js");
74196
74238
  const basic_1 = __webpack_require__(/*! ../abap/types/basic */ "../core/build/src/abap/types/basic/index.js");
74197
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");
74198
74242
  class ClearExportingParametersConf extends _basic_rule_config_1.BasicRuleConfig {
74199
74243
  constructor() {
74200
74244
  super(...arguments);
@@ -74226,6 +74270,8 @@ Note: EXPORTING parameters passed by VALUE are always initialized and are theref
74226
74270
  Reading and writing the parameter in the same statement (e.g. "ev_result = ev_result + 1") is reported,
74227
74271
  as the source is evaluated before the parameter is assigned.
74228
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.
74229
74275
 
74230
74276
  Class and interface method implementations and function modules are checked.`,
74231
74277
  tags: [_irule_1.RuleTag.Styleguide],
@@ -74351,6 +74397,16 @@ ENDCLASS.`,
74351
74397
  }
74352
74398
  const pos = reference.position.getStart();
74353
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
+ }
74354
74410
  if (firstRead === undefined || pos.isBefore(firstRead.position.getStart())) {
74355
74411
  firstRead = reference;
74356
74412
  }
@@ -74373,6 +74429,46 @@ ENDCLASS.`,
74373
74429
  const message = `EXPORTING parameter "${parameter.getName().toLowerCase()}" read before it is cleared or assigned`;
74374
74430
  return issue_1.Issue.atIdentifier(firstRead.position, message, this.getMetadata().key, this.conf.severity);
74375
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
+ }
74376
74472
  statementStart(reference, obj) {
74377
74473
  const file = obj.getABAPFileByName(reference.position.getFilename());
74378
74474
  for (const statement of (file === null || file === void 0 ? void 0 : file.getStatements()) || []) {
@@ -92424,11 +92520,18 @@ Consider using ABAP Doc for documentation.`,
92424
92520
  return this.checkXML(xml, file);
92425
92521
  }
92426
92522
  checkXML(xml, file) {
92427
- const parsed = new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(xml);
92428
- 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) {
92429
92529
  return [];
92430
92530
  }
92431
- 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;
92432
92535
  if (desc === undefined) {
92433
92536
  return [];
92434
92537
  }
@@ -98766,6 +98869,40 @@ class XMLConsistency {
98766
98869
  const issues = [];
98767
98870
  const texts = obj.getTexts();
98768
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
+ }
98769
98906
  for (const issue of [
98770
98907
  this.checkTextLength(file, "DDTEXT", obj.getDescription(), 60),
98771
98908
  this.checkTextLength(file, "SCRTEXT_S", texts === null || texts === void 0 ? void 0 : texts.short, maxLengths === null || maxLengths === void 0 ? void 0 : maxLengths.short),
@@ -98793,6 +98930,12 @@ class XMLConsistency {
98793
98930
  }
98794
98931
  return issues;
98795
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
+ }
98796
98939
  runDomain(obj, file) {
98797
98940
  var _a, _b;
98798
98941
  const maxTextLength = 60;
@@ -100202,15 +100345,15 @@ function xmlToArray(data) {
100202
100345
  }
100203
100346
  }
100204
100347
  function unescape(str) {
100205
- if (str === undefined) {
100348
+ if (typeof str !== "string") {
100206
100349
  return "";
100207
100350
  }
100208
- str = str.replace(/&amp;/g, "&");
100209
- str = str.replace(/&gt;/g, ">");
100210
- str = str.replace(/&lt;/g, "<");
100211
- str = str.replace(/&quot;/g, "\"");
100212
- str = str.replace(/&apos;/g, "'");
100213
- 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;
100214
100357
  }
100215
100358
  //# sourceMappingURL=xml_utils.js.map
100216
100359
 
@@ -100229,13 +100372,19 @@ exports.ApackDependencyProvider = void 0;
100229
100372
  const xml_js_1 = __webpack_require__(/*! xml-js */ "./node_modules/xml-js/lib/index.js");
100230
100373
  class ApackDependencyProvider {
100231
100374
  static fromManifest(manifestContents) {
100232
- var _a, _b;
100375
+ var _a, _b, _c, _d, _e;
100233
100376
  if (!manifestContents || !manifestContents.length) {
100234
100377
  return [];
100235
100378
  }
100236
100379
  const result = [];
100237
- const manifest = (0, xml_js_1.xml2js)(manifestContents, { compact: true });
100238
- 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;
100239
100388
  if (!apackDependencies) {
100240
100389
  return [];
100241
100390
  }
@@ -100243,9 +100392,13 @@ class ApackDependencyProvider {
100243
100392
  apackDependencies = [apackDependencies];
100244
100393
  }
100245
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
+ }
100246
100399
  result.push({
100247
100400
  files: "/src/**/*.*",
100248
- url: dependency["GIT_URL"]["_text"],
100401
+ url,
100249
100402
  });
100250
100403
  }
100251
100404
  return result;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.120.18",
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.18",
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",