12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
- // Distributed under an MIT license: https://codemirror.net/LICENSE
- // declare global: tern, server
- var server
- this.onmessage = function (e) {
- var data = e.data
- switch (data.type) {
- case 'init':
- return startServer(data.defs, data.plugins, data.scripts)
- case 'add':
- return server.addFile(data.name, data.text)
- case 'del':
- return server.delFile(data.name)
- case 'req':
- return server.request(data.body, function (err, reqData) {
- postMessage({ id: data.id, body: reqData, err: err && String(err) })
- })
- case 'getFile':
- var c = pending[data.id]
- delete pending[data.id]
- return c(data.err, data.text)
- default:
- throw new Error('Unknown message type: ' + data.type)
- }
- }
- var nextId = 0,
- pending = {}
- function getFile(file, c) {
- postMessage({ type: 'getFile', name: file, id: ++nextId })
- pending[nextId] = c
- }
- function startServer(defs, plugins, scripts) {
- if (scripts) importScripts.apply(null, scripts)
- server = new tern.Server({
- getFile: getFile,
- async: true,
- defs: defs,
- plugins: plugins,
- })
- }
- this.console = {
- log: function (v) {
- postMessage({ type: 'debug', message: v })
- },
- }
|