@abaplint/transpiler-cli 2.0.71 → 2.0.72

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/README.md CHANGED
@@ -1,13 +1,13 @@
1
- # @abaplint/transpiler-cli
2
-
3
- Transpiler CLI
4
-
5
- Input = `src` directory
6
-
7
- Output = `output` directory
8
-
9
- ## Examples
10
-
11
- Call `abap_transpile` on the command line, see example in
12
-
1
+ # @abaplint/transpiler-cli
2
+
3
+ Transpiler CLI
4
+
5
+ Input = `src` directory
6
+
7
+ Output = `output` directory
8
+
9
+ ## Examples
10
+
11
+ Call `abap_transpile` on the command line, see example in
12
+
13
13
  https://github.com/larshp/abap-advent-2020/blob/main/package.json#L8
package/abap_transpile CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- require("./build/bundle");
2
+ require("./build/bundle");
package/build/bundle.js CHANGED
@@ -38,7 +38,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
38
38
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
39
39
 
40
40
  "use strict";
41
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst fs = __webpack_require__(/*! fs */ \"fs\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst glob = __webpack_require__(/*! glob */ \"./node_modules/glob/glob.js\");\r\nconst childProcess = __webpack_require__(/*! child_process */ \"child_process\");\r\nconst os = __webpack_require__(/*! os */ \"os\");\r\nconst ProgressBar = __webpack_require__(/*! progress */ \"./node_modules/progress/index.js\");\r\nconst Transpiler = __webpack_require__(/*! @abaplint/transpiler */ \"./node_modules/@abaplint/transpiler/build/src/index.js\");\r\nconst abaplint = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nconst config_1 = __webpack_require__(/*! ./config */ \"./build/config.js\");\r\nconst file_operations_1 = __webpack_require__(/*! ./file_operations */ \"./build/file_operations.js\");\r\nclass Progress {\r\n set(total, _text) {\r\n this.bar = new ProgressBar(\":percent - :elapseds - :text\", { total, renderThrottle: 100 });\r\n }\r\n async tick(text) {\r\n this.bar.tick({ text });\r\n this.bar.render();\r\n }\r\n}\r\nfunction loadLib(config) {\r\n const files = [];\r\n if (config.lib && config.lib !== \"\" && config.libs === undefined) {\r\n config.libs = [{ url: config.lib }];\r\n }\r\n for (const l of config.libs || []) {\r\n console.log(\"Clone: \" + l.url);\r\n const dir = fs.mkdtempSync(path.join(os.tmpdir(), \"abap_transpile-\"));\r\n childProcess.execSync(\"git clone --quiet --depth 1 \" + l.url + \" .\", { cwd: dir, stdio: \"inherit\" });\r\n let count = 0;\r\n for (let filename of glob.sync(dir + \"/src/**\", { nosort: true, nodir: true })) {\r\n if (filename.endsWith(\".clas.testclasses.abap\")) {\r\n continue;\r\n }\r\n const contents = fs.readFileSync(filename, \"utf8\");\r\n filename = path.basename(filename);\r\n files.push({ filename, contents });\r\n count++;\r\n }\r\n console.log(count + \" files added from lib\");\r\n file_operations_1.FileOperations.deleteFolderRecursive(dir);\r\n }\r\n return files;\r\n}\r\nfunction writeObjects(objects, writeSourceMaps, outputFolder, files) {\r\n for (const o of objects) {\r\n let contents = o.chunk.getCode();\r\n if (writeSourceMaps === true\r\n && o.object.type.toUpperCase() !== \"TABL\"\r\n && o.object.type.toUpperCase() !== \"DTEL\"\r\n && o.object.type.toUpperCase() !== \"TTYP\") {\r\n const name = o.filename + \".map\";\r\n contents = contents + `\\n//# sourceMappingURL=` + name;\r\n let map = o.chunk.getMap(o.filename);\r\n for (const f of files) { // hack the paths to the original files\r\n if (f.relative === undefined) {\r\n continue;\r\n }\r\n if (map.includes(`\"${f.filename}\"`)) {\r\n let withPath = `\"${f.relative}${path.sep}${f.filename}\"`;\r\n withPath = withPath.replace(/\\\\/g, \"\\\\\\\\\");\r\n map = map.replace(`\"${f.filename}\"`, withPath);\r\n }\r\n }\r\n fs.writeFileSync(outputFolder + path.sep + name, map);\r\n }\r\n fs.writeFileSync(outputFolder + path.sep + o.filename, contents);\r\n }\r\n}\r\nasync function run() {\r\n console.log(\"Transpiler CLI\");\r\n const config = config_1.TranspilerConfig.find(process.argv[2]);\r\n const libFiles = loadLib(config);\r\n const files = file_operations_1.FileOperations.loadFiles(config);\r\n console.log(\"\\nBuilding\");\r\n const t = new Transpiler.Transpiler(config.options);\r\n const reg = new abaplint.Registry();\r\n for (const f of files) {\r\n reg.addFile(new abaplint.MemoryFile(f.filename, f.contents));\r\n }\r\n for (const l of libFiles) {\r\n reg.addDependency(new abaplint.MemoryFile(l.filename, l.contents));\r\n }\r\n reg.parse();\r\n const output = await t.run(reg, new Progress());\r\n console.log(\"\\nOutput\");\r\n const outputFolder = config.output_folder;\r\n if (!fs.existsSync(outputFolder)) {\r\n fs.mkdirSync(outputFolder);\r\n }\r\n writeObjects(output.objects, config.write_source_map, outputFolder, files);\r\n console.log(output.objects.length + \" objects written to disk\");\r\n if (config.write_unit_tests === true) {\r\n // breaking change? rename this output file,\r\n fs.writeFileSync(outputFolder + path.sep + \"index.mjs\", output.unitTestScript);\r\n fs.writeFileSync(outputFolder + path.sep + \"_unit_open.mjs\", output.unitTestScriptOpen);\r\n }\r\n // breaking change? rename this output file,\r\n fs.writeFileSync(outputFolder + path.sep + \"init.mjs\", output.initializationScript);\r\n // new static referenced imports,\r\n fs.writeFileSync(outputFolder + path.sep + \"_init.mjs\", output.initializationScript2);\r\n fs.writeFileSync(outputFolder + path.sep + \"_top.mjs\", `import runtime from \"@abaplint/runtime\";\r\nglobalThis.abap = new runtime.ABAP();`);\r\n}\r\nrun().then(() => {\r\n process.exit();\r\n}).catch((err) => {\r\n console.log(err);\r\n process.exit(1);\r\n});\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./build/index.js?");
41
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst fs = __webpack_require__(/*! fs */ \"fs\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst glob = __webpack_require__(/*! glob */ \"./node_modules/glob/glob.js\");\r\nconst childProcess = __webpack_require__(/*! child_process */ \"child_process\");\r\nconst os = __webpack_require__(/*! os */ \"os\");\r\nconst ProgressBar = __webpack_require__(/*! progress */ \"./node_modules/progress/index.js\");\r\nconst Transpiler = __webpack_require__(/*! @abaplint/transpiler */ \"./node_modules/@abaplint/transpiler/build/src/index.js\");\r\nconst abaplint = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nconst config_1 = __webpack_require__(/*! ./config */ \"./build/config.js\");\r\nconst file_operations_1 = __webpack_require__(/*! ./file_operations */ \"./build/file_operations.js\");\r\nclass Progress {\r\n set(total, _text) {\r\n this.bar = new ProgressBar(\":percent - :elapseds - :text\", { total, renderThrottle: 100 });\r\n }\r\n async tick(text) {\r\n this.bar.tick({ text });\r\n this.bar.render();\r\n }\r\n}\r\nfunction loadLib(config) {\r\n const files = [];\r\n if (config.lib && config.lib !== \"\" && config.libs === undefined) {\r\n config.libs = [{ url: config.lib }];\r\n }\r\n for (const l of config.libs || []) {\r\n console.log(\"Clone: \" + l.url);\r\n const dir = fs.mkdtempSync(path.join(os.tmpdir(), \"abap_transpile-\"));\r\n childProcess.execSync(\"git clone --quiet --depth 1 \" + l.url + \" .\", { cwd: dir, stdio: \"inherit\" });\r\n let count = 0;\r\n for (let filename of glob.sync(dir + \"/src/**\", { nosort: true, nodir: true })) {\r\n if (filename.endsWith(\".clas.testclasses.abap\")) {\r\n continue;\r\n }\r\n const contents = fs.readFileSync(filename, \"utf8\");\r\n filename = path.basename(filename);\r\n files.push({ filename, contents });\r\n count++;\r\n }\r\n console.log(count + \" files added from lib\");\r\n file_operations_1.FileOperations.deleteFolderRecursive(dir);\r\n }\r\n return files;\r\n}\r\nfunction writeObjects(objects, writeSourceMaps, outputFolder, files) {\r\n for (const o of objects) {\r\n let contents = o.chunk.getCode();\r\n if (writeSourceMaps === true\r\n && o.object.type.toUpperCase() !== \"TABL\"\r\n && o.object.type.toUpperCase() !== \"DTEL\"\r\n && o.object.type.toUpperCase() !== \"TTYP\") {\r\n const name = o.filename + \".map\";\r\n contents = contents + `\\n//# sourceMappingURL=` + name;\r\n let map = o.chunk.getMap(o.filename);\r\n for (const f of files) { // hack the paths to the original files\r\n if (f.relative === undefined) {\r\n continue;\r\n }\r\n if (map.includes(`\"${f.filename}\"`)) {\r\n let withPath = `\"${f.relative}${path.sep}${f.filename}\"`;\r\n withPath = withPath.replace(/\\\\/g, \"\\\\\\\\\");\r\n map = map.replace(`\"${f.filename}\"`, withPath);\r\n }\r\n }\r\n fs.writeFileSync(outputFolder + path.sep + name, map);\r\n }\r\n fs.writeFileSync(outputFolder + path.sep + o.filename, contents);\r\n }\r\n}\r\nasync function run() {\r\n console.log(\"Transpiler CLI\");\r\n const config = config_1.TranspilerConfig.find(process.argv[2]);\r\n const libFiles = loadLib(config);\r\n const files = file_operations_1.FileOperations.loadFiles(config);\r\n console.log(\"\\nBuilding\");\r\n const t = new Transpiler.Transpiler(config.options);\r\n const reg = new abaplint.Registry();\r\n for (const f of files) {\r\n reg.addFile(new abaplint.MemoryFile(f.filename, f.contents));\r\n }\r\n for (const l of libFiles) {\r\n reg.addDependency(new abaplint.MemoryFile(l.filename, l.contents));\r\n }\r\n reg.parse();\r\n const output = await t.run(reg, new Progress());\r\n console.log(\"\\nOutput\");\r\n const outputFolder = config.output_folder;\r\n if (!fs.existsSync(outputFolder)) {\r\n fs.mkdirSync(outputFolder);\r\n }\r\n writeObjects(output.objects, config.write_source_map, outputFolder, files);\r\n console.log(output.objects.length + \" objects written to disk\");\r\n if (config.write_unit_tests === true) {\r\n // breaking change? rename this output file,\r\n fs.writeFileSync(outputFolder + path.sep + \"index.mjs\", output.unitTestScript);\r\n fs.writeFileSync(outputFolder + path.sep + \"_unit_open.mjs\", output.unitTestScriptOpen);\r\n }\r\n // breaking change? rename this output file,\r\n fs.writeFileSync(outputFolder + path.sep + \"init.mjs\", output.initializationScript);\r\n // new static referenced imports,\r\n fs.writeFileSync(outputFolder + path.sep + \"_init.mjs\", output.initializationScript2);\r\n fs.writeFileSync(outputFolder + path.sep + \"_top.mjs\", `import runtime from \"@abaplint/runtime\";\nglobalThis.abap = new runtime.ABAP();`);\r\n}\r\nrun().then(() => {\r\n process.exit();\r\n}).catch((err) => {\r\n console.log(err);\r\n process.exit(1);\r\n});\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./build/index.js?");
42
42
 
