@abaplint/transpiler-cli 2.11.75 → 2.11.77

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/bundle.js +132 -7
  2. package/package.json +3 -3
package/build/bundle.js CHANGED
@@ -6846,7 +6846,7 @@ class Source extends combi_1.Expression {
6846
6846
  const reff = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("REF", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, (0, combi_1.optPrio)("OPTIONAL"), rparen), version_1.Version.OpenABAP);
6847
6847
  const exact = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("EXACT", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, rparen, (0, combi_1.optPrio)(after)));
6848
6848
  const filter = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)("FILTER", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.FilterBody, rparen), version_1.Version.OpenABAP);
6849
- const reduce = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)("REDUCE", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ReduceBody, rparen, (0, combi_1.optPrio)(after)));
6849
+ const reduce = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)("REDUCE", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ReduceBody, rparen, (0, combi_1.optPrio)(after)), version_1.Version.OpenABAP);
6850
6850
  const prefix1 = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WDashW), (0, combi_1.tok)(tokens_1.WPlusW));
6851
6851
  const ret = (0, combi_1.seq)((0, combi_1.starPrio)(prefix1), (0, combi_1.altPrio)(filter, reff, corr, conv, value, cond, exact, swit, reduce, old));
6852
6852
  return ret;
@@ -53886,7 +53886,7 @@ class Registry {
53886
53886
  }
53887
53887
  static abaplintVersion() {
53888
53888
  // magic, see build script "version.sh"
53889
- return "2.113.197";
53889
+ return "2.113.198";
53890
53890
  }
