@abaplint/transpiler 1.7.19 → 1.7.23
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.
- package/build/src/expressions/call_transformation_parameters.js +3 -0
- package/build/src/expressions/compare.js +1 -1
- package/build/src/expressions/database_table.d.ts +7 -0
- package/build/src/expressions/database_table.js +13 -0
- package/build/src/expressions/index.d.ts +3 -0
- package/build/src/expressions/index.js +3 -0
- package/build/src/expressions/method_source.js +61 -2
- package/build/src/expressions/source_field_symbol.d.ts +7 -0
- package/build/src/expressions/source_field_symbol.js +11 -0
- package/build/src/expressions/sql_source.d.ts +7 -0
- package/build/src/expressions/sql_source.js +11 -0
- package/build/src/handle_table.js +1 -0
- package/build/src/statements/authority_check.d.ts +7 -0
- package/build/src/statements/authority_check.js +15 -0
- package/build/src/statements/call_transformation.js +1 -1
- package/build/src/statements/index.d.ts +4 -3
- package/build/src/statements/index.js +4 -3
- package/build/src/statements/insert_database.d.ts +1 -1
- package/build/src/statements/insert_database.js +10 -2
- package/build/src/validation.js +1 -0
- package/package.json +3 -3
|
@@ -13,6 +13,9 @@ class CallTransformationParametersTranspiler {
|
|
|
13
13
|
const res = new chunk_1.Chunk().appendString("{");
|
|
14
14
|
for (const c of node.getChildren()) {
|
|
15
15
|
if (c.get() instanceof abaplint.Expressions.Field || c.get() instanceof abaplint.Expressions.Integer) {
|
|
16
|
+
if (res.getCode() !== "{") {
|
|
17
|
+
res.appendString(",");
|
|
18
|
+
}
|
|
16
19
|
res.appendString(c.concatTokens());
|
|
17
20
|
}
|
|
18
21
|
else if (c.get() instanceof abaplint.Expressions.Source) {
|
|
@@ -8,7 +8,7 @@ class CompareTranspiler {
|
|
|
8
8
|
// todo, this is not correct
|
|
9
9
|
const concat = node.concatTokens().toUpperCase();
|
|
10
10
|
let pre = concat.startsWith("NOT ") ? "!" : "";
|
|
11
|
-
const sources = node.findDirectExpressions(core_1.Expressions.Source);
|
|
11
|
+
const sources = node.findDirectExpressions(core_1.Expressions.Source).concat(node.findDirectExpressions(core_1.Expressions.SourceFieldSymbol));
|
|
12
12
|
if (sources.length === 1) {
|
|
13
13
|
const s0 = traversal.traverse(sources[0]);
|
|
14
14
|
if ((concat.startsWith("NOT ") && concat.endsWith(" IS INITIAL"))
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Nodes } from "@abaplint/core";
|
|
2
|
+
import { IExpressionTranspiler } from "./_expression_transpiler";
|
|
3
|
+
import { Traversal } from "../traversal";
|
|
4
|
+
import { Chunk } from "../chunk";
|
|
5
|
+
export declare class DatabaseTableTranspiler implements IExpressionTranspiler {
|
|
6
|
+
transpile(node: Nodes.ExpressionNode, _traversal: Traversal): Chunk;
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatabaseTableTranspiler = void 0;
|
|
4
|
+
const chunk_1 = require("../chunk");
|
|
5
|
+
class DatabaseTableTranspiler {
|
|
6
|
+
transpile(node, _traversal) {
|
|
7
|
+
const ret = new chunk_1.Chunk();
|
|
8
|
+
ret.appendString('"' + node.concatTokens() + '"');
|
|
9
|
+
return ret;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.DatabaseTableTranspiler = DatabaseTableTranspiler;
|
|
13
|
+
//# sourceMappingURL=database_table.js.map
|
|
@@ -12,6 +12,7 @@ export * from "./component_cond";
|
|
|
12
12
|
export * from "./cond_sub";
|
|
13
13
|
export * from "./cond";
|
|
14
14
|
export * from "./constant";
|
|
15
|
+
export * from "./database_table";
|
|
15
16
|
export * from "./field_chain";
|
|
16
17
|
export * from "./field_length";
|
|
17
18
|
export * from "./field_offset";
|
|
@@ -30,7 +31,9 @@ export * from "./simple_source1";
|
|
|
30
31
|
export * from "./simple_source2";
|
|
31
32
|
export * from "./simple_source3";
|
|
32
33
|
export * from "./simple_source4";
|
|
34
|
+
export * from "./source_field_symbol";
|
|
33
35
|
export * from "./source";
|
|
36
|
+
export * from "./sql_source";
|
|
34
37
|
export * from "./string_template_source";
|
|
35
38
|
export * from "./string_template";
|
|
36
39
|
export * from "./target";
|
|
@@ -24,6 +24,7 @@ __exportStar(require("./component_cond"), exports);
|
|
|
24
24
|
__exportStar(require("./cond_sub"), exports);
|
|
25
25
|
__exportStar(require("./cond"), exports);
|
|
26
26
|
__exportStar(require("./constant"), exports);
|
|
27
|
+
__exportStar(require("./database_table"), exports);
|
|
27
28
|
__exportStar(require("./field_chain"), exports);
|
|
28
29
|
__exportStar(require("./field_length"), exports);
|
|
29
30
|
__exportStar(require("./field_offset"), exports);
|
|
@@ -42,7 +43,9 @@ __exportStar(require("./simple_source1"), exports);
|
|
|
42
43
|
__exportStar(require("./simple_source2"), exports);
|
|
43
44
|
__exportStar(require("./simple_source3"), exports);
|
|
44
45
|
__exportStar(require("./simple_source4"), exports);
|
|
46
|
+
__exportStar(require("./source_field_symbol"), exports);
|
|
45
47
|
__exportStar(require("./source"), exports);
|
|
48
|
+
__exportStar(require("./sql_source"), exports);
|
|
46
49
|
__exportStar(require("./string_template_source"), exports);
|
|
47
50
|
__exportStar(require("./string_template"), exports);
|
|
48
51
|
__exportStar(require("./target"), exports);
|
|
@@ -1,10 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MethodSourceTranspiler = void 0;
|
|
4
|
-
const
|
|
4
|
+
const core_1 = require("@abaplint/core");
|
|
5
|
+
const chunk_1 = require("../chunk");
|
|
5
6
|
class MethodSourceTranspiler {
|
|
6
7
|
transpile(node, traversal) {
|
|
7
|
-
const ret = new
|
|
8
|
+
const ret = new chunk_1.Chunk();
|
|
9
|
+
const children = node.getChildren();
|
|
10
|
+
for (let i = 0; i < children.length; i++) {
|
|
11
|
+
const child = children[i];
|
|
12
|
+
const nextChild = children[i + 1];
|
|
13
|
+
if (child.get() instanceof core_1.Expressions.ClassName) {
|
|
14
|
+
ret.appendString(traversal.lookupClassOrInterface(child.concatTokens(), child.getFirstToken()));
|
|
15
|
+
}
|
|
16
|
+
else if (child.get() instanceof core_1.Expressions.Dynamic && (nextChild === null || nextChild === void 0 ? void 0 : nextChild.concatTokens()) === "=>") {
|
|
17
|
+
const second = child.getChildren()[1];
|
|
18
|
+
if (second.get() instanceof core_1.Expressions.FieldChain) {
|
|
19
|
+
ret.appendChunk(traversal.traverse(second));
|
|
20
|
+
}
|
|
21
|
+
else if (second.get() instanceof core_1.Expressions.Constant) {
|
|
22
|
+
const lookup = traversal.lookupClassOrInterface(second.getFirstToken().getStr(), child.getFirstToken(), true);
|
|
23
|
+
const lookupException = traversal.lookupClassOrInterface("'CX_SY_DYN_CALL_ILLEGAL_CLASS'", child.getFirstToken(), true);
|
|
24
|
+
// eslint-disable-next-line max-len
|
|
25
|
+
ret.appendString(`if (${lookup} === undefined && ${lookupException} === undefined) { throw "CX_SY_DYN_CALL_ILLEGAL_CLASS not found"; }\n`);
|
|
26
|
+
ret.appendString(`if (${lookup} === undefined) { throw new ${lookupException}(); }\n`);
|
|
27
|
+
ret.appendString(lookup);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
ret.appendString("MethodSourceTranspiler-Unexpected");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else if (child.get() instanceof core_1.Expressions.Dynamic) {
|
|
34
|
+
const second = child.getChildren()[1];
|
|
35
|
+
if (second.get() instanceof core_1.Expressions.FieldChain) {
|
|
36
|
+
ret.appendChunk(traversal.traverse(second));
|
|
37
|
+
}
|
|
38
|
+
else if (second.get() instanceof core_1.Expressions.Constant) {
|
|
39
|
+
ret.appendString(second.getFirstToken().getStr().replace(/\'/g, "").toLowerCase());
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
ret.appendString("MethodSourceTranspiler-Unexpected");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (child.get() instanceof core_1.Expressions.MethodName) {
|
|
46
|
+
const methodName = child.concatTokens().toLowerCase().replace("~", "$");
|
|
47
|
+
ret.append(methodName, child.getFirstToken().getStart(), traversal);
|
|
48
|
+
}
|
|
49
|
+
else if (child.concatTokens() === "=>") {
|
|
50
|
+
ret.append(".", child.getFirstToken().getStart(), traversal);
|
|
51
|
+
}
|
|
52
|
+
else if (child.concatTokens() === "->") {
|
|
53
|
+
if (ret.getCode() === "super") {
|
|
54
|
+
ret.append(".", child, traversal);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
ret.append(".get().", child, traversal);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (child.get() instanceof core_1.Expressions.FieldChain) {
|
|
61
|
+
ret.appendChunk(traversal.traverse(child));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
ret.appendString("MethodSourceTranspiler-" + child.get().constructor.name + "-todo");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
8
67
|
return ret;
|
|
9
68
|
}
|
|
10
69
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Nodes } from "@abaplint/core";
|
|
2
|
+
import { Chunk } from "../chunk";
|
|
3
|
+
import { Traversal } from "../traversal";
|
|
4
|
+
import { IExpressionTranspiler } from "./_expression_transpiler";
|
|
5
|
+
export declare class SourceFieldSymbolTranspiler implements IExpressionTranspiler {
|
|
6
|
+
transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SourceFieldSymbolTranspiler = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
class SourceFieldSymbolTranspiler {
|
|
6
|
+
transpile(node, traversal) {
|
|
7
|
+
return new _1.FieldSymbolTranspiler().transpile(node, traversal);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.SourceFieldSymbolTranspiler = SourceFieldSymbolTranspiler;
|
|
11
|
+
//# sourceMappingURL=source_field_symbol.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Nodes } from "@abaplint/core";
|
|
2
|
+
import { IExpressionTranspiler } from "./_expression_transpiler";
|
|
3
|
+
import { Traversal } from "../traversal";
|
|
4
|
+
import { Chunk } from "../chunk";
|
|
5
|
+
export declare class SQLSourceTranspiler implements IExpressionTranspiler {
|
|
6
|
+
transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLSourceTranspiler = void 0;
|
|
4
|
+
const abaplint = require("@abaplint/core");
|
|
5
|
+
class SQLSourceTranspiler {
|
|
6
|
+
transpile(node, traversal) {
|
|
7
|
+
return traversal.traverse(node.findDirectExpression(abaplint.Expressions.Source));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.SQLSourceTranspiler = SQLSourceTranspiler;
|
|
11
|
+
//# sourceMappingURL=sql_source.js.map
|
|
@@ -14,6 +14,7 @@ class HandleTable {
|
|
|
14
14
|
const type = obj.parseType(reg);
|
|
15
15
|
const chunk = new chunk_1.Chunk().appendString(`abap.DDIC["${obj.getName().toUpperCase()}"] = {
|
|
16
16
|
"type": ${new transpile_types_1.TranspileTypes().toType(type)},
|
|
17
|
+
"keyFields": ${JSON.stringify(obj.listKeys())},
|
|
17
18
|
};`);
|
|
18
19
|
const output = {
|
|
19
20
|
object: {
|
|
@@ -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 AuthorityCheckTranspiler implements IStatementTranspiler {
|
|
6
|
+
transpile(node: abaplint.Nodes.StatementNode, traversal: Traversal): Chunk;
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthorityCheckTranspiler = void 0;
|
|
4
|
+
const chunk_1 = require("../chunk");
|
|
5
|
+
class AuthorityCheckTranspiler {
|
|
6
|
+
transpile(node, traversal) {
|
|
7
|
+
const lookup = traversal.lookupClassOrInterface("KERNEL_AUTHORITY_CHECK", node.getFirstToken());
|
|
8
|
+
const options = [];
|
|
9
|
+
// todo
|
|
10
|
+
const call = `await ${lookup}.call({${options.join(",")}});`;
|
|
11
|
+
return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("AuthorityCheck, kernel class missing");\n${call}`, node, traversal);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.AuthorityCheckTranspiler = AuthorityCheckTranspiler;
|
|
15
|
+
//# sourceMappingURL=authority_check.js.map
|
|
@@ -26,7 +26,7 @@ class CallTransformationTranspiler {
|
|
|
26
26
|
if (result && result.get() instanceof abaplint.Expressions.CallTransformationParameters) {
|
|
27
27
|
options.push("result: " + traversal.traverse(result).getCode());
|
|
28
28
|
}
|
|
29
|
-
const source = node.findExpressionAfterToken("
|
|
29
|
+
const source = node.findExpressionAfterToken("SOURCE");
|
|
30
30
|
if (source && source.get() instanceof abaplint.Expressions.CallTransformationParameters) {
|
|
31
31
|
options.push("source: " + traversal.traverse(source).getCode());
|
|
32
32
|
}
|
|
@@ -3,6 +3,7 @@ export * from "./append";
|
|
|
3
3
|
export * from "./assert";
|
|
4
4
|
export * from "./assign";
|
|
5
5
|
export * from "./at";
|
|
6
|
+
export * from "./authority_check";
|
|
6
7
|
export * from "./call_function";
|
|
7
8
|
export * from "./call_transformation";
|
|
8
9
|
export * from "./call";
|
|
@@ -12,8 +13,6 @@ export * from "./class_deferred";
|
|
|
12
13
|
export * from "./class_implementation";
|
|
13
14
|
export * from "./class_local_friends";
|
|
14
15
|
export * from "./clear";
|
|
15
|
-
export * from "./get_locale";
|
|
16
|
-
export * from "./raise_event";
|
|
17
16
|
export * from "./collect";
|
|
18
17
|
export * from "./commit";
|
|
19
18
|
export * from "./concatenate";
|
|
@@ -47,6 +46,7 @@ export * from "./form";
|
|
|
47
46
|
export * from "./free";
|
|
48
47
|
export * from "./function_pool";
|
|
49
48
|
export * from "./get_bit";
|
|
49
|
+
export * from "./get_locale";
|
|
50
50
|
export * from "./get_parameter";
|
|
51
51
|
export * from "./get_reference";
|
|
52
52
|
export * from "./get_run_time";
|
|
@@ -64,9 +64,10 @@ export * from "./move_corresponding";
|
|
|
64
64
|
export * from "./move";
|
|
65
65
|
export * from "./parameter";
|
|
66
66
|
export * from "./perform";
|
|
67
|
+
export * from "./raise_event";
|
|
67
68
|
export * from "./raise";
|
|
68
|
-
export * from "./read_report";
|
|
69
69
|
export * from "./read_line";
|
|
70
|
+
export * from "./read_report";
|
|
70
71
|
export * from "./read_table";
|
|
71
72
|
export * from "./refresh";
|
|
72
73
|
export * from "./replace";
|
|
@@ -15,6 +15,7 @@ __exportStar(require("./append"), exports);
|
|
|
15
15
|
__exportStar(require("./assert"), exports);
|
|
16
16
|
__exportStar(require("./assign"), exports);
|
|
17
17
|
__exportStar(require("./at"), exports);
|
|
18
|
+
__exportStar(require("./authority_check"), exports);
|
|
18
19
|
__exportStar(require("./call_function"), exports);
|
|
19
20
|
__exportStar(require("./call_transformation"), exports);
|
|
20
21
|
__exportStar(require("./call"), exports);
|
|
@@ -24,8 +25,6 @@ __exportStar(require("./class_deferred"), exports);
|
|
|
24
25
|
__exportStar(require("./class_implementation"), exports);
|
|
25
26
|
__exportStar(require("./class_local_friends"), exports);
|
|
26
27
|
__exportStar(require("./clear"), exports);
|
|
27
|
-
__exportStar(require("./get_locale"), exports);
|
|
28
|
-
__exportStar(require("./raise_event"), exports);
|
|
29
28
|
__exportStar(require("./collect"), exports);
|
|
30
29
|
__exportStar(require("./commit"), exports);
|
|
31
30
|
__exportStar(require("./concatenate"), exports);
|
|
@@ -59,6 +58,7 @@ __exportStar(require("./form"), exports);
|
|
|
59
58
|
__exportStar(require("./free"), exports);
|
|
60
59
|
__exportStar(require("./function_pool"), exports);
|
|
61
60
|
__exportStar(require("./get_bit"), exports);
|
|
61
|
+
__exportStar(require("./get_locale"), exports);
|
|
62
62
|
__exportStar(require("./get_parameter"), exports);
|
|
63
63
|
__exportStar(require("./get_reference"), exports);
|
|
64
64
|
__exportStar(require("./get_run_time"), exports);
|
|
@@ -76,9 +76,10 @@ __exportStar(require("./move_corresponding"), exports);
|
|
|
76
76
|
__exportStar(require("./move"), exports);
|
|
77
77
|
__exportStar(require("./parameter"), exports);
|
|
78
78
|
__exportStar(require("./perform"), exports);
|
|
79
|
+
__exportStar(require("./raise_event"), exports);
|
|
79
80
|
__exportStar(require("./raise"), exports);
|
|
80
|
-
__exportStar(require("./read_report"), exports);
|
|
81
81
|
__exportStar(require("./read_line"), exports);
|
|
82
|
+
__exportStar(require("./read_report"), exports);
|
|
82
83
|
__exportStar(require("./read_table"), exports);
|
|
83
84
|
__exportStar(require("./refresh"), exports);
|
|
84
85
|
__exportStar(require("./replace"), exports);
|
|
@@ -3,5 +3,5 @@ import { IStatementTranspiler } from "./_statement_transpiler";
|
|
|
3
3
|
import { Traversal } from "../traversal";
|
|
4
4
|
import { Chunk } from "../chunk";
|
|
5
5
|
export declare class InsertDatabaseTranspiler implements IStatementTranspiler {
|
|
6
|
-
transpile(
|
|
6
|
+
transpile(node: abaplint.Nodes.StatementNode, traversal: Traversal): Chunk;
|
|
7
7
|
}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InsertDatabaseTranspiler = void 0;
|
|
4
|
+
const abaplint = require("@abaplint/core");
|
|
4
5
|
const chunk_1 = require("../chunk");
|
|
5
6
|
class InsertDatabaseTranspiler {
|
|
6
|
-
transpile(
|
|
7
|
-
|
|
7
|
+
transpile(node, traversal) {
|
|
8
|
+
const table = traversal.traverse(node.findFirstExpression(abaplint.Expressions.DatabaseTable));
|
|
9
|
+
const options = [];
|
|
10
|
+
const values = node.findExpressionAfterToken("VALUES");
|
|
11
|
+
if (values) {
|
|
12
|
+
const tvalues = traversal.traverse(values);
|
|
13
|
+
options.push(`"values": ` + tvalues.getCode());
|
|
14
|
+
}
|
|
15
|
+
return new chunk_1.Chunk(`abap.statements.insertDatabase(${table.getCode()}, {${options.join(", ")}});`);
|
|
8
16
|
}
|
|
9
17
|
}
|
|
10
18
|
exports.InsertDatabaseTranspiler = InsertDatabaseTranspiler;
|
package/build/src/validation.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/transpiler",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.23",
|
|
4
4
|
"description": "Transpiler",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/src/index.d.ts",
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"author": "abaplint",
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@abaplint/core": "^2.
|
|
30
|
+
"@abaplint/core": "^2.84.3",
|
|
31
31
|
"source-map": "^0.7.3"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/chai": "^4.3.0",
|
|
35
|
-
"@types/mocha": "^9.
|
|
35
|
+
"@types/mocha": "^9.1.0",
|
|
36
36
|
"chai": "^4.3.4",
|
|
37
37
|
"mocha": "^9.1.4",
|
|
38
38
|
"source-map-support": "^0.5.21",
|