43
43
  /***/ }),
44
44
 
@@ -13513,7 +13513,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
13513
13513
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
13514
13514
 
13515
13515
  "use strict";
13516
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.HandleDataElement = void 0;\r\nconst chunk_1 = __webpack_require__(/*! ./chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nconst transpile_types_1 = __webpack_require__(/*! ./transpile_types */ \"./node_modules/@abaplint/transpiler/build/src/transpile_types.js\");\r\nclass HandleDataElement {\r\n runObject(obj, reg) {\r\n var _a;\r\n const filename = (_a = obj.getXMLFile()) === null || _a === void 0 ? void 0 : _a.getFilename().replace(\".xml\", \".mjs\").toLowerCase();\r\n if (filename === undefined) {\r\n return [];\r\n }\r\n const type = obj.parseType(reg);\r\n let fixedValues = undefined;\r\n if (obj.getDomainName()) {\r\n const doma = reg.getObject(\"DOMA\", obj.getDomainName());\r\n if (doma) {\r\n fixedValues = doma.getFixedValues();\r\n }\r\n }\r\n const chunk = new chunk_1.Chunk().appendString(`abap.DDIC[\"${obj.getName().toUpperCase()}\"] = {\r\n \"objectType\": \"DTEL\",\r\n \"type\": ${new transpile_types_1.TranspileTypes().toType(type)},\r\n \"domain\": ${JSON.stringify(obj.getDomainName())},\r\n \"fixedValues\": ${JSON.stringify(fixedValues)},\r\n};`);\r\n const output = {\r\n object: {\r\n name: obj.getName(),\r\n type: obj.getType(),\r\n },\r\n filename: filename,\r\n chunk: chunk,\r\n requires: [],\r\n exports: [],\r\n };\r\n return [output];\r\n }\r\n}\r\nexports.HandleDataElement = HandleDataElement;\r\n//# sourceMappingURL=handle_data_element.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/handle_data_element.js?");
13516
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.HandleDataElement = void 0;\r\nconst chunk_1 = __webpack_require__(/*! ./chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nconst transpile_types_1 = __webpack_require__(/*! ./transpile_types */ \"./node_modules/@abaplint/transpiler/build/src/transpile_types.js\");\r\nclass HandleDataElement {\r\n runObject(obj, reg) {\r\n var _a;\r\n const filename = (_a = obj.getXMLFile()) === null || _a === void 0 ? void 0 : _a.getFilename().replace(\".xml\", \".mjs\").toLowerCase();\r\n if (filename === undefined) {\r\n return [];\r\n }\r\n const type = obj.parseType(reg);\r\n let fixedValues = undefined;\r\n if (obj.getDomainName()) {\r\n const doma = reg.getObject(\"DOMA\", obj.getDomainName());\r\n if (doma) {\r\n fixedValues = doma.getFixedValues();\r\n }\r\n }\r\n const chunk = new chunk_1.Chunk().appendString(`abap.DDIC[\"${obj.getName().toUpperCase()}\"] = {\n \"objectType\": \"DTEL\",\n \"type\": ${new transpile_types_1.TranspileTypes().toType(type)},\n \"domain\": ${JSON.stringify(obj.getDomainName())},\n \"fixedValues\": ${JSON.stringify(fixedValues)},\n};`);\r\n const output = {\r\n object: {\r\n name: obj.getName(),\r\n type: obj.getType(),\r\n },\r\n filename: filename,\r\n chunk: chunk,\r\n requires: [],\r\n exports: [],\r\n };\r\n return [output];\r\n }\r\n}\r\nexports.HandleDataElement = HandleDataElement;\r\n//# sourceMappingURL=handle_data_element.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/handle_data_element.js?");
13517
13517
 
13518
13518
  /***/ }),
13519
13519
 
@@ -13524,7 +13524,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
13524
13524
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
13525
13525
 
13526
13526
  "use strict";
