diff --git a/.gitignore b/.gitignore
index f7161f1..b7c89c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,5 +4,6 @@ abap2xlsx
abap2xlsx-demos
open-abap-core
src/abap.ts
+src/abap.js
input
output
\ No newline at end of file
diff --git a/abap.mjs b/abap.mjs
index 6331681..bfd5d99 100644
--- a/abap.mjs
+++ b/abap.mjs
@@ -10,7 +10,9 @@ function escape(input) {
if (input.charCodeAt(0) === 0xFEFF) {
input = input.substr(1);
}
- return input.replaceAll("`", "\\`").replaceAll("${", "\\${").trimEnd();
+ return input.replaceAll("\\", "\\\\")
+ .replaceAll("`", "\\`")
+ .replaceAll("${", "\\${").trimEnd();
}
function add(name, contents) {
@@ -60,7 +62,7 @@ for (const dirent of fs.readdirSync("abap2xlsx/src", {recursive: true, withFileT
/////////////////////////////////////////
-fs.writeFileSync("src/abap.ts", output + "\n};");
+fs.writeFileSync("src/abap.js", output + "\n};");
for (const filename in files) {
fs.writeFileSync(path.join("input", filename), files[filename]);
}
\ No newline at end of file
diff --git a/abap_transpile.json b/abap_transpile.json
index 8697fba..2a54150 100644
--- a/abap_transpile.json
+++ b/abap_transpile.json
@@ -9,6 +9,7 @@
"ignoreSyntaxCheck": false,
"addFilenames": true,
"addCommonJS": true,
+ "skipReposrc": true,
"unknownTypes": "runtimeError",
"skip": []
}
diff --git a/package-lock.json b/package-lock.json
index 621741c..3722564 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,6 +13,8 @@
"@abaplint/runtime": "^2.10.17",
"@abaplint/transpiler": "^2.10.17",
"@abaplint/transpiler-cli": "^2.10.17",
+ "assert": "^2.1.0",
+ "browserify-zlib": "^0.2.0",
"buffer": "^6.0.3",
"copy-webpack-plugin": "^12.0.2",
"crypto-browserify": "^3.12.0",
@@ -21,6 +23,7 @@
"html-webpack-plugin": "^5.6.0",
"monaco-editor": "^0.51.0",
"path-browserify": "^1.0.1",
+ "process": "^0.11.10",
"split-grid": "^1.0.11",
"stream-browserify": "^3.0.0",
"string_decoder": "^1.3.0",
@@ -838,6 +841,34 @@
"integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
"dev": true
},
+ "node_modules/assert": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
+ "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-nan": "^1.3.2",
+ "object-is": "^1.1.5",
+ "object.assign": "^4.1.4",
+ "util": "^0.12.5"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -1026,6 +1057,15 @@
"node": ">= 0.12"
}
},
+ "node_modules/browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "dependencies": {
+ "pako": "~1.0.5"
+ }
+ },
"node_modules/browserslist": {
"version": "4.23.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
@@ -1681,6 +1721,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -2243,6 +2300,15 @@
}
}
},
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -2410,6 +2476,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/hash-base": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
@@ -2736,6 +2817,22 @@
"node": ">= 10"
}
},
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -2748,6 +2845,18 @@
"node": ">=8"
}
},
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-core-module": {
"version": "2.15.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
@@ -2787,6 +2896,21 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -2817,6 +2941,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-nan": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
+ "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-network-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz",
@@ -2862,6 +3002,21 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-wsl": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
@@ -3282,6 +3437,49 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/object-is": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+ "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/obuf": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
@@ -3380,6 +3578,12 @@
"node": ">=6"
}
},
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@@ -3520,6 +3724,15 @@
"node": ">=8"
}
},
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/postcss": {
"version": "8.4.45",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz",
@@ -3636,6 +3849,15 @@
"renderkid": "^3.0.0"
}
},
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -4772,6 +4994,19 @@
"punycode": "^2.1.0"
}
},
+ "node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -5192,6 +5427,25 @@
"node": ">= 8"
}
},
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/wildcard": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
diff --git a/package.json b/package.json
index c5fd2b8..41ade9b 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,8 @@
"@abaplint/runtime": "^2.10.17",
"@abaplint/transpiler": "^2.10.17",
"@abaplint/transpiler-cli": "^2.10.17",
+ "assert": "^2.1.0",
+ "browserify-zlib": "^0.2.0",
"buffer": "^6.0.3",
"copy-webpack-plugin": "^12.0.2",
"crypto-browserify": "^3.12.0",
@@ -28,6 +30,7 @@
"html-webpack-plugin": "^5.6.0",
"monaco-editor": "^0.51.0",
"path-browserify": "^1.0.1",
+ "process": "^0.11.10",
"split-grid": "^1.0.11",
"stream-browserify": "^3.0.0",
"string_decoder": "^1.3.0",
diff --git a/public/zcl_excel_demo1.xlsx b/public/zcl_excel_demo1.xlsx
index 824ba3f..5bd3bda 100644
Binary files a/public/zcl_excel_demo1.xlsx and b/public/zcl_excel_demo1.xlsx differ
diff --git a/public/zcl_excel_demo2.xlsx b/public/zcl_excel_demo2.xlsx
index 4dc9d84..4d9b3b0 100644
Binary files a/public/zcl_excel_demo2.xlsx and b/public/zcl_excel_demo2.xlsx differ
diff --git a/src/index.css b/src/index.css
index 8dacf07..b0334e9 100644
--- a/src/index.css
+++ b/src/index.css
@@ -7,6 +7,10 @@ body, html, .inner, .outer {
overflow: hidden;
}
+a {
+ color: white;
+}
+
#horizon {
display: grid;
grid-template-columns: 1fr 5px 1fr;
diff --git a/src/index.ts b/src/index.ts
index 806e55f..3b597c9 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,7 +1,7 @@
// @ts-ignore
global.MonacoEnvironment = {
globalAPI: true,
- getWorkerUrl: function (_moduleId: any, label: any) {
+ getWorkerUrl: function (_moduleId, label) {
/*
if (label === "json") {
return "./json.worker.bundle.js";
@@ -18,12 +18,15 @@ import "./index.css";
import "../public/favicon-16x16.png";
import "../public/favicon-32x32.png";
import * as monaco from "monaco-editor";
-import {config, Transpiler} from "@abaplint/transpiler";
-import {ABAP, MemoryConsole} from "@abaplint/runtime";
+import {config, ITranspilerOptions, Transpiler, UnknownTypesEnum} from "@abaplint/transpiler";
+// import {ABAP, MemoryConsole} from "@abaplint/runtime";
import * as abaplint from "@abaplint/core";
import * as abapMonaco from "@abaplint/monaco";
import Split from "split-grid";
-import { abapfiles } from "./abap";
+import { abapfiles } from "./abap.js";
+import * as initabap from "../output/init.mjs";
+import {Buffer} from "buffer";
+console.dir(initabap); // just to make sure its not shaked away
const reg = new abaplint.Registry(new abaplint.Config(JSON.stringify(config)));
for (const filename in abapfiles) {
@@ -106,9 +109,37 @@ document.getElementById("demoDropdown").addEventListener("change", (e) => {
// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction
const AsyncFunction = new Function(`return Object.getPrototypeOf(async function(){}).constructor`)();
+async function sanitizeAndRun(js: string) {
+ let lines = js.split("\n");
+ lines = lines.filter(row => row.includes("await import") === false);
+ lines = lines.filter(row => row.includes("export {") === false);
+ js = lines.join("\n");
+ js += `
+const excel = await abap.Classes["ZCL_EXCEL_DEMO1"].zif_excel_demo_output$run();
+const writer = new abap.Classes["ZCL_EXCEL_WRITER_2007"]();
+await writer.constructor_();
+const xstring = await writer.zif_excel_writer$write_file({io_excel: excel});
+return xstring;
+ `;
+// console.dir(js);
+
+ const f = new AsyncFunction("abap", js);
+ const res = await f(globalThis.abap);
+ console.dir(res);
+
+ var file = document.createElement('a');
+ file.setAttribute('href', 'data:application/octet-stream;base64,' + Buffer.from(res.get(), "hex").toString("base64"));
+ file.setAttribute('download', "foo.xlsx");
+ file.innerText = "Download, " + (res.get().length / 2) + " bytes";
+ document.getElementById("container2").appendChild(file);
+}
+
async function abapChanged() {
+ // @ts-ignore
+ console.dir(globalThis.abap);
+ const contents = editor1.getValue();
+
try {
- const contents = editor1.getValue();
const file = new abaplint.MemoryFile(filename, contents);
reg.updateFile(file);
reg.parse();
@@ -119,6 +150,7 @@ async function abapChanged() {
document.getElementById("container2").innerHTML = ``;
setTimeout(() => monaco.editor.getEditors()[0].focus(), 1000);
+ return;
} else {
const markers = monaco.editor.getModelMarkers({});
if (markers.length > 0) {
@@ -130,16 +162,33 @@ async function abapChanged() {
return;
}
- document.getElementById("container2").innerHTML = `todo, compiling`;
+ document.getElementById("container2").innerHTML = `Compiling`;
+ }
+ } catch (error) {
+ console.dir(error);
+ }
- // const res = await new Transpiler().runRaw([{filename, contents}]);
+ try {
+ const options: ITranspilerOptions = {
+ "ignoreSyntaxCheck": false,
+ "addFilenames": true,
+ "addCommonJS": true,
+ "skipReposrc": true,
+ "unknownTypes": UnknownTypesEnum.runtimeError,
}
+ const result = await new Transpiler(options).run(reg);
+ document.getElementById("container2").innerHTML = `Compiling Done
`;
+ const compiled = result.objects.find(o => o.filename.includes("zcl_demo.clas.mjs"))?.chunk.getCode();
+ await sanitizeAndRun(compiled);
} catch (error) {
+ document.getElementById("container2").innerHTML = `Issues found during compilation or execution
`;
console.dir(error);
+ document.getElementById("container2").innerHTML += error.toString();
}
}
editor1.onDidChangeModelContent(abapChanged);
abapChanged();
editor1.focus();
-const abap = new ABAP({console: new MemoryConsole()});
+
+//const abap = new ABAP({console: new MemoryConsole()});
diff --git a/tsconfig.json b/tsconfig.json
index 32f32ea..f3d41c8 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -5,7 +5,7 @@
"moduleResolution": "node",
"target": "es5",
"outDir": "./dist",
- "lib": ["dom", "es5", "es2015.collection", "es2015.promise"],
+ "lib": ["dom", "es5", "es2015.collection", "es2015.promise", "es2015"],
"types": [],
"baseUrl": ".",
"typeRoots": ["node_modules/@types"]
diff --git a/webpack.config.js b/webpack.config.js
index 6acd230..b38a9a3 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -10,8 +10,13 @@ module.exports = {
entry: {
app: "./src/index.ts",
"editor.worker": "monaco-editor/esm/vs/editor/editor.worker.js",
+ /*
"json.worker": "monaco-editor/esm/vs/language/json/json.worker",
"ts.worker": "monaco-editor/esm/vs/language/typescript/ts.worker",
+ */
+ },
+ experiments: {
+ topLevelAwait: true
},
devServer: {
open: true,
@@ -19,19 +24,24 @@ module.exports = {
},
resolve: {
fallback: {
+ "./%23ui2%23cl_json.clas.mjs": false,
"buffer": require.resolve("buffer/"),
+ "assert": false,
"stream": require.resolve("stream-browserify"),
"crypto": false,
"path": require.resolve("path-browserify"),
"fs": false,
"http": false,
"https": false,
- "zlib": false,
+ "process": require.resolve("process"),
+ "zlib": require.resolve("browserify-zlib"),
+ "tls": false,
+ "net": false,
"util": false,
"url": false,
"string_decoder": require.resolve("string_decoder/"),
},
- extensions: [".ts", ".js"],
+ extensions: [".ts", ".js", ".mjs"],
},
output: {
globalObject: "self",
@@ -74,6 +84,7 @@ module.exports = {
}),
new webpack.ProvidePlugin({
Buffer: ["buffer", "Buffer"],
+ process: 'process/browser',
}),
new CopyPlugin({
patterns: [