@abaplint/cli 2.113.127 → 2.113.128

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 +327 -328
  2. package/package.json +5 -5
package/build/cli.js CHANGED
@@ -19366,7 +19366,7 @@ const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/c
19366
19366
  const chain_1 = __webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js");
19367
19367
  class DynproLoop {
19368
19368
  getMatcher() {
19369
- return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.DynproLoop), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.sub)(chain_1.Chain))), (0, _combi_1.sta)(Statements.EndLoop));
19369
+ return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.DynproLoop), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.sta)(Statements.Field), (0, _combi_1.sub)(chain_1.Chain))), (0, _combi_1.sta)(Statements.EndLoop));
19370
19370
  }
19371
19371
  }
19372
19372
  exports.DynproLoop = DynproLoop;
@@ -23722,6 +23722,9 @@ class TypeUtils {
23722
23722
  else if ((target instanceof basic_1.StringType || target instanceof basic_1.CharacterType)
23723
23723
  && source instanceof basic_1.StructureType
23724
23724
  && this.isCharLike(source)) {
23725
+ if (this.structureContainsString(source) === true) {
23726
+ return false;
23727
+ }
23725
23728
  return true;
23726
23729
  }
23727
23730
  else if (source instanceof basic_1.StructureType) {
@@ -24740,8 +24743,7 @@ class AttributeChain {
24740
24743
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), "Not an object reference(AttributeChain)"));
24741
24744
  return void_type_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
24742
24745
  }
24743
- const children = node.getChildren().slice();
24744
- const first = children[0];
24746
+ const first = node.getChildren()[0];
24745
24747
  if (!(first.get() instanceof expressions_1.AttributeName)) {
24746
24748
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), "AttributeChain, unexpected first child"));
24747
24749
  return void_type_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
