@abaplint/transpiler 2.13.59 → 2.13.61

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.
@@ -145,8 +145,13 @@ class SQLCondTranspiler {
145
145
  sqlSource(source, traversal, filename, table) {
146
146
  let ret = "";
147
147
  const simple = source.findDirectExpression(abaplint.Expressions.SimpleSource3);
148
+ const hostExpression = source.findDirectExpression(abaplint.Expressions.Source);
148
149
  const alias = source.findDirectExpression(abaplint.Expressions.SQLAliasField);
149
- if (simple && simple.findDirectExpression(abaplint.Expressions.Constant) === undefined) {
150
+ if (source.getFirstToken().getStr() === "@" && hostExpression) {
151
+ const code = new source_1.SourceTranspiler(true).transpile(hostExpression, traversal).getCode();
152
+ ret += "'\" + " + code + " + \"'";
153
+ }
154
+ else if (simple && simple.findDirectExpression(abaplint.Expressions.Constant) === undefined) {
150
155
  ret += "'\" + " + new simple_source3_1.SimpleSource3Transpiler(true).transpile(simple, traversal).getCode() + " + \"'";
151
156
  }
152
157
  else if (alias) {
@@ -6,7 +6,35 @@ class AuthorityCheckTranspiler {
6
6
  transpile(node, traversal) {
7
7
  const lookup = traversal.lookupClassOrInterface("KERNEL_AUTHORITY_CHECK", node.getFirstToken());
8
8
  const options = [];
9
- // todo
9
+ const object = node.findExpressionAfterToken("OBJECT");
10
+ if (object) {
11
+ options.push("object: " + traversal.traverse(object).getCode());
12
+ }
13
+ const user = node.findExpressionAfterToken("USER");
14
+ if (user) {
15
+ options.push("user: " + traversal.traverse(user).getCode());
16
+ }
17
+ const fields = [];
18
+ const children = node.getChildren();
19
+ for (let i = 0; i < children.length; i++) {
20
+ if (children[i].concatTokens().toUpperCase() !== "ID") {
21
+ continue;
22
+ }
23
+ const id = children[i + 1];
24
+ const addition = children[i + 2]?.concatTokens().toUpperCase();
25
+ if (id === undefined) {
26
+ continue;
27
+ }
28
+ const field = ["id: " + traversal.traverse(id).getCode()];
29
+ if (addition === "FIELD" && children[i + 3] !== undefined) {
30
+ field.push("field: " + traversal.traverse(children[i + 3]).getCode());
31
+ }
32
+ else if (addition === "DUMMY") {
33
+ field.push("dummy: true");
34
+ }
35
+ fields.push("{" + field.join(", ") + "}");
36
+ }
37
+ options.push("fields: [" + fields.join(", ") + "]");
10
38
  const call = `await ${lookup}.call({${options.join(",")}});`;
11
39
  return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("AuthorityCheck, kernel class missing");\n${call}`, node, traversal);
12
40
  }
@@ -0,0 +1,7 @@
1
+ import * as abaplint from "@abaplint/core";
2
+ import { IStatementTranspiler } from "./_statement_transpiler";
3
+ import { Traversal } from "../traversal";
4
+ import { Chunk } from "../chunk";
5
+ export declare class EndOfPageTranspiler implements IStatementTranspiler {
6
+ transpile(_node: abaplint.Nodes.StatementNode, _traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EndOfPageTranspiler = void 0;
4
+ const chunk_1 = require("../chunk");
5
+ class EndOfPageTranspiler {
6
+ transpile(_node, _traversal) {
7
+ return new chunk_1.Chunk(`throw new Error("END-OF-PAGE, not supported, transpiler");`);
8
+ }
9
+ }
10
+ exports.EndOfPageTranspiler = EndOfPageTranspiler;
11
+ //# sourceMappingURL=end_of_page.js.map
@@ -0,0 +1,7 @@
1
+ import * as abaplint from "@abaplint/core";
2
+ import { IStatementTranspiler } from "./_statement_transpiler";
3
+ import { Traversal } from "../traversal";
4
+ import { Chunk } from "../chunk";
5
+ export declare class FormatTranspiler implements IStatementTranspiler {
6
+ transpile(_node: abaplint.Nodes.StatementNode, _traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormatTranspiler = void 0;
4
+ const chunk_1 = require("../chunk");
5
+ class FormatTranspiler {
6
+ transpile(_node, _traversal) {
7
+ return new chunk_1.Chunk(`throw new Error("FORMAT, not supported, transpiler");`);
8
+ }
9
+ }
10
+ exports.FormatTranspiler = FormatTranspiler;
11
+ //# sourceMappingURL=format.js.map
@@ -55,6 +55,7 @@ export * from "./end_form";
55
55
  export * from "./end_if";
56
56
  export * from "./end_loop";
57
57
  export * from "./end_method";
58
+ export * from "./end_of_page";
58
59
  export * from "./end_try";
59
60
  export * from "./end_while";
60
61
  export * from "./enhancement_point";
@@ -67,6 +68,7 @@ export * from "./find";
67
68
  export * from "./form";
68
69
  export * from "./free_memory";
69
70
  export * from "./free";
71
+ export * from "./format";
70
72
  export * from "./function_pool";
71
73
  export * from "./get_bit";
72
74
  export * from "./get_dataset";
@@ -124,6 +126,7 @@ export * from "./select_option";
124
126
  export * from "./select";
125
127
  export * from "./selection_screen";
126
128
  export * from "./set_bit";
129
+ export * from "./set_blank";
127
130
  export * from "./set_dataset";
128
131
  export * from "./set_extended_check";
129
132
  export * from "./set_handler";
@@ -135,6 +138,7 @@ export * from "./generate_subroutine";
135
138
  export * from "./set_screen";
136
139
  export * from "./set_titlebar";
137
140
  export * from "./shift";
141
+ export * from "./skip";
138
142
  export * from "./sort_dataset";
139
143
  export * from "./sort";
140
144
  export * from "./split";
@@ -149,6 +153,7 @@ export * from "./system_call";
149
153
  export * from "./tables";
150
154
  export * from "./transfer";
151
155
  export * from "./translate";
156
+ export * from "./top_of_page";
152
157
  export * from "./truncate_dataset";
153
158
  export * from "./try";
154
159
  export * from "./type_pools";
@@ -71,6 +71,7 @@ __exportStar(require("./end_form"), exports);
71
71
  __exportStar(require("./end_if"), exports);
72
72
  __exportStar(require("./end_loop"), exports);
73
73
  __exportStar(require("./end_method"), exports);
74
+ __exportStar(require("./end_of_page"), exports);
74
75
  __exportStar(require("./end_try"), exports);
75
76
  __exportStar(require("./end_while"), exports);
76
77
  __exportStar(require("./enhancement_point"), exports);
@@ -83,6 +84,7 @@ __exportStar(require("./find"), exports);
83
84
  __exportStar(require("./form"), exports);
84
85
  __exportStar(require("./free_memory"), exports);
85
86
  __exportStar(require("./free"), exports);
87
+ __exportStar(require("./format"), exports);
86
88
  __exportStar(require("./function_pool"), exports);
87
89
  __exportStar(require("./get_bit"), exports);
88
90
  __exportStar(require("./get_dataset"), exports);
@@ -140,6 +142,7 @@ __exportStar(require("./select_option"), exports);
140
142
  __exportStar(require("./select"), exports);
141
143
  __exportStar(require("./selection_screen"), exports);
142
144
  __exportStar(require("./set_bit"), exports);
145
+ __exportStar(require("./set_blank"), exports);
143
146
  __exportStar(require("./set_dataset"), exports);
144
147
  __exportStar(require("./set_extended_check"), exports);
145
148
  __exportStar(require("./set_handler"), exports);
@@ -151,6 +154,7 @@ __exportStar(require("./generate_subroutine"), exports);
151
154
  __exportStar(require("./set_screen"), exports);
152
155
  __exportStar(require("./set_titlebar"), exports);
153
156
  __exportStar(require("./shift"), exports);
157
+ __exportStar(require("./skip"), exports);
154
158
  __exportStar(require("./sort_dataset"), exports);
155
159
  __exportStar(require("./sort"), exports);
156
160
  __exportStar(require("./split"), exports);
@@ -165,6 +169,7 @@ __exportStar(require("./system_call"), exports);
165
169
  __exportStar(require("./tables"), exports);
166
170
  __exportStar(require("./transfer"), exports);
167
171
  __exportStar(require("./translate"), exports);
172
+ __exportStar(require("./top_of_page"), exports);
168
173
  __exportStar(require("./truncate_dataset"), exports);
169
174
  __exportStar(require("./try"), exports);
170
175
  __exportStar(require("./type_pools"), exports);
@@ -69,7 +69,10 @@ class SelectTranspiler {
69
69
  else if (node.findFirstExpression(abaplint.Expressions.SQLIntoStructure)) {
70
70
  target = traversal.traverse(node.findFirstExpression(abaplint.Expressions.SQLIntoStructure)).getCode();
71
71
  }
72
- let select = "SELECT ";
72
+ const tokens = node.getTokens();
73
+ const isDistinct = tokens[0]?.getStr().toUpperCase() === "SELECT"
74
+ && tokens[1]?.getStr().toUpperCase() === "DISTINCT";
75
+ let select = isDistinct ? "SELECT DISTINCT " : "SELECT ";
73
76
  const fieldList = node.findFirstExpression(abaplint.Expressions.SQLFieldList)
74
77
  || node.findFirstExpression(abaplint.Expressions.SQLFieldListLoop);
75
78
  if (fieldList === undefined) {
@@ -0,0 +1,7 @@
1
+ import * as abaplint from "@abaplint/core";
2
+ import { IStatementTranspiler } from "./_statement_transpiler";
3
+ import { Traversal } from "../traversal";
4
+ import { Chunk } from "../chunk";
5
+ export declare class SetBlankTranspiler implements IStatementTranspiler {
6
+ transpile(_node: abaplint.Nodes.StatementNode, _traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetBlankTranspiler = void 0;
4
+ const chunk_1 = require("../chunk");
5
+ class SetBlankTranspiler {
6
+ transpile(_node, _traversal) {
7
+ return new chunk_1.Chunk(`throw new Error("SET BLANK LINES, not supported, transpiler");`);
8
+ }
9
+ }
10
+ exports.SetBlankTranspiler = SetBlankTranspiler;
11
+ //# sourceMappingURL=set_blank.js.map
@@ -0,0 +1,7 @@
1
+ import * as abaplint from "@abaplint/core";
2
+ import { Chunk } from "../chunk";
3
+ import { Traversal } from "../traversal";
4
+ import { IStatementTranspiler } from "./_statement_transpiler";
5
+ export declare class SkipTranspiler implements IStatementTranspiler {
6
+ transpile(node: abaplint.Nodes.StatementNode, traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SkipTranspiler = void 0;
37
+ const abaplint = __importStar(require("@abaplint/core"));
38
+ const chunk_1 = require("../chunk");
39
+ class SkipTranspiler {
40
+ transpile(node, traversal) {
41
+ const source = node.findDirectExpression(abaplint.Expressions.Source);
42
+ if (source === undefined) {
43
+ return new chunk_1.Chunk().append("abap.statements.skip();", node, traversal);
44
+ }
45
+ const option = node.concatTokens().toUpperCase().includes("TO LINE") ? "toLine" : "lines";
46
+ return new chunk_1.Chunk().append("abap.statements.skip({" + option + ": ", node, traversal)
47
+ .appendChunk(traversal.traverse(source))
48
+ .append("});", node.getLastToken(), traversal);
49
+ }
50
+ }
51
+ exports.SkipTranspiler = SkipTranspiler;
52
+ //# sourceMappingURL=skip.js.map
@@ -0,0 +1,7 @@
1
+ import * as abaplint from "@abaplint/core";
2
+ import { IStatementTranspiler } from "./_statement_transpiler";
3
+ import { Traversal } from "../traversal";
4
+ import { Chunk } from "../chunk";
5
+ export declare class TopOfPageTranspiler implements IStatementTranspiler {
6
+ transpile(_node: abaplint.Nodes.StatementNode, _traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TopOfPageTranspiler = void 0;
4
+ const chunk_1 = require("../chunk");
5
+ class TopOfPageTranspiler {
6
+ transpile(_node, _traversal) {
7
+ return new chunk_1.Chunk(`throw new Error("TOP-OF-PAGE, not supported, transpiler");`);
8
+ }
9
+ }
10
+ exports.TopOfPageTranspiler = TopOfPageTranspiler;
11
+ //# sourceMappingURL=top_of_page.js.map
@@ -39,6 +39,7 @@ const traversal_1 = require("../traversal");
39
39
  const chunk_1 = require("../chunk");
40
40
  const transpile_types_1 = require("../transpile_types");
41
41
  const unique_identifier_1 = require("../unique_identifier");
42
+ const inline_1 = require("../inline");
42
43
  class FunctionModuleTranspiler {
43
44
  transpile(node, traversal) {
44
45
  const chunk = new chunk_1.Chunk();
@@ -51,6 +52,7 @@ class FunctionModuleTranspiler {
51
52
  }
52
53
  chunk.append(`async function ${traversal_1.Traversal.escapeNamespace(name)}(INPUT) {\n`, c, traversal);
53
54
  chunk.appendString(this.findSignature(traversal, name, c));
55
+ chunk.appendString(inline_1.InlineDeclarations.buildDeclarations(node, traversal));
54
56
  }
55
57
  else if (c.get() instanceof abaplint.Statements.EndFunction) {
56
58
  chunk.append("}\n", c, traversal);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.13.59",
3
+ "version": "2.13.61",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "author": "abaplint",
30
30
  "license": "MIT",
31
31
  "dependencies": {
32
- "@abaplint/core": "^2.120.23",
32
+ "@abaplint/core": "^2.120.37",
33
33
  "source-map": "^0.7.6"
34
34
  },
35
35
  "devDependencies": {