@abaplint/transpiler-cli 2.11.75 → 2.11.76

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 +109 -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;
@@ -80642,6 +80642,87 @@ exports.ReceiveParametersTranspiler = ReceiveParametersTranspiler;
80642
80642
 
80643
80643
  /***/ }),
80644
80644
 
80645
+ /***/ "./node_modules/@abaplint/transpiler/build/src/expressions/reduce_body.js":
80646
+ /*!********************************************************************************!*\
80647
+ !*** ./node_modules/@abaplint/transpiler/build/src/expressions/reduce_body.js ***!
80648
+ \********************************************************************************/
80649
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
80650
+
80651
+ "use strict";
80652
+
80653
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
80654
+ exports.ReduceBodyTranspiler = void 0;
80655
+ const core_1 = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
80656
+ const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
80657
+ const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
80658
+ const target_1 = __webpack_require__(/*! ./target */ "./node_modules/@abaplint/transpiler/build/src/expressions/target.js");
80659
+ class ReduceBodyTranspiler {
80660
+ transpile(typ, body, traversal) {
80661
+ if (!(typ.get() instanceof core_1.Expressions.TypeNameOrInfer)) {
80662
+ throw new Error("ReduceBodyTranspiler, Expected TypeNameOrInfer");
80663
+ }
80664
+ else if (body.findDirectExpression(core_1.Expressions.Let) !== undefined) {
80665
+ return new chunk_1.Chunk(`(() => { throw new Error("ReduceBodyTranspiler LET, not supported, transpiler"); })()`);
80666
+ }
80667
+ const forExpressions = body.findDirectExpressions(core_1.Expressions.For);
80668
+ const forExpression = forExpressions[0];
80669
+ if (forExpressions.length === 0) {
80670
+ throw new Error("ReduceBodyTranspiler, expected FOR");
80671
+ }
80672
+ else if (forExpressions.length > 1) {
80673
+ throw new Error("ReduceBodyTranspiler, multiple FOR not supported, " + body.concatTokens());
80674
+ }
80675
+ else if (["THEN", "UNTIL", "WHILE", "FROM", "TO", "GROUPS"].some(token => forExpressions[0].findDirectTokenByText(token))) {
80676
+ throw new Error("ValueBody FOR todo, " + body.concatTokens());
80677
+ }
80678
+ const loopExpression = forExpression.findDirectExpression(core_1.Expressions.InlineLoopDefinition);
80679
+ const loopSource = traversal.traverse(loopExpression?.findDirectExpression(core_1.Expressions.Source)).getCode();
80680
+ const loopVariable = traversal.traverse(loopExpression?.findDirectExpression(core_1.Expressions.TargetField)).getCode();
80681
+ // const type = new TypeNameOrInfer().findType(typ, traversal);
80682
+ // const target = TranspileTypes.toType(type);
80683
+ const ret = new chunk_1.Chunk();
80684
+ ret.appendString("(await (async () => {\n");
80685
+ let loopWhere = "";
80686
+ const whereNode = forExpression?.findDirectExpression(core_1.Expressions.ComponentCond);
80687
+ if (whereNode) {
80688
+ const where = traversal.traverse(whereNode).getCode();
80689
+ loopWhere = `, {"where": async ` + where + `}`;
80690
+ }
80691
+ /*
80692
+ const returnId = UniqueIdentifier.get();
80693
+ ret.appendString(`const ${returnId} = ${target};\n`);
80694
+ */
80695
+ let returnField = "";
80696
+ for (const init of body.findDirectExpressions(core_1.Expressions.InlineFieldDefinition)) {
80697
+ const fieldName = init.findDirectExpression(core_1.Expressions.Field).concatTokens().toLowerCase();
80698
+ returnField = fieldName;
80699
+ const scope = traversal.findCurrentScopeByToken(init.getFirstToken());
80700
+ const variable = scope?.findVariable(fieldName);
80701
+ if (variable === undefined) {
80702
+ throw new Error(`ReduceBodyTranspiler: variable ${fieldName} not found`);
80703
+ }
80704
+ ret.appendString(transpile_types_1.TranspileTypes.declare(variable) + `\n`);
80705
+ }
80706
+ ret.appendString(`for await (const ${loopVariable} of abap.statements.loop(${loopSource}${loopWhere})) {\n`);
80707
+ for (const nextChild of body.findDirectExpression(core_1.Expressions.ReduceNext)?.getChildren() || []) {
80708
+ if (nextChild.get() instanceof core_1.Expressions.SimpleTarget && nextChild instanceof core_1.Nodes.ExpressionNode) {
80709
+ ret.appendString(new target_1.TargetTranspiler().transpile(nextChild, traversal).getCode() + ".set(");
80710
+ }
80711
+ else if (nextChild.get() instanceof core_1.Expressions.Source && nextChild instanceof core_1.Nodes.ExpressionNode) {
80712
+ ret.appendString(traversal.traverse(nextChild).getCode() + ");\n");
80713
+ }
80714
+ }
80715
+ ret.appendString(`}\n`);
80716
+ ret.appendString(`return ${returnField};\n`);
80717
+ ret.appendString("})())");
80718
+ return ret;
80719
+ }
80720
+ }
80721
+ exports.ReduceBodyTranspiler = ReduceBodyTranspiler;
80722
+ //# sourceMappingURL=reduce_body.js.map
80723
+
80724
+ /***/ }),
80725
+
80645
80726
  /***/ "./node_modules/@abaplint/transpiler/build/src/expressions/simple_source1.js":
