1 // declare global: tern, server
5 this.onmessage = function(e
) {
8 case "init": return startServer(data
.defs
, data
.plugins
, data
.scripts
);
9 case "add": return server
.addFile(data
.name
, data
.text
);
10 case "del": return server
.delFile(data
.name
);
11 case "req": return server
.request(data
.body
, function(err
, reqData
) {
12 postMessage({id
: data
.id
, body
: reqData
, err
: err
&& String(err
)});
15 var c
= pending
[data
.id
];
16 delete pending
[data
.id
];
17 return c(data
.err
, data
.text
);
18 default: throw new Error("Unknown message type: " + data
.type
);
22 var nextId
= 0, pending
= {};
23 function getFile(file
, c
) {
24 postMessage({type
: "getFile", name
: file
, id
: ++nextId
});
28 function startServer(defs
, plugins
, scripts
) {
29 if (scripts
) importScripts
.apply(null, scripts
);
31 server
= new tern
.Server({
40 log: function(v
) { postMessage({type
: "debug", message
: v
}); }