MCPcopy
hub / github.com/ternjs/tern / doRequest

Function doRequest

lib/tern.js:235–285  ·  view source on GitHub ↗
(srv, doc, c)

Source from the content-addressed store, hash-verified

233 });
234
235 function doRequest(srv, doc, c) {
236 if (doc.query && !queryTypes.hasOwnProperty(doc.query.type))
237 return c("No query type '" + doc.query.type + "' defined");
238
239 var query = doc.query;
240 // Respond as soon as possible when this just uploads files
241 if (!query) c(null, {});
242
243 var files = doc.files || [];
244 if (files.length) ++srv.uses;
245 for (var i = 0; i < files.length; ++i) {
246 var file = files[i];
247 file.name = srv.normalizeFilename(file.name);
248 if (file.type == "delete")
249 srv.delFile(file.name);
250 else
251 ensureFile(srv, file.name, null, file.type == "full" ? file.text : null);
252 }
253
254 var timeBudget = typeof doc.timeout == "number" ? [doc.timeout] : null;
255 if (!query) {
256 analyzeAll(srv, timeBudget, function(){});
257 return;
258 }
259
260 var queryType = queryTypes[query.type];
261 if (queryType.takesFile) {
262 if (typeof query.file != "string") return c(".query.file must be a string");
263 if (!/^#/.test(query.file)) ensureFile(srv, query.file, null);
264 }
265
266 analyzeAll(srv, timeBudget, function(err) {
267 if (err) return c(err);
268 var file = queryType.takesFile && resolveFile(srv, files, query.file);
269 if (queryType.fullFile && file.type == "part")
270 return c("Can't run a " + query.type + " query on a file fragment");
271
272 infer.resetGuessing();
273 infer.withContext(srv.cx, function() {
274 var result, run = function() { result = queryType.run(srv, query, file); };
275 try {
276 if (timeBudget) infer.withTimeout(timeBudget[0], run);
277 else run();
278 } catch (e) {
279 if (srv.options.debug && e.name != "TernError") console.error(e.stack);
280 return c(e);
281 }
282 c(null, result);
283 });
284 });
285 }
286
287 function analyzeFile(srv, file) {
288 infer.withContext(srv.cx, function() {

Callers 1

tern.jsFile · 0.85

Calls 5

cFunction · 0.85
ensureFileFunction · 0.85
analyzeAllFunction · 0.85
resolveFileFunction · 0.85
runFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…