13527
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.HandleTable = void 0;\r\nconst chunk_1 = __webpack_require__(/*! ./chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nconst transpile_types_1 = __webpack_require__(/*! ./transpile_types */ \"./node_modules/@abaplint/transpiler/build/src/transpile_types.js\");\r\n// tables or structures\r\nclass HandleTable {\r\n runObject(obj, reg) {\r\n var _a;\r\n const filename = (_a = obj.getXMLFile()) === null || _a === void 0 ? void 0 : _a.getFilename().replace(\".xml\", \".mjs\").toLowerCase();\r\n if (filename === undefined) {\r\n return [];\r\n }\r\n const type = obj.parseType(reg);\r\n const chunk = new chunk_1.Chunk().appendString(`abap.DDIC[\"${obj.getName().toUpperCase()}\"] = {\r\n \"objectType\": \"TABL\",\r\n \"type\": ${new transpile_types_1.TranspileTypes().toType(type)},\r\n \"keyFields\": ${JSON.stringify(obj.listKeys())},\r\n};`);\r\n const output = {\r\n object: {\r\n name: obj.getName(),\r\n type: obj.getType(),\r\n },\r\n filename: filename,\r\n chunk: chunk,\r\n requires: [],\r\n exports: [],\r\n };\r\n return [output];\r\n }\r\n}\r\nexports.HandleTable = HandleTable;\r\n//# sourceMappingURL=handle_table.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/handle_table.js?");
13527
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.HandleTable = void 0;\r\nconst chunk_1 = __webpack_require__(/*! ./chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nconst transpile_types_1 = __webpack_require__(/*! ./transpile_types */ \"./node_modules/@abaplint/transpiler/build/src/transpile_types.js\");\r\n// tables or structures\r\nclass HandleTable {\r\n runObject(obj, reg) {\r\n var _a;\r\n const filename = (_a = obj.getXMLFile()) === null || _a === void 0 ? void 0 : _a.getFilename().replace(\".xml\", \".mjs\").toLowerCase();\r\n if (filename === undefined) {\r\n return [];\r\n }\r\n const type = obj.parseType(reg);\r\n const chunk = new chunk_1.Chunk().appendString(`abap.DDIC[\"${obj.getName().toUpperCase()}\"] = {\n \"objectType\": \"TABL\",\n \"type\": ${new transpile_types_1.TranspileTypes().toType(type)},\n \"keyFields\": ${JSON.stringify(obj.listKeys())},\n};`);\r\n const output = {\r\n object: {\r\n name: obj.getName(),\r\n type: obj.getType(),\r\n },\r\n filename: filename,\r\n chunk: chunk,\r\n requires: [],\r\n exports: [],\r\n };\r\n return [output];\r\n }\r\n}\r\nexports.HandleTable = HandleTable;\r\n//# sourceMappingURL=handle_table.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/handle_table.js?");
13528
13528
 
13529
13529
  /***/ }),
13530
13530
 
@@ -13535,7 +13535,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
13535
13535
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
13536
13536
 
13537
13537
  "use strict";
13538
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.HandleTableType = void 0;\r\nconst chunk_1 = __webpack_require__(/*! ./chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nconst transpile_types_1 = __webpack_require__(/*! ./transpile_types */ \"./node_modules/@abaplint/transpiler/build/src/transpile_types.js\");\r\nclass HandleTableType {\r\n runObject(obj, reg) {\r\n var _a;\r\n const filename = (_a = obj.getXMLFile()) === null || _a === void 0 ? void 0 : _a.getFilename().replace(\".xml\", \".mjs\").toLowerCase();\r\n if (filename === undefined) {\r\n return [];\r\n }\r\n const type = obj.parseType(reg);\r\n const chunk = new chunk_1.Chunk().appendString(`abap.DDIC[\"${obj.getName().toUpperCase()}\"] = {\r\n \"objectType\": \"TTYP\",\r\n \"type\": ${new transpile_types_1.TranspileTypes().toType(type)},\r\n};`);\r\n const output = {\r\n object: {\r\n name: obj.getName(),\r\n type: obj.getType(),\r\n },\r\n filename: filename,\r\n chunk: chunk,\r\n requires: [],\r\n exports: [],\r\n };\r\n return [output];\r\n }\r\n}\r\nexports.HandleTableType = HandleTableType;\r\n//# sourceMappingURL=handle_table_type.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/handle_table_type.js?");
13538
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.HandleTableType = void 0;\r\nconst chunk_1 = __webpack_require__(/*! ./chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nconst transpile_types_1 = __webpack_require__(/*! ./transpile_types */ \"./node_modules/@abaplint/transpiler/build/src/transpile_types.js\");\r\nclass HandleTableType {\r\n runObject(obj, reg) {\r\n var _a;\r\n const filename = (_a = obj.getXMLFile()) === null || _a === void 0 ? void 0 : _a.getFilename().replace(\".xml\", \".mjs\").toLowerCase();\r\n if (filename === undefined) {\r\n return [];\r\n }\r\n const type = obj.parseType(reg);\r\n const chunk = new chunk_1.Chunk().appendString(`abap.DDIC[\"${obj.getName().toUpperCase()}\"] = {\n \"objectType\": \"TTYP\",\n \"type\": ${new transpile_types_1.TranspileTypes().toType(type)},\n};`);\r\n const output = {\r\n object: {\r\n name: obj.getName(),\r\n type: obj.getType(),\r\n },\r\n filename: filename,\r\n chunk: chunk,\r\n requires: [],\r\n exports: [],\r\n };\r\n return [output];\r\n }\r\n}\r\nexports.HandleTableType = HandleTableType;\r\n//# sourceMappingURL=handle_table_type.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/handle_table_type.js?");
13539
13539
 
13540
13540
  /***/ }),
13541
13541
 
@@ -13920,7 +13920,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
13920
13920
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
13921
13921
 
13922
13922
  "use strict";
13923
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DoTranspiler = void 0;\r\nconst abaplint = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/transpiler/build/src/expressions/index.js\");\r\nconst unique_identifier_1 = __webpack_require__(/*! ../unique_identifier */ \"./node_modules/@abaplint/transpiler/build/src/unique_identifier.js\");\r\nconst chunk_1 = __webpack_require__(/*! ../chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nclass DoTranspiler {\r\n transpile(node, traversal) {\r\n const found = node.findFirstExpression(abaplint.Expressions.Source);\r\n if (found) {\r\n const source = new expressions_1.SourceTranspiler(true).transpile(found, traversal).getCode();\r\n const idSource = unique_identifier_1.UniqueIdentifier.get();\r\n const id = unique_identifier_1.UniqueIdentifier.get();\r\n return new chunk_1.Chunk(`const ${idSource} = ${source};\r\nfor (let ${id} = 0; ${id} < ${idSource}; ${id}++) {\r\nabap.builtin.sy.get().index.set(${id} + 1);`);\r\n }\r\n else {\r\n const unique = unique_identifier_1.UniqueIdentifier.get();\r\n return new chunk_1.Chunk(`let ${unique} = 1;\r\nwhile (true) {\r\nabap.builtin.sy.get().index.set(${unique}++);`);\r\n }\r\n }\r\n}\r\nexports.DoTranspiler = DoTranspiler;\r\n//# sourceMappingURL=do.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/statements/do.js?");
13923
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DoTranspiler = void 0;\r\nconst abaplint = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/transpiler/build/src/expressions/index.js\");\r\nconst unique_identifier_1 = __webpack_require__(/*! ../unique_identifier */ \"./node_modules/@abaplint/transpiler/build/src/unique_identifier.js\");\r\nconst chunk_1 = __webpack_require__(/*! ../chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nclass DoTranspiler {\r\n transpile(node, traversal) {\r\n const found = node.findFirstExpression(abaplint.Expressions.Source);\r\n if (found) {\r\n const source = new expressions_1.SourceTranspiler(true).transpile(found, traversal).getCode();\r\n const idSource = unique_identifier_1.UniqueIdentifier.get();\r\n const id = unique_identifier_1.UniqueIdentifier.get();\r\n return new chunk_1.Chunk(`const ${idSource} = ${source};\nfor (let ${id} = 0; ${id} < ${idSource}; ${id}++) {\nabap.builtin.sy.get().index.set(${id} + 1);`);\r\n }\r\n else {\r\n const unique = unique_identifier_1.UniqueIdentifier.get();\r\n return new chunk_1.Chunk(`let ${unique} = 1;\nwhile (true) {\nabap.builtin.sy.get().index.set(${unique}++);`);\r\n }\r\n }\r\n}\r\nexports.DoTranspiler = DoTranspiler;\r\n//# sourceMappingURL=do.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/statements/do.js?");
13924
13924
 
13925
13925
  /***/ }),
13926
13926
 
@@ -14210,6 +14210,17 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
14210
14210
 
14211
14211
  /***/ }),
14212
14212
 
14213
+ /***/ "./node_modules/@abaplint/transpiler/build/src/statements/import.js":
14214
+ /*!**************************************************************************!*\
14215
+ !*** ./node_modules/@abaplint/transpiler/build/src/statements/import.js ***!
14216
+ \**************************************************************************/
14217
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
14218
+
14219
+ "use strict";
14220
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ImportTranspiler = void 0;\r\nconst chunk_1 = __webpack_require__(/*! ../chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nclass ImportTranspiler {\r\n transpile(_node, _traversal) {\r\n return new chunk_1.Chunk(`throw new Error(\"Import, transpiler todo\");`);\r\n }\r\n}\r\nexports.ImportTranspiler = ImportTranspiler;\r\n//# sourceMappingURL=import.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/statements/import.js?");
14221
+
14222
+ /***/ }),
14223
+
14213
14224
  /***/ "./node_modules/@abaplint/transpiler/build/src/statements/include.js":