53891
53891
  getDDICReferences() {
53892
53892
  return this.ddicReferences;
@@ -79908,6 +79908,7 @@ __exportStar(__webpack_require__(/*! ./string_template_source */ "./node_modules
79908
79908
  __exportStar(__webpack_require__(/*! ./string_template */ "./node_modules/@abaplint/transpiler/build/src/expressions/string_template.js"), exports);
79909
79909
  __exportStar(__webpack_require__(/*! ./switch_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/switch_body.js"), exports);
79910
79910
  __exportStar(__webpack_require__(/*! ./table_expression */ "./node_modules/@abaplint/transpiler/build/src/expressions/table_expression.js"), exports);
79911
+ __exportStar(__webpack_require__(/*! ./target_field_symbol */ "./node_modules/@abaplint/transpiler/build/src/expressions/target_field_symbol.js"), exports);
79911
79912
  __exportStar(__webpack_require__(/*! ./target_field */ "./node_modules/@abaplint/transpiler/build/src/expressions/target_field.js"), exports);
79912
79913
  __exportStar(__webpack_require__(/*! ./target */ "./node_modules/@abaplint/transpiler/build/src/expressions/target.js"), exports);
79913
79914
  __exportStar(__webpack_require__(/*! ./type_name_or_infer */ "./node_modules/@abaplint/transpiler/build/src/expressions/type_name_or_infer.js"), exports);
@@ -80642,6 +80643,88 @@ exports.ReceiveParametersTranspiler = ReceiveParametersTranspiler;
80642
80643
 
80643
80644
  /***/ }),
80644
80645
 
80646
+ /***/ "./node_modules/@abaplint/transpiler/build/src/expressions/reduce_body.js":
80647
+ /*!********************************************************************************!*\
80648
+ !*** ./node_modules/@abaplint/transpiler/build/src/expressions/reduce_body.js ***!
80649
+ \********************************************************************************/
80650
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
80651
+
80652
+ "use strict";
80653
+
80654
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
80655
+ exports.ReduceBodyTranspiler = void 0;
80656
+ const core_1 = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
80657
+ const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
80658
+ const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
80659
+ const target_1 = __webpack_require__(/*! ./target */ "./node_modules/@abaplint/transpiler/build/src/expressions/target.js");
80660
+ class ReduceBodyTranspiler {
80661
+ transpile(typ, body, traversal) {
80662
+ if (!(typ.get() instanceof core_1.Expressions.TypeNameOrInfer)) {
80663
+ throw new Error("ReduceBodyTranspiler, Expected TypeNameOrInfer");
80664
+ }
80665
+ else if (body.findDirectExpression(core_1.Expressions.Let) !== undefined) {
80666
+ return new chunk_1.Chunk(`(() => { throw new Error("ReduceBodyTranspiler LET, not supported, transpiler"); })()`);
80667
+ }
80668
+ const forExpressions = body.findDirectExpressions(core_1.Expressions.For);
80669
+ const forExpression = forExpressions[0];
80670
+ if (forExpressions.length === 0) {
80671
+ throw new Error("ReduceBodyTranspiler, expected FOR");
80672
+ }
80673
+ else if (forExpressions.length > 1) {
80674
+ throw new Error("ReduceBodyTranspiler, multiple FOR not supported, " + body.concatTokens());
80675
+ }
80676
+ else if (["THEN", "UNTIL", "WHILE", "FROM", "TO", "GROUPS"].some(token => forExpressions[0].findDirectTokenByText(token))) {
80677
+ throw new Error("ValueBody FOR todo, " + body.concatTokens());
80678
+ }
80679
+ const loopExpression = forExpression.findDirectExpression(core_1.Expressions.InlineLoopDefinition);
80680
+ const loopSource = traversal.traverse(loopExpression?.findDirectExpression(core_1.Expressions.Source)).getCode();
80681
+ const loopVariable = traversal.traverse(loopExpression?.findDirectExpression(core_1.Expressions.TargetField)
80682
+ || loopExpression?.findDirectExpression(core_1.Expressions.TargetFieldSymbol)).getCode();
80683
+ // const type = new TypeNameOrInfer().findType(typ, traversal);
80684
+ // const target = TranspileTypes.toType(type);
80685
+ const ret = new chunk_1.Chunk();
80686
+ ret.appendString("(await (async () => {\n");
80687
+ let loopWhere = "";
80688
+ const whereNode = forExpression?.findDirectExpression(core_1.Expressions.ComponentCond);
80689
+ if (whereNode) {
80690
+ const where = traversal.traverse(whereNode).getCode();
80691
+ loopWhere = `, {"where": async ` + where + `}`;
80692
+ }
80693
+ /*
80694
+ const returnId = UniqueIdentifier.get();
80695
+ ret.appendString(`const ${returnId} = ${target};\n`);
80696
+ */
80697
+ let returnField = "";
80698
+ for (const init of body.findDirectExpressions(core_1.Expressions.InlineFieldDefinition)) {
80699
+ const fieldName = init.findDirectExpression(core_1.Expressions.Field).concatTokens().toLowerCase();
80700
+ returnField = fieldName;
80701
+ const scope = traversal.findCurrentScopeByToken(init.getFirstToken());
80702
+ const variable = scope?.findVariable(fieldName);
80703
+ if (variable === undefined) {
80704
+ throw new Error(`ReduceBodyTranspiler: variable ${fieldName} not found`);
80705
+ }
80706
+ ret.appendString(transpile_types_1.TranspileTypes.declare(variable) + `\n`);
80707
+ }
80708
+ ret.appendString(`for await (const ${loopVariable} of abap.statements.loop(${loopSource}${loopWhere})) {\n`);
80709
+ for (const nextChild of body.findDirectExpression(core_1.Expressions.ReduceNext)?.getChildren() || []) {
80710
+ if (nextChild.get() instanceof core_1.Expressions.SimpleTarget && nextChild instanceof core_1.Nodes.ExpressionNode) {
80711
+ ret.appendString(new target_1.TargetTranspiler().transpile(nextChild, traversal).getCode() + ".set(");
80712
+ }
80713
+ else if (nextChild.get() instanceof core_1.Expressions.Source && nextChild instanceof core_1.Nodes.ExpressionNode) {
80714
+ ret.appendString(traversal.traverse(nextChild).getCode() + ");\n");
80715
+ }
80716
+ }
80717
+ ret.appendString(`}\n`);
80718
+ ret.appendString(`return ${returnField};\n`);
80719
+ ret.appendString("})())");
80720
+ return ret;
80721
+ }
80722
+ }
80723
+ exports.ReduceBodyTranspiler = ReduceBodyTranspiler;
80724
+ //# sourceMappingURL=reduce_body.js.map
80725
+
80726
+ /***/ }),
80727
+
80645
80728
  /***/ "./node_modules/@abaplint/transpiler/build/src/expressions/simple_source1.js":
