@abaplint/transpiler-cli 2.11.74 → 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 +126 -11
  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;
@@ -7235,7 +7235,7 @@ const sql_function_1 = __webpack_require__(/*! ./sql_function */ "./node_modules
7235
7235
  const sql_path_1 = __webpack_require__(/*! ./sql_path */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_path.js");
7236
7236
  class SQLField extends combi_1.Expression {
7237
7237
  getRunnable() {
7238
- const abap = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.SimpleFieldChain2));
7238
+ const abap = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.SimpleFieldChain2), version_1.Version.OpenABAP);
7239
7239
  const as = (0, combi_1.seq)("AS", _1.SQLAsName);
7240
7240
  const field = (0, combi_1.altPrio)(_1.SQLAggregation, _1.SQLCase, sql_function_1.SQLFunction, sql_path_1.SQLPath, _1.SQLFieldName, abap, _1.Constant);
7241
7241
  const sub = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenLeftW)), field, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
@@ -7651,9 +7651,10 @@ class SQLIn extends combi_1.Expression {
7651
7651
  getRunnable() {
7652
7652
  const val = new _1.SQLSource();
7653
7653
  const short = new _1.SQLSourceNoSpace();
7654
- const listOld = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeft), (0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v740sp05, short), val), (0, combi_1.starPrio)((0, combi_1.seq)(",", val)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRight), (0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.WParenRightW)));
7654
+ const listOld = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeft), (0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v740sp05, short, version_1.Version.OpenABAP), val), (0, combi_1.starPrio)((0, combi_1.seq)(",", val)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRight), (0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.WParenRightW)));
7655
7655
  const listNew = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), val, (0, combi_1.starPrio)((0, combi_1.seq)(",", (0, combi_1.altPrio)(short, val))), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRight), (0, combi_1.tok)(tokens_1.WParenRightW)));
7656
- const list = (0, combi_1.alt)(listOld, (0, combi_1.ver)(version_1.Version.v740sp02, listNew)); // version is a guess, https://github.com/abaplint/abaplint/issues/2530
7656
+ // version is a guess, https://github.com/abaplint/abaplint/issues/2530
7657
+ const list = (0, combi_1.alt)(listOld, (0, combi_1.ver)(version_1.Version.v740sp02, listNew, version_1.Version.OpenABAP));
7657
7658
  const subSelect = (0, combi_1.seq)("(", _1.Select, ")");
7658
7659
  const inn = (0, combi_1.seq)("IN", (0, combi_1.altPrio)(_1.SQLSource, list, subSelect));
7659
7660
  return inn;
@@ -53885,7 +53886,7 @@ class Registry {
53885
53886
  }
53886
53887
  static abaplintVersion() {
53887
53888
  // magic, see build script "version.sh"
53888
- return "2.113.196";
53889
+ return "2.113.198";
53889
53890
  }
53890
53891
  getDDICReferences() {
53891
53892
  return this.ddicReferences;
@@ -80641,6 +80642,87 @@ exports.ReceiveParametersTranspiler = ReceiveParametersTranspiler;
80641
80642
 
80642
80643
  /***/ }),
80643
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
+
80644
80726
  /***/ "./node_modules/@abaplint/transpiler/build/src/expressions/simple_source1.js":
80645
80727
  /*!***********************************************************************************!*\
80646
80728
  !*** ./node_modules/@abaplint/transpiler/build/src/expressions/simple_source1.js ***!
@@ -80741,12 +80823,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
80741
80823
  exports.SourceTranspiler = void 0;
80742
80824
  const core_1 = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
80743
80825
  const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/transpiler/build/src/expressions/index.js");
80744
- const constant_1 = __webpack_require__(/*! ./constant */ "./node_modules/@abaplint/transpiler/build/src/expressions/constant.js");
80745
80826
  const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
