diff options
Diffstat (limited to 'node_modules/montage/require/worker.js')
-rw-r--r-- | node_modules/montage/require/worker.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/node_modules/montage/require/worker.js b/node_modules/montage/require/worker.js new file mode 100644 index 00000000..3b06aad2 --- /dev/null +++ b/node_modules/montage/require/worker.js | |||
@@ -0,0 +1,62 @@ | |||
1 | |||
2 | var URL = require("core/mini-url"); | ||
3 | |||
4 | exports.Worker = function (package, id) { | ||
5 | var worker = new Worker( | ||
6 | URL.resolve(module.location, 'worker-script.js') | ||
7 | ); | ||
8 | worker.postMessage({ | ||
9 | "type": "init", | ||
10 | "package": package, | ||
11 | "module": id | ||
12 | }) | ||
13 | worker.onmessage = function (event) { | ||
14 | // request module text | ||
15 | // handle URL resolution | ||
16 | // console log | ||
17 | // read a url | ||
18 | if (event.data.type === "console") { | ||
19 | console[event.data.method].apply(console, event.data.args); | ||
20 | } else if (event.data.type === "read") { | ||
21 | require.read(event.data.url) | ||
22 | .then(function (content) { | ||
23 | worker.postMessage({ | ||
24 | type: "read", | ||
25 | url: event.data.url, | ||
26 | content: content | ||
27 | }) | ||
28 | }, function (error) { | ||
29 | worker.postMessage({ | ||
30 | type: "read", | ||
31 | url: event.data.url, | ||
32 | error: error | ||
33 | }); | ||
34 | }) | ||
35 | .end(); | ||
36 | } else if (event.data.type === "forward") { | ||
37 | if (proxy.onmessage) { | ||
38 | proxy.onmessage({ | ||
39 | data: event.data.data | ||
40 | }); | ||
41 | } else { | ||
42 | // XXX | ||
43 | } | ||
44 | } else { | ||
45 | // XXX | ||
46 | } | ||
47 | }; | ||
48 | var proxy = { | ||
49 | postMessage: function (data) { | ||
50 | worker.postMessage({ | ||
51 | type: "forward", | ||
52 | data: data | ||
53 | }); | ||
54 | }, | ||
55 | onmessage: null, | ||
56 | terminate: function () { | ||
57 | return worker.terminate(); | ||
58 | } | ||
59 | }; | ||
60 | return proxy; | ||
61 | }; | ||
62 | |||