80646
80729
  /*!***********************************************************************************!*\
80647
80730
  !*** ./node_modules/@abaplint/transpiler/build/src/expressions/simple_source1.js ***!
@@ -80742,12 +80825,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
80742
80825
  exports.SourceTranspiler = void 0;
80743
80826
  const core_1 = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
80744
80827
  const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/transpiler/build/src/expressions/index.js");
80745
- const constant_1 = __webpack_require__(/*! ./constant */ "./node_modules/@abaplint/transpiler/build/src/expressions/constant.js");
80746
80828
  const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
80747
- const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
80748
- const value_body_1 = __webpack_require__(/*! ./value_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/value_body.js");
80829
+ const constant_1 = __webpack_require__(/*! ./constant */ "./node_modules/@abaplint/transpiler/build/src/expressions/constant.js");
80749
80830
  const corresponding_body_1 = __webpack_require__(/*! ./corresponding_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/corresponding_body.js");
80750
80831
  const filter_body_1 = __webpack_require__(/*! ./filter_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/filter_body.js");
80832
+ const reduce_body_1 = __webpack_require__(/*! ./reduce_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/reduce_body.js");
80833
+ const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
80834
+ const value_body_1 = __webpack_require__(/*! ./value_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/value_body.js");
80751
80835
  class SourceTranspiler {
80752
80836
  addGet;
80753
80837
  constructor(addGet = false) {
@@ -80836,6 +80920,9 @@ class SourceTranspiler {
80836
80920
  else if (c.get() instanceof core_1.Expressions.CondBody) {
80837
80921
  continue;
80838
80922
  }
80923
+ else if (c.get() instanceof core_1.Expressions.ReduceBody) {
80924
+ continue;
80925
+ }
80839
80926
  else if (c.get() instanceof core_1.Expressions.SwitchBody) {
80840
80927
  continue;
80841
80928
  }
@@ -80919,6 +81006,17 @@ class SourceTranspiler {
80919
81006
  }
80920
81007
  ret.appendChunk(new filter_body_1.FilterBodyTranspiler().transpile(typ, filterBody, traversal));
80921
81008
  }
81009
+ else if (c instanceof core_1.Nodes.TokenNode && c.getFirstToken().getStr().toUpperCase() === "REDUCE") {
81010
+ const typ = node.findDirectExpression(core_1.Expressions.TypeNameOrInfer);
81011
+ if (typ === undefined) {
81012
+ throw new Error("TypeNameOrInfer not found in ReduceBody");
81013
+ }
81014
+ const reduceBody = node.findDirectExpression(core_1.Expressions.ReduceBody);
81015
+ if (reduceBody === undefined) {
81016
+ throw new Error("ReduceBody not found");
81017
+ }
81018
+ ret.appendChunk(new reduce_body_1.ReduceBodyTranspiler().transpile(typ, reduceBody, traversal));
81019
+ }
80922
81020
  else if (c instanceof core_1.Nodes.TokenNode && c.getFirstToken().getStr().toUpperCase() === "REF") {
80923
81021
  const infer = node.findDirectExpression(core_1.Expressions.TypeNameOrInfer);
80924
81022
  if (infer?.concatTokens() !== "#") {
@@ -82145,6 +82243,27 @@ exports.TargetFieldTranspiler = TargetFieldTranspiler;
82145
82243
 
82146
82244
  /***/ }),
82147
82245
 