14214
14225
  /*!***************************************************************************!*\
14215
14226
  !*** ./node_modules/@abaplint/transpiler/build/src/statements/include.js ***!
@@ -14228,7 +14239,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
14228
14239
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
14229
14240
 
14230
14241
  "use strict";
14231
- eval("\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./add */ \"./node_modules/@abaplint/transpiler/build/src/statements/add.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./append */ \"./node_modules/@abaplint/transpiler/build/src/statements/append.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./assert */ \"./node_modules/@abaplint/transpiler/build/src/statements/assert.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./assign */ \"./node_modules/@abaplint/transpiler/build/src/statements/assign.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./at */ \"./node_modules/@abaplint/transpiler/build/src/statements/at.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./authority_check */ \"./node_modules/@abaplint/transpiler/build/src/statements/authority_check.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./call_function */ \"./node_modules/@abaplint/transpiler/build/src/statements/call_function.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./call_transformation */ \"./node_modules/@abaplint/transpiler/build/src/statements/call_transformation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./call */ \"./node_modules/@abaplint/transpiler/build/src/statements/call.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./case */ \"./node_modules/@abaplint/transpiler/build/src/statements/case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check */ \"./node_modules/@abaplint/transpiler/build/src/statements/check.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./class_deferred */ \"./node_modules/@abaplint/transpiler/build/src/statements/class_deferred.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./class_implementation */ \"./node_modules/@abaplint/transpiler/build/src/statements/class_implementation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./class_local_friends */ \"./node_modules/@abaplint/transpiler/build/src/statements/class_local_friends.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./clear */ \"./node_modules/@abaplint/transpiler/build/src/statements/clear.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./close_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/close_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./collect */ \"./node_modules/@abaplint/transpiler/build/src/statements/collect.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./commit */ \"./node_modules/@abaplint/transpiler/build/src/statements/commit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./concatenate */ \"./node_modules/@abaplint/transpiler/build/src/statements/concatenate.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./condense */ \"./node_modules/@abaplint/transpiler/build/src/statements/condense.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./constant */ \"./node_modules/@abaplint/transpiler/build/src/statements/constant.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./continue */ \"./node_modules/@abaplint/transpiler/build/src/statements/continue.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./convert */ \"./node_modules/@abaplint/transpiler/build/src/statements/convert.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./create_data */ \"./node_modules/@abaplint/transpiler/build/src/statements/create_data.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./create_object */ \"./node_modules/@abaplint/transpiler/build/src/statements/create_object.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./data */ \"./node_modules/@abaplint/transpiler/build/src/statements/data.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./delete_database */ \"./node_modules/@abaplint/transpiler/build/src/statements/delete_database.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./delete_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/delete_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./delete_internal */ \"./node_modules/@abaplint/transpiler/build/src/statements/delete_internal.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./describe */ \"./node_modules/@abaplint/transpiler/build/src/statements/describe.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./do */ \"./node_modules/@abaplint/transpiler/build/src/statements/do.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./else_if */ \"./node_modules/@abaplint/transpiler/build/src/statements/else_if.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./else */ \"./node_modules/@abaplint/transpiler/build/src/statements/else.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_at */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_at.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_case */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_class */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_class.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_do */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_do.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_form */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_form.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_if */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_if.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_loop */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_loop.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_method */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_method.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_try */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_try.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_while */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_while.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./exit */ \"./node_modules/@abaplint/transpiler/build/src/statements/exit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./field_symbol */ \"./node_modules/@abaplint/transpiler/build/src/statements/field_symbol.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./find */ \"./node_modules/@abaplint/transpiler/build/src/statements/find.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./form */ \"./node_modules/@abaplint/transpiler/build/src/statements/form.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./free */ \"./node_modules/@abaplint/transpiler/build/src/statements/free.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./function_pool */ \"./node_modules/@abaplint/transpiler/build/src/statements/function_pool.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_bit */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_bit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_locale */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_locale.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_parameter */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_parameter.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_reference */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_reference.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_run_time */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_run_time.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_time */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_time.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./if */ \"./node_modules/@abaplint/transpiler/build/src/statements/if.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./include */ \"./node_modules/@abaplint/transpiler/build/src/statements/include.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./insert_database */ \"./node_modules/@abaplint/transpiler/build/src/statements/insert_database.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./insert_internal */ \"./node_modules/@abaplint/transpiler/build/src/statements/insert_internal.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./loop */ \"./node_modules/@abaplint/transpiler/build/src/statements/loop.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./message */ \"./node_modules/@abaplint/transpiler/build/src/statements/message.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_implementation */ \"./node_modules/@abaplint/transpiler/build/src/statements/method_implementation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./modify_database */ \"./node_modules/@abaplint/transpiler/build/src/statements/modify_database.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./modify_internal */ \"./node_modules/@abaplint/transpiler/build/src/statements/modify_internal.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./move_corresponding */ \"./node_modules/@abaplint/transpiler/build/src/statements/move_corresponding.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./move */ \"./node_modules/@abaplint/transpiler/build/src/statements/move.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./open_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/open_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./parameter */ \"./node_modules/@abaplint/transpiler/build/src/statements/parameter.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./perform */ \"./node_modules/@abaplint/transpiler/build/src/statements/perform.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./raise_event */ \"./node_modules/@abaplint/transpiler/build/src/statements/raise_event.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./raise */ \"./node_modules/@abaplint/transpiler/build/src/statements/raise.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./read_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/read_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./read_line */ \"./node_modules/@abaplint/transpiler/build/src/statements/read_line.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./read_report */ \"./node_modules/@abaplint/transpiler/build/src/statements/read_report.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./read_table */ \"./node_modules/@abaplint/transpiler/build/src/statements/read_table.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./refresh */ \"./node_modules/@abaplint/transpiler/build/src/statements/refresh.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./replace */ \"./node_modules/@abaplint/transpiler/build/src/statements/replace.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./report */ \"./node_modules/@abaplint/transpiler/build/src/statements/report.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./return */ \"./node_modules/@abaplint/transpiler/build/src/statements/return.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./rollback */ \"./node_modules/@abaplint/transpiler/build/src/statements/rollback.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./scan */ \"./node_modules/@abaplint/transpiler/build/src/statements/scan.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./select */ \"./node_modules/@abaplint/transpiler/build/src/statements/select.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_bit */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_bit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_handler */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_handler.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_locale */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_locale.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_parameter */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_parameter.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./shift */ \"./node_modules/@abaplint/transpiler/build/src/statements/shift.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sort_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/sort_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sort */ \"./node_modules/@abaplint/transpiler/build/src/statements/sort.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./split */ \"./node_modules/@abaplint/transpiler/build/src/statements/split.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./start_of_selection */ \"./node_modules/@abaplint/transpiler/build/src/statements/start_of_selection.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./submit */ \"./node_modules/@abaplint/transpiler/build/src/statements/submit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./subtract */ \"./node_modules/@abaplint/transpiler/build/src/statements/subtract.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./translate */ \"./node_modules/@abaplint/transpiler/build/src/statements/translate.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./truncate_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/truncate_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./try */ \"./node_modules/@abaplint/transpiler/build/src/statements/try.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./type */ \"./node_modules/@abaplint/transpiler/build/src/statements/type.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unassign */ \"./node_modules/@abaplint/transpiler/build/src/statements/unassign.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./update_database */ \"./node_modules/@abaplint/transpiler/build/src/statements/update_database.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./wait */ \"./node_modules/@abaplint/transpiler/build/src/statements/wait.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./when */ \"./node_modules/@abaplint/transpiler/build/src/statements/when.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./while */ \"./node_modules/@abaplint/transpiler/build/src/statements/while.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./write */ \"./node_modules/@abaplint/transpiler/build/src/statements/write.js\"), exports);\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/statements/index.js?");
14242
+ eval("\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./add */ \"./node_modules/@abaplint/transpiler/build/src/statements/add.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./append */ \"./node_modules/@abaplint/transpiler/build/src/statements/append.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./assert */ \"./node_modules/@abaplint/transpiler/build/src/statements/assert.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./assign */ \"./node_modules/@abaplint/transpiler/build/src/statements/assign.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./at */ \"./node_modules/@abaplint/transpiler/build/src/statements/at.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./authority_check */ \"./node_modules/@abaplint/transpiler/build/src/statements/authority_check.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./call_function */ \"./node_modules/@abaplint/transpiler/build/src/statements/call_function.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./call_transformation */ \"./node_modules/@abaplint/transpiler/build/src/statements/call_transformation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./call */ \"./node_modules/@abaplint/transpiler/build/src/statements/call.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./case */ \"./node_modules/@abaplint/transpiler/build/src/statements/case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check */ \"./node_modules/@abaplint/transpiler/build/src/statements/check.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./class_deferred */ \"./node_modules/@abaplint/transpiler/build/src/statements/class_deferred.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./class_implementation */ \"./node_modules/@abaplint/transpiler/build/src/statements/class_implementation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./class_local_friends */ \"./node_modules/@abaplint/transpiler/build/src/statements/class_local_friends.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./clear */ \"./node_modules/@abaplint/transpiler/build/src/statements/clear.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./close_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/close_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./collect */ \"./node_modules/@abaplint/transpiler/build/src/statements/collect.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./commit */ \"./node_modules/@abaplint/transpiler/build/src/statements/commit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./concatenate */ \"./node_modules/@abaplint/transpiler/build/src/statements/concatenate.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./condense */ \"./node_modules/@abaplint/transpiler/build/src/statements/condense.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./constant */ \"./node_modules/@abaplint/transpiler/build/src/statements/constant.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./continue */ \"./node_modules/@abaplint/transpiler/build/src/statements/continue.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./convert */ \"./node_modules/@abaplint/transpiler/build/src/statements/convert.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./create_data */ \"./node_modules/@abaplint/transpiler/build/src/statements/create_data.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./create_object */ \"./node_modules/@abaplint/transpiler/build/src/statements/create_object.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./data */ \"./node_modules/@abaplint/transpiler/build/src/statements/data.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./delete_database */ \"./node_modules/@abaplint/transpiler/build/src/statements/delete_database.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./delete_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/delete_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./delete_internal */ \"./node_modules/@abaplint/transpiler/build/src/statements/delete_internal.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./describe */ \"./node_modules/@abaplint/transpiler/build/src/statements/describe.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./do */ \"./node_modules/@abaplint/transpiler/build/src/statements/do.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./else_if */ \"./node_modules/@abaplint/transpiler/build/src/statements/else_if.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./else */ \"./node_modules/@abaplint/transpiler/build/src/statements/else.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_at */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_at.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_case */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_class */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_class.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_do */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_do.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_form */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_form.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_if */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_if.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_loop */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_loop.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_method */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_method.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_try */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_try.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./end_while */ \"./node_modules/@abaplint/transpiler/build/src/statements/end_while.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./exit */ \"./node_modules/@abaplint/transpiler/build/src/statements/exit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./field_symbol */ \"./node_modules/@abaplint/transpiler/build/src/statements/field_symbol.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./find */ \"./node_modules/@abaplint/transpiler/build/src/statements/find.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./form */ \"./node_modules/@abaplint/transpiler/build/src/statements/form.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./free */ \"./node_modules/@abaplint/transpiler/build/src/statements/free.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./function_pool */ \"./node_modules/@abaplint/transpiler/build/src/statements/function_pool.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_bit */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_bit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_locale */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_locale.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_parameter */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_parameter.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_reference */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_reference.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_run_time */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_run_time.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./get_time */ \"./node_modules/@abaplint/transpiler/build/src/statements/get_time.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./if */ \"./node_modules/@abaplint/transpiler/build/src/statements/if.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./receive */ \"./node_modules/@abaplint/transpiler/build/src/statements/receive.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./import */ \"./node_modules/@abaplint/transpiler/build/src/statements/import.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./include */ \"./node_modules/@abaplint/transpiler/build/src/statements/include.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./insert_database */ \"./node_modules/@abaplint/transpiler/build/src/statements/insert_database.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./insert_internal */ \"./node_modules/@abaplint/transpiler/build/src/statements/insert_internal.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./loop */ \"./node_modules/@abaplint/transpiler/build/src/statements/loop.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./message */ \"./node_modules/@abaplint/transpiler/build/src/statements/message.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_implementation */ \"./node_modules/@abaplint/transpiler/build/src/statements/method_implementation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./modify_database */ \"./node_modules/@abaplint/transpiler/build/src/statements/modify_database.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./modify_internal */ \"./node_modules/@abaplint/transpiler/build/src/statements/modify_internal.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./move_corresponding */ \"./node_modules/@abaplint/transpiler/build/src/statements/move_corresponding.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./move */ \"./node_modules/@abaplint/transpiler/build/src/statements/move.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./open_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/open_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./parameter */ \"./node_modules/@abaplint/transpiler/build/src/statements/parameter.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./perform */ \"./node_modules/@abaplint/transpiler/build/src/statements/perform.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./raise_event */ \"./node_modules/@abaplint/transpiler/build/src/statements/raise_event.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./raise */ \"./node_modules/@abaplint/transpiler/build/src/statements/raise.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./read_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/read_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./read_line */ \"./node_modules/@abaplint/transpiler/build/src/statements/read_line.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./read_report */ \"./node_modules/@abaplint/transpiler/build/src/statements/read_report.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./read_table */ \"./node_modules/@abaplint/transpiler/build/src/statements/read_table.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./refresh */ \"./node_modules/@abaplint/transpiler/build/src/statements/refresh.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./replace */ \"./node_modules/@abaplint/transpiler/build/src/statements/replace.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./report */ \"./node_modules/@abaplint/transpiler/build/src/statements/report.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./return */ \"./node_modules/@abaplint/transpiler/build/src/statements/return.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./rollback */ \"./node_modules/@abaplint/transpiler/build/src/statements/rollback.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./scan */ \"./node_modules/@abaplint/transpiler/build/src/statements/scan.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./select */ \"./node_modules/@abaplint/transpiler/build/src/statements/select.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_bit */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_bit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_handler */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_handler.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_locale */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_locale.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./set_parameter */ \"./node_modules/@abaplint/transpiler/build/src/statements/set_parameter.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./shift */ \"./node_modules/@abaplint/transpiler/build/src/statements/shift.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sort_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/sort_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sort */ \"./node_modules/@abaplint/transpiler/build/src/statements/sort.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./split */ \"./node_modules/@abaplint/transpiler/build/src/statements/split.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./start_of_selection */ \"./node_modules/@abaplint/transpiler/build/src/statements/start_of_selection.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./submit */ \"./node_modules/@abaplint/transpiler/build/src/statements/submit.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./subtract */ \"./node_modules/@abaplint/transpiler/build/src/statements/subtract.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./translate */ \"./node_modules/@abaplint/transpiler/build/src/statements/translate.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./truncate_dataset */ \"./node_modules/@abaplint/transpiler/build/src/statements/truncate_dataset.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./try */ \"./node_modules/@abaplint/transpiler/build/src/statements/try.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./type */ \"./node_modules/@abaplint/transpiler/build/src/statements/type.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unassign */ \"./node_modules/@abaplint/transpiler/build/src/statements/unassign.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./update_database */ \"./node_modules/@abaplint/transpiler/build/src/statements/update_database.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./wait */ \"./node_modules/@abaplint/transpiler/build/src/statements/wait.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./when */ \"./node_modules/@abaplint/transpiler/build/src/statements/when.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./while */ \"./node_modules/@abaplint/transpiler/build/src/statements/while.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./write */ \"./node_modules/@abaplint/transpiler/build/src/statements/write.js\"), exports);\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/statements/index.js?");
14232
14243
 
