@abaplint/transpiler 2.11.68 → 2.11.69
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/filter_body.d.ts +6 -0
- package/build/src/expressions/filter_body.js +40 -0
- package/build/src/expressions/source.js +15 -0
- package/build/src/statements/index.d.ts +1 -0
- package/build/src/statements/index.js +1 -0
- package/build/src/statements/static.d.ts +7 -0
- package/build/src/statements/static.js +11 -0
- package/build/src/validation.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilterBodyTranspiler = void 0;
|
|
4
|
+
const core_1 = require("@abaplint/core");
|
|
5
|
+
const chunk_1 = require("../chunk");
|
|
6
|
+
const type_name_or_infer_1 = require("./type_name_or_infer");
|
|
7
|
+
const transpile_types_1 = require("../transpile_types");
|
|
8
|
+
const unique_identifier_1 = require("../unique_identifier");
|
|
9
|
+
class FilterBodyTranspiler {
|
|
10
|
+
transpile(typ, body, traversal) {
|
|
11
|
+
if (!(typ.get() instanceof core_1.Expressions.TypeNameOrInfer)) {
|
|
12
|
+
throw new Error("FilterBodyTranspiler, Expected TypeNameOrInfer");
|
|
13
|
+
}
|
|
14
|
+
else if (body.findDirectTokenByText("EXCEPT")) {
|
|
15
|
+
return new chunk_1.Chunk(`throw new Error("FilterBodyTranspiler EXCEPT in, not supported, transpiler");`);
|
|
16
|
+
}
|
|
17
|
+
const source = traversal.traverse(body.findDirectExpression(core_1.Expressions.Source)).getCode();
|
|
18
|
+
const type = new type_name_or_infer_1.TypeNameOrInfer().findType(typ, traversal);
|
|
19
|
+
const target = transpile_types_1.TranspileTypes.toType(type);
|
|
20
|
+
const ret = new chunk_1.Chunk();
|
|
21
|
+
ret.appendString("(await (async () => {\n");
|
|
22
|
+
let loopWhere = "";
|
|
23
|
+
const whereNode = body.findDirectExpression(core_1.Expressions.ComponentCond);
|
|
24
|
+
if (whereNode) {
|
|
25
|
+
const where = traversal.traverse(whereNode).getCode();
|
|
26
|
+
loopWhere = `, {"where": async ` + where + `}`;
|
|
27
|
+
}
|
|
28
|
+
const id = unique_identifier_1.UniqueIdentifier.get();
|
|
29
|
+
const loop = unique_identifier_1.UniqueIdentifier.get();
|
|
30
|
+
ret.appendString(`const ${id} = ${target};\n`);
|
|
31
|
+
ret.appendString(`for await (const ${loop} of abap.statements.loop(${source}${loopWhere})) {\n`);
|
|
32
|
+
ret.appendString(`abap.statements.insertInternal({"table": ${id}, "data": ${loop}});\n`);
|
|
33
|
+
ret.appendString(`}\n`);
|
|
34
|
+
ret.appendString(`return ${id};\n`);
|
|
35
|
+
ret.appendString("})())");
|
|
36
|
+
return ret;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.FilterBodyTranspiler = FilterBodyTranspiler;
|
|
40
|
+
//# sourceMappingURL=filter_body.js.map
|
|
@@ -8,6 +8,7 @@ const chunk_1 = require("../chunk");
|
|
|
8
8
|
const transpile_types_1 = require("../transpile_types");
|
|
9
9
|
const value_body_1 = require("./value_body");
|
|
10
10
|
const corresponding_body_1 = require("./corresponding_body");
|
|
11
|
+
const filter_body_1 = require("./filter_body");
|
|
11
12
|
class SourceTranspiler {
|
|
12
13
|
addGet;
|
|
13
14
|
constructor(addGet = false) {
|
|
@@ -99,6 +100,9 @@ class SourceTranspiler {
|
|
|
99
100
|
else if (c.get() instanceof core_1.Expressions.SwitchBody) {
|
|
100
101
|
continue;
|
|
101
102
|
}
|
|
103
|
+
else if (c.get() instanceof core_1.Expressions.FilterBody) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
102
106
|
else {
|
|
103
107
|
ret.appendString("SourceUnknown$" + c.get().constructor.name);
|
|
104
108
|
}
|
|
@@ -165,6 +169,17 @@ class SourceTranspiler {
|
|
|
165
169
|
}
|
|
166
170
|
ret.appendChunk(new _1.SwitchBodyTranspiler().transpile(typ, switchBody, traversal));
|
|
167
171
|
}
|
|
172
|
+
else if (c instanceof core_1.Nodes.TokenNode && c.getFirstToken().getStr().toUpperCase() === "FILTER") {
|
|
173
|
+
const typ = node.findDirectExpression(core_1.Expressions.TypeNameOrInfer);
|
|
174
|
+
if (typ === undefined) {
|
|
175
|
+
throw new Error("TypeNameOrInfer not found in FilterBody");
|
|
176
|
+
}
|
|
177
|
+
const filterBody = node.findDirectExpression(core_1.Expressions.FilterBody);
|
|
178
|
+
if (filterBody === undefined) {
|
|
179
|
+
throw new Error("FilterBody not found");
|
|
180
|
+
}
|
|
181
|
+
ret.appendChunk(new filter_body_1.FilterBodyTranspiler().transpile(typ, filterBody, traversal));
|
|
182
|
+
}
|
|
168
183
|
else if (c instanceof core_1.Nodes.TokenNode && c.getFirstToken().getStr().toUpperCase() === "REF") {
|
|
169
184
|
const infer = node.findDirectExpression(core_1.Expressions.TypeNameOrInfer);
|
|
170
185
|
if (infer?.concatTokens() !== "#") {
|
|
@@ -20,6 +20,7 @@ export * from "./class_definition_load";
|
|
|
20
20
|
export * from "./class_implementation";
|
|
21
21
|
export * from "./class_local_friends";
|
|
22
22
|
export * from "./clear";
|
|
23
|
+
export * from "./static";
|
|
23
24
|
export * from "./close_cursor";
|
|
24
25
|
export * from "./close_dataset";
|
|
25
26
|
export * from "./collect";
|
|
@@ -36,6 +36,7 @@ __exportStar(require("./class_definition_load"), exports);
|
|
|
36
36
|
__exportStar(require("./class_implementation"), exports);
|
|
37
37
|
__exportStar(require("./class_local_friends"), exports);
|
|
38
38
|
__exportStar(require("./clear"), exports);
|
|
39
|
+
__exportStar(require("./static"), exports);
|
|
39
40
|
__exportStar(require("./close_cursor"), exports);
|
|
40
41
|
__exportStar(require("./close_dataset"), exports);
|
|
41
42
|
__exportStar(require("./collect"), exports);
|
|
@@ -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 StaticTranspiler 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.StaticTranspiler = void 0;
|
|
4
|
+
const chunk_1 = require("../chunk");
|
|
5
|
+
class StaticTranspiler {
|
|
6
|
+
transpile(_node, _traversal) {
|
|
7
|
+
return new chunk_1.Chunk(`throw new Error("Statics, not supported, transpiler");`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.StaticTranspiler = StaticTranspiler;
|
|
11
|
+
//# sourceMappingURL=static.js.map
|
package/build/src/validation.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/transpiler",
|
|
3
|
-
"version": "2.11.
|
|
3
|
+
"version": "2.11.69",
|
|
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.113.
|
|
32
|
+
"@abaplint/core": "^2.113.194",
|
|
33
33
|
"source-map": "^0.7.6"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|