82246
+ /***/ "./node_modules/@abaplint/transpiler/build/src/expressions/target_field_symbol.js":
82247
+ /*!****************************************************************************************!*\
82248
+ !*** ./node_modules/@abaplint/transpiler/build/src/expressions/target_field_symbol.js ***!
82249
+ \****************************************************************************************/
82250
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
82251
+
82252
+ "use strict";
82253
+
82254
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
82255
+ exports.TargetFieldSymbolTranspiler = void 0;
82256
+ const field_symbol_1 = __webpack_require__(/*! ./field_symbol */ "./node_modules/@abaplint/transpiler/build/src/expressions/field_symbol.js");
82257
+ class TargetFieldSymbolTranspiler {
82258
+ transpile(node, traversal) {
82259
+ return new field_symbol_1.FieldSymbolTranspiler().transpile(node, traversal);
82260
+ }
82261
+ }
82262
+ exports.TargetFieldSymbolTranspiler = TargetFieldSymbolTranspiler;
82263
+ //# sourceMappingURL=target_field_symbol.js.map
82264
+
82265
+ /***/ }),
82266
+
82148
82267
  /***/ "./node_modules/@abaplint/transpiler/build/src/expressions/type_name_or_infer.js":
82149
82268
  /*!***************************************************************************************!*\
82150
82269
  !*** ./node_modules/@abaplint/transpiler/build/src/expressions/type_name_or_infer.js ***!
@@ -82237,13 +82356,19 @@ class ValueBodyTranspiler {
82237
82356
  ret.appendString(".set(" + source.getCode() + ".clone())");
82238
82357
  }
82239
82358
  else if (child.get() instanceof core_1.Expressions.For && child instanceof core_1.Nodes.ExpressionNode) {
82240
- if (["THEN", "UNTIL", "WHILE", "FROM", "TO", "WHERE", "GROUPS"].some(token => child.findDirectTokenByText(token))) {
82359
+ if (["THEN", "UNTIL", "WHILE", "FROM", "TO", "GROUPS"].some(token => child.findDirectTokenByText(token))) {
82241
82360
  throw new Error("ValueBody FOR todo, " + body.concatTokens());
82242
82361
  }
82243
82362
  const loop = child.findDirectExpression(core_1.Expressions.InlineLoopDefinition);
82244
82363
  if (loop === undefined) {
82245
82364
  throw new Error("ValueBody FOR todo, " + body.concatTokens());
82246
82365
  }
82366
+ let loopWhere = "";
82367
+ const whereNode = child?.findDirectExpression(core_1.Expressions.ComponentCond);
82368
+ if (whereNode) {
82369
+ const where = traversal.traverse(whereNode).getCode();
82370
+ loopWhere = `, {"where": async ` + where + `}`;
82371
+ }
82247
82372
  const base = loop.findDirectExpression(core_1.Expressions.ValueBase);
82248
82373
  if (base) {
82249
82374
  throw new Error("ValueBody FOR todo, base, " + body.concatTokens());
@@ -82272,7 +82397,7 @@ class ValueBodyTranspiler {
82272
82397
  ret = new chunk_1.Chunk().appendString(`await (async () => {
82273
82398
  ${targetDeclare}
82274
82399
  const VAL = ${val};
82275
- for await (const unique1 of abap.statements.loop(${source})) {
82400
+ for await (const unique1 of abap.statements.loop(${source}${loopWhere})) {
82276
82401
  ${targetAction}
82277
82402
  VAL`);
82278
82403
  post = ";\n}\nreturn VAL;\n})()";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler-cli",
3
- "version": "2.11.75",
3
+ "version": "2.11.77",
4
4
  "description": "Transpiler - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -27,8 +27,8 @@
27
27
  "author": "abaplint",
28
28
  "license": "MIT",
29
29
  "devDependencies": {
30
- "@abaplint/core": "^2.113.197",
31
- "@abaplint/transpiler": "^2.11.75",
30
+ "@abaplint/core": "^2.113.198",
31
+ "@abaplint/transpiler": "^2.11.77",
32
32
  "@types/glob": "^8.1.0",
33
33
  "@types/node": "^24.3.1",
34
34
  "@types/progress": "^2.0.7",