@abaplint/cli 2.108.9 → 2.108.11

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 +47 -9
  2. package/package.json +3 -3
package/build/cli.js CHANGED
@@ -17959,7 +17959,7 @@ class Sequence {
17959
17959
  }
17960
17960
  run(statements, parent) {
17961
17961
  let inn = statements;
17962
- const out = [];
17962
+ let out = [];
17963
17963
  for (const i of this.list) {
17964
17964
  const match = i.run(inn, parent);
17965
17965
  if (match.error) {
@@ -17971,7 +17971,14 @@ class Sequence {
17971
17971
  errorMatched: out.length,
17972
17972
  };
17973
17973
  }
17974
- out.push(...match.matched);
17974
+ if (match.matched.length < 100) {
17975
+ out.push(...match.matched);
17976
+ }
17977
+ else {
17978
+ // avoid using the spread operator, it might trigger "Maximum call stack size exceeded"
17979
+ // when the number of matched elements is very large
17980
+ out = out.concat(match.matched);
17981
+ }
17975
17982
  inn = match.unmatched;
17976
17983
  }
17977
17984
  return {
@@ -18103,7 +18110,7 @@ class Star {
18103
18110
  }
18104
18111
  run(statements, parent) {
18105
18112
  let inn = statements;
18106
- const out = [];
18113
+ let out = [];
18107
18114
  while (true) {
18108
18115
  if (inn.length === 0) {
18109
18116
  return {
@@ -18135,7 +18142,14 @@ class Star {
18135
18142
  };
18136
18143
  }
18137
18144
  }
18138
- out.push(...match.matched);
18145
+ if (match.matched.length < 100) {
18146
+ out.push(...match.matched);
18147
+ }
18148
+ else {
18149
+ // avoid using the spread operator, it might trigger "Maximum call stack size exceeded"
18150
+ // when the number of matched elements is very large
18151
+ out = out.concat(match.matched);
18152
+ }
18139
18153
  inn = match.unmatched;
18140
18154
  }
18141
18155
  }
@@ -50766,6 +50780,10 @@ const Types = __webpack_require__(/*! ../abap/types/basic */ "./node_modules/@ab
50766
50780
  const _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ "./node_modules/@abaplint/core/build/src/objects/_abstract_object.js");
50767
50781
  const xml_utils_1 = __webpack_require__(/*! ../xml_utils */ "./node_modules/@abaplint/core/build/src/xml_utils.js");
50768
50782
  const ddic_1 = __webpack_require__(/*! ../ddic */ "./node_modules/@abaplint/core/build/src/ddic.js");
50783
+ var ViewClass;
50784
+ (function (ViewClass) {
50785
+ ViewClass["ExternalView"] = "X";
50786
+ })(ViewClass || (ViewClass = {}));
50769
50787
  class View extends _abstract_object_1.AbstractObject {
50770
50788
  getType() {
50771
50789
  return "VIEW";
@@ -50809,6 +50827,16 @@ class View extends _abstract_object_1.AbstractObject {
50809
50827
  // ignore, this is a special case of old style .INCLUDE
50810
50828
  continue;
50811
50829
  }
50830
+ else if (this.parsedData.header.VIEWCLASS === ViewClass.ExternalView) {
50831
+ components.push({
50832
+ name: field.VIEWFIELD,
50833
+ type: new Types.VoidType("ExternalView")
50834
+ });
50835
+ continue;
50836
+ }
50837
+ else if (field.TABNAME === this.getName()) {
50838
+ throw new Error("Unexpected self reference in view " + this.getName() + ", " + field.FIELDNAME + " " + field.FIELDNAME);
50839
+ }
50812
50840
  const lookup = ddic.lookupTableOrView(field.TABNAME);
50813
50841
  let found = lookup.type;
50814
50842
  if (lookup.object) {
@@ -50844,13 +50872,23 @@ class View extends _abstract_object_1.AbstractObject {
50844
50872
  }
50845
50873
  ///////////////
50846
50874
  parseXML() {
50847
- var _a, _b;
50848
- this.parsedData = { fields: [], join: [] };
50875
+ var _a, _b, _c;
50876
+ this.parsedData = {
50877
+ header: {
50878
+ VIEWCLASS: "",
50879
+ },
50880
+ fields: [],
50881
+ join: [],
50882
+ };
50849
50883
  const parsed = super.parseRaw2();
50850
50884
  if (parsed === undefined || parsed.abapGit === undefined) {
50851
50885
  return;
50852
50886
  }
50853
- const fields = (_a = parsed.abapGit["asx:abap"]["asx:values"]) === null || _a === void 0 ? void 0 : _a.DD27P_TABLE;
50887
+ const header = (_a = parsed.abapGit["asx:abap"]["asx:values"]) === null || _a === void 0 ? void 0 : _a.DD25V;
50888
+ this.parsedData.header = {
50889
+ VIEWCLASS: (header === null || header === void 0 ? void 0 : header.VIEWCLASS) || "",
50890
+ };
50891
+ const fields = (_b = parsed.abapGit["asx:abap"]["asx:values"]) === null || _b === void 0 ? void 0 : _b.DD27P_TABLE;
50854
50892
  for (const field of (0, xml_utils_1.xmlToArray)(fields === null || fields === void 0 ? void 0 : fields.DD27P)) {
50855
50893
  this.parsedData.fields.push({
50856
50894
  VIEWFIELD: field.VIEWFIELD,
@@ -50858,7 +50896,7 @@ class View extends _abstract_object_1.AbstractObject {
50858
50896
  FIELDNAME: field.FIELDNAME,
50859
50897
  });
50860
50898
  }
50861
- const join = (_b = parsed.abapGit["asx:abap"]["asx:values"]) === null || _b === void 0 ? void 0 : _b.DD28J_TABLE;
50899
+ const join = (_c = parsed.abapGit["asx:abap"]["asx:values"]) === null || _c === void 0 ? void 0 : _c.DD28J_TABLE;
50862
50900
  for (const j of (0, xml_utils_1.xmlToArray)(join === null || join === void 0 ? void 0 : join.DD28J)) {
50863
50901
  this.parsedData.join.push({
50864
50902
  LTAB: j.LTAB,
@@ -51592,7 +51630,7 @@ class Registry {
51592
51630
  }
51593
51631
  static abaplintVersion() {
51594
51632
  // magic, see build script "version.sh"
51595
- return "2.108.9";
51633
+ return "2.108.11";
51596
51634
  }
51597
51635
  getDDICReferences() {
51598
51636
  return this.ddicReferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.108.9",
3
+ "version": "2.108.11",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -38,12 +38,12 @@
38
38
  },
39
39
  "homepage": "https://abaplint.org",
40
40
  "devDependencies": {
41
- "@abaplint/core": "^2.108.9",
41
+ "@abaplint/core": "^2.108.11",
42
42
  "@types/chai": "^4.3.16",
43
43
  "@types/glob": "^8.1.0",
44
44
  "@types/minimist": "^1.2.5",
45
45
  "@types/mocha": "^10.0.6",
46
- "@types/node": "^20.12.12",
46
+ "@types/node": "^20.12.13",
47
47
  "@types/progress": "^2.0.7",
48
48
  "chai": "^4.4.1",
49
49
  "chalk": "^5.3.0",