14233
14244
  /***/ }),
14234
14245
 
@@ -14430,6 +14441,17 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
14430
14441
 
14431
14442
  /***/ }),
14432
14443
 
14444
+ /***/ "./node_modules/@abaplint/transpiler/build/src/statements/receive.js":
14445
+ /*!***************************************************************************!*\
14446
+ !*** ./node_modules/@abaplint/transpiler/build/src/statements/receive.js ***!
14447
+ \***************************************************************************/
14448
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
14449
+
14450
+ "use strict";
14451
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReceiveTranspiler = void 0;\r\nconst chunk_1 = __webpack_require__(/*! ../chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nclass ReceiveTranspiler {\r\n transpile(_node, _traversal) {\r\n return new chunk_1.Chunk(`throw new Error(\"Receive, transpiler todo\");`);\r\n }\r\n}\r\nexports.ReceiveTranspiler = ReceiveTranspiler;\r\n//# sourceMappingURL=receive.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/statements/receive.js?");
14452
+
14453
+ /***/ }),
14454
+
14433
14455
  /***/ "./node_modules/@abaplint/transpiler/build/src/statements/refresh.js":
14434
14456
  /*!***************************************************************************!*\
14435
14457
  !*** ./node_modules/@abaplint/transpiler/build/src/statements/refresh.js ***!
@@ -14767,7 +14789,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
14767
14789
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
14768
14790
 
14769
14791
  "use strict";
14770
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ClassDefinitionTranspiler = void 0;\r\nconst abaplint = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nconst chunk_1 = __webpack_require__(/*! ../chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nclass ClassDefinitionTranspiler {\r\n transpile(node, traversal) {\r\n var _a;\r\n const className = (_a = node.findFirstExpression(abaplint.Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();\r\n let found = false;\r\n if (className !== undefined) {\r\n for (const a of traversal.getCurrentObject().getABAPFiles()) {\r\n if (a.getInfo().getClassImplementationByName(className) !== undefined) {\r\n found = true;\r\n }\r\n }\r\n }\r\n if (found) {\r\n return new chunk_1.Chunk(\"\");\r\n }\r\n else {\r\n // its an abstract class with only abstract methods\r\n return new chunk_1.Chunk(`\r\nclass ${className === null || className === void 0 ? void 0 : className.toLowerCase()} {\r\n async constructor_() {\r\n this.me = new abap.types.ABAPObject();\r\n this.me.set(this);\r\n return this;\r\n }\r\n}`);\r\n }\r\n }\r\n}\r\nexports.ClassDefinitionTranspiler = ClassDefinitionTranspiler;\r\n//# sourceMappingURL=class_definition.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/structures/class_definition.js?");
14792
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ClassDefinitionTranspiler = void 0;\r\nconst abaplint = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nconst chunk_1 = __webpack_require__(/*! ../chunk */ \"./node_modules/@abaplint/transpiler/build/src/chunk.js\");\r\nclass ClassDefinitionTranspiler {\r\n transpile(node, traversal) {\r\n var _a;\r\n const className = (_a = node.findFirstExpression(abaplint.Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();\r\n let found = false;\r\n if (className !== undefined) {\r\n for (const a of traversal.getCurrentObject().getABAPFiles()) {\r\n if (a.getInfo().getClassImplementationByName(className) !== undefined) {\r\n found = true;\r\n }\r\n }\r\n }\r\n if (found) {\r\n return new chunk_1.Chunk(\"\");\r\n }\r\n else {\r\n // its an abstract class with only abstract methods\r\n return new chunk_1.Chunk(`\nclass ${className === null || className === void 0 ? void 0 : className.toLowerCase()} {\n async constructor_() {\n this.me = new abap.types.ABAPObject();\n this.me.set(this);\n return this;\n }\n}`);\r\n }\r\n }\r\n}\r\nexports.ClassDefinitionTranspiler = ClassDefinitionTranspiler;\r\n//# sourceMappingURL=class_definition.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/structures/class_definition.js?");
14771
14793
 
