Fix: merge conflict
[myslice.git] / third-party / codemirror-3.15 / addon / tern / worker.js
1 var server;
2
3 this.onmessage = function(e) {
4   var data = e.data;
5   switch (data.type) {
6   case "init": return startServer(data.defs, data.plugins, data.scripts);
7   case "add": return server.addFile(data.name, data.text);
8   case "del": return server.delFile(data.name);
9   case "req": return server.request(data.body, function(err, reqData) {
10     postMessage({id: data.id, body: reqData, err: err && String(err)});
11   });
12   case "getFile":
13     var c = pending[data.id];
14     delete pending[data.id];
15     return c(data.err, data.text);
16   default: throw new Error("Unknown message type: " + data.type);
17   }
18 };
19
20 var nextId = 0, pending = {};
21 function getFile(file, c) {
22   postMessage({type: "getFile", name: file, id: ++nextId});
23   pending[nextId] = c;
24 }
25
26 function startServer(defs, plugins, scripts) {
27   if (scripts) importScripts.apply(null, scripts);
28
29   server = new tern.Server({
30     getFile: getFile,
31     async: true,
32     defs: defs,
33     plugins: plugins
34   });
35 }
36
37 var console = {
38   log: function(v) { postMessage({type: "debug", message: v}); }
39 };