80746
- const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
80747
- 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");
80748
80828
  const corresponding_body_1 = __webpack_require__(/*! ./corresponding_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/corresponding_body.js");
80749
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");
80750
80833
  class SourceTranspiler {
80751
80834
  addGet;
80752
80835
  constructor(addGet = false) {
@@ -80835,6 +80918,9 @@ class SourceTranspiler {
80835
80918
  else if (c.get() instanceof core_1.Expressions.CondBody) {
80836
80919
  continue;
80837
80920
  }
80921
+ else if (c.get() instanceof core_1.Expressions.ReduceBody) {
80922
+ continue;
80923
+ }
80838
80924
  else if (c.get() instanceof core_1.Expressions.SwitchBody) {
80839
80925
  continue;
80840
80926
  }
@@ -80918,6 +81004,17 @@ class SourceTranspiler {
80918
81004
  }
80919
81005
  ret.appendChunk(new filter_body_1.FilterBodyTranspiler().transpile(typ, filterBody, traversal));
80920
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
+ }
80921
81018
  else if (c instanceof core_1.Nodes.TokenNode && c.getFirstToken().getStr().toUpperCase() === "REF") {
80922
81019
  const infer = node.findDirectExpression(core_1.Expressions.TypeNameOrInfer);
80923
81020
  if (infer?.concatTokens() !== "#") {
@@ -81119,7 +81216,7 @@ class SQLCondTranspiler {
81119
81216
  }
81120
81217
  else {
81121
81218
  const cond = [];
81122
- for (const s of sqlin.findDirectExpressions(abaplint.Expressions.SQLSource)) {
81219
+ for (const s of sqlin.findDirectExpressions(abaplint.Expressions.SQLSource).concat(sqlin.findDirectExpressions(abaplint.Expressions.SQLSourceNoSpace))) {
81123
81220
  const field = new sql_field_name_1.SQLFieldNameTranspiler().transpile(fieldName, traversal).getCode();
81124
81221
  const sourc = this.sqlSource(s, traversal, filename, table);
81125
81222
  cond.push(field + " = " + sourc);
@@ -81242,17 +81339,25 @@ exports.SQLFieldTranspiler = void 0;
81242
81339
  const abaplint = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
81243
81340
  const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
81244
81341
  const sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ "./node_modules/@abaplint/transpiler/build/src/expressions/sql_field_name.js");
81342
+ const field_chain_1 = __webpack_require__(/*! ./field_chain */ "./node_modules/@abaplint/transpiler/build/src/expressions/field_chain.js");
81245
81343
  class SQLFieldTranspiler {
81246
81344
  transpile(node, traversal) {
81247
81345
  const chunk = new chunk_1.Chunk();
81248
81346
  for (const c of node.getChildren()) {
81249
81347
  if (c instanceof abaplint.Nodes.TokenNode) {
81348
+ const concat = c.concatTokens();
81349
+ if (concat === "@") {
81350
+ continue;
81351
+ }
81250
81352
  // keywords
81251
81353
  chunk.appendString(c.concatTokens() + " ");
81252
81354
  }
81253
81355
  else if (c.get() instanceof abaplint.Expressions.SQLFieldName) {
81254
81356
  chunk.appendChunk(new sql_field_name_1.SQLFieldNameTranspiler().transpile(c, traversal));
81255
81357
  }
81358
+ else if (c.get() instanceof abaplint.Expressions.SimpleFieldChain2) {
81359
+ chunk.appendString(`'" + ` + new field_chain_1.FieldChainTranspiler().transpile(c, traversal).getCode() + `.get() + "' `);
81360
+ }
81256
81361
  else {
81257
81362
  chunk.appendString(c.concatTokens() + " ");
81258
81363
  }
@@ -81331,6 +81436,10 @@ class SQLFieldListTranspiler {
81331
81436
  const code = new sql_field_name_1.SQLFieldNameTranspiler().transpile(f, traversal).getCode();
81332
81437
  fields.push(code);
81333
81438
  }
81439
+ else if (f instanceof abaplint.Nodes.ExpressionNode && f.get() instanceof abaplint.Expressions.SQLFieldList) {
81440
+ // todo, I have no idea why its nested like this when there is just one field
81441
+ return new SQLFieldListTranspiler().transpile(f, traversal);
81442
+ }
81334
81443
  else {
81335
81444
  const concat = f.concatTokens();
81336
81445
  if (concat !== ",") {
@@ -82224,13 +82333,19 @@ class ValueBodyTranspiler {
82224
82333
  ret.appendString(".set(" + source.getCode() + ".clone())");
82225
82334
  }
82226
82335
  else if (child.get() instanceof core_1.Expressions.For && child instanceof core_1.Nodes.ExpressionNode) {
82227
- 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))) {
82228
82337
  throw new Error("ValueBody FOR todo, " + body.concatTokens());
82229
82338
  }
82230
82339
  const loop = child.findDirectExpression(core_1.Expressions.InlineLoopDefinition);
82231
82340
  if (loop === undefined) {
82232
82341
  throw new Error("ValueBody FOR todo, " + body.concatTokens());
82233
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
+ }
82234
82349
  const base = loop.findDirectExpression(core_1.Expressions.ValueBase);
82235
82350
  if (base) {
82236
82351
  throw new Error("ValueBody FOR todo, base, " + body.concatTokens());
@@ -82259,7 +82374,7 @@ class ValueBodyTranspiler {
82259
82374
  ret = new chunk_1.Chunk().appendString(`await (async () => {
82260
82375
  ${targetDeclare}
82261
82376
  const VAL = ${val};
82262
- for await (const unique1 of abap.statements.loop(${source})) {
82377
+ for await (const unique1 of abap.statements.loop(${source}${loopWhere})) {
82263
82378
  ${targetAction}
82264
82379
  VAL`);
82265
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.74",
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.196",
31
- "@abaplint/transpiler": "^2.11.74",
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",