|
1 | 1 | (function() { |
2 | | - function evalSources(sources) { |
3 | | - var modules = {}; |
4 | | - function dirname(str) { |
5 | | - var ix = str.lastIndexOf("/"); |
6 | | - return ix < 0 ? "" : str.slice(0, ix); |
7 | | - } |
8 | | - function resolvePath(a, b) { |
9 | | - if (b[0] === "." && b[1] === "/") { |
10 | | - return dirname(a) + b.slice(1); |
11 | | - } |
12 | | - if (b[0] === "." && b[1] === "." && b[2] === "/") { |
13 | | - return dirname(dirname(a)) + b.slice(2); |
14 | | - } |
15 | | - return b; |
16 | | - } |
17 | | - return function load(name) { |
18 | | - if (modules[name]) { |
19 | | - return modules[name].exports; |
20 | | - } |
21 | | - function require(path) { |
22 | | - return load(resolvePath(name, path)); |
23 | | - } |
24 | | - var module = modules[name] = { exports: {} }; |
25 | | - new Function("module", "exports", "require", sources[name])(module, module.exports, require); |
26 | | - return module.exports; |
27 | | - }; |
28 | | - } |
29 | | - |
30 | 2 | var parent; |
31 | 3 |
|
32 | 4 | document.addEventListener("DOMContentLoaded", function() { |
33 | 5 | window.addEventListener("message", function(event) { |
34 | 6 | parent = event.source; |
35 | 7 | parent.postMessage("trypurescript", "*"); |
36 | | - var file = evalSources(event.data)("<file>"); |
37 | | - if (file.main && typeof file.main === "function") { |
38 | | - file.main(); |
39 | | - } |
| 8 | + const code = ` |
| 9 | + ${event.data.code} |
| 10 | + main(); |
| 11 | + `; |
| 12 | + const scriptEl = document.createElement("script"); |
| 13 | + scriptEl.type = "module"; |
| 14 | + scriptEl.appendChild(document.createTextNode(code)); |
| 15 | + document.body.appendChild(scriptEl); |
40 | 16 | }, { once: true }); |
41 | 17 | }, { once: true }); |
42 | 18 |
|
|
0 commit comments