14772
14794
  /***/ }),
14773
14795
 
@@ -14910,7 +14932,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
14910
14932
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
14911
14933
 
14912
14934
  "use strict";
14913
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.UnitTest = void 0;\r\n/* eslint-disable max-len */\r\nconst abaplint = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nclass UnitTest {\r\n // todo, move this method somewhere else, its much more than just unit test relevant\r\n initializationScript(reg, dbSetup, extraSetup, useImport) {\r\n let ret = \"\";\r\n if (useImport === true) {\r\n ret = `/* eslint-disable import/newline-after-import */\r\nimport \"./_top.mjs\";\\n`;\r\n }\r\n else {\r\n ret = `/* eslint-disable import/newline-after-import */\r\nimport runtime from \"@abaplint/runtime\";\r\nglobalThis.abap = new runtime.ABAP();\\n`;\r\n }\r\n ret += `${this.buildImports(reg, useImport)}\r\n\r\nexport async function initializeABAP() {\\n`;\r\n ret += ` const sqlite = \\`${dbSetup.schemas.sqlite}\\`;\\n`;\r\n ret += ` const hdb = \\`${dbSetup.schemas.hdb}\\`;\\n`;\r\n ret += ` const pg = \\`${dbSetup.schemas.pg}\\`;\\n`;\r\n ret += ` const schemas = {sqlite, hdb, pg};\\n`;\r\n ret += ` const insert = \\`${dbSetup.insert}\\`;\\n`;\r\n if (extraSetup === undefined) {\r\n ret += `// no setup logic specified in config\\n`;\r\n }\r\n else {\r\n ret += ` const {setup} = await import(\"${extraSetup}\");\\n` +\r\n ` await setup(globalThis.abap, schemas, insert);\\n`;\r\n }\r\n ret += `}`;\r\n return ret;\r\n }\r\n escapeNamespace(filename) {\r\n // ES modules are resolved and cached as URLs. This means that special characters must be percent-encoded, such as # with %23 and ? with %3F.\r\n return filename.replace(/\\//g, \"%23\");\r\n }\r\n unitTestScriptOpen(reg, _skip, _only) {\r\n let ret = `/* eslint-disable curly */\r\nimport fs from \"fs\";\r\nimport path from \"path\";\r\nimport {fileURLToPath} from \"url\";\r\nimport {initializeABAP} from \"./init.mjs\";\r\n\r\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\r\n\r\nasync function run() {\r\n await initializeABAP();\r\n let lt_input = new abap.types.Table(new abap.types.Structure({class_name: new abap.types.Character({length: 30}), testclass_name: new abap.types.Character({length: 30}), method_name: new abap.types.Character({length: 30})}), {\"withHeader\":false,\"type\":\"STANDARD\",\"isUnique\":false,\"keyFields\":[]});\r\n let ls_input = new abap.types.Structure({class_name: new abap.types.Character({length: 30}), testclass_name: new abap.types.Character({length: 30}), method_name: new abap.types.Character({length: 30})});\r\n let ls_result = new abap.types.Structure({list: new abap.types.Table(new abap.types.Structure({class_name: new abap.types.Character({length: 30}), testclass_name: new abap.types.Character({length: 30}), method_name: new abap.types.Character({length: 30}), expected: new abap.types.String(), actual: new abap.types.String(), status: new abap.types.String(), runtime: new abap.types.Integer(), message: new abap.types.String(), js_location: new abap.types.String()}), {\"withHeader\":false,\"type\":\"STANDARD\",\"isUnique\":false,\"keyFields\":[]}), json: new abap.types.String()});\r\n`;\r\n for (const obj of reg.getObjects()) {\r\n if (reg.isDependency(obj) || !(obj instanceof abaplint.Objects.Class)) {\r\n continue;\r\n }\r\n const hasTestFile = obj.getFiles().some(f => { return f.getFilename().includes(\".testclasses.\"); });\r\n if (hasTestFile === true) {\r\n ret += ` await import(\"./${this.escapeNamespace(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}.testclasses.mjs\");\\n`;\r\n }\r\n for (const file of obj.getABAPFiles()) {\r\n for (const def of file.getInfo().listClassDefinitions()) {\r\n if (def.isForTesting === false || def.isGlobal === true || def.methods.length === 0) {\r\n // todo, fix, there might be global test methods\r\n continue;\r\n }\r\n for (const m of def.methods) {\r\n if (m.isForTesting === false) {\r\n continue;\r\n }\r\n ret += ` ls_input.get().class_name.set(\"${obj.getName()}\");\r\n ls_input.get().testclass_name.set(\"${def.name.toUpperCase()}\");\r\n ls_input.get().method_name.set(\"${m.name.toUpperCase()}\");\r\n abap.statements.append({source: ls_input, target: lt_input});\\n`;\r\n }\r\n }\r\n }\r\n }\r\n ret += `\r\n\r\n ls_result.set(await abap.Classes[\"KERNEL_UNIT_RUNNER\"].run({it_input: lt_input}));\r\n fs.writeFileSync(__dirname + path.sep + \"output.json\", ls_result.get().json.get());\r\n}\r\n\r\nrun().then(() => {\r\n process.exit(0);\r\n}).catch((err) => {\r\n console.log(err);\r\n process.exit(1);\r\n});`;\r\n return ret;\r\n }\r\n unitTestScript(reg, skip, _only) {\r\n let ret = `/* eslint-disable curly */\r\nimport fs from \"fs\";\r\nimport path from \"path\";\r\nimport {fileURLToPath} from \"url\";\r\nimport {initializeABAP} from \"./init.mjs\";\r\nimport runtime from \"@abaplint/runtime\";\r\n\r\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\r\n\r\nasync function run() {\r\n await initializeABAP();\r\n const unit = new runtime.UnitTestResult();\r\n let clas;\r\n let locl;\r\n let meth;\r\n try {\\n`;\r\n for (const obj of reg.getObjects()) {\r\n if (reg.isDependency(obj) || !(obj instanceof abaplint.Objects.Class)) {\r\n continue;\r\n }\r\n ret += `// --------------------------------------------\\n`;\r\n ret += ` clas = unit.addObject(\"${obj.getName()}\");\\n`;\r\n for (const file of obj.getABAPFiles()) {\r\n for (const def of file.getInfo().listClassDefinitions()) {\r\n if (def.isForTesting === false || def.isGlobal === true || def.methods.length === 0) {\r\n // todo, fix, there might be global test methods\r\n continue;\r\n }\r\n ret += ` {\r\n const {${def.name}} = await import(\"./${this.escapeNamespace(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}.testclasses.mjs\");\r\n locl = clas.addTestClass(\"${def.name}\");\r\n if (${def.name}.class_setup) await ${def.name}.class_setup();\\n`;\r\n for (const m of def.methods) {\r\n if (m.isForTesting === false) {\r\n continue;\r\n }\r\n const skipThis = (skip || []).some(a => a.object === obj.getName() && a.class === def.name && a.method === m.name);\r\n if (skipThis) {\r\n ret += ` console.log('${obj.getName()}: running ${def.name}->${m.name}, skipped');\\n`;\r\n ret += ` meth = locl.addMethod(\"${m.name}\");\\n`;\r\n ret += ` meth.skip();\\n`;\r\n continue;\r\n }\r\n ret += ` {\\n const test = await (new ${def.name}()).constructor_();\\n`;\r\n ret += ` if (test.setup) await test.setup();\\n`;\r\n ret += ` console.log(\"${obj.getName()}: running ${def.name}->${m.name}\");\\n`;\r\n ret += ` meth = locl.addMethod(\"${m.name}\");\\n`;\r\n ret += ` await test.${m.name}();\\n`;\r\n ret += ` meth.pass();\\n`;\r\n ret += ` if (test.teardown) await test.teardown();\\n`;\r\n ret += ` }\\n`;\r\n }\r\n ret += ` if (${def.name}.class_teardown) await ${def.name}.class_teardown();\\n`;\r\n ret += ` }\\n`;\r\n }\r\n }\r\n }\r\n ret += `// -------------------END-------------------\r\n console.log(abap.console.get());\r\n fs.writeFileSync(__dirname + path.sep + \"_output.xml\", unit.xUnitXML());\r\n } catch (e) {\r\n if (meth) {\r\n meth.fail();\r\n }\r\n console.log(abap.console.get());\r\n fs.writeFileSync(__dirname + path.sep + \"_output.xml\", unit.xUnitXML());\r\n throw e;\r\n }\r\n}\r\n\r\nrun().then(() => {\r\n process.exit(0);\r\n}).catch((err) => {\r\n console.log(err);\r\n process.exit(1);\r\n});`;\r\n return ret;\r\n }\r\n buildImports(reg, useImport) {\r\n // note: ES modules are hoised, so use the dynamic import(), due to setting of globalThis.abap\r\n // todo, some sorting might be required? eg. a class constructor using constant from interface?\r\n // temporary sorting: by filename\r\n const list = [];\r\n const imp = (filename) => {\r\n if (useImport === true) {\r\n return `import \"./${filename}.mjs\";`;\r\n }\r\n else {\r\n return `await import(\"./${filename}.mjs\");`;\r\n }\r\n };\r\n for (const obj of reg.getObjects()) {\r\n if (obj instanceof abaplint.Objects.Table\r\n || obj instanceof abaplint.Objects.DataElement\r\n || obj instanceof abaplint.Objects.TableType) {\r\n list.push(imp(`${this.escapeNamespace(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}`));\r\n }\r\n }\r\n for (const obj of reg.getObjects()) {\r\n if (obj instanceof abaplint.Objects.FunctionGroup) {\r\n for (const m of obj.getModules()) {\r\n list.push(imp(`${this.escapeNamespace(obj.getName().toLowerCase())}.fugr.${m.getName().toLowerCase()}`));\r\n }\r\n }\r\n else if (obj instanceof abaplint.Objects.Class\r\n || obj instanceof abaplint.Objects.Interface) {\r\n list.push(imp(`${this.escapeNamespace(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}`));\r\n }\r\n }\r\n return list.sort().join(\"\\n\");\r\n }\r\n}\r\nexports.UnitTest = UnitTest;\r\n//# sourceMappingURL=unit_test.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/unit_test.js?");
14935
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.UnitTest = void 0;\r\n/* eslint-disable max-len */\r\nconst abaplint = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nclass UnitTest {\r\n // todo, move this method somewhere else, its much more than just unit test relevant\r\n initializationScript(reg, dbSetup, extraSetup, useImport) {\r\n let ret = \"\";\r\n if (useImport === true) {\r\n ret = `/* eslint-disable import/newline-after-import */\nimport \"./_top.mjs\";\\n`;\r\n }\r\n else {\r\n ret = `/* eslint-disable import/newline-after-import */\nimport runtime from \"@abaplint/runtime\";\nglobalThis.abap = new runtime.ABAP();\\n`;\r\n }\r\n ret += `${this.buildImports(reg, useImport)}\n\nexport async function initializeABAP() {\\n`;\r\n ret += ` const sqlite = \\`${dbSetup.schemas.sqlite}\\`;\\n`;\r\n ret += ` const hdb = \\`${dbSetup.schemas.hdb}\\`;\\n`;\r\n ret += ` const pg = \\`${dbSetup.schemas.pg}\\`;\\n`;\r\n ret += ` const schemas = {sqlite, hdb, pg};\\n`;\r\n ret += ` const insert = \\`${dbSetup.insert}\\`;\\n`;\r\n if (extraSetup === undefined) {\r\n ret += `// no setup logic specified in config\\n`;\r\n }\r\n else {\r\n ret += ` const {setup} = await import(\"${extraSetup}\");\\n` +\r\n ` await setup(globalThis.abap, schemas, insert);\\n`;\r\n }\r\n ret += `}`;\r\n return ret;\r\n }\r\n escapeNamespace(filename) {\r\n // ES modules are resolved and cached as URLs. This means that special characters must be percent-encoded, such as # with %23 and ? with %3F.\r\n return filename.replace(/\\//g, \"%23\");\r\n }\r\n unitTestScriptOpen(reg, _skip, _only) {\r\n let ret = `/* eslint-disable curly */\nimport fs from \"fs\";\nimport path from \"path\";\nimport {fileURLToPath} from \"url\";\nimport {initializeABAP} from \"./init.mjs\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nasync function run() {\n await initializeABAP();\n let lt_input = new abap.types.Table(new abap.types.Structure({class_name: new abap.types.Character({length: 30}), testclass_name: new abap.types.Character({length: 30}), method_name: new abap.types.Character({length: 30})}), {\"withHeader\":false,\"type\":\"STANDARD\",\"isUnique\":false,\"keyFields\":[]});\n let ls_input = new abap.types.Structure({class_name: new abap.types.Character({length: 30}), testclass_name: new abap.types.Character({length: 30}), method_name: new abap.types.Character({length: 30})});\n let ls_result = new abap.types.Structure({list: new abap.types.Table(new abap.types.Structure({class_name: new abap.types.Character({length: 30}), testclass_name: new abap.types.Character({length: 30}), method_name: new abap.types.Character({length: 30}), expected: new abap.types.String(), actual: new abap.types.String(), status: new abap.types.String(), runtime: new abap.types.Integer(), message: new abap.types.String(), js_location: new abap.types.String()}), {\"withHeader\":false,\"type\":\"STANDARD\",\"isUnique\":false,\"keyFields\":[]}), json: new abap.types.String()});\n`;\r\n for (const obj of reg.getObjects()) {\r\n if (reg.isDependency(obj) || !(obj instanceof abaplint.Objects.Class)) {\r\n continue;\r\n }\r\n const hasTestFile = obj.getFiles().some(f => { return f.getFilename().includes(\".testclasses.\"); });\r\n if (hasTestFile === true) {\r\n ret += ` await import(\"./${this.escapeNamespace(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}.testclasses.mjs\");\\n`;\r\n }\r\n for (const file of obj.getABAPFiles()) {\r\n for (const def of file.getInfo().listClassDefinitions()) {\r\n if (def.isForTesting === false || def.isGlobal === true || def.methods.length === 0) {\r\n // todo, fix, there might be global test methods\r\n continue;\r\n }\r\n for (const m of def.methods) {\r\n if (m.isForTesting === false) {\r\n continue;\r\n }\r\n ret += ` ls_input.get().class_name.set(\"${obj.getName()}\");\n ls_input.get().testclass_name.set(\"${def.name.toUpperCase()}\");\n ls_input.get().method_name.set(\"${m.name.toUpperCase()}\");\n abap.statements.append({source: ls_input, target: lt_input});\\n`;\r\n }\r\n }\r\n }\r\n }\r\n ret += `\n\n ls_result.set(await abap.Classes[\"KERNEL_UNIT_RUNNER\"].run({it_input: lt_input}));\n fs.writeFileSync(__dirname + path.sep + \"output.json\", ls_result.get().json.get());\n}\n\nrun().then(() => {\n process.exit(0);\n}).catch((err) => {\n console.log(err);\n process.exit(1);\n});`;\r\n return ret;\r\n }\r\n unitTestScript(reg, skip, _only) {\r\n let ret = `/* eslint-disable curly */\nimport fs from \"fs\";\nimport path from \"path\";\nimport {fileURLToPath} from \"url\";\nimport {initializeABAP} from \"./init.mjs\";\nimport runtime from \"@abaplint/runtime\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nasync function run() {\n await initializeABAP();\n const unit = new runtime.UnitTestResult();\n let clas;\n let locl;\n let meth;\n try {\\n`;\r\n for (const obj of reg.getObjects()) {\r\n if (reg.isDependency(obj) || !(obj instanceof abaplint.Objects.Class)) {\r\n continue;\r\n }\r\n ret += `// --------------------------------------------\\n`;\r\n ret += ` clas = unit.addObject(\"${obj.getName()}\");\\n`;\r\n for (const file of obj.getABAPFiles()) {\r\n for (const def of file.getInfo().listClassDefinitions()) {\r\n if (def.isForTesting === false || def.isGlobal === true || def.methods.length === 0) {\r\n // todo, fix, there might be global test methods\r\n continue;\r\n }\r\n ret += ` {\n const {${def.name}} = await import(\"./${this.escapeNamespace(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}.testclasses.mjs\");\n locl = clas.addTestClass(\"${def.name}\");\n if (${def.name}.class_setup) await ${def.name}.class_setup();\\n`;\r\n for (const m of def.methods) {\r\n if (m.isForTesting === false) {\r\n continue;\r\n }\r\n const skipThis = (skip || []).some(a => a.object === obj.getName() && a.class === def.name && a.method === m.name);\r\n if (skipThis) {\r\n ret += ` console.log('${obj.getName()}: running ${def.name}->${m.name}, skipped');\\n`;\r\n ret += ` meth = locl.addMethod(\"${m.name}\");\\n`;\r\n ret += ` meth.skip();\\n`;\r\n continue;\r\n }\r\n ret += ` {\\n const test = await (new ${def.name}()).constructor_();\\n`;\r\n ret += ` if (test.setup) await test.setup();\\n`;\r\n ret += ` console.log(\"${obj.getName()}: running ${def.name}->${m.name}\");\\n`;\r\n ret += ` meth = locl.addMethod(\"${m.name}\");\\n`;\r\n ret += ` await test.${m.name}();\\n`;\r\n ret += ` meth.pass();\\n`;\r\n ret += ` if (test.teardown) await test.teardown();\\n`;\r\n ret += ` }\\n`;\r\n }\r\n ret += ` if (${def.name}.class_teardown) await ${def.name}.class_teardown();\\n`;\r\n ret += ` }\\n`;\r\n }\r\n }\r\n }\r\n ret += `// -------------------END-------------------\n console.log(abap.console.get());\n fs.writeFileSync(__dirname + path.sep + \"_output.xml\", unit.xUnitXML());\n } catch (e) {\n if (meth) {\n meth.fail();\n }\n console.log(abap.console.get());\n fs.writeFileSync(__dirname + path.sep + \"_output.xml\", unit.xUnitXML());\n throw e;\n }\n}\n\nrun().then(() => {\n process.exit(0);\n}).catch((err) => {\n console.log(err);\n process.exit(1);\n});`;\r\n return ret;\r\n }\r\n buildImports(reg, useImport) {\r\n // note: ES modules are hoised, so use the dynamic import(), due to setting of globalThis.abap\r\n // todo, some sorting might be required? eg. a class constructor using constant from interface?\r\n // temporary sorting: by filename\r\n const list = [];\r\n const imp = (filename) => {\r\n if (useImport === true) {\r\n return `import \"./${filename}.mjs\";`;\r\n }\r\n else {\r\n return `await import(\"./${filename}.mjs\");`;\r\n }\r\n };\r\n for (const obj of reg.getObjects()) {\r\n if (obj instanceof abaplint.Objects.Table\r\n || obj instanceof abaplint.Objects.DataElement\r\n || obj instanceof abaplint.Objects.TableType) {\r\n list.push(imp(`${this.escapeNamespace(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}`));\r\n }\r\n }\r\n for (const obj of reg.getObjects()) {\r\n if (obj instanceof abaplint.Objects.FunctionGroup) {\r\n for (const m of obj.getModules()) {\r\n list.push(imp(`${this.escapeNamespace(obj.getName().toLowerCase())}.fugr.${m.getName().toLowerCase()}`));\r\n }\r\n }\r\n else if (obj instanceof abaplint.Objects.Class\r\n || obj instanceof abaplint.Objects.Interface) {\r\n list.push(imp(`${this.escapeNamespace(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}`));\r\n }\r\n }\r\n return list.sort().join(\"\\n\");\r\n }\r\n}\r\nexports.UnitTest = UnitTest;\r\n//# sourceMappingURL=unit_test.js.map\n\n//# sourceURL=webpack://@abaplint/transpiler-cli/./node_modules/@abaplint/transpiler/build/src/unit_test.js?");
14914
14936
 
14915
14937
  /***/ }),
