@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.
- package/build/src/expressions/sql_cond.js +6 -1
- package/build/src/statements/authority_check.js +29 -1
- package/build/src/statements/end_of_page.d.ts +7 -0
- package/build/src/statements/end_of_page.js +11 -0
- package/build/src/statements/format.d.ts +7 -0
- package/build/src/statements/format.js +11 -0
- package/build/src/statements/index.d.ts +5 -0
- package/build/src/statements/index.js +5 -0
- package/build/src/statements/select.js +4 -1
- package/build/src/statements/set_blank.d.ts +7 -0
- package/build/src/statements/set_blank.js +11 -0
- package/build/src/statements/skip.d.ts +7 -0
- package/build/src/statements/skip.js +52 -0
- package/build/src/statements/top_of_page.d.ts +7 -0
- package/build/src/statements/top_of_page.js +11 -0
- package/build/src/structures/function_module.js +2 -0
- package/package.json +2 -2
|
@@ -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 (
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
32
|
+
"@abaplint/core": "^2.120.37",
|
|
33
33
|
"source-map": "^0.7.6"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|