@@ -26528,23 +26530,25 @@ class MethodCallChain {
26528
26530
  static runSyntax(node, input, targetType) {
26529
26531
  var _a, _b;
26530
26532
  const helper = new _object_oriented_1.ObjectOriented(input.scope);
26531
- const children = node.getChildren().slice();
26532
- const first = children.shift();
26533
+ const children = node.getChildren();
26534
+ const first = children[0];
26533
26535
  if (first === undefined) {
26534
26536
  const message = "MethodCallChain, first child expected";
26535
26537
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
26536
26538
  return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
26537
26539
  }
26540
+ let currentIndex = 1;
26538
26541
  let context = this.findTop(first, input, targetType);
26539
26542
  if (first.get() instanceof Expressions.MethodCall) {
26540
- children.unshift(first);
26543
+ currentIndex--;
26541
26544
  }
26542
26545
  let previous = undefined;
26543
- while (children.length > 0) {
26544
- const current = children.shift();
26546
+ while (currentIndex <= children.length) {
26547
+ const current = children[currentIndex];
26545
26548
  if (current === undefined) {
26546
26549
  break;
26547
26550
  }
26551
+ currentIndex++;
26548
26552
  if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.MethodCall) {
26549
26553
  // for built-in methods set className to undefined
26550
26554
  const className = context instanceof basic_1.ObjectReferenceType ? context.getIdentifierName() : undefined;
@@ -28095,46 +28099,49 @@ class Source {
28095
28099
  let hexExpected = false;
28096
28100
  let hexNext = false;
28097
28101
  while (children.length >= 0) {
28098
- if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.MethodCallChain) {
28099
- context = method_call_chain_1.MethodCallChain.runSyntax(first, input, targetType);
28100
- if (context === undefined) {
28101
- const message = "Method has no RETURNING value";
28102
- input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
28103
- return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
28102
+ if (first instanceof nodes_1.ExpressionNode) {
28103
+ const get = first.get();
28104
+ if (get instanceof Expressions.MethodCallChain) {
28105
+ context = method_call_chain_1.MethodCallChain.runSyntax(first, input, targetType);
28106
+ if (context === undefined) {
28107
+ const message = "Method has no RETURNING value";
28108
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
28109
+ return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
28110
+ }
28104
28111
  }
28105
- }
28106
- else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.FieldChain) {
28107
- context = field_chain_1.FieldChain.runSyntax(first, input, type);
28108
- }
28109
- else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.StringTemplate) {
28110
- context = string_template_1.StringTemplate.runSyntax(first, input);
28111
- }
28112
- else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Source) {
28113
- const found = Source.runSyntax(first, input);
28114
- context = this.infer(context, found);
28115
- }
28116
- else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Constant) {
28117
- const found = constant_1.Constant.runSyntax(first);
28118
- context = this.infer(context, found);
28119
- }
28120
- else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Dereference) {
28121
- context = dereference_1.Dereference.runSyntax(first, context, input);
28122
- }
28123
- else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.ComponentChain) {
28124
- context = component_chain_1.ComponentChain.runSyntax(context, first, input);
28125
- }
28126
- else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.ArithOperator) {
28127
- if (first.concatTokens() === "**") {
28128
- context = new basic_1.FloatType();
28112
+ else if (get instanceof Expressions.FieldChain) {
28113
+ context = field_chain_1.FieldChain.runSyntax(first, input, type);
28129
28114
  }
28130
- const operator = first.concatTokens().toUpperCase();
28131
- if (operator === "BIT-OR" || operator === "BIT-AND" || operator === "BIT-XOR") {
28132
- hexExpected = true;
28133
- hexNext = true;
28115
+ else if (get instanceof Expressions.StringTemplate) {
28116
+ context = string_template_1.StringTemplate.runSyntax(first, input);
28117
+ }
28118
+ else if (get instanceof Expressions.Source) {
28119
+ const found = Source.runSyntax(first, input);
28120
+ context = this.infer(context, found);
28121
+ }
28122
+ else if (get instanceof Expressions.Constant) {
28123
+ const found = constant_1.Constant.runSyntax(first);
28124
+ context = this.infer(context, found);
28125
+ }
28126
+ else if (get instanceof Expressions.Dereference) {
28127
+ context = dereference_1.Dereference.runSyntax(first, context, input);
28128
+ }
28129
+ else if (get instanceof Expressions.ComponentChain) {
28130
+ context = component_chain_1.ComponentChain.runSyntax(context, first, input);
28131
+ }
28132
+ else if (get instanceof Expressions.ArithOperator) {
28133
+ if (first.concatTokens() === "**") {
28134
+ context = new basic_1.FloatType();
28135
+ }
28136
+ const operator = first.concatTokens().toUpperCase();
28137
+ if (operator === "BIT-OR" || operator === "BIT-AND" || operator === "BIT-XOR") {
28138
+ hexExpected = true;
28139
+ hexNext = true;
28140
+ }
28141
+ }
28142
+ else if (get instanceof Expressions.AttributeChain) {
28143
+ context = attribute_chain_1.AttributeChain.runSyntax(context, first, input, type);
28134
28144
  }
28135
- }
28136
- else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.AttributeChain) {
28137
- context = attribute_chain_1.AttributeChain.runSyntax(context, first, input, type);
28138
28145
  }
28139
28146
  if (hexExpected === true) {
28140
28147
  if (!(context instanceof basic_1.VoidType)
@@ -28179,7 +28186,7 @@ class Source {
28179
28186
  }
28180
28187
  static addIfInferred(node, input, inferredType) {
28181
28188
  const basic = new basic_types_1.BasicTypes(input);
28182
- const typeExpression = node.findFirstExpression(Expressions.TypeNameOrInfer);
28189
+ const typeExpression = node.findDirectExpression(Expressions.TypeNameOrInfer);
28183
28190
  const typeToken = typeExpression === null || typeExpression === void 0 ? void 0 : typeExpression.getFirstToken();
28184
28191
  const typeName = typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStr();
28185
28192
  if (typeName === "#" && inferredType && typeToken) {
@@ -28203,7 +28210,7 @@ class Source {
28203
28210
  }
28204
28211
  static determineType(node, input, targetType) {
28205
28212
  const basic = new basic_types_1.BasicTypes(input);
28206
- const typeExpression = node.findFirstExpression(Expressions.TypeNameOrInfer);
28213
+ const typeExpression = node.findDirectExpression(Expressions.TypeNameOrInfer);
28207
28214
  const typeToken = typeExpression === null || typeExpression === void 0 ? void 0 : typeExpression.getFirstToken();
28208
28215
  const typeName = typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStr();
28209
28216
  if (typeExpression === undefined) {
@@ -28740,8 +28747,8 @@ class Target {
28740
28747
  return found.getType();
28741
28748
  }
28742
28749
  }
28743
- const children = node.getChildren().slice();
28744
- const first = children.shift();
28750
+ const children = node.getChildren();
28751
+ const first = children[0];
28745
28752
  if (first === undefined || !(first instanceof nodes_1.ExpressionNode)) {
28746
28753
  return undefined;
28747
28754
  }
@@ -28751,11 +28758,13 @@ class Target {
28751
28758
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
28752
28759
  return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
28753
28760
  }
28754
- while (children.length > 0) {
28755
- const current = children.shift();
28761
+ let currentIndex = 1;
28762
+ while (currentIndex <= children.length) {
28763
+ const current = children[currentIndex];
28756
28764
  if (current === undefined) {
28757
28765
  break;
28758
28766
  }
28767
+ currentIndex++;
28759
28768
  if (current.get() instanceof tokens_1.Dash) {
28760
28769
  if (context instanceof unknown_type_1.UnknownType) {
28761
28770
  const message = "Not a structure, type unknown, target";
@@ -54308,7 +54317,7 @@ class Registry {
54308
54317
  }
54309
54318
  static abaplintVersion() {
54310
54319
  // magic, see build script "version.sh"
54311
- return "2.113.127";
54320
+ return "2.113.128";
54312
54321
  }
54313
54322
  getDDICReferences() {
54314
54323
  return this.ddicReferences;
@@ -60635,7 +60644,8 @@ ${indentation}${uniqueName1}-attr3 = 'IF_T100_DYN_MSG~MSGV3'.
60635
60644
  ${indentation}${uniqueName1}-attr4 = 'IF_T100_DYN_MSG~MSGV4'.\n`;
60636
60645
  }
60637
60646
  abap += `${indentation}DATA ${uniqueName2} TYPE REF TO ${className}.
60638
- ${indentation}CREATE OBJECT ${uniqueName2} EXPORTING textid = ${uniqueName1}.\n`;
60647
+ ${indentation}CREATE OBJECT ${uniqueName2}.
60648
+ ${indentation}${uniqueName2}->if_t100_message~t100key = ${uniqueName1}.\n`;
60639
60649
  if (withs.length > 0) {
60640
60650
  abap += `${indentation}${uniqueName2}->if_t100_dyn_msg~msgty = 'E'.\n`;
60641
60651
  }
@@ -77950,73 +77960,278 @@ function unescape(str) {
77950
77960
 
77951
77961
  /***/ }),
77952
77962
 
77953
- /***/ "./node_modules/balanced-match/index.js":
77954
- /*!**********************************************!*\
77955
- !*** ./node_modules/balanced-match/index.js ***!
77956
- \**********************************************/
77957
- /***/ ((module) => {
77963
+ /***/ "./node_modules/@isaacs/balanced-match/dist/commonjs/index.js":
77964
+ /*!********************************************************************!*\
77965
+ !*** ./node_modules/@isaacs/balanced-match/dist/commonjs/index.js ***!
77966
+ \********************************************************************/
77967
+ /***/ ((__unused_webpack_module, exports) => {
77958
77968
 
77959
77969
  "use strict";
77960
77970
 
77961
- module.exports = balanced;
77962
- function balanced(a, b, str) {
77963
- if (a instanceof RegExp) a = maybeMatch(a, str);
77964
- if (b instanceof RegExp) b = maybeMatch(b, str);
77965
-
77966
- var r = range(a, b, str);
77967
-
77968
- return r && {
77969
- start: r[0],
77970
- end: r[1],
77971
- pre: str.slice(0, r[0]),
77972
- body: str.slice(r[0] + a.length, r[1]),
77973
- post: str.slice(r[1] + b.length)
77974
- };
77975
- }
77971
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
77972
+ exports.range = exports.balanced = void 0;
77973
+ const balanced = (a, b, str) => {
77974
+ const ma = a instanceof RegExp ? maybeMatch(a, str) : a;
77975
+ const mb = b instanceof RegExp ? maybeMatch(b, str) : b;
77976
+ const r = ma !== null && mb != null && (0, exports.range)(ma, mb, str);
77977
+ return (r && {
77978
+ start: r[0],
77979
+ end: r[1],
77980
+ pre: str.slice(0, r[0]),
77981
+ body: str.slice(r[0] + ma.length, r[1]),
77982
+ post: str.slice(r[1] + mb.length),
77983
+ });
77984
+ };
77985
+ exports.balanced = balanced;
77986
+ const maybeMatch = (reg, str) => {
77987
+ const m = str.match(reg);
77988
+ return m ? m[0] : null;
77989
+ };
77990
+ const range = (a, b, str) => {
77991
+ let begs, beg, left, right = undefined, result;
77992
+ let ai = str.indexOf(a);
77993
+ let bi = str.indexOf(b, ai + 1);
77994
+ let i = ai;
77995
+ if (ai >= 0 && bi > 0) {
77996
+ if (a === b) {
77997
+ return [ai, bi];
77998
+ }
77999
+ begs = [];
78000
+ left = str.length;
78001
+ while (i >= 0 && !result) {
78002
+ if (i === ai) {
78003
+ begs.push(i);
78004
+ ai = str.indexOf(a, i + 1);
78005
+ }
78006
+ else if (begs.length === 1) {
78007
+ const r = begs.pop();
78008
+ if (r !== undefined)
78009
+ result = [r, bi];
78010
+ }
78011
+ else {
78012
+ beg = begs.pop();
78013
+ if (beg !== undefined && beg < left) {
78014
+ left = beg;
78015
+ right = bi;
78016
+ }
78017
+ bi = str.indexOf(b, i + 1);
78018
+ }
78019
+ i = ai < bi && ai >= 0 ? ai : bi;
78020
+ }
78021
+ if (begs.length && right !== undefined) {
78022
+ result = [left, right];
78023
+ }
78024
+ }
78025
+ return result;
78026
+ };
78027
+ exports.range = range;
78028
+ //# sourceMappingURL=index.js.map
77976
78029
 
77977
- function maybeMatch(reg, str) {
77978
- var m = str.match(reg);
77979
- return m ? m[0] : null;
77980
- }
78030
+ /***/ }),
77981
78031
 
77982
- balanced.range = range;
77983
- function range(a, b, str) {
77984
- var begs, beg, left, right, result;
77985
- var ai = str.indexOf(a);
77986
- var bi = str.indexOf(b, ai + 1);
77987
- var i = ai;
78032
+ /***/ "./node_modules/@isaacs/brace-expansion/dist/commonjs/index.js":
78033
+ /*!*********************************************************************!*\
78034
+ !*** ./node_modules/@isaacs/brace-expansion/dist/commonjs/index.js ***!
78035
+ \*********************************************************************/
78036
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
77988
78037
 
77989
- if (ai >= 0 && bi > 0) {
77990
- begs = [];
77991
- left = str.length;
78038
+ "use strict";
77992
78039
 
77993
- while (i >= 0 && !result) {
77994
- if (i == ai) {
77995
- begs.push(i);
77996
- ai = str.indexOf(a, i + 1);
77997
- } else if (begs.length == 1) {
77998
- result = [ begs.pop(), bi ];
77999
- } else {
78000
- beg = begs.pop();
78001
- if (beg < left) {
78002
- left = beg;
78003
- right = bi;
78040
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
78041
+ exports.expand = expand;
78042
+ const balanced_match_1 = __webpack_require__(/*! @isaacs/balanced-match */ "./node_modules/@isaacs/balanced-match/dist/commonjs/index.js");
78043
+ const escSlash = '\0SLASH' + Math.random() + '\0';
78044
+ const escOpen = '\0OPEN' + Math.random() + '\0';
78045
+ const escClose = '\0CLOSE' + Math.random() + '\0';
78046
+ const escComma = '\0COMMA' + Math.random() + '\0';
78047
+ const escPeriod = '\0PERIOD' + Math.random() + '\0';
78048
+ const escSlashPattern = new RegExp(escSlash, 'g');
78049
+ const escOpenPattern = new RegExp(escOpen, 'g');
78050
+ const escClosePattern = new RegExp(escClose, 'g');
78051
+ const escCommaPattern = new RegExp(escComma, 'g');
78052
+ const escPeriodPattern = new RegExp(escPeriod, 'g');
78053
+ const slashPattern = /\\\\/g;
78054
+ const openPattern = /\\{/g;
78055
+ const closePattern = /\\}/g;
78056
+ const commaPattern = /\\,/g;
78057
+ const periodPattern = /\\./g;
78058
+ function numeric(str) {
78059
+ return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
78060
+ }
78061
+ function escapeBraces(str) {
78062
+ return str
78063
+ .replace(slashPattern, escSlash)
78064
+ .replace(openPattern, escOpen)
78065
+ .replace(closePattern, escClose)
78066
+ .replace(commaPattern, escComma)
78067
+ .replace(periodPattern, escPeriod);
78068
+ }
78069
+ function unescapeBraces(str) {
78070
+ return str
78071
+ .replace(escSlashPattern, '\\')
78072
+ .replace(escOpenPattern, '{')
78073
+ .replace(escClosePattern, '}')
78074
+ .replace(escCommaPattern, ',')
78075
+ .replace(escPeriodPattern, '.');
78076
+ }
78077
+ /**
78078
+ * Basically just str.split(","), but handling cases
78079
+ * where we have nested braced sections, which should be
78080
+ * treated as individual members, like {a,{b,c},d}
78081
+ */
78082
+ function parseCommaParts(str) {
78083
+ if (!str) {
78084
+ return [''];
78085
+ }
78086
+ const parts = [];
78087
+ const m = (0, balanced_match_1.balanced)('{', '}', str);
78088
+ if (!m) {
78089
+ return str.split(',');
78090
+ }
78091
+ const { pre, body, post } = m;
78092
+ const p = pre.split(',');
78093
+ p[p.length - 1] += '{' + body + '}';
78094
+ const postParts = parseCommaParts(post);
78095
+ if (post.length) {
78096
+ ;
78097
+ p[p.length - 1] += postParts.shift();
78098
+ p.push.apply(p, postParts);
78099
+ }
78100
+ parts.push.apply(parts, p);
78101
+ return parts;
78102
+ }
78103
+ function expand(str) {
78104
+ if (!str) {
78105
+ return [];
78106
+ }
78107
+ // I don't know why Bash 4.3 does this, but it does.
78108
+ // Anything starting with {} will have the first two bytes preserved
78109
+ // but *only* at the top level, so {},a}b will not expand to anything,
78110
+ // but a{},b}c will be expanded to [a}c,abc].
78111
+ // One could argue that this is a bug in Bash, but since the goal of
78112
+ // this module is to match Bash's rules, we escape a leading {}
78113
+ if (str.slice(0, 2) === '{}') {
78114
+ str = '\\{\\}' + str.slice(2);
78115
+ }
78116
+ return expand_(escapeBraces(str), true).map(unescapeBraces);
78117
+ }
78118
+ function embrace(str) {
78119
+ return '{' + str + '}';
78120
+ }
78121
+ function isPadded(el) {
78122
+ return /^-?0\d/.test(el);
78123
+ }
78124
+ function lte(i, y) {
78125
+ return i <= y;
78126
+ }
78127
+ function gte(i, y) {
78128
+ return i >= y;
78129
+ }
78130
+ function expand_(str, isTop) {
78131
+ /** @type {string[]} */
78132
+ const expansions = [];
78133
+ const m = (0, balanced_match_1.balanced)('{', '}', str);
78134
+ if (!m)
78135
+ return [str];
78136
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
78137
+ const pre = m.pre;
78138
+ const post = m.post.length ? expand_(m.post, false) : [''];
78139
+ if (/\$$/.test(m.pre)) {
78140
+ for (let k = 0; k < post.length; k++) {
78141
+ const expansion = pre + '{' + m.body + '}' + post[k];
78142
+ expansions.push(expansion);
78004
78143
  }
78005
-
78006
- bi = str.indexOf(b, i + 1);
78007
- }
78008
-
78009
- i = ai < bi && ai >= 0 ? ai : bi;
78010
78144
  }
78011
-
78012
- if (begs.length) {
78013
- result = [ left, right ];
78145
+ else {
78146
+ const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
78147
+ const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
78148
+ const isSequence = isNumericSequence || isAlphaSequence;
78149
+ const isOptions = m.body.indexOf(',') >= 0;
78150
+ if (!isSequence && !isOptions) {
78151
+ // {a},b}
78152
+ if (m.post.match(/,(?!,).*\}/)) {
78153
+ str = m.pre + '{' + m.body + escClose + m.post;
78154
+ return expand_(str);
78155
+ }
78156
+ return [str];
78157
+ }
78158
+ let n;
78159
+ if (isSequence) {
78160
+ n = m.body.split(/\.\./);
78161
+ }
78162
+ else {
78163
+ n = parseCommaParts(m.body);
78164
+ if (n.length === 1 && n[0] !== undefined) {
78165
+ // x{{a,b}}y ==> x{a}y x{b}y
78166
+ n = expand_(n[0], false).map(embrace);
78167
+ //XXX is this necessary? Can't seem to hit it in tests.
78168
+ /* c8 ignore start */
78169
+ if (n.length === 1) {
78170
+ return post.map(p => m.pre + n[0] + p);
78171
+ }
78172
+ /* c8 ignore stop */
78173
+ }
78174
+ }
78175
+ // at this point, n is the parts, and we know it's not a comma set
78176
+ // with a single entry.
78177
+ let N;
78178
+ if (isSequence && n[0] !== undefined && n[1] !== undefined) {
78179
+ const x = numeric(n[0]);
78180
+ const y = numeric(n[1]);
78181
+ const width = Math.max(n[0].length, n[1].length);
78182
+ let incr = n.length === 3 && n[2] !== undefined ? Math.abs(numeric(n[2])) : 1;
78183
+ let test = lte;
78184
+ const reverse = y < x;
78185
+ if (reverse) {
78186
+ incr *= -1;
78187
+ test = gte;
78188
+ }
78189
+ const pad = n.some(isPadded);
78190
+ N = [];
78191
+ for (let i = x; test(i, y); i += incr) {
78192
+ let c;
78193
+ if (isAlphaSequence) {
78194
+ c = String.fromCharCode(i);
78195
+ if (c === '\\') {
78196
+ c = '';
78197
+ }
78198
+ }
78199
+ else {
78200
+ c = String(i);
78201
+ if (pad) {
78202
+ const need = width - c.length;
78203
+ if (need > 0) {
78204
+ const z = new Array(need + 1).join('0');
78205
+ if (i < 0) {
78206
+ c = '-' + z + c.slice(1);
78207
+ }
78208
+ else {
78209
+ c = z + c;
78210
+ }
78211
+ }
78212
+ }
78213
+ }
78214
+ N.push(c);
78215
+ }
78216
+ }
78217
+ else {
78218
+ N = [];
78219
+ for (let j = 0; j < n.length; j++) {
78220
+ N.push.apply(N, expand_(n[j], false));
78221
+ }
78222
+ }
78223
+ for (let j = 0; j < N.length; j++) {
78224
+ for (let k = 0; k < post.length; k++) {
78225
+ const expansion = pre + N[j] + post[k];
78226
+ if (!isTop || isSequence || expansion) {
78227
+ expansions.push(expansion);
78228
+ }
78229
+ }
78230
+ }
78014
78231
  }
78015
- }
78016
-
78017
- return result;
78232
+ return expansions;
78018
78233
  }
78019
-
78234
+ //# sourceMappingURL=index.js.map
78020
78235
 
78021
78236
  /***/ }),
78022
78237
 
@@ -80197,219 +80412,6 @@ class GlobStream extends GlobUtil {
80197
80412
  exports.GlobStream = GlobStream;
80198
80413
  //# sourceMappingURL=walker.js.map
80199
80414
 
80200
- /***/ }),
80201
-
80202
- /***/ "./node_modules/glob/node_modules/brace-expansion/index.js":
80203
- /*!*****************************************************************!*\
80204
- !*** ./node_modules/glob/node_modules/brace-expansion/index.js ***!
80205
- \*****************************************************************/
80206
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
80207
-
80208
- var balanced = __webpack_require__(/*! balanced-match */ "./node_modules/balanced-match/index.js");
80209
-
80210
- module.exports = expandTop;
80211
-
80212
- var escSlash = '\0SLASH'+Math.random()+'\0';
80213
- var escOpen = '\0OPEN'+Math.random()+'\0';
80214
- var escClose = '\0CLOSE'+Math.random()+'\0';
80215
- var escComma = '\0COMMA'+Math.random()+'\0';
80216
- var escPeriod = '\0PERIOD'+Math.random()+'\0';
80217
-
80218
- function numeric(str) {
80219
- return parseInt(str, 10) == str
80220
- ? parseInt(str, 10)
80221
- : str.charCodeAt(0);
80222
- }
80223
-
80224
- function escapeBraces(str) {
80225
- return str.split('\\\\').join(escSlash)
80226
- .split('\\{').join(escOpen)
80227
- .split('\\}').join(escClose)
80228
- .split('\\,').join(escComma)
80229
- .split('\\.').join(escPeriod);
80230
- }
80231
-
80232
- function unescapeBraces(str) {
80233
- return str.split(escSlash).join('\\')
80234
- .split(escOpen).join('{')
80235
- .split(escClose).join('}')
80236
- .split(escComma).join(',')
80237
- .split(escPeriod).join('.');
80238
- }
80239
-
80240
-
80241
- // Basically just str.split(","), but handling cases
80242
- // where we have nested braced sections, which should be
80243
- // treated as individual members, like {a,{b,c},d}
80244
- function parseCommaParts(str) {
80245
- if (!str)
80246
- return [''];
80247
-
80248
- var parts = [];
80249
- var m = balanced('{', '}', str);
80250
-
80251
- if (!m)
80252
- return str.split(',');
80253
-
80254
- var pre = m.pre;
80255
- var body = m.body;
80256
- var post = m.post;
80257
- var p = pre.split(',');
80258
-
80259
- p[p.length-1] += '{' + body + '}';
80260
- var postParts = parseCommaParts(post);
80261
- if (post.length) {
80262
- p[p.length-1] += postParts.shift();
80263
- p.push.apply(p, postParts);
80264
- }
80265
-
80266
- parts.push.apply(parts, p);
80267
-
80268
- return parts;
80269
- }
80270
-
80271
- function expandTop(str) {
80272
- if (!str)
80273
- return [];
80274
-
80275
- // I don't know why Bash 4.3 does this, but it does.
80276
- // Anything starting with {} will have the first two bytes preserved
80277
- // but *only* at the top level, so {},a}b will not expand to anything,
80278
- // but a{},b}c will be expanded to [a}c,abc].
80279
- // One could argue that this is a bug in Bash, but since the goal of
80280
- // this module is to match Bash's rules, we escape a leading {}
80281
- if (str.substr(0, 2) === '{}') {
80282
- str = '\\{\\}' + str.substr(2);
80283
- }
80284
-
80285
- return expand(escapeBraces(str), true).map(unescapeBraces);
80286
- }
80287
-
80288
- function embrace(str) {
80289
- return '{' + str + '}';
80290
- }
80291
- function isPadded(el) {
80292
- return /^-?0\d/.test(el);
80293
- }
80294
-
80295
- function lte(i, y) {
80296
- return i <= y;
80297
- }
80298
- function gte(i, y) {
80299
- return i >= y;
80300
- }
80301
-
80302
- function expand(str, isTop) {
80303
- var expansions = [];
80304
-
80305
- var m = balanced('{', '}', str);
80306
- if (!m) return [str];
80307
-
80308
- // no need to expand pre, since it is guaranteed to be free of brace-sets
80309
- var pre = m.pre;
80310
- var post = m.post.length
80311
- ? expand(m.post, false)
80312
- : [''];
80313
-
80314
- if (/\$$/.test(m.pre)) {
80315
- for (var k = 0; k < post.length; k++) {
80316
- var expansion = pre+ '{' + m.body + '}' + post[k];
80317
- expansions.push(expansion);
80318
- }
80319
- } else {
80320
- var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
80321
- var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
80322
- var isSequence = isNumericSequence || isAlphaSequence;
80323
- var isOptions = m.body.indexOf(',') >= 0;
80324
- if (!isSequence && !isOptions) {
80325
- // {a},b}
80326
- if (m.post.match(/,.*\}/)) {
80327
- str = m.pre + '{' + m.body + escClose + m.post;
80328
- return expand(str);
80329
- }
80330
- return [str];
80331
- }
80332
-
80333
- var n;
80334
- if (isSequence) {
80335
- n = m.body.split(/\.\./);
80336
- } else {
80337
- n = parseCommaParts(m.body);
80338
- if (n.length === 1) {
80339
- // x{{a,b}}y ==> x{a}y x{b}y
80340
- n = expand(n[0], false).map(embrace);
80341
- if (n.length === 1) {
80342
- return post.map(function(p) {
80343
- return m.pre + n[0] + p;
80344
- });
80345
- }
80346
- }
80347
- }
80348
-
80349
- // at this point, n is the parts, and we know it's not a comma set
80350
- // with a single entry.
80351
- var N;
80352
-
80353
- if (isSequence) {
80354
- var x = numeric(n[0]);
80355
- var y = numeric(n[1]);
80356
- var width = Math.max(n[0].length, n[1].length)
80357
- var incr = n.length == 3
80358
- ? Math.abs(numeric(n[2]))
80359
- : 1;
80360
- var test = lte;
80361
- var reverse = y < x;
80362
- if (reverse) {
80363
- incr *= -1;
80364
- test = gte;
80365
- }
80366
- var pad = n.some(isPadded);
80367
-
80368
- N = [];
80369
-
80370
- for (var i = x; test(i, y); i += incr) {
80371
- var c;
80372
- if (isAlphaSequence) {
80373
- c = String.fromCharCode(i);
80374
- if (c === '\\')
80375
- c = '';
80376
- } else {
80377
- c = String(i);
80378
- if (pad) {
80379
- var need = width - c.length;
80380
- if (need > 0) {
80381
- var z = new Array(need + 1).join('0');
80382
- if (i < 0)
80383
- c = '-' + z + c.slice(1);
80384
- else
80385
- c = z + c;
80386
- }
80387
- }
80388
- }
80389
- N.push(c);
80390
- }
80391
- } else {
80392
- N = [];
80393
-
80394
- for (var j = 0; j < n.length; j++) {
80395
- N.push.apply(N, expand(n[j], false));
80396
- }
80397
- }
80398
-
80399
- for (var j = 0; j < N.length; j++) {
80400
- for (var k = 0; k < post.length; k++) {
80401
- var expansion = pre + N[j] + post[k];
80402
- if (!isTop || isSequence || expansion)
80403
- expansions.push(expansion);
80404
- }
80405
- }
80406
- }
80407
-
80408
- return expansions;
80409
- }
80410
-
80411
-
80412
-
80413
80415
  /***/ }),
80414
80416
 
80415
80417
  /***/ "./node_modules/glob/node_modules/lru-cache/dist/commonjs/index.js":
@@ -82810,16 +82812,13 @@ exports.escape = escape;
82810
82812
  /*!*************************************************************************!*\
82811
82813
  !*** ./node_modules/glob/node_modules/minimatch/dist/commonjs/index.js ***!
82812
82814
  \*************************************************************************/
82813
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
82815
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
82814
82816
 
82815
82817
  "use strict";
82816
82818
 
82817
- var __importDefault = (this && this.__importDefault) || function (mod) {
82818
- return (mod && mod.__esModule) ? mod : { "default": mod };
82819
- };
82820
82819
  Object.defineProperty(exports, "__esModule", ({ value: true }));
82821
82820
  exports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;
82822
- const brace_expansion_1 = __importDefault(__webpack_require__(/*! brace-expansion */ "./node_modules/glob/node_modules/brace-expansion/index.js"));
82821
+ const brace_expansion_1 = __webpack_require__(/*! @isaacs/brace-expansion */ "./node_modules/@isaacs/brace-expansion/dist/commonjs/index.js");
82823
82822
  const assert_valid_pattern_js_1 = __webpack_require__(/*! ./assert-valid-pattern.js */ "./node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js");
82824
82823
  const ast_js_1 = __webpack_require__(/*! ./ast.js */ "./node_modules/glob/node_modules/minimatch/dist/commonjs/ast.js");
82825
82824
  const escape_js_1 = __webpack_require__(/*! ./escape.js */ "./node_modules/glob/node_modules/minimatch/dist/commonjs/escape.js");
@@ -82972,7 +82971,7 @@ const braceExpand = (pattern, options = {}) => {
82972
82971
  // shortcut. no need to expand.
82973
82972
  return [pattern];
82974
82973
  }
82975
- return (0, brace_expansion_1.default)(pattern);
82974
+ return (0, brace_expansion_1.expand)(pattern);
82976
82975
  };
82977
82976
  exports.braceExpand = braceExpand;
82978
82977
  exports.minimatch.braceExpand = exports.braceExpand;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.113.127",
3
+ "version": "2.113.128",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -38,17 +38,17 @@
38
38
  },
39
39
  "homepage": "https://abaplint.org",
40
40
  "devDependencies": {
41
- "@abaplint/core": "^2.113.127",
41
+ "@abaplint/core": "^2.113.128",
42
42
  "@types/chai": "^4.3.20",
43
43
  "@types/minimist": "^1.2.5",
44
44
  "@types/mocha": "^10.0.10",
45
- "@types/node": "^24.0.0",
45
+ "@types/node": "^24.0.1",
46
46
  "@types/progress": "^2.0.7",
47
47
  "chai": "^4.5.0",
48
48
  "p-limit": "^3.1.0",
49
49
  "chalk": "^5.4.1",
50
- "eslint": "^9.28.0",
51
- "glob": "^11.0.2",
50
+ "eslint": "^9.29.0",
51
+ "glob": "^11.0.3",
52
52
  "json5": "^2.2.3",
53
53
  "memfs": "^4.17.2",
54
54
  "minimist": "^1.2.8",