80646
80727
  /*!***********************************************************************************!*\
80647
80728
  !*** ./node_modules/@abaplint/transpiler/build/src/expressions/simple_source1.js ***!
@@ -80742,12 +80823,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
80742
80823
  exports.SourceTranspiler = void 0;
80743
80824
  const core_1 = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
80744
80825
  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
80826
  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");
80827
+ const constant_1 = __webpack_require__(/*! ./constant */ "./node_modules/@abaplint/transpiler/build/src/expressions/constant.js");
80749
80828
  const corresponding_body_1 = __webpack_require__(/*! ./corresponding_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/corresponding_body.js");
80750
80829
  const filter_body_1 = __webpack_require__(/*! ./filter_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/filter_body.js");
80830
+ const reduce_body_1 = __webpack_require__(/*! ./reduce_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/reduce_body.js");
80831
+ const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
80832
+ const value_body_1 = __webpack_require__(/*! ./value_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/value_body.js");
80751
80833
  class SourceTranspiler {
80752
80834
  addGet;
80753
80835
  constructor(addGet = false) {
@@ -80836,6 +80918,9 @@ class SourceTranspiler {
80836
80918
  else if (c.get() instanceof core_1.Expressions.CondBody) {
80837
80919
  continue;
80838
80920
  }
80921
+ else if (c.get() instanceof core_1.Expressions.ReduceBody) {
80922
+ continue;
80923
+ }
80839
80924
  else if (c.get() instanceof core_1.Expressions.SwitchBody) {
80840
80925
  continue;
80841
80926
  }
@@ -80919,6 +81004,17 @@ class SourceTranspiler {
80919
81004
  }
80920
81005
  ret.appendChunk(new filter_body_1.FilterBodyTranspiler().transpile(typ, filterBody, traversal));
80921
81006
  }
81007
+ else if (c instanceof core_1.Nodes.TokenNode && c.getFirstToken().getStr().toUpperCase() === "REDUCE") {
81008
+ const typ = node.findDirectExpression(core_1.Expressions.TypeNameOrInfer);
81009
+ if (typ === undefined) {
81010
+ throw new Error("TypeNameOrInfer not found in ReduceBody");
81011
+ }
81012
+ const reduceBody = node.findDirectExpression(core_1.Expressions.ReduceBody);
81013
+ if (reduceBody === undefined) {
81014
+ throw new Error("ReduceBody not found");
81015
+ }
81016
+ ret.appendChunk(new reduce_body_1.ReduceBodyTranspiler().transpile(typ, reduceBody, traversal));
81017
+ }
80922
81018
  else if (c instanceof core_1.Nodes.TokenNode && c.getFirstToken().getStr().toUpperCase() === "REF") {
80923
81019
  const infer = node.findDirectExpression(core_1.Expressions.TypeNameOrInfer);
80924
81020
  if (infer?.concatTokens() !== "#") {
@@ -82237,13 +82333,19 @@ class ValueBodyTranspiler {
82237
82333
  ret.appendString(".set(" + source.getCode() + ".clone())");
82238
82334
  }
82239
82335
  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))) {
82336
+ if (["THEN", "UNTIL", "WHILE", "FROM", "TO", "GROUPS"].some(token => child.findDirectTokenByText(token))) {
82241
82337
  throw new Error("ValueBody FOR todo, " + body.concatTokens());
82242
82338
  }
82243
82339
  const loop = child.findDirectExpression(core_1.Expressions.InlineLoopDefinition);
82244
82340
  if (loop === undefined) {
82245
82341
  throw new Error("ValueBody FOR todo, " + body.concatTokens());
82246
82342
  }
82343
+ let loopWhere = "";
82344
+ const whereNode = child?.findDirectExpression(core_1.Expressions.ComponentCond);
82345
+ if (whereNode) {
82346
+ const where = traversal.traverse(whereNode).getCode();
82347
+ loopWhere = `, {"where": async ` + where + `}`;
82348
+ }
82247
82349
  const base = loop.findDirectExpression(core_1.Expressions.ValueBase);
82248
82350
  if (base) {
82249
82351
  throw new Error("ValueBody FOR todo, base, " + body.concatTokens());
@@ -82272,7 +82374,7 @@ class ValueBodyTranspiler {
82272
82374
  ret = new chunk_1.Chunk().appendString(`await (async () => {
82273
82375
  ${targetDeclare}
82274
82376
  const VAL = ${val};
82275
- for await (const unique1 of abap.statements.loop(${source})) {
82377
+ for await (const unique1 of abap.statements.loop(${source}${loopWhere})) {
82276
82378
  ${targetAction}
82277
82379
  VAL`);
82278
82380
  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.76",
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.76",
32
32
  "@types/glob": "^8.1.0",
33
33
  "@types/node": "^24.3.1",
34
34
  "@types/progress": "^2.0.7",