14916
14938
 
package/package.json CHANGED
@@ -1,38 +1,38 @@
1
- {
2
- "name": "@abaplint/transpiler-cli",
3
- "version": "2.0.71",
4
- "description": "Transpiler - Command Line Interface",
5
- "bin": {
6
- "abap_transpile": "./abap_transpile"
7
- },
8
- "types": "./build/types.d.ts",
9
- "keywords": [
10
- "ABAP",
11
- "abaplint"
12
- ],
13
- "repository": {
14
- "type": "git",
15
- "url": "git+https://github.com/abaplint/transpiler.git"
16
- },
17
- "scripts": {
18
- "test": "tsc && npm run webpack",
19
- "publish:major": "npm --no-git-tag-version version major && rm -rf build && npm install && npm run test && npm publish --access public",
20
- "publish:minor": "npm --no-git-tag-version version minor && rm -rf build && npm install && npm run test && npm publish --access public",
21
- "publish:patch": "npm --no-git-tag-version version patch && rm -rf build && npm install && npm run test && npm publish --access public",
22
- "compile": "npm test",
23
- "webpack": "webpack --progress"
24
- },
25
- "author": "abaplint",
26
- "license": "MIT",
27
- "devDependencies": {
28
- "@abaplint/transpiler": "^2.0.71",
29
- "@types/glob": "^7.2.0",
30
- "glob": "=7.2.0",
31
- "@types/progress": "^2.0.5",
32
- "@abaplint/core": "^2.91.9",
33
- "progress": "^2.0.3",
34
- "webpack": "^5.73.0",
35
- "webpack-cli": "^4.10.0",
36
- "typescript": "^4.7.4"
37
- }
38
- }
1
+ {
2
+ "name": "@abaplint/transpiler-cli",
3
+ "version": "2.0.72",
4
+ "description": "Transpiler - Command Line Interface",
5
+ "bin": {
6
+ "abap_transpile": "./abap_transpile"
7
+ },
8
+ "types": "./build/types.d.ts",
9
+ "keywords": [
10
+ "ABAP",
11
+ "abaplint"
12
+ ],
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/abaplint/transpiler.git"
16
+ },
17
+ "scripts": {
18
+ "test": "tsc && npm run webpack",
19
+ "publish:major": "npm --no-git-tag-version version major && rm -rf build && npm install && npm run test && npm publish --access public",
20
+ "publish:minor": "npm --no-git-tag-version version minor && rm -rf build && npm install && npm run test && npm publish --access public",
21
+ "publish:patch": "npm --no-git-tag-version version patch && rm -rf build && npm install && npm run test && npm publish --access public",
22
+ "compile": "npm test",
23
+ "webpack": "webpack --progress"
24
+ },
25
+ "author": "abaplint",
26
+ "license": "MIT",
27
+ "devDependencies": {
28
+ "@abaplint/transpiler": "^2.0.72",
29
+ "@types/glob": "^7.2.0",
30
+ "glob": "=7.2.0",
31
+ "@types/progress": "^2.0.5",
32
+ "@abaplint/core": "^2.91.9",
33
+ "progress": "^2.0.3",
34
+ "webpack": "^5.73.0",
35
+ "webpack-cli": "^4.10.0",
36
+ "typescript": "^4.7.4"
37